Я сейчас оцениваю что-то похожее, для некоторых пользователей я хочу, чтобы некоторые тексты переводились по-разному. И я также столкнулся с проблемой невозможности создания пользовательского значения локали.
Кажется, что то, что я обнаружил в своих тестах, решает / обходит проблему.
См. Также здесь: Объединение нескольких источников перевода
Что я делаю, так это просто добавляю собственный перевод к моим по умолчанию.
$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
кажется, что он перезаписывает существующие, поэтому для ваших новых пользователей вы можете добавить пользовательскую папку с соответствующими переводами.
Для моих тестов это работало до сих пор, но еще не проверило это глубоко.