Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改laravel 7中的默认语言(本地化)时出现问题_Laravel_Laravel Localization - Fatal编程技术网

更改laravel 7中的默认语言(本地化)时出现问题

更改laravel 7中的默认语言(本地化)时出现问题,laravel,laravel-localization,Laravel,Laravel Localization,我正在尝试在拉威尔制作多语言视图 我设置了所有内容,但当我将config/app.php中的本地化从“en”更改为“ar”时。。。它保持“en”,我使用函数App::getLocal进行了测试 我的翻译文件“messages.php” 对于“en” ''' 我建议将语言存储在会话中,并使用中间件设置语言环境 工作示例 SetLocale.php中间件 public function handle($request, Closure $next) { if (Session::has('

我正在尝试在拉威尔制作多语言视图 我设置了所有内容,但当我将config/app.php中的本地化从“en”更改为“ar”时。。。它保持“en”,我使用函数App::getLocal进行了测试

我的翻译文件“messages.php” 对于“en”

'''


我建议将语言存储在会话中,并使用中间件设置语言环境

工作示例

SetLocale.php中间件

 public function handle($request, Closure $next)
{
    if (Session::has('language'))
    {
        App::setLocale(strtolower(Session::get('language')));
    }
    return $next($request);
}
用于设置语言的控制器函数

 public function setLanguage(string $language)
{
    if (Session::has('language'))
    {
        Session::forget('language');
    }
    Session::put('language', $language);

    return redirect()->back();
}
因此,现在在网站上发生的所有事情上,中间件将检查语言并将其设置为会话中的内容

另外,不要忘记在app\Http\Kernel.php中的$middlewareGroups中指定中间件

您可以在网站上的任何位置创建表单,供用户选择其语言首选项,并路由到控制器功能

  • 您可以使用
    php-artisan-config:clear
    命令尝试清除缓存

  • 可能是一个空格的问题。尝试改变

    // "offer name required" => "يجب ادخال اسم العرض",
    'offer_name_required' => 'يجب ادخال اسم العرض',
    
    // echo __('messages.offer name required');
    echo __('messages.offer_name_required');
    

  • 您的备用语言环境是什么?我仍然不知道问题出在哪里,但知道它会很有趣。该函数后面的url是什么?我的备用语言环境是“en”,函数后面的url是“/本地”。。这是一个简单的路由,只为测试调用控制器,我删除了空格,也遇到了同样的问题
     public function handle($request, Closure $next)
    {
        if (Session::has('language'))
        {
            App::setLocale(strtolower(Session::get('language')));
        }
        return $next($request);
    }
    
     public function setLanguage(string $language)
    {
        if (Session::has('language'))
        {
            Session::forget('language');
        }
        Session::put('language', $language);
    
        return redirect()->back();
    }
    
    // "offer name required" => "يجب ادخال اسم العرض",
    'offer_name_required' => 'يجب ادخال اسم العرض',
    
    // echo __('messages.offer name required');
    echo __('messages.offer_name_required');