用Laravel中的特定语言翻译

时间:2015-04-14 12:54:32

标签: 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('/');
    }
}

6 个答案:

答案 0 :(得分:22)

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

  1. 您可以在运行时更改默认语言:
  2. App::setLocale('fr'); 注意:这不适合您当前的需要,因为它只会对下一页加载生效。

    1. 您可以在此处设置默认语言 app / config / app.php
    2. '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');

      2. 注意:您的文件夹结构应该如下所示

        /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。