2014-10-16 65 views
2

我正在构建一个多语言Laravel站点。Laravel本地化邮件邮件列表

我需要能够以由保存的变量确定的语言邮寄客户端。这是我做的:

$broker = $this->getSiteInstanceDetails($broker_id); 

    $transport = Swift_SmtpTransport::newInstance($broker->smtp_server, $broker->smtp_port, $broker->smtp_encryption) 
     ->setUsername($broker->smtp_username) 
     ->setPassword($broker->smtp_password); 

    // creating the Swift_Mailer instance and pass the config settings 
    $mailer = Swift_Mailer::newInstance($transport); 

    $mailer->send($message); 

所以我使用swift_mailer实例来发送我的邮件。问题是我没有看到语言环境配置。我想能够设置每个客户端的区域设置(例如,我可能需要发送一个邮件发送到多种语言的客户端)

所以作为管理员,我有一个区域设置'en',但我想要打击客户,比如'it','ko'和'jp'

我需要为每个客户使用App::setLocale('en');吗?例如,循环访问我的客户端列表,将语言环境设置为当前客户端,发送电子邮件,然后将语言环境设置回管理员?为整个应用程序设置语言环境似乎很麻烦,当我只需要翻译1个视图时。

欢迎任何意见或建议。

回答

4

您可以通过郎放慢参数为第参数设置为区域设置:

Lang::get($key, array $replace = array(), $locale = null) 

所以你可以有区域设置为en但你可以在DB检查,对于用户X你想发送电子邮件的语言环境中fr所以当使用lang你需要使用:

Lang::get('general.hello', [], 'fr'); 

它应该工作正常。通过这种方式,您不需要将语言环境更改为整个应用程序,只需要通过自定义,就可以使用当前语言环境集以外的语言进行翻译。

+0

完美。谢谢 – 2014-10-16 16:35:12

+0

这是一个有用的解决方案,但如果邮件在队列中呢? – Christophvh 2017-04-21 09:46:53