Maison  >  Article  >  développement back-end  >  Internationalisation de CakePHP

Internationalisation de CakePHP

PHPz
PHPzoriginal
2024-09-10 17:26:30272parcourir

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.

Étape 1

Créez un répertoire de ressources locales distinctlocales.

Étape 2

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.

Étape 3

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.

Étape 4

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');

Exemple

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

Sortie

Lors de l'exécution, vous recevrez le résultat suivant.

Internationalisation de CakePHP

E-mail

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
Syntax

From(string|array|null $email null, string|null $name null )

Parameters
  • String with email

  • Name

Returns

array|$this

Description

It specifies from which email address; the email will be sent

De(string|array|null $email null, string|null $name null )
Paramètres
  • Chaîne avec email
    Syntax

    To(string|array|null $emailnull, string|null $namenull)

    Parameters
    • String with email

    • Name

    Returns

    array|$this

    Description

    It specifies to whom the email will be sent

  • Nom
Retours
Syntax

Send(string|array|null $contentnull)

Parameters
  • String with message or array with messages.

Returns array
Description

Send an email using the specified content, template and layout

tableau|$this
Description
Il précise de quelle adresse email ; l'email sera envoyé
Syntax

Subject(string|null $subjectnull)

Parameters
  • Subject string

Returns

array|$this

Description

Get/Set Subject

Syntaxe À(string|array|null $emailnull, string|null $namenull)
Paramètres
  • Chaîne avec email
  • Nom
Retours tableau|$this
Description Il précise à qui l'email sera envoyé
Syntaxe Envoyer(string|array|null $contentnull)
Paramètres
  • Chaîne avec message ou tableau avec messages.
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
  • Chaîne d'objet
Retours tableau|$this
Description Obtenir/Définir le sujet
Syntax

Attachments(string|array|null $attachmentsnull)

Parameters
  • String with the filename or array with filenames

Returns

array|$this

Description

Add attachments to the email message

Syntax

Bcc(string|array|null $emailnull, string|null $namenull)

Parameters
  • String with email

  • Name

Returns

array|$this

Description

Bcc

Syntax

cc( string|array|null $emailnull , string|null $namenull )

Parameters
  • String with email

  • Name

Returns

array|$this

Description

Cc

Example

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

Program App

Execute the above example by visiting the following URL − http://localhost/cakephp/email

Output

Upon execution, you will receive the following output.

Documents Api

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn