1

根据用户角色,我需要在我的Zend项目中显示不同的文本。Zend翻译自定义语言

  • 对于普通用户,我使用的是“en”语言。
  • 对于新用户,我想要“en_new”之类的东西。

但是,语言“en_new”总是回复为“en”。

我正在使用locale_directory扫描系统来自动检测语言。

+0

您是否试图在另一个缩写中更改en_new? –

回答

1

翻译适配器在addTranslation()(至少在ZF 1.1x)内部调用Zend_Locale::findLocale()。这又会检查语言环境是否在白名单上。你的显然不是。我没有深入了解代码,但很可能下一步是从en_xxx恢复到en,这就是您的情况。

见来源:

  • library/Zend/Translate/Adapter.php - addTranslation方法
  • library/Zend/Locale.php - findLocale方法
0

我目前正在评估类似的东西,对一些用户来说我想要一些文本,以不同的方式转换。我也遇到了问题,无法创建自定义区域设置值。 坚持我在我的测试中发现似乎解决/解决这个问题。

也见这里: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时。 对于我的测试这个工作到目前为止,但尚未深入评估它。