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時。 對於我的測試這個工作到目前爲止,但尚未深入評估它。