Как и многие другие фреймворки, 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
Выполните приведенный выше пример, посетив следующий URL: http: // localhost: 85 / CakePHP / email
Выход
После выполнения вы получите следующий вывод.