是否可以从包含(。)dot?
的语言文件中进行翻译例如,语言目录看起来像
/lang
/en
pagination.php
phone.history.php
/es
pagination.php
phone.history.php
phone.history.php文件包含点,并希望获得关键字'名称'来自phone.history.php文件。
Lang::get('phone.history.name')
它没有用。
答案 0 :(得分:2)
实际上,用于翻译的Laravel键只能包含一个点 .
才能工作,该点的功能是分离翻译文件路径(相对于语言目录) )从翻译数组键。那是因为Translator
类使用以下逻辑扩展Illuminate\Support\NamespacedItemResolver
类parses the key:
::
表示)并将其解压缩。group
(相对文件路径)和item
(转换数组密钥)。因此,在您的情况下,因为没有命名空间,所以当您使用它时:
Lang::get('phone.history.name')
结果如下:
phone
history
(而不是name
)由于您的语言目录中没有phone.php
,因此无效。
所以你有两个选择:
在文件名中使用其他字符,因此翻译参数中只有一个点,例如/lang/en/phone_history.php
,然后使用Lang::get('phone_history.name')
。
如果要对某些翻译文件进行分组,请使用子目录,例如/lang/en/phone/history.php
,然后使用Lang::get('phone/history.name')
(不幸的是,正如我上面所说,您只能使用一个点作为分隔符,所以你不能像配置文件Lang::get('phone.history.name')
那样使用多级点符号。
答案 1 :(得分:0)
实际上有第三个选择是使用点分键名。因此,您可以在/lang/en/phone.php
内设置'history.name' => 'John Doe'
,然后使用trans('phone.history.name')
进行检索。