Надеюсь, это поможет в новом выпуске.
«Моя новая проблема: как загрузить ресурсы для многоязычного перевода?»
Просто быстрое предостережение о том, что я не написал код ниже, оно было взято из примера приложения, собранного ребятами из Zend, однако это может помочь разобрать его вот так.
Их подход к примеру приложения заключался в использовании CSV-файла, содержащего переводы, и в вашем файле конфигурации (по умолчанию в новом проекте - application.ini), чтобы указать путь ко всем вашим языковым ресурсам перевода.
как это:
;; Languages
language.file.en = APPLICATION_PATH "/../language/en/translate.csv"
language.file.fr = APPLICATION_PATH "/../language/fr/translate.csv"
language.file.de = APPLICATION_PATH "/../language/de/translate.csv"
language.file.es = APPLICATION_PATH "/../language/es/translate.csv"
language.name.zz = Language
language.name.en = English
language.name.fr = Français
language.name.de = Deutsche
language.name.es = Español
И в каждом CSV-файле, если вы используете что-то вроде Excel или Open Office для его создания, столбец A будет исходным языком, а столбец B - переводом.
В качестве примера, где английский является исходным языком и требуется испанский перевод:
A B
login entrar
logout salir
Вы можете сделать это для всех слов / фраз, которые вы хотите перевести.
Если перевод не найден, то используется оригинальное слово по умолчанию.
У вашего основного приложения начальной загрузки может быть что-то вроде этого:
protected function _initLanguage()
{
$options = $this->getOptions();
Zend_Registry::set('language',$options['language']);
$langSess = new Zend_Session_Namespace('language');
if (!isset($langSess->translate)) {
$translate = new Zend_Translate('csv', $options['language']['file']['en']);
$langSess->translate = $translate;
}
if (!isset($langSess->locale)) {
$langSess->locale = 'en';
}
Zend_Locale::setDefault($langSess->locale);
}
Поскольку объект translate удерживается в сеансе, вы можете использовать его в любом из ваших представлений и т. Д., Используя что-то вроде:
$langSess = new Zend_Session_Namespace('language');
$translate = $langSess->translate;
и
<a href="/user/login"> <?php echo $translate->_('login') ?> </a>
где вы хотите что-то перевести при выборе альтернативного языка. В приведенном выше примере слово login будет отображаться, когда выбран английский, и entrar, если выбран испанский.
В Zend_Translate есть больше, чем этот, и несколько способов его реализации, так что я не говорю, что это лучший способ в любом случае.
Если это поможет или если я смогу дать вам больше информации, дайте мне знать.
Приветствия
Дейв