laravel是否自动检测到请求区域设置?

时间:2017-04-01 02:39:58

标签: laravel laravel-5 laravel-5.4 laravel-localization

我正在学习laravel 5.4 locale chapter。当我编写代码进行测试时,我得到了一个问题。例如,我的resources/lang目录中有两个语言目录:

/resources
    /lang
        /en
            messages.php
        /zh-CN
            messages.php

我将默认语言环境设置为zh-CN,后备语言环境为en。当我将Accept-Language设置为zh-CN时,我可以在zh-CN中获得翻译字符串。但是当我将Accept-Language设置为en时,我仍然在zh-CN中获得字符串。那么laravel不会自动检测请求区域设置?如果我的应用程序想要向那些Accept-Language en显示英语,并向那些Accept-Language zh-CN显示中文,我需要手动执行,这是正确的吗?我虽然laravel会自动检测请求区域设置。

2 个答案:

答案 0 :(得分:0)

执行这些更改后,始终建议您运行以下命令:

php artisan cache:clear
php artisan view:clear
php artisan route:clear

答案 1 :(得分:0)

首先在config/app.php中配置可用的语言。

    'available_locales' => array('en', 'de', 'fr', 'it'),

现在,将此代码添加到您的routes/web.php中。它将检测浏览器语言并设置语言环境(如果可用)。

    $availableLanguages = Config::get('app.available_locales');
    $lang = Request::getPreferredLanguage($availableLanguages);
    if ($lang) Config::set('app.locale', $lang);