2014-10-16 3 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

Вы можете передать Ланг параметра Я, как 3 параметра Я локали:

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

Таким образом, вы можете иметь установить локаль en, но вы можете проверить в БД, что для пользователя х вы хотите отправить по электронной почте локаль в fr так, когда используя язык вы должны использовать:

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

, и он должен работать нормально. Таким образом, вам не нужно менять локаль для всего приложения, но передавать только пользовательский, если вы хотите получить перевод на другом языке, кроме текущего набора локалей.

+0

Perfect. Спасибо –

+0

Это полезное решение, но что, если почта находится в очереди? – Christophvh

Смежные вопросы