Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Critical
-
Resolution: Cannot Reproduce
-
Affects Version/s: 1.10.3
-
Fix Version/s: 1.10.4
-
Component/s: Zend_Translate
-
Labels:None
Description
Thats the way I had initialized Zend_Translation in bootstrap:
<?php
$locale = new Zend_Locale();
Zend_Registry::set('Zend_Locale', $locale);
$translate = new Zend_Translate(Zend_Translate::AN_ARRAY,
APPLICATION_PATH . '/../languages/', 'auto',
array(
'scan' => Zend_Translate::LOCALE_FILENAME,
'log' => Zend_Registry::get('Zend_Log'),
'logUntranslated' => true,
));
Zend_Registry::set('Zend_Translate', $translate);
?>
In languages folder create two translation files en.php and lt.php. Internaly those files looks like:
<?php
/**
- English language file
*/
return array(
'token1' => 'text in english1',
'token2' => 'text in english2'
);
?>
This part was working perfectly until I had made upgrade of ZF to 1.10.3. Sad, can't say what version was before. I guess 1.9.x. After some debugging I had realized, that Zend_Translate_Adapter_Array::_loadTranslationData as $data parameter can accept only string with path to translation or array of such strings for multiple translation files. Zend_Translate_Adapter_Array::_addTranslationData doesn't do anything with $data value, simply passes it to _loadTranslationData. But structure of array passed has all (except the first) arguments passed to Zend_Translate constructor.
If in Zend_Translate_Adapter_Array::addTranslation method after line with this code:
<?php
$options = $options + $this->_options;
?>
I add something like this:
<?php
if (is_array($data) && !empty($data['content'])) {
$data = $data['content'];
}
?>
Translations start to work again. If that is really the way component is intended to be used, then I think this issue is feature breaker.
Sorry for editing it so much times, didn't expect it will save all edits..