CakePHP - Internazionalizzazione
Come molti altri framework, CakePHP supporta anche l'internazionalizzazione. Dobbiamo seguire questi passaggi per passare da una lingua a più lingue.
Passo 1
Crea una directory locale separata risorse \locales.
Passo 2
Crea una sottodirectory per ogni lingua, nella directory src \ Locale. Il nome della sottodirectory può essere il codice ISO di due lettere della lingua o il nome completo della locale come en_US, fr_FR ecc.
Passaggio 3
Crea separato default.pofile in ciascuna sottodirectory della lingua. Questo file contiene una voce sotto forma dimsgid e msgstr, come mostrato nel seguente programma.
msgid "msg"
msgstr "CakePHP Internationalization example."
Qui, il msgid è la chiave che verrà utilizzata nel file del modello di visualizzazione e msgstr è il valore che memorizza la traduzione.
Passaggio 4
Nel file del modello di visualizzazione, possiamo utilizzare quanto sopra msgid, come mostrato di seguito, che verrà tradotto in base al valore impostato di locale.
<?php echo __('msg'); ?>
La locale predefinita può essere impostata nel file config/app.php file dalla riga seguente.
'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US')
Per cambiare il locale in fase di esecuzione, possiamo usare le seguenti righe.
use Cake\I18n\I18n;
I18n::locale('de_DE');
Esempio
Apporta le modifiche al file config / routes.php come mostrato nel seguente programma.
config/routes.php
<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
$builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
'httpOnly' => true,
]));
$builder->applyMiddleware('csrf');
//$builder->connect('/pages',
['controller'=>'Pages','action'=>'display', 'home']);
$builder->connect('locale',
['controller'=>'Localizations','action'=>'index']);
$builder->fallbacks();
});
Creare un LocalizationsController.php file in src/Controller/LocalizationsController.php. Copiare il codice seguente nel file del controller.
src/Controller/LocalizationsController.php
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\I18n\I18n;
class LocalizationsController extends AppController {
public function index() {
if($this->request->is('post')) {
$locale = $this->request->getData('locale');
I18n::setLocale($locale);
}
}
}
?>
Creare un locales directory in risorse \locales. Crea 3 directory chiamateen_US, fr_FR, de_DEnella directory locales. Crea un file in ogni directory chiamatadefault.po. Copia il seguente codice nel rispettivo file.
resources/locales/en_US/default.po
msgid "msg"
msgstr "CakePHP Internationalization example."
resources/locales/fr_FR/default.po
msgid "msg"
msgstr "Exemple CakePHP internationalisation."
resources/locales/de_DE/default.po
msgid "msg"
msgstr "CakePHP Internationalisierung Beispiel."
Crea una directory Localizations a src/Template e sotto quella directory, crea un file View file chiamato index.php. Copia il codice seguente in quel file.
src/Template/Localizations/index.php
<?php
echo $this->Form->create(NULL,array('url'=>'/locale'));
echo $this->Form->radio("locale",
[
['value'=>'en_US','text'=>'English'],
['value'=>'de_DE','text'=>'German'],
['value'=>'fr_FR','text'=>'French'],
]
);
echo $this->Form->button('Change Language');
echo $this->Form->end();
?>
<?php echo __('msg'); ?>
Esegui l'esempio precedente visitando il seguente URL. http: // localhost / cakephp4 / locale
Produzione
Dopo l'esecuzione, riceverai il seguente output.
CakePHP fornisce una classe di posta elettronica per gestire le funzionalità relative alla posta elettronica. Per utilizzare la funzionalità di posta elettronica in qualsiasi controller, dobbiamo prima caricare la classe Email scrivendo la riga seguente.
use Cake\Mailer\Email;
La classe Email fornisce vari metodi utili descritti di seguito.
Sintassi | Da (stringa | array | null $ email null, stringa | null $ nome null) |
---|---|
Parametri |
|
ritorna | array | $ questo |
Descrizione | Specifica da quale indirizzo di posta elettronica; l'email verrà inviata |
Sintassi | A (stringa | array | null $ email null, stringa | null $ nome null) |
---|---|
Parametri |
|
ritorna | array | $ questo |
Descrizione | Specifica a chi verrà inviata l'email |
Sintassi | Invia (stringa | array | null $ content null) |
---|---|
Parametri |
|
ritorna | Vettore |
Descrizione | Invia un'e-mail utilizzando il contenuto, il modello e il layout specificati |
Sintassi | Oggetto (stringa | null $ soggetto null) |
---|---|
Parametri |
|
ritorna | array | $ questo |
Descrizione | Ottieni / Imposta oggetto |
Sintassi | Allegati (stringa | array | null $ allegato snull) |
---|---|
Parametri |
|
ritorna | array | $ questo |
Descrizione | Aggiungi allegati al messaggio di posta elettronica |
Sintassi | Ccn (stringa | array | null $ email null, stringa | null $ nome null) |
---|---|
Parametri |
|
ritorna | array | $ questo |
Descrizione | Bcc |
Sintassi | cc (stringa | array | null $ email null, stringa | null $ nome null) |
---|---|
Parametri |
|
ritorna | array | $ questo |
Descrizione | Cc |
Esempio
Apporta le modifiche al file config / routes.php come mostrato nel seguente programma.
config/routes.php
<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
$builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
'httpOnly' => true,
]));
$builder->applyMiddleware('csrf');
//$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
$builder->connect('/email',['controller'=>'Emails','action'=>'index']);
$builder->fallbacks();
});
Creare un EmailsController.php file in src/Controller/EmailsController.php. Copiare il codice seguente nel file del controller.
src/Controller/EmailsController.php
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\Mailer\Email;
class EmailsController extends AppController{
public function index(){
$email = new Email('default');
$email->to('[email protected]')
->subject('About')
->send('My message');
}
}
?>
Crea una directory Emails a src/Template e in quella directory, crea un file View chiamato index.php. Copia il codice seguente in quel file.
src/Template/Emails/index.php
Email Sent.
Prima di inviare qualsiasi e-mail, dobbiamo configurarla. Nello screenshot qui sotto, puoi vedere che ci sono due trasporti, predefinito e Gmail. Abbiamo utilizzato il trasporto di Gmail.
Devi sostituire "GMAIL USERNAME" con il tuo nome utente Gmail e "APP PASSWORD" con la password delle applicazioni. Devi attivare la verifica in due passaggi in Gmail e creare una nuova password per l'APP per inviare l'email.
config/app.php
Esegui l'esempio precedente visitando il seguente URL: http: // localhost / cakephp / email
Produzione
Dopo l'esecuzione, riceverai il seguente output.