php - Laravel:从包含点的语言文件中获取翻译

标签 php laravel laravel-5 laravel-5.1 laravel-5.2

是否可以从包含(.)点的语言文件中获取翻译?

例如,语言目录看起来像

/lang
      /en
          pagination.php
          phone.history.php

     /es
          pagination.php
          phone.history.php

phone.history.php 文件包含点,并希望从 phone.history.php 文件中获取键“名称”的翻译。

Lang::get('phone.history.name')

它不起作用。

最佳答案

实际上用于翻译的 Laravel key 只能包含一个点 为了工作,那个点的功能是分隔翻译文件路径(相对于语言目录)来自翻译数组键。这是因为 Translator 类扩展了 Illuminate\Support\NamespacedItemResolver 类,parses the key使用以下逻辑:

  • 首先它确定是否存在命名空间(由 :: 表示)并提取它。
  • 然后它将 key 拆分为一个(这是相对文件路径)和一个item(这是翻译数组 key )。

所以在你的情况下,因为没有命名空间,当你使用它时:

Lang::get('phone.history.name')

结果如下:

  • 文件名为phone
  • 翻译数组键将是history(而不是name)

而且由于您的语言目录中没有 phone.php,因此它不会工作。


所以你在这里有两个选择:

  1. 在你的文件名中使用另一个字符,这样翻译参数中只有一个点,比如 /lang/en/phone_history.php 然后使用 Lang::get( 'phone_history.name')

  2. 如果您想对一些翻译文件进行分组,请使用子目录,例如 /lang/en/phone/history.php 然后使用 Lang::get('phone/history.name')(不幸的是,正如我上面所说,您只能使用一个点作为分隔符,因此您不能像配置文件那样使用多级点符号 Lang: :get('phone.history.name')).

关于php - Laravel:从包含点的语言文件中获取翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36364034/

相关文章:

php - WordPress 菜单 : On click of parent menu item, 仅显示该链接的子导航子项

php - beanstalkd 和hadoop 集成有什么好的方法吗?

php - 为什么在 Laravel 中搜索(wherehas)关系中的小数列需要这么长时间?

php - 如何在 Laravel 5 .env 文件中设置多个发送地址?

php - Laravel 4 中将多个 url 指向同一方法的最佳实践

php - mod_rewrite之后的$_GET参数

email - Laravel 邮件队列无限循环异常

php - 如何在 Blade foreach循环中获取迭代次数

php - Laravel-5 将模板渲染为字符串而不解析变量

php - 拉维尔 5.1 : Ajax data is not receiving from server