6

我设置了整个 MVC 模型并将 HTML 视图用作模板。但是我在那里有德语字符串,我想在某个时候翻译成其他语言。

做这个的最好方式是什么?我知道我必须使用 Zend_Translate,但是我是否必须为视图模板中的每个单词实现一个对翻译函数的调用?

4

2 回答 2

12

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

然后您必须选择可用的 Zend_Transalate 适配器之一:Array、Csv、Gettext、Ini、Tbx、Tmx、Qt、Xliff 或 XmlTm。它们中的大多数都是用于存储翻译信息的行业标准的适配器,因此如果您选择 Array、Csv 或 Ini 作为开始和易用性就足够了。请参见49.2.1。如何在 Zend Framework 手册中决定使用哪个翻译适配器。

// 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_View_Helper_Translate将标准化Zend_Registry条目Zend_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 Framework 手册中的以下内容,因为本地化可能是一个复杂的问题,Zend_Translate无法在此处完整描述:

于 2008-11-21T08:15:44.280 回答
1

不,您不必翻译每个单词。这种意义上的翻译理念更像是一种信息翻译理念。

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

IE

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

但是如果消息比较长,我们通常会按照一个标准来给翻译系统做标记:

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

这个想法是您可以在翻译工具中用很长的文本替换它,并保持视图脚本整洁。

于 2008-11-21T09:06:10.497 回答