Zend Translate пользовательский язык - PullRequest
1 голос
/ 24 января 2012

В зависимости от роли пользователя мне нужно показывать разные тексты в моем проекте Zend.

  • Для обычных пользователей я использую язык "en".
  • Для новых пользователей я хочу что-то вроде "en_new".

Однако язык «en_new» всегда возвращается к «en».

Я использую систему сканирования locale_directory для автоматического определения языков.

Ответы [ 2 ]

1 голос
/ 27 января 2012

Адаптер перевода вызывает Zend_Locale::findLocale() внутренне в addTranslation() (по крайней мере, в ZF 1.1x). Это, в свою очередь, проверяет, находится ли локаль в белом списке. Твой нет, очевидно. Я не слишком углубился в код, но вполне вероятно, что следующим шагом будет возврат от en_xxx к en, что и происходит в вашем случае.

См. Источники:

  • library/Zend/Translate/Adapter.php - addTranslation метод
  • library/Zend/Locale.php - findLocale метод
0 голосов
/ 15 февраля 2012

Я сейчас оцениваю что-то похожее, для некоторых пользователей я хочу, чтобы некоторые тексты переводились по-разному. И я также столкнулся с проблемой невозможности создания пользовательского значения локали. Кажется, что то, что я обнаружил в своих тестах, решает / обходит проблему.

См. Также здесь: Объединение нескольких источников перевода

Что я делаю, так это просто добавляю собственный перевод к моим по умолчанию.

$translateDef = new Zend_Translate(
   array(
       'adapter'    => 'gettext',
       'content'    => 'locale/default/',
       'locale' => 'auto',
       'scan'       => Zend_Translate::LOCALE_DIRECTORY
   )
);

$translateCust = new Zend_Translate(
   array(
       'adapter'    => 'gettext',
       'content'    => 'locale/custom/',
       'locale' => 'auto',
       'scan'       => Zend_Translate::LOCALE_DIRECTORY
   )
);

$translateDef->addTranslation(array(
       'content'    => $translateCust
    )
);

И структура папок выглядит так:

locale/
       default/
               de
               en
       custom/
               de
               en

Таким образом, при выполнении addTranslation кажется, что он перезаписывает существующие, поэтому для ваших новых пользователей вы можете добавить пользовательскую папку с соответствующими переводами. Для моих тестов это работало до сих пор, но еще не проверило это глубоко.

...