Используя язык по умолчанию в TMX
Я создал приложение, которое должно быть частично переведено на разные языки. В настоящее время у меня есть файл TMX, содержащий 2 языка (английский и голландский). Это было настроено так в файле начальной загрузки:
protected function _initTranslation(){
$translate=new Zend_Translate(
array(
'adapter' => 'tmx',
'content' => ROOT_DIR.'/translation/translation.tmx',
'locale' => 'nl'
)
);
$locale=null;
try{
$locale=new Zend_Locale(Zend_Locale::BROWSER);
}catch(Exception $e){
$locale=new Zend_Locale('en');
}
if(in_array($locale->getLanguage(), $translate->getAdapter()->getList())){
$translate->setLocale($locale);
}else{
$translate->setLocale(new Zend_Locale('en'));
}
Zend_Registry::set('trans', $translate);
}
Теперь необходимо добавить дополнительные языки, такие как датский, французский и т. Д., Но не все поля необходимо переводить. Можно ли заставить Zend выбрать один язык по умолчанию, если он не может найти перевод для определенного ключа.
например.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE tmx SYSTEM "tmx14.dtd">
<tmx version="1.4">
<header creationtoolversion="1.0.0" datatype="winres" segtype="sentence" adminlang="en-us" srclang="en-gb" o-tmf="abc" creationtool="XYZTool">
</header>
<body>
<!-- login screen -->
<tu tuid="login">
<tuv xml:lang="en"><seg>login</seg></tuv>
<tuv xml:lang="nl"><seg>inloggen</seg></tuv>
</tu>
<tu tuid="logout">
<tuv xml:lang="en"><seg>logout</seg></tuv>
<tuv xml:lang="nl"><seg>uitloggen</seg></tuv>
<tuv xml:lang="da"><seg>logge ud</seg></tuv>
</tu>
<!-- some additional languages keys come here -->
</body>
</tmx>
Так как srclang является en-gb. И пользователь из Дании, регистрирующий английскую версию, должен быть показан для ключа входа в систему. Можно ли это сделать?
1 ответ
Решение
Да, используйте опцию маршрута для Zend_Translate
(см. http://framework.zend.com/manual/1.12/ru/zend.translate.additional.html):
$translate = new Zend_Translate(
array(
'adapter' => 'tmx',
'content' => ROOT_DIR.'/translation/translation.tmx',
'locale' => 'nl',
'route' => array('da' => 'en', 'fr' => 'en')
)
);