Я хочу попробовать переводы маршрутов в Zend Framework, но я использую адаптер gettext, и в большинстве уроков есть адаптер перевода PHP, поэтому у меня возникают проблемы с его работой.
В основном Bootstrap.php у меня есть метод, в котором я устанавливаю маршруты:
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$translator = Zend_Registry::get('Zend_Translate');
Zend_Controller_Router_Route::setDefaultTranslator($translator);
$routerRoute = new Zend_Controller_Router_Route('@about',
array(
'module' => 'default',
'controller' => 'index',
'action' => 'about'
)
);
$router->addRoute('about', $routerRoute);
Это работает для /about
пути.
Я вставлю код, в котором я установил Zend_Translate, но он в основном загружает файл *.mo
в зависимости от текущего языка сеанса:
$langParam = $this->getSessionLang();
$localeString = $languages[$langParam];
$locale = new Zend_Locale($localeString);
$moFilePath = $langFolder . $langParam . '.mo';
if (!file_exists($moFilePath)) {
throw new Zend_Exception('File does not exist: ' . $moFilePath);
}
$translate = new Zend_Translate(
array(
'adapter' => 'gettext',
'content' => $moFilePath,
'locale' => $locale,
'ignore' => array('.'), // ignore SVN folders
'disableNotices' => ('production' === APPLICATION_ENV) // disable notices in Production
)
);
Zend_Registry::set('Zend_Translate', $translate);
Zend_Registry::set('Zend_Locale' , $locale);
Это, конечно, называется prior
для маршрутизации.
Мой вопрос: можно ли использовать gettext в качестве адаптера перевода для маршрута, потому что я не могу понять, как мне перехватить строку @about
, скажем, с poEdit? Оно может? Ура! Как?