Я не уверен на 100%, но я думаю, что вы не можете смешивать типы файлов перевода.Причина в том, что $translate->addTranslation()
на самом деле вызовет метод addTranslation()
на Zend_Translate_Adapter_Array
, который, в свою очередь, вызовет метод _loadTranslationData
также на Zend_Translate_Adapter_Array
.Таким образом, Zend_Translate_Adapter_Array
пытается прочитать файл nl_NL.mo
как массив, что приводит к ошибке , включая ошибку массива или файла .
Однако, если файл перевода 'nl' является файлом от Zendресурсы, и вы хотите использовать его только для перевода сообщений zend_form, я думаю, что вы могли бы определить отдельный переводчик для этого следующим образом:
$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_NL' вы можете сделать по умолчанию для остальных:
$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);
PS Я не проверял это, поэтому я не могу дать ему понять, что это работает, но именно так я бы хотя бы попытался это сделать.