我有一个用 Laravel 编写的项目。我通过 Laravel 本地化使用多种语言。
工作正常,但是当我直接访问URL时,内容没有更新。
例如,如果我直接访问这个URL,内容语言不会改变:site.com/en/slug-url
但是,如果我使用changeLanguage更改语言,然后访问相同的网址,则内容将变为英文。
如果 locale 值为 en,如何同时运行changeLanguage 函数将网站翻译成英文?
控制器
public function changeLanguage($locale)
{
// Check supported languages
$supportedLocales = ['en','tr'];
// If it is a supported language, update your language preference
if (in_array($locale, $supportedLocales)) {
session(['locale' => $locale]);
App::setLocale($locale);
}
Artisan::call('view:clear');
Artisan::call('route:clear');
LSCache::purgeAll();
// You can perform other actions or redirect
return redirect()->back();
}
路线
/* Lang */
$router->get('/lang/{locale}', 'HomeController@changeLanguage')->name('change_language');
此外,如果我访问 site.com/en,语言也不会改变。但如果我访问 site.com/lang/en,语言就会发生变化。
我找不到解决方案
您需要一个中间件来检查网址的区域设置并更改站点区域设置。您可以按照本教程正确设置本地化。
[https://lokalise.com/blog/laravel-localization-step-by-step/][1]