我正在使用 ZendFramework 编写一个网站,并决定使用 gettext 系统将其内容国际化。在我看来,我用法语写字符串,并提供一个此时只有一个文件“en.mo”来将句子翻译成英语。我想避免维护一个文件“fr.mo”,它只会将一个句子翻译成完全相同的句子。
有没有办法告诉 Zend 或 gettext 当语言环境是“fr”或“fr_FR”时,不需要搜索翻译文件并且必须按原样返回键字符串?或者也许有理由创建“身份翻译”文件 fr.mo ?
此时我的代码的关键引用:
我的引导程序的摘录:
受保护的函数 _initTranslations() { $config = $this->getApplication()->getOptions(); Zend_Locale::setDefault('en'); // 如果检测完全失败则回退 $locale = new Zend_Locale(); if ( !in_array($locale->getLanguage(), explode(',',$config['available_translations']))) { $locale->setLocale('en'); // 请求的语言不可用 => 使用英语 } $translate = new Zend_Translate(array('adapter' => 'gettext', 'content' => APPLICATION_PATH.'/../languages/gda-'.$locale->getLanguage().'.mo', 'locale' => $locale)); $translate->setLocale($locale); $this->bootstrap('view'); $this->getResource('view')->getHelper('translate')->setTranslator($translate); }
/languages/ 的内容:
gda-en.mo gda-fr.mo <== 这个我想避免维护
谢谢