用于电子邮件邮件列表的Laravel Localization on the Fly

时间:2014-10-16 16:04:19

标签: laravel localization swiftmailer

我正在建立一个多语言的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个视图时,为整个应用程序设置区域设置似乎很麻烦。

欢迎任何意见或建议。

1 个答案:

答案 0 :(得分:4)

您可以将lang paramter作为第3个参数传递给区域设置:

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

因此,您可以将区域设置设置为en,但是您可以在数据库中检查用户x是否要在fr中发送电子邮件区域设置,因此在使用lang时您需要使用:

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

它应该可以正常工作。这样您就不需要将语言环境更改为整个应用程序,但如果您希望使用当前语言环境设置以外的语言进行翻译,则只需传递自定义。