【问题标题】:Inheritance in Laravel Language FilesLaravel 语言文件中的继承
【发布时间】:2018-06-10 11:24:58
【问题描述】:

我在 laravel 中的语言文件需要一个层次结构。想象一下,我有以下 /resources/lang/en/entity.php 的语言文件

<?php

return [

    'show' => 'Show Item',
    'view' => 'View Item',
    'edit' => 'Edit Item',
    'create' => 'Create a new Item',

];

现在我需要在 /resources/lang/en/post.php 为 post 实体创建一个新文件,但我不想将 entity.php 文件中的所有文本复制到新文件中。我只需要为新实体更改create 消息。类似于以下内容。

<?php

return [

    // Inherit the rest of texts from entity.php
    'create' => 'Create a new Blog Post',

];

有没有办法做到这一点? 提前谢谢大家。

【问题讨论】:

  • 为什么不创建 /resources/lang/en/buttons.php 并为所有按钮标签共享它?。
  • 这就是我想要的。如果有任何问题,请告诉我。

标签: php laravel laravel-5.5


【解决方案1】:

另一种方法是创建一个单独的文件来对元素的标签进行分组,而不是拥有大量单独的语言文件。例如,整个应用程序的所有按钮标签都可以存储在 /resources/lang/en/buttons.php 的文件中,您只需要更加小心地选择标签。 button.php 的内容可以是

<?php

return [

    'show_item' => 'Show Item',
    'view_item' => 'View Item',
    'edit_item' => 'Edit Item',
    'create_new_item' => 'Create a new Item',
    'create_new_blog_post' => 'Create a new Blog Post',
    //add all labels here
];

然后,如果您需要在站点的任何位置添加按钮标签,您可以从buttons.php 文件中获取它。例如,您的显示项目按钮将是

<button type="button">{{ __('buttons.show_item') }}</button>

【讨论】:

    【解决方案2】:

    您可以为此 create a new helper

    function translate($trans, $fallback) {
        return __($trans) === $trans ? __($fallback . '.' . explode('.', $trans)[1]) : __($trans);
    }
    

    然后像这样使用它:

    translate('post.create', 'entity');
    

    【讨论】:

      【解决方案3】:

      如果你坚持在你的语言文件中有类似继承行为的东西,我想到的第一个解决方案是使用 array_merge 方法:

      // entity.php
      return [
          'show' => 'Show Item',
          'view' => 'View Item',
          'edit' => 'Edit Item',
          'create' => 'Create a new Item',
      ];
      
      // post.php
      $terms = (include 'entity.php')
      
      return array_merge($terms, [
          'create' => 'Create a new Blog Post',
      ];)
      

      玩得开心:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-01
        相关资源
        最近更新 更多