"App::getLocale()" 返回默认语言而不是自定义服务提供者中的当前语言
Posted
技术标签:
【中文标题】"App::getLocale()" 返回默认语言而不是自定义服务提供者中的当前语言【英文标题】:"App::getLocale()" returns default language instead of current in custom service provider 【发布时间】:2019-05-17 08:11:35 【问题描述】:我正在使用服务提供商制作 js 本地化器,我需要获取当前语言环境以获取当前语言翻译并传递给 js。一切正常,但 App::getLocale() 不断返回默认应用语言。
我尝试使用 middlware 和基于 laracasts 和 *** 中其他问题线程的视图作曲家来做到这一点,但没有任何帮助。 这是链接
https://laracasts.com/discuss/channels/laravel/get-current-locale-in-app-service-provider
Getting locale language at provider class in Laravel
Laravel get getCurrentLocale() in AppServiceProvider
class JstranslateServiceProvider extends ServiceProvider
protected $langPath;
public function __construct()
$locale = App::getLocale();
$this->langPath = resource_path('lang/'.$locale);
dd($locale);
dd($locale);
输出始终为 'en'
,尽管当前使用的是语言。
我使用本指南 Link 进行了 js 本地化,它似乎对他们有用
【问题讨论】:
【参考方案1】:在服务提供者的构造函数之外执行此操作。
这些类是在 Laravel 执行任何操作之前实例化的,因此很可能您在中间件/视图编写器中编写的任何内容都没有生效。
相反,您应该在 boot
或 register
方法中执行此操作。
【讨论】:
刚刚尝试了这两个功能。结果相同public function register() $locale = App::getLocale(); dd($locale);
你是如何设置语言环境的,可以分享一下代码吗?
我也尝试过使用中间件和视图作曲家
是的,但是您能分享一下您为此编写的代码吗?
Route::get('locale/locale', function($locale) Session::put('locale', $locale); return redirect()->back(); );
路由从 app.blade.php 获取 url。我也试过把App::setLocale($locale)
放在那里,但它也不起作用【参考方案2】:
在引导中获取语言环境并将所有内容都放入作曲家解决了我的问题。
public function boot()
Cache::forget('translations');
view()->composer("layouts.app", function ()
$locale = App::getLocale();
if($locale == 'us')
$locale = 'en';
$this->langPath = resource_path('lang/'.$locale);
Cache::rememberForever('translations', function ()
return collect(File::allFiles($this->langPath))->flatMap( function ($file)
return [
($translation = $file->getBasename('.php')) => trans($translation),
];
)->toJson(JSON_UNESCAPED_UNICODE);
);
);
【讨论】:
【参考方案3】:我正在使用 Lumen 5.8 版并想出了如何获取当前语言环境:
app('translator')->getLocale();
【讨论】:
以上是关于"App::getLocale()" 返回默认语言而不是自定义服务提供者中的当前语言的主要内容,如果未能解决你的问题,请参考以下文章
调用 Coinbase pro 沙盒 api 时,无效:401 Unauthorized。文本:""message":"invalid signature&qu
UVA 12563 "Jin Ge Jin Qu hao" (背包)
如何在输入中将 <security:authentication property="principal.username"/> 放入 value=" &qu
"errors":"errors":["detail":"您无权执行此操作。","code":&qu
OAuthException using Socialite with facebook - "message": "必须使用活动访问令牌来查询有关当前用户的信息。&qu