3

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

Zizaco\Confide用来处理我的服务中的身份验证。它在任何地方都使用 LaravelLang来获取包中 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.phpreturn array('alerts' => ......)
  • /app/lang/pt_BR/packages/zizaco/confide/confide/alerts.phpreturn array('wrong_credentials' => ...)
  • /app/lang/packages/zizaco/confide/pt_BR/confide.phparray('alerts' => array('wrong_credentials' => '...'))-/app/lang/packages/zizaco/confide/pt_BR/confide/alerts.phpreturn array('wrong_credentials' => ...)

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

提前致谢!

4

2 回答 2

7

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

你现在可以通过做覆盖它

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

检查这个

laravel 4语言问题

覆盖包语言的正确路径

于 2014-07-02T22:08:52.597 回答
4

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

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

所有你需要做的就是requirecomposer.json

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

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

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

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

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

于 2013-10-13T13:35:44.997 回答