Zend Framework

Stopped working automatic loading of translations from directory by filename

Details

  • Type: Bug Bug
  • Status: Resolved Resolved
  • Priority: Critical 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.

Activity

Hide
Vaidotas Stankus added a comment -

Sorry for editing it so much times, didn't expect it will save all edits..

Show
Vaidotas Stankus added a comment - Sorry for editing it so much times, didn't expect it will save all edits..
Hide
Thomas Weidner added a comment -

Not reproduceable in trunk.

In line 126, if options is a string (note that it should be an array according to API doc) it is converted to array('content' => options) which itself is accepted by addTranslation().

Using your example all works without problems without any changes to the component.

Show
Thomas Weidner added a comment - Not reproduceable in trunk. In line 126, if options is a string (note that it should be an array according to API doc) it is converted to array('content' => options) which itself is accepted by addTranslation(). Using your example all works without problems without any changes to the component.

People

Vote (0)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: