【发布时间】:2017-04-07 19:02:50
【问题描述】:
我想为我的网站添加多语言支持,但我不知道如何最好地实现它。 Laravel 文档 (https://laravel.com/docs/5.3/localization) 非常少见,因此我进行了一些研究,但似乎每个人都使用不同的解决方案,并且使用的 URL 包含其中的语言 - 例如 example.com/en/pagename。
我想要一个没有语言标签的 URL 架构。像这样的东西:example.com/pagename
现在,根据用户的语言,应该翻译 URL:
example.com/pagename (english)
example.com/seitenname (german)
初始语言应由浏览器设置/语言检测。用户还应该可以选择在提供的语言之间进行切换。
在我的网站上,用户可以注册一个帐户。他将能够将他的首选语言保存在数据库中——比如在表users 中的字段pref_lang 中。在这种情况下,为了简单起见,它只是一个像“en”(英语)或“de”(德语)这样的字符串。
通过创建如下语言文件可以轻松翻译路线:
// resources/lang/de/routes.php
return array(
'contact' => 'kontakt',
'pagename' => 'seitenname'
);
...还有一个用于 EN:
// resources/lang/en/routes.php
return array(
'contact' => 'contact',
'pagename' => 'pagename'
);
...结合这样的路线例如:
// routes/web.php
Route::get('/', function () {
return view('pages.dashboard');
});
Route::get('/{contact}', function () {
return view('pages.contact');
});
Route::get('/{pay2gether-system}', function () {
return view('pages.pagename');
});
现在只有一个问题,我如何创建这样一个“语言切换”按钮,将浏览器设置/切换操作或数据库中的语言存储在会话中,以及如何将其重新用于路线和HTML <a href="#"> 标签中的 URL?
【问题讨论】:
标签: laravel laravel-routing laravel-5.3 multilingual