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