2013-01-21 38 views
0

在與gettext函數作戰並承認失敗後,我下載了用於我的項目的Zend Framework。它終於與我到目前爲止的gettext文件一起工作,但現在我想知道如何在默認語言環境中顯示默認文本?我的config.php文件的使用Zend的默認語言環境使用gettext文件翻譯

部分(它包括在上面的每一個文件):

<?php 
// ... 
define('LANGUAGE', (isset($_GET['lang']) && $_GET['lang'] === 'fr') ? 'fr-CA' : 'en-CA'); 
define('LOCALE', (isset($_GET['lang']) && $_GET['lang'] === 'fr') ? 'fr_CA' : 'en_CA'); 
// ... 

$translator = new \Zend\I18n\Translator\Translator(); 
$translator->addTranslationFile('gettext', dirname(__FILE__) . '/locale/' . LOCALE . '.mo', 'messages', LOCALE); 
$translator->setLocale(LOCALE); 

的法語翻譯工作正常,但英語是尋找en_CA.mo文件(我假設從addTranslationFile()方法)不存在。我如何做到這一點,以便如果顯示英文版本時鍵盤會被回顯?製作一個en_CA.mo文件似乎是多餘的。

回答

2

如果您允許翻譯不同語言的多種翻譯,那麼您至少需要創建一個空白的en_CA.mo文件。否則,您會發現顯示的錯誤。由於en_CA.mo文件是空白的,因此將顯示翻譯鍵而不是實際的翻譯本身。

+0

我在想那個。雖然在實現時,Translator類試圖解析空文件:'帶有消息'/home/user/public_html/project/includes/locale/en_CA.mo'的未捕獲異常'Zend \ I18n \ Exception \ InvalidArgumentException'不是有效的gettext文件'位於/home/user/public_html/project/libraries/Zend/I18n/Translator/Loader/Gettext.php:80' –

+1

翻譯文件必須至少包含標題信息。我建議嘗試使用PoEdit並在那裏創建文件。您甚至可以嘗試添加至少1個翻譯密鑰以便以這種方式進行翻譯,您可以確定該文件具有所需的標題信息。而不是試圖創建一個空白和空白的文件。 – Diemuzi

+0

它的工作,猜我只需要一個空白的翻譯文件。謝謝。 –