是否可以在lang / en文件夹中创建子文件夹?

时间:2014-12-24 11:31:49

标签: laravel laravel-4

我在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 值(“测试值”)!!

1 个答案:

答案 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(),因此同样适用。