我已经在CakePHP 3.8 Web应用程序中成功实现了国际化。但是,在同一Web应用程序的外壳环境中,发送电子邮件时国际化不起作用。它仅显示默认语言环境的值。
检查了po文件的内容和授权:
src/Locale/de/default.po
-rw-r--r-- 1 www wheel 9663 Jul 13 05:28 default.po
默认语言环境为英语
以下是相关代码段:
Shell:
public function nl2locavores($name = 'Anonymous') {
$this->loadModel('Crm');
$rc = $this->Crm->nl2locavores();
$this->out('lcvrShell nl2locavores: number of emails send: ' . $rc);
}
Model / Table / CrmTable.php:
namespace App\Model\Table;
use Cake\Mailer\Email;
use Cake\I18n\I18n;
class CrmTable extends Table
{
public function nl2locavores() {
I18n::setLocale('de');
// ....
$this->sndCrmEmail($nl_list);
}
private function sndCrmEmail($nl_list) {
$email->setTemplate('newsletter2019');
$email->emailFormat('html');
}
}
模板/电子邮件/html/newsletter2019.ctp:
echo __('Newsletter');
尽管“区域设置”设置为“ de”,所有电子邮件仍以英语发送。