如何在CakePHP 3.x的shell中实现国际化?

时间:2019-07-13 06:41:27

标签: cakephp internationalization cakephp-3.x

我已经在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”,所有电子邮件仍以英语发送。

0 个答案:

没有答案