这应该是"微不足道的",但是在 #laravel irc频道上聊天后,我发现现在可能是不可能的。但是在以丑陋的方式完成项目之前,我会在这里问它。如果通过目前的方式确实不可能,我将在 github 上填写请求(在将项目移交给我的客户之后(。
我正在使用Zizaco'Confide
来处理服务中的身份验证。它在任何地方都使用 Laravel Lang
来获取包的 8 种捆绑语言之一的字符串。但是我需要覆盖其中一些字符串,并且我不想修改包文件(这会破坏 Composer 的整个目的(。我该怎么做?
例如,我需要修改pt_BR
语言的confide::confide.alerts.wrong_credentials
。到目前为止我尝试过:
-
/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 真的缺少此功能?
提前感谢!
实际上它修复在Laravel 4.1核心中
您现在可以通过执行以下操作来覆盖它
app/lang/packages/(locale)/confide/confide.php
检查这个
拉拉维尔4语言问题
覆盖包语言的正确路径
所以,就今天而言,Laravel确实缺乏这个功能。我已经要求它在 github 上创建一个问题。
同时,可以使用crynobone的Orchestra Platform 2翻译组件无缝实现此功能,该组件可在此处找到。
您需要做的就是将其require
composer.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/
它真的让我免于头疼,希望其他人也觉得这有用。