Это решение, которое я использую:
Код для Plugin.php
// BEGIN: Translate
$validLang = $this->getRequest()->getParam('lang');
$translate = new Zend_Translate('csv', 'data/lang/en.csv', 'en');
$translate->addTranslation('data/lang/ro.csv', 'ro');
if($validLang)
{
Zend_Registry::set('lang', $validLang);
$translate->setLocale($validLang);
}
else
{
Zend_Registry::set('lang', 'en');
$translate->setLocale('en');
}
Zend_Registry::set('translate', $translate);
// END: Translate
Код для en.csv
front_user_menu-wall;Wall
код для ro.csv
front_user_menu-wall;Perete
код для любого файла Zend View
echo Zend_Registry::get('translate')->_('front_user_menu-wall');
и некоторыеобъяснения:
В папке data / lang у меня есть 2 .csv файла перевода.Структура не требует пояснений, точка с запятой (;) отделяет имя переменной (front_user_menu-wall) от значения переменной (Wall).Каждая переменная должна быть помещена в новую строку, и вы можете иметь строковые комментарии внутри (например: # это комментарий).Файл ro.csv - это файл перевода на румынский язык, он имеет ту же структуру, но, очевидно, разные значения для переменных.
Внутри Plugin.php у вас есть
$validLang = $this->getRequest()->getParam('lang);
Zend эквивалент для
$validLang = $_GET['lang'];
В следующих двух строках кода мы создаем новый класс Zend_Translate, используя 2 переводных CSV-файла.Затем мы проверяем, не является ли $ validLang не пустым, если это не они, мы устанавливаем переменную lang Zend_Registry (Zend_Registry аналогично $ _SESSION) с файлом перевода.Если $ validLang пуст, тогда мы по умолчанию переводим на английский.
Если вы выполнили все вышеперечисленные шаги, вы можете теперь повторить
Zend_Registry::get('translate')->_('front_user_menu-wall');
, чтобы получить английский или румынский перевод.