Учебники

CakePHP — Интернационализация

Как и многие другие фреймворки, CakePHP также поддерживает интернационализацию. Нам нужно выполнить следующие шаги, чтобы перейти с одного языка на несколько языков.

Шаг 1 — Создайте отдельный каталог Locale src \ Locale .

Шаг 2 — Создайте подкаталог для каждого языка в каталоге src \ Locale. Имя подкаталога может состоять из двухбуквенного ISO-кода языка или полного названия локали, например en_US, fr_FR и т. Д.

Шаг 3 — Создайте отдельный файл default.po в каждом языковом подкаталоге. Этот файл содержит запись в форме msgid и msgstr, как показано в следующей программе.

msgid "msg"
msgstr "CakePHP Internationalization example."

Здесь msgid — это ключ, который будет использоваться в файле шаблона представления, а msgstr — это значение, в котором хранится перевод.

Шаг 4 — В файле шаблона просмотра мы можем использовать указанный выше msgid, как показано ниже, который будет переведен на основе заданного значения локали.

<?php echo __('msg'); ?>

Локаль по умолчанию может быть установлена ​​в файле config / bootstrap.php следующей строкой.

'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US')

Для изменения локального во время выполнения мы можем использовать следующие строки.

use Cake\I18n\I18n;
I18n::locale('de_DE');

пример

Внесите изменения в файл config / rout.php, как показано в следующей программе.

конфиг / routes.php

<?php
   use Cake\Core\Plugin;
   use Cake\Routing\RouteBuilder;
   use Cake\Routing\Router;

   Router::defaultRouteClass('DashedRoute');
   Router::scope('/', function (RouteBuilder $routes) {
      $routes->connect('locale',['controller'=>'Localizations','action'=>'index']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();

Создайте файл LocalizationsController.php в src / Controller / LocalizationsController.php . Скопируйте следующий код в файл контроллера.

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->data('locale');
            I18n::locale($locale);
         }
      }
   }
?>

Создайте каталог Locale в src \ Locale . Создайте 3 каталога с именами en_US, fr_FR, de_DE в каталоге Locale. Создайте файл в каждом каталоге с именем default.po . Скопируйте следующий код в соответствующий файл.

SRC / Locale / en_US / default.po

msgid "msg"
msgstr "CakePHP Internationalization example."

SRC / Locale / fr_FR / default.po

msgid "msg"
msgstr "Exemple CakePHP internationalisation."

SRC / Locale / de_DE / default.po

msgid "msg"
msgstr "CakePHP Internationalisierung Beispiel."

Создайте каталог Localizations в src / Template и в этом каталоге создайте файл View с именем index.ctp . Скопируйте следующий код в этот файл.

SRC / Template / Локализации / index.ctp

<?php
   echo $this->Form->create("Localizations",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'); ?>

Выполните приведенный выше пример, посетив следующий URL.

HTTP: // локальный: 85 / CakePHP / локаль

Выход

После выполнения вы получите следующий вывод.

Локализации

Эл. адрес

CakePHP предоставляет класс электронной почты для управления функциями, связанными с электронной почтой. Чтобы использовать функциональность электронной почты в любом контроллере, нам сначала нужно загрузить класс Email, написав следующую строку.

use Cake\Mailer\Email;

Класс Email предоставляет различные полезные методы, которые описаны ниже.

Синтаксис From (строка | массив | ноль $ email ноль, строка | ноль $ имя ноль)
параметры
  • Строка с электронной почтой

  • название

Возвращает массив | $ это
Описание Указывает с какого адреса электронной почты; письмо будет отправлено

Строка с электронной почтой

название

Синтаксис Кому (строка | массив | ноль $ email ноль, строка | ноль $ имя ноль)
параметры
  • Строка с электронной почтой

  • название

Возвращает массив | $ это
Описание Указывает, кому будет отправлено письмо

Строка с электронной почтой

название

Синтаксис Отправить (строка | массив | ноль $ содержимое ноль)
параметры
  • Строка с сообщением или массив с сообщениями.

Возвращает массив
Описание Отправить электронное письмо, используя указанный контент, шаблон и макет

Строка с сообщением или массив с сообщениями.

Синтаксис Тема (строка | ноль $ subject нуль)
параметры
  • Строка темы

Возвращает массив | $ это
Описание Получить / установить тему.

Строка темы

Синтаксис Вложения (строка | массив | ноль $ вложения ноль)
параметры
  • Строка с именем файла или массив с именами файлов

Возвращает массив | $ это
Описание Добавить вложения в сообщение электронной почты

Строка с именем файла или массив с именами файлов

Синтаксис Bcc (строка | массив | ноль $ email ноль, строка | ноль $ имя ноль)
параметры
  • Строка с электронной почтой

  • название

Возвращает массив | $ это
Описание Bcc

Строка с электронной почтой

название

Синтаксис cc (string | array | null $ email null, string | null $ name null)
параметры
  • Строка с электронной почтой

  • название

Возвращает массив | $ это
Описание Cc

Строка с электронной почтой

название

пример

Внесите изменения в файл config / rout.php, как показано в следующей программе.

конфиг / routes.php

<?php
   use Cake\Core\Plugin;
   use Cake\Routing\RouteBuilder;
   use Cake\Routing\Router;

   Router::defaultRouteClass('DashedRoute');
   Router::scope('/', function (RouteBuilder $routes) {
      $routes->connect('/email',['controller'=>'Emails','action'=>'index']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();

Создайте файл EmailsController.php в src / Controller / EmailsController.php . Скопируйте следующий код в файл контроллера.

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

Создайте каталог Emails в src / Template и в этом каталоге создайте файл View с именем index.ctp. Скопируйте следующий код в этот файл.

SRC / Template / Письма / index.ctp

Email Sent.

Перед тем, как мы отправим письмо, нам нужно его настроить. На скриншоте ниже вы можете видеть, что есть два транспорта, по умолчанию и Gmail. Мы использовали транспорт Gmail. Вам необходимо заменить «ИМЯ ПОЛЬЗОВАТЕЛЯ GMAIL» на свое имя пользователя Gmail, а «ПАРОЛЬ ПРИЛОЖЕНИЯ» на пароль приложения. Вам необходимо включить двухэтапную аутентификацию в Gmail и создать новый пароль APP для отправки электронной почты.

конфиг / app.php

Имя пользователя Gmail

Выполните приведенный выше пример, посетив следующий URL: http: // localhost: 85 / CakePHP / email

Выход

После выполнения вы получите следующий вывод.