我在Laravel 4.2中有一个多语言网站,并希望使用lang文件以指定语言向管理员发送电子邮件通知。
如何调用Lang::get('group.key')
指定所需的语言?
感谢您的帮助!
编辑:现有代码:( lang项目为option1,option2,..,option6)
class EmailController extends BaseController {
public static function contact(){
$rules = [
'name' => 'required',
'email' => 'required|email',
'subject' => 'required|digits_between:1,6',
'message' => 'required'
];
$validator = Validator::make(Input::all(), $rules);
if (!$validator->fails()){
$data = ['subject' => Input::get('subject'),
'email' => Input::get('email'),
'content' => Input::get('message')];
Mail::send('emails.contact', $data, function($message){
$message->from(Input::get('email'), Input::get('name'));
$message->to('admin@email.com', 'Admin');
$message->subject(Lang::get('contact.option'.Input::get('subject')));
});
}
return Redirect::to('/');
}
}
答案 0 :(得分:22)
有三种方法可以实现这一目标:
App::setLocale('fr');
注意:这不适合您当前的需要,因为它只会对下一页加载生效。
'fallback_locale' => 'fr'
我深入研究了Illuminate \ Translation \ Translator:
get($key, array $replace = array(), $locale = null)
这意味着您可以使用Translator Facade执行此操作:
Lang::get($key, array $replace = array(), $locale = null);
示例:
Lang::get('group.key',[],'fr');
注意:您的文件夹结构应该如下所示
/app
/lang
/en
messages.php
/fr
messages.php
答案 1 :(得分:2)
在调用Lang::get()
之前设置所需的语言环境:
App::setLocale('es');
答案 2 :(得分:0)
我会推荐这样的东西:
$savedLocale = App::getLocale();
App::setLocale($this->getUserMailingLanguage());
Mail::to($this->e_mail)->send($mailable);
App::setLocale($savedLocale);
答案 3 :(得分:0)
<?php
return [
'welcome' => 'welcome :name',
];
trans('welcome', [ 'name' => 'xyz' ], 'fr');
答案 4 :(得分:0)
要获取特定语言的翻译-与当前语言环境不同,而无需设置和取消语言环境,只需执行
__('description_1', [], 'en')
答案 5 :(得分:0)
我遇到了完全相同的问题,并找到了所需的答案。 这将为您提供所需的结果:
trans('welcome',array(),null,'fr');
自Laravel
版本以来,此功能一直有效。 5.2。