我已经设置了整个MVC模型,并使用HTML视图作为模板。但我有一些德语字符串,我想在某个时候翻译成其他语言。
做这件事最好的方法是什么?我知道我必须使用Zend_Translate,但是我必须为我的视图模板中的每个单词实现一次对翻译函数的调用吗?
发布于 2008-11-21 08:15:44
首先,我建议使用完整的短语作为翻译的基础。对于单词,当涉及到句子结构时,语言总是存在不一致的问题。
然后你必须选择一个可用的Zend_Transalate适配器:阵列,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 Framework手册中的以下内容,因为本地化可能是一个复杂的问题,而Zend_Translate不能在这里完全描述:
发布于 2008-11-21 09:06:10
不,你不需要翻译每一个单词。从这个意义上讲,翻译的理念更多的是一种信息翻译理念。
在我目前的项目中,我们做了两种类型的翻译。当它只是一个简短的文本时,出于可读性的目的,我们直接将其键入源代码中。
也就是说。
<?=$this->translate('Add');?>
<?=$this->translate('Delete');?>
<?=$this->translate('Are you sure you want to delete %1$s?', $thing);?>但如果消息更长,我们通常会遵循一个标准来为翻译系统标记它:
<?=$this->translate('controller-action_form-information');?>这个想法是,你可以在你的翻译工具中用一个很长的文本替换它,这样就可以保持视图脚本的整洁。
https://stackoverflow.com/questions/307273
复制相似问题