Zend Translate автоматически определяет язык? - PullRequest
3 голосов
/ 01 октября 2010

Это мой код

$locale = new Zend_Locale('en_US');
Zend_Registry::set('Zend_Locale', $locale);

$GLOBALS['translate'] = new Zend_Translate(
    array(
        'adapter' => 'array',
        'content' => array('Hello' => 'Hi'),
        'locale'  => 'en_US'
    )
);

gb('translate')->addTranslation(
    array(
        'content' => array('Hello' => 'Xin chào'),
        'locale' => 'vi'
    )
);

gb('translate')->_('Hello'); //always print Xin chào

Всегда печатается «Xin chào», даже если я использую веб-прокси (из США) для запроса страницы.

1 Ответ

4 голосов
/ 01 октября 2010

Zend_Translate - это языковой стандарт , что означает, что он будет использовать экземпляр Zend_Locale, сохраненный в Zend_Registry:

$locale = new Zend_Locale('en_US');
Zend_Registry::set('Zend_Locale', $locale);

Если вы не используете Zend_Registry он попытается получить языковой стандарт из веб-браузера пользователя (если он доступен), информацию из среды хост-сервера и настройки Zend Framework.Чтобы предотвратить это, вы должны явно указать локаль:

$translator->setLocale($locale);

См. Главу Автоматическая обработка языков в справочном руководстве для Zend_Translate

...