多语言网站、技巧和解决方案

Multilingual website, tricks and solutions

我打算制作一个多语言网站(3 种语言)。我很好奇,有什么方法或规则可以正确制作它吗?我的乐器是 Laravel 5.4。

我遇到的问题:

  1. 如何在数据库中存储数据:在一个有很多行的 table 中(每种语言一个),或者创建一些 table 行(每种语言一个,通过外键连接)?
  2. 如何 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