它应该是“微不足道的”,但在对#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真的缺少这个功能吗?
提前致谢!
答案 0 :(得分:7)
实际上它修复了Laravel 4.1核心
您现在可以通过执行
覆盖它app/lang/packages/(locale)/confide/confide.php
检查这个
答案 1 :(得分:4)
所以,至于今天,Laravel确实缺乏此功能。 我已经要求创建issue on github。
与此同时,可以使用crynobone的Orchestra Platform 2翻译组件无缝实现此功能,可以找到here
您需要做的只是在require
composer.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 /
它真的让我免于头痛,希望别人也觉得这很有用。