Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在何处使用Zend Framework翻译工具_Php_Zend Framework_Localization_Translation - Fatal编程技术网

Php 在何处使用Zend Framework翻译工具

Php 在何处使用Zend Framework翻译工具,php,zend-framework,localization,translation,Php,Zend Framework,Localization,Translation,我已经设置了整个MVC模型,并使用HTML视图作为模板。但我有德语字符串,我想在某个时候翻译成其他语言 最好的方法是什么?我知道我必须使用Zend_Translate,但我是否必须对视图模板中的每个单词执行一次对Translate函数的调用?首先,我建议使用完整的短语作为翻译的基础。对于单词,你总是会遇到这样一个问题:当涉及到句子结构时,语言是不一致的 然后您必须选择一个可用的Zend_Translate适配器:Array、Csv、Gettext、Ini、Tbx、Tmx、Qt、Xliff或Xml

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


最好的方法是什么?我知道我必须使用Zend_Translate,但我是否必须对视图模板中的每个单词执行一次对Translate函数的调用?

首先,我建议使用完整的短语作为翻译的基础。对于单词,你总是会遇到这样一个问题:当涉及到句子结构时,语言是不一致的

然后您必须选择一个可用的Zend_Translate适配器:Array、Csv、Gettext、Ini、Tbx、Tmx、Qt、Xliff或XmlTm。它们中的大多数都是用于存储翻译信息的行业标准的适配器,因此,如果您选择Array、Csv或Ini作为开始,并且为了易于使用,可能就足够了。请参阅Zend框架手册中的

// 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\u View\u Helper\u Translate
可以访问标准化的
Zend\u注册表
entry
Zend\u 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
不能在这里完整描述:


  • 不,你不必翻译每一个单词。从这个意义上讲,翻译的理念更多的是一种信息翻译理念

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

    
    
    但如果信息较长,我们通常会按照标准为翻译系统标记:

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

    这样做的目的是,您可以在翻译工具中用一个很长的文本替换它,从而保持视图脚本整洁。

    谢谢。所以我总是要调用$this->translate()。非常感谢。
    <?=$this->translate('controller-action_form-information');?>