用Laravel中的特定语言翻译

MPi*_*kle 14 php laravel

我在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('/');
    }
}
Run Code Online (Sandbox Code Playgroud)

Eme*_*bah 25

有3种方法可以实现这一目标:

  1. 您可以通过执行以下操作在运行时更改默认语言:

App::setLocale('fr'); 注意:这不适合您当前的需要,因为它只会对下一页加载生效.

  1. 您可以在此处设置默认语言app/config/app.php

'fallback_locale' => 'fr'

  1. 我深入研究了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
Run Code Online (Sandbox Code Playgroud)

  • 这看起来像一个更全面的(如果选项3工作 - 清洁)答案比接受的答案.特别是如果它提到选项1仅保持更改直到下一页加载 - 即它不会改变用户因重定向而看到的内容. (2认同)

ale*_*der 15

要获得特定于语言的翻译 - 与当前语言环境不同而无需设置和取消设置语言环境,只需执行

__('description_1', [], 'en')
Run Code Online (Sandbox Code Playgroud)