根据用户角色,我需要在 Zend 项目中显示不同的文本。
- 对于普通用户,我使用“en”语言。
- 对于新用户,我想要“en_new”之类的东西。
但是,语言“en_new”总是恢复为“en”。
我正在使用 locale_directory 扫描系统来自动检测语言。
根据用户角色,我需要在 Zend 项目中显示不同的文本。
但是,语言“en_new”总是恢复为“en”。
我正在使用 locale_directory 扫描系统来自动检测语言。
翻译适配器Zend_Locale::findLocale()
在内部调用addTranslation()
(至少在 ZF 1.1x 中)。这反过来检查语言环境是否在白名单上。显然,你的不是。我没有深入研究代码,但下一步很可能是恢复en_xxx
到en
您的案例中发生的情况。
查看来源:
library/Zend/Translate/Adapter.php
-addTranslation
方法library/Zend/Locale.php
-findLocale
方法我目前正在评估类似的内容,对于某些用户,我希望对某些文本进行不同的翻译。而且我还遇到了无法创建自定义语言环境值的问题。我在测试中发现的艰难似乎可以解决/解决问题。
另请参阅:组合多个翻译源
我正在做的只是将自定义翻译添加到我的默认翻译中。
$translateDef = new Zend_Translate(
array(
'adapter' => 'gettext',
'content' => 'locale/default/',
'locale' => 'auto',
'scan' => Zend_Translate::LOCALE_DIRECTORY
)
);
$translateCust = new Zend_Translate(
array(
'adapter' => 'gettext',
'content' => 'locale/custom/',
'locale' => 'auto',
'scan' => Zend_Translate::LOCALE_DIRECTORY
)
);
$translateDef->addTranslation(array(
'content' => $translateCust
)
);
文件夹结构如下所示:
locale/
default/
de
en
custom/
de
en
因此,在执行此操作时,addTranslation
它似乎覆盖了现有的,因此对于您的新用户,您可以添加具有正确翻译的自定义文件夹。对于我的测试,到目前为止这工作,但还没有深入评估它。