多语言网站、技巧和解决方案
Multilingual website, tricks and solutions
我打算制作一个多语言网站(3 种语言)。我很好奇,有什么方法或规则可以正确制作它吗?我的乐器是 Laravel 5.4。
我遇到的问题:
- 如何在数据库中存储数据:在一个有很多行的 table 中(每种语言一个),或者创建一些 table 行(每种语言一个,通过外键连接)?
- 如何 select 在用户 select 区域设置后正确的语言数据?我不确定我的方法是否正确,每次我都在需要发送数据进行查看时检查语言环境变量。
我问是因为我想知道如何维护和照顾我的代码。
您应该制作一个中间件并将其添加到一个组中,该组将包含所有需要转换的路由。在中间件中,您检查会话中的语言并设置它以便当前请求可以使用它。
public function handle($request, Closure $next)
{
if( !Session::has('locale' )){
$browserLanguage = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); //read browser language
if ( array_key_exists($browserLanguage, Config::get('languages')) ) {
Session::set('locale', $browserLanguage);
} else {
Session::set('locale', 'en');
}
}
//Simply set language from session
App::setlocale(Session::get('locale'));
return $next($request);
}
当用户想要 select 特定语言时,您给他们一个可用语言列表,然后将 selected 语言设置到会话中
if (array_key_exists($language, Config::get('languages'))) {
Session::set('locale', $language);
}
至于 table,如果您确定只有 3 种语言,那么您可以创建一个包含 4 列的 table
key en fr es
hi hi salut ola
我打算制作一个多语言网站(3 种语言)。我很好奇,有什么方法或规则可以正确制作它吗?我的乐器是 Laravel 5.4。
我遇到的问题:
- 如何在数据库中存储数据:在一个有很多行的 table 中(每种语言一个),或者创建一些 table 行(每种语言一个,通过外键连接)?
- 如何 select 在用户 select 区域设置后正确的语言数据?我不确定我的方法是否正确,每次我都在需要发送数据进行查看时检查语言环境变量。
我问是因为我想知道如何维护和照顾我的代码。
您应该制作一个中间件并将其添加到一个组中,该组将包含所有需要转换的路由。在中间件中,您检查会话中的语言并设置它以便当前请求可以使用它。
public function handle($request, Closure $next)
{
if( !Session::has('locale' )){
$browserLanguage = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); //read browser language
if ( array_key_exists($browserLanguage, Config::get('languages')) ) {
Session::set('locale', $browserLanguage);
} else {
Session::set('locale', 'en');
}
}
//Simply set language from session
App::setlocale(Session::get('locale'));
return $next($request);
}
当用户想要 select 特定语言时,您给他们一个可用语言列表,然后将 selected 语言设置到会话中
if (array_key_exists($language, Config::get('languages'))) {
Session::set('locale', $language);
}
至于 table,如果您确定只有 3 种语言,那么您可以创建一个包含 4 列的 table
key en fr es
hi hi salut ola