根据用户角色,我需要在我的Zend项目中显示不同的文本。Zend翻译自定义语言
- 对于普通用户,我使用的是“en”语言。
- 对于新用户,我想要“en_new”之类的东西。
但是,语言“en_new”总是回复为“en”。
我正在使用locale_directory扫描系统来自动检测语言。
根据用户角色,我需要在我的Zend项目中显示不同的文本。Zend翻译自定义语言
但是,语言“en_new”总是回复为“en”。
我正在使用locale_directory扫描系统来自动检测语言。
翻译适配器在addTranslation()
(至少在ZF 1.1x)内部调用Zend_Locale::findLocale()
。这又会检查语言环境是否在白名单上。你的显然不是。我没有深入了解代码,但很可能下一步是从en_xxx
恢复到en
,这就是您的情况。
见来源:
library/Zend/Translate/Adapter.php
- addTranslation
方法library/Zend/Locale.php
- findLocale
方法我目前正在评估类似的东西,对一些用户来说我想要一些文本,以不同的方式转换。我也遇到了问题,无法创建自定义区域设置值。 坚持我在我的测试中发现似乎解决/解决这个问题。
也见这里:Combining multiple translation sources
我在做什么是只添加自定义转换到我的默认的。
$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
这样做似乎overvwrites已有的,所以对于你的新用户,可以使用适当的翻译添加自定义文件夹中的addTranslation
时。 对于我的测试这个工作到目前为止,但尚未深入评估它。
您是否试图在另一个缩写中更改en_new? –