【问题标题】:Does laravel not detect request locale automatically?laravel 不会自动检测请求语言环境吗?
【发布时间】:2017-04-01 02:39:57
【问题描述】:

我正在学习 laravel 5.4 语言环境章节。当我编写代码进行测试时,我会遇到一个问题。例如,我的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-Languageen 的人显示英文,向Accept-Languagezh-CN 的人显示中文,我需要手动执行,对吗?我虽然 laravel 会自动检测请求语言环境。

【问题讨论】:

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


【解决方案1】:

首先在您的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);

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 2012-02-06
      • 2011-12-01
      • 2018-02-23
      • 1970-01-01
      相关资源
      最近更新 更多