首页 > 解决方案 > "App::getLocale()" 返回默认语言而不是自定义服务提供者中的当前语言

问题描述

我正在使用服务提供商制作一个 js 本地化器,我需要获取当前语言环境以获取当前语言翻译并传递给 js。一切正常,但 App::getLocale() 不断返回默认应用程序语言。

我尝试使用 middlware 和基于 laracasts 和 stackoverflow 中的其他问题线程的视图作曲家来做到这一点,但没有任何帮助。这里是链接

https://laracasts.com/discuss/channels/laravel/get-current-locale-in-app-service-provider

在 Laravel 的提供者类中获取语言环境

Laravel 在 AppServiceProvider 中获取 getCurrentLocale()

class JstranslateServiceProvider extends ServiceProvider 
{ 
    protected $langPath; 

    public function __construct() 
    {   
        $locale = App::getLocale();
        $this->langPath = resource_path('lang/'.$locale);
        dd($locale);
    }
}

dd($locale);'en'尽管使用当前语言,但输出始终为 。

我使用本指南链接进行了 js 本地化,它似乎对他们有用

标签: phplaravel

解决方案


在服务提供者的构造函数之外执行此操作。

这些类是在 Laravel 执行任何操作之前实例化的,因此很可能您在中间件/视图编写器中编写的任何内容都没有生效。

相反,您应该在bootorregister方法中执行此操作。


推荐阅读