Это решение я использую:
Код для 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 Посмотреть файл
echo Zend_Registry::get('translate')->_('front_user_menu-wall');
И некоторые пояснения:
В данной папке/Ланг У меня есть 2 .csv перевод файлов.Структура является самоочевидной, точка с запятой (;) отделяет имя переменной (front_user_menu-wall) от значения переменной (Wall). Каждая переменная должна быть помещена в новую строку, и внутри нее могут быть комментарии по строке (например: # это комментарий). Файл ro.csv является руанским файлом перевода, он имеет ту же структуру, но, очевидно, разные значения для переменных.
Внутри plugin.php у вас есть
$validLang = $this->getRequest()->getParam('lang);
Zend эквивалент
$validLang = $_GET['lang'];
На следующие 2 строки кода мы создаем новый класс Zend_Translate с помощью 2-перевод .csv файлов. Затем мы проверяем, не является ли $ validLang пустым, если это не они, мы устанавливаем переменную zend_Registry lang (Zend_Registry похожа на $ _SESSION) с файлом перевода. Если $ validLang пуст, мы по умолчанию переводим на английский.
Если вы сделали все шаги, описанные выше, теперь вы можете повторить
Zend_Registry::get('translate')->_('front_user_menu-wall');
, чтобы получить английский или румынский перевод.
При предоставлении кода, который решает проблему, лучше всего также дать хотя бы краткое объяснение того, как это работает, чтобы люди, читающие, не должны были мысленно разбирать его по очереди, чтобы понять различия. – Fluffeh