2008-11-20 154 views
6

我有整个MVC模型设置和使用HTML视图作为模板。但我在那里有德文字符串,我想在某些时候翻译成其他语言。Zend框架翻译工具的使用

这样做的最好方法是什么?我知道我必须使用Zend_Translate,但是我必须对我的视图模板中包含的每个单词实施对转换函数的单个调用吗?

回答

12

首先,我建议使用完整的短语作为翻译的基础。用词语总是会遇到语言在句子结构上不一致的问题。

然后,您必须选择一个可用的Zend_Transalate适配器:Array,Csv,Gettext,Ini,Tbx,Tmx,Qt,Xliff或XmlTm。它们中的大多数都适用于存储翻译信息的行业标准,因此,如果您选择Array,Csv或Ini作为开始和易用性,它们可能就足够了。请参阅Zend Framework手册中的49.2.1. How to decide which translation adapter to use

// setup your translation 
$translate = new Zend_Translate('csv', '/my/path/source-de.csv', 'de'); 
$translate->addTranslation('/my/path/source-en.csv', 'en'); 
// add the translation adapter to the registry 
Zend_Registry::set('Zend_Translate', $translate); 

由于没有访问标准化Zend_Registry进入Zend_Translate作为默认翻译源Zend_View_Helper_Translate,您可以使用您的看法如下:

[...] 
<title><?php echo this->translate('Title'); ?></title> 
[...] 
<p>You can also do <?php echo $this->translate('Hello %1$s', $this->userName); ?></p> 
[...] 

请注意,这仅仅是一个简短的介绍转换成Zend_Translate,并不意味着完整呈现此组件提供的功能。例如,确定翻译适配器将使用的语言环境有很多要说的。

我建议你阅读Zend框架手册以下,因为本地化是一个复杂的问题,Zend_Translate不能在这里完全描述:

+0

谢谢。所以我总是需要调用$ this-> translate()。谢谢! – 2008-11-21 12:34:28

1

不,你不需要翻译每一个单词。这种意义上的翻译理念更多地是一种信息翻译理念。

在我目前的项目中,我们做了两种类型的翻译。当它只是一个简短的文本时,为了便于阅读,我们直接在源代码中输入。

I.E.

<?=$this->translate('Add');?> 
<?=$this->translate('Delete');?> 
<?=$this->translate('Are you sure you want to delete %1$s?', $thing);?> 

但如果消息是更长的时间,我们通常遵循一定的标准,以纪念它的翻译系统:

<?=$this->translate('controller-action_form-information');?> 

的想法是,你可以再更换一个很长的文本你的翻译工具,它保持视图脚本整洁。