如何在Laravel中不受当前区域设置影响获取指定语言文件消息
在Laravel 9中指定区域获取语言消息的方法
你可以通过以下几种方式绕过当前全局locale,直接读取指定语言文件的内容:
使用
__辅助函数的第三个参数
平时用的__函数其实支持传入第三个参数指定目标locale,写法很简单:{{ __('page.welcome_message', [], 'fr') }}第二个参数是用于替换消息变量的数组,不需要替换就传空数组,第三个参数就是你要指定的语言标识(比如这里的
fr)。使用
Lang门面的get方法
也可以直接调用Lang门面的get方法,同样指定locale参数:{{ \Illuminate\Support\Facades\Lang::get('page.welcome_message', [], 'fr') }}效果和上面的辅助函数完全一致,适合习惯用门面调用的场景。
临时切换locale(适合批量获取场景)
如果需要多次获取某个语言的内容,每次传参数太麻烦,可以临时切换locale,用完再恢复:// 先保存当前全局locale $currentLocale = app()->getLocale(); // 切换到目标语言 app()->setLocale('fr'); // 正常获取消息,此时会读取fr语言文件 $welcomeMsg = __('page.welcome_message'); $otherMsg = __('page.other_message'); // 切回原来的locale,不影响后续请求 app()->setLocale($currentLocale);这种方法适合在控制器或者服务类里批量处理多语言内容的场景。
以上方法都不会改变当前请求的全局locale,只是单独获取指定语言的消息内容。
内容的提问来源于stack exchange,提问作者Saswat
相关产品推荐
相关产品推荐

