晚上好,
我想将zend / translate添加到我的项目中,以多种语言显示我的网站。但是没有任何作用。以下是我已经完成的步骤:
在module.config.php中,我查看了翻译器是否已初始化:
...
'service_manager' => array(
'factories' => array(
'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
...
'translator' => array(
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
),
),
...
在Bootstrap的Module.php中,我设置了DefaultTranslator:
public function onBootstrap(MvcEvent $e)
{
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
\Locale::setDefault('de_DE');
\Zend\Validator\AbstractValidator::setDefaultTranslator(
$e->getApplication()
->getServiceManager()
->get('translator')
);
}
但是当我重新加载我的网站时,会出现这样的错误:
Catchable fatal error: Argument 1 passed to Zend\Validator\AbstractValidator::setDefaultTranslator() must be an instance of Zend\Validator\Translator\TranslatorInterface, instance of Zend\I18n\Translator\Translator given, called in C:\xampp\htdocs\pimp\module\Application\Module.php on line 28 and defined in C:\xampp\htdocs\pimp\vendor\zendframework\zendframework\library\Zend\Validator\AbstractValidator.php on line 472
我认为有些事情我已经忘记了......
有人可以帮助我吗?
感谢。
答案 0 :(得分:1)
Zend i18n中有一个奇怪的部分,Zend \ I18n \ Translator \ Translator与其他组件不兼容。 Mvc Translator将译者绑定到其他部分。 Zend\Mvc\I18n\Translator
扩展了“普通”转换器,然后它实现了Zend \ Validator组件请求的转换器接口。
因此,使用MVC翻译工厂创建Mvc Translator。将Zend\I18n\Translator\TranslatorServiceFactory
替换为Zend\Mvc\Service\TranslatorServiceFactory
。
答案 1 :(得分:0)
这是简单的教程
http://samminds.com/2012/09/zend-framework-2-translate-i18n-locale/
http://www.poedit.net/
但我有
,'translator' => array(
'locale' => 'en_US',
'translation_file_patterns' => array(
array(
'type' => 'translate',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
),
),
在module.config.php和一个php文件中,所有键都存在于其中,例如
<?php
/*
* General keys
*/
$this->translate('projectname');
$this->translate('login');
$this->translate('logout');
$this->translate('pages');
$this->translate('contents');
$this->translate('ourposition');
$this->translate('search_pleace');
$this->translate('contactform');
$this->translate('pleaseuploadresume');
?>
在poedit中我只设置了这个文件的路径。 (有助于更好的管理)和目录属性 - &gt;来源关键词翻译应该存在(当然更好)。任何我想要显示消息的地方。我写了
echo $this->translate('key');