我在lang文件夹中有这个结构:
en /back/filename.php文件包含:
return array (
'test' => 'test value',
);
es /back/filename.php文件包含:
return array (
);
dd(Lang::has('back/filename.test', 'es'));
返回true !!!
{{ Lang::get('back/filename.test', array(), 'es') }}
返回 en 值(“测试值”)!!
答案 0 :(得分:3)
Laravel在任何情况下都会使用后备区域设置。如果您明确指定语言环境,则无关紧要。
我们来看看代码。
Illuminate\Translation\Translator
public function get($key, array $replace = array(), $locale = null)
{
list($namespace, $group, $item) = $this->parseKey($key);
foreach ($this->parseLocale($locale) as $locale)
// ...
所以parseLocale()
返回应该使用的语言环境......
protected function parseLocale($locale)
{
if ( ! is_null($locale))
{
return array_filter(array($locale, $this->fallback));
}
return array_filter(array($this->locale, $this->fallback));
}
如您所见,即使$locale
不为空,也会使用$this->fallback
作为第二选择。
Lang::has()
也会调用get()
,因此同样适用。