Maison >développement back-end >tutoriel php >Internationalisation de CakePHP
Comme beaucoup d'autres frameworks, CakePHP prend également en charge l'internationalisation. Nous devons suivre ces étapes pour passer d'une seule langue à plusieurs langues.
Créez un répertoire de ressources locales distinctlocales.
Créez un sous-répertoire pour chaque langue, sous le répertoire srcLocale. Le nom du sous-répertoire peut être un code ISO à deux lettres de la langue ou un nom complet de langue comme en_US, fr_FR etc.
Créez un fichier default.po séparé sous chaque sous-répertoire de langue. Ce fichier contient une entrée sous la forme de msgid et msgstr, comme indiqué dans le programme suivant.
msgid "msg" msgstr "CakePHP Internationalization example."
Ici, le msgid est la clé qui sera utilisée dans le fichier modèle de vue et msgstr est la valeur qui stocke la traduction.
Dans le fichier de modèle de vue, nous pouvons utiliser le msgid ci-dessus, comme indiqué ci-dessous, qui sera traduit en fonction de la valeur définie des paramètres régionaux.
<?php echo __('msg'); ?>
Les paramètres régionaux par défaut peuvent être définis dans le fichier config/app.php par la ligne suivante.
'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US')
Pour changer le local au moment de l'exécution, nous pouvons utiliser les lignes suivantes.
use Cake\I18n\I18n; I18n::locale('de_DE');
Apportez des modifications au fichier config/routes.php comme indiqué dans le programme suivant.
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(); });
Créez un fichier LocalizationsController.php dans src/Controller/LocalizationsController.php. Copiez le code suivant dans le fichier du contrôleur.
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); } } } ?>
Créez un répertoire locales dans resourceslocales. Créez 3 répertoires appelés en_US, fr_FR, de_DE sous le répertoire locales. Créez un fichier sous chaque répertoire appelé default.po. Copiez le code suivant dans le fichier respectif.
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."
Créez un répertoire Localisations dans src/Template et sous ce répertoire, créez un fichier View appelé index.php. Copier le code suivant dans ce fichier.
src/Template/Localizations/index.php
Form->create(NULL,array('url'=>'/locale')); echo $this->Form->radio("locale", [ ['value'=>'en_US','text'=>'Internationalisation de CakePHP'], ['value'=>'de_DE','text'=>'German'], ['value'=>'fr_FR','text'=>'French'], ] ); echo $this->Form->button('Change Language'); echo $this->Form->end(); ?> <?php echo __('msg'); ?>
Exécutez l'exemple ci-dessus en visitant l'URL suivante. http://localhost/cakephp4/locale
Lors de l'exécution, vous recevrez le résultat suivant.
CakePHP fournit une classe Email pour gérer les fonctionnalités liées au courrier électronique. Pour utiliser la fonctionnalité de messagerie dans n'importe quel contrôleur, nous devons d'abord charger la classe Email en écrivant la ligne suivante.
use Cake\Mailer\Email;
La classe Email fournit diverses méthodes utiles décrites ci-dessous.
Syntaxe |
|
||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||
Retours |
|
||||||||
Description | Il précise de quelle adresse email ; l'email sera envoyé
|
Syntaxe | À(string|array|null $emailnull, string|null $namenull) |
---|---|
Paramètres |
|
Retours | tableau|$this |
Description | Il précise à qui l'email sera envoyé |
Syntaxe | Envoyer(string|array|null $contentnull) |
---|---|
Paramètres |
|
Retours | tableau |
Description | Envoyer un e-mail en utilisant le contenu, le modèle et la mise en page spécifiés |
Syntaxe | Sujet(string|null $subjectnull) |
---|---|
Paramètres |
|
Retours | tableau|$this |
Description | Obtenir/Définir le sujet |
Syntax | Attachments(string|array|null $attachmentsnull) |
---|---|
Parameters |
|
Returns | array|$this |
Description | Add attachments to the email message |
Syntax | Bcc(string|array|null $emailnull, string|null $namenull) |
---|---|
Parameters |
|
Returns | array|$this |
Description | Bcc |
Syntax | cc( string|array|null $emailnull , string|null $namenull ) |
---|---|
Parameters |
|
Returns | array|$this |
Description | Cc |
Make changes in the config/routes.php file as shown in the following program.
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(); });
Create an EmailsController.php file at src/Controller/EmailsController.php. Copy the following code in the controller file.
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('abc@gmail.com') ->subject('About') ->send('My message'); } } ?>
Create a directory Emails at src/Template and under that directory, create a View file called index.php. Copy the following code in that file.
src/Template/Emails/index.php
Email Sent.
Before we send any email, we need to configure it. In the below screenshot, you can see that there are two transports, default and Gmail. We have used Gmail transport.
You need to replace the “GMAIL USERNAME” with your Gmail username and “APP PASSWORD” with your applications password. You need to turn on 2-step verification in Gmail and create a new APP password to send email.
config/app.php
Execute the above example by visiting the following URL − http://localhost/cakephp/email
Upon execution, you will receive the following output.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!