在TMX中使用默认语言

问题描述:

我创建了应该部分翻译成不同语言的应用程序。目前我有一个包含2种语言(英语和荷兰语)的TMX文件。它是建立这样的引导文件:在TMX中使用默认语言

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。丹麦用户登录英文版应显示关键登录信息。这可以做到吗?

是,使用Zend_Translate路由选项(参见http://framework.zend.com/manual/1.12/ru/zend.translate.additional.html#zend.translate.additional.rerouting):

$translate = new Zend_Translate(
    array(
     'adapter' => 'tmx', 
     'content' => ROOT_DIR.'/translation/translation.tmx', 
     'locale' => 'nl', 
     'route' => array('da' => 'en', 'fr' => 'en') 
    ) 
);