2013-01-21 39 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

它的工作,猜我只需要一个空白的翻译文件。谢谢。 –