我使用了这段代码 尝试从/ resources / languages添加翻译数组 和 从/application/languages/nl.mo(gettext)添加翻译
$translate = new Zend_Translate(
array(
'adapter' => 'array',
'content' => APPLICATION_PATH . '/resources/languages',
'locale' => 'nl',
'scan' => Zend_Translate::LOCALE_DIRECTORY
)
);
$translate->addTranslation(
array(
'adapter' => 'gettext',
'content' => APPLICATION_PATH.DIRECTORY_SEPARATOR.'languages'.DIRECTORY_SEPARATOR.'nl_NL.mo',
'locale' => 'nl'
)
);
当我尝试添加单个翻译时,一切正常(在这两种情况下) 当我添加第二个翻译时,我收到此错误:
致命错误:未捕获的异常 'Zend_Translate_Exception'用 message'错误包括数组或文件 '1'' blabla.php 在第61行
有人可以告诉我如何从我的引导程序中添加这些翻译文件,而不会出现这些错误吗?
答案 0 :(得分:2)
我不是百分百肯定,但我认为你不能混合翻译文件的类型。原因是$translate->addTranslation()
实际上会在addTranslation()
上调用方法Zend_Translate_Adapter_Array
,而_loadTranslationData
也会在Zend_Translate_Adapter_Array
上调用方法Zend_Translate_Adapter_Array
。因此nl_NL.mo
尝试将文件$translate = new Zend_Translate(
array(
'adapter' => 'array',
'content' => APPLICATION_PATH . '/resources/languages',
'locale' => 'nl',
'scan' => Zend_Translate::LOCALE_DIRECTORY
)
);
// use this one in Zend_Form
Zend_Form::setDefaultTranslator($translate);
作为数组读取,导致错误,包括数组或文件错误。
但是,如果翻译文件'nl'是来自zend资源的文件,并且您只想将其用于翻译zend_form消息,我认为您可以为此定义一个单独的翻译器,如下所示:
$translate = new Zend_Translate(
array(
'adapter' => 'gettext',
'content' => APPLICATION_PATH . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR . 'nl_NL.mo',
'locale' => 'nl'
)
);
// Save it for the rest of application to use
Zend_Registry::set('Zend_Translate', $translate);
'nl_NL'你可以将其余部分作为默认值:
{{1}}
P.S。 我没有对此进行过测试,因此我无法承认它有效,但这就是我至少尝试这样做的方法。