【问题标题】:Override package localization in Laravel在 Laravel 中覆盖包本地化
【发布时间】:2013-10-12 19:42:16
【问题描述】:

这应该是“微不足道的”,但是在#laravel irc 频道上聊天后,我发现现在可能是不可能的。但是我会在这里问它,然后再以丑陋的方式完成项目。如果以目前的方式确实不可能,我会在github上填写一个请求(在将项目交给我的客户之后)。

我正在使用Zizaco\Confide 来处理我的服务中的身份验证。它在任何地方都使用 Laravel Lang 来获取包中 8 种捆绑语言之一的字符串。但是我需要覆盖其中的一些字符串,并且我不想修改包文件(这会破坏 Composer 的全部目的)。我该怎么做?

例如,我需要将confide::confide.alerts.wrong_credentials 修改为pt_BR 语言。到目前为止我尝试了什么:

  • /app/lang/pt_BR/confide.php 文件,内容为 return array('alerts' => array('wrong_credentials' => '...'))。它适用于Lang::get('confide.alerts.wrong_credentials'),但不适用于命名空间Lang::get('confide::confide.alerts.wrong_credentials')
  • /app/lang/pt_BR/packages/zizaco/confide/confide.php 与 return array('alerts' => ......)
  • /app/lang/pt_BR/packages/zizaco/confide/confide/alerts.php 和 return array('wrong_credentials' => ...)
  • /app/lang/packages/zizaco/confide/pt_BR/confide.php 和 array('alerts' => array('wrong_credentials' => '...')) - /app/lang/packages/zizaco/confide/pt_BR/confide/alerts.php 和 return array('wrong_credentials' => ...)

关于我错过了什么的任何线索?还是 Laravel4 真的没有这个功能?

提前致谢!

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    实际上它已在 Laravel 4.1 核心中修复

    您现在可以通过以下方式覆盖它

    app/lang/packages/(locale)/confide/confide.php
    

    检查一下

    laravel 4 language issue

    correct path for overriding package languages

    【讨论】:

      【解决方案2】:

      所以,就今天而言,Laravel 确实缺乏这个功能。 我已经要求它创建一个issue on github。

      同时,可以使用 crynobone 的 Orchestra Platform 2 翻译组件无缝实现此功能,可以找到 here

      你需要做的就是requirecomposer.json它

      {
          "require": {
              "orchestra/translation": "2.0.*"
          }
      }
      

      并替换/config/app.php中的原翻译包('Illuminate\Translation\TranslationServiceProvider')

      'providers' => array(
          //'Illuminate\Translation\TranslationServiceProvider',
          // ...
          'Orchestra\Translation\TranslationServiceProvider',
      ),
      

      就是这样!现在,拥有app/lang/en/packages/confide/confide.php 就可以了! (请注意,路径应该是 /packages/packagename/,而不是 /packages/vendor/packagename/

      它真的让我免于头疼,希望其他人也觉得这很有用。

      【讨论】:

      • 并确保在编辑提供者列表之前运行 composer update ,而不是之后(因为我做错了):)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 2020-05-08
      • 1970-01-01
      • 2023-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多