【问题标题】:How can I get the lang inside my controller in laravel如何在 laravel 的控制器中获取 lang
【发布时间】:2018-03-19 00:06:18
【问题描述】:

我正在使用 axios 向控制器发送发布请求。语言设置为fr,所有刀片文本也更改为fr,但如果我使用 axios 发送发布请求,它不会从控制器转换。我试图查看控制器中的语言,它总是显示en

这是我正在使用的代码..

加载登录刀片的初始路径

Route::get('/{lang?}/login', 'Auth\LoginController@showLoginForm')->name('login');

这个路由在一个中间件中,根据 lang 变量设置 lang。

使用 axios 发布请求

Route::post('user/login', [
   'uses' => 'loginController@login'
 ]);

内部loginController@login

$loc=config('app.locale');
\Log::info($loc); // It always shows en

我正在尝试像这样返回翻译后的文本

return response()->json([
      'error' => trans('Invalid Details') // I am using string as key in fr.json file
 ],401);

**我认为 trans 函数对我不起作用,即使在我的刀片中,刀片 @lang('key') 和 {{__(key')}} 工作得很好,但不是 trans 函数 **

无论是 ajax 请求还是普通 get 请求,我是否必须在每条路由中设置语言环境?因为我在最初加载页面时设置了语言环境,所以我是否也必须为 ajax 请求再次执行此操作?

谢谢。

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.5


    【解决方案1】:

    如果你想在你的控制器中设置本地,

    function showLoginForm($language){
        app()->setLocale($language);
        ........
        ........
    }
    

    如果你想为所有子路由设置本地,然后尝试跟随一个

    // set locale for '/admin/anything/[en|fr|ru|jp]/anything' only
    if (in_array(Request::segment(1),['en', 'fr', 'ru', 'jp'])) {
        App::setLocale(Request::segment(1));
    } else {
        // set default / fallback locale
        App::setLocale('en');
    }
    
    Route::group(['prefix' => '{locale}'], function() {
        Route::resource('product', 'ProductController', ['except' => [
        'show'
        ]]);
    });
    

    【讨论】:

    • 好吧,我尝试硬设置本地,然后尝试翻译。它设置了本地但没有翻译。 ` $loc=config('app.locale'); \Log::info($loc);` trans('Invalid Details') 虽然我在调用 trans 函数之前对本地进行了硬编码,但它也不起作用
    • config('app.locale') 将只接收当前的本地语言代码。设置语言请使用app()->setLocale('fr)
    • 对不起,我喜欢这个 `\App::setLocale('fr');` 并且设置正确
    • 不,它将语言环境设置为 fr 但 trans 函数总是返回密钥而不是来自 lang 文件夹内 fr.json 文件的翻译
    • 在刀片文件中尝试__('Invalid Details')
    猜你喜欢
    • 2018-05-31
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多