我正在编写一个完整的德语应用程序,因此需要将所有内容设置为德语。
我的问题:将表单验证设置为德语的最佳和最简单的方法是什么?
我找到this page但无法弄清楚如何使这段代码正常工作:
Zend_Validate_Abstract::setDefaultTranslator($translate);
有人可以给我一些建议吗?
修改
感谢@Gordon我将以下内容放入我的Application / Module.php:
use Zend\I18n\Translator\Translator;
use Zend\Validator\AbstractValidator;
class Module
{
public function onBootstrap(MvcEvent $e)
{
...
$translator = new Translator();
$translator->addTranslationFile(
'phpArray',
'resources/languages/de.php',
'default',
'de_DE'
);
AbstractValidator::setDefaultTranslator($translator);
...
}
编辑2:
好吧,这很奇怪。当我设置de_DE
时,我收到无法打开de.php文件的消息 - 这是正确的,因为“de”是包含两个其他PHP文件的文件夹。
无法打开文件资源/ languages / de.php进行阅读
更改文件夹或其中任何现有文件的路径不会有帮助......
当我将“de_DE”更改为“de”或“de_de”时,没有任何反应。没有错误和英语验证错误。有线索吗?
答案 0 :(得分:8)
对我而言,它适用于
public function onBootstrap(MvcEvent $e)
{
$translator=$e->getApplication()->getServiceManager()->get('translator');
$translator->addTranslationFile(
'phpArray',
'./vendor/zendframework/zendframework/resources/languages/it/Zend_Validate.php'
);
AbstractValidator::setDefaultTranslator($translator);
// \Zend\Debug\Debug::dump($application);
}
'./供应商/ zendframework / zendframework /资源/语言/ langfolderyouwant / Zend_Validate.php'
答案 1 :(得分:4)
最后我在@Gordon的帮助下找到了答案!
我将以下内容放入我的Application / Module.php:
use Zend\I18n\Translator\Translator;
use Zend\Validator\AbstractValidator;
class Module
{
public function onBootstrap(MvcEvent $e)
{
...
$translator = new Translator();
$translator->addTranslationFile(
'phpArray',
'vendor/zendframework/zendframework/resources/languages/Zend_Validate.php',
'default',
'de_DE'
);
AbstractValidator::setDefaultTranslator($translator);
...
}
然后你需要启用php5-intl。转到php.ini并启用extension=php_intl.dll
。
最后,我需要在Gordon和文档提供的功能中添加完整路径(从供应商开始)。
答案 2 :(得分:4)
Zend FW的更高版本必须具有特定接口的翻译器。
use Zend\I18n\Translator\Translator;
use Zend\Validator\AbstractValidator;
class Module
{
public function onBootstrap(MvcEvent $e)
{
//...
$translator = new Translator();
$translator->addTranslationFile(
'phpArray',
'vendor/zendframework/zendframework/resources/languages/Zend_Validate.php',
'default',
'de_DE'
);
AbstractValidator::setDefaultTranslator($translator);
//...
}
}
会变成:
use Zend\I18n\Translator\Translator;
use Zend\Validator\AbstractValidator;
class Module
{
public function onBootstrap(MvcEvent $e)
{
//...
$translator = new Translator();
$translator->addTranslationFile(
'phpArray',
'vendor/zendframework/zendframework/resources/languages/Zend_Validate.php',
'default',
'de_DE'
);
AbstractValidator::setDefaultTranslator(
new \Zend\Mvc\I18n\Translator($translator)
);
//...
}
}
请注意new \Zend\Mvc\I18n\Translator($translator)
答案 3 :(得分:1)
如果您不想将代码汇总到onBootstrap中而您只需要一种语言,则可以使用配置文件:
'translator' => array (
'locale' => 'ru',
'translation_files' => [
[
'type' => 'phparray',
'filename' => 'path/to/ru/directory/Zend_Validate.php'
]
],
),
把它放进你module.config.php
答案 4 :(得分:1)
对于最新的zf2版本(2.5.0),您必须将Zend_Validate.php的路径更改为./vendor/zendframework/zend-i18n-resources/languages/de/Zend_Validate.php
。
$translator->addTranslationFile(
'phpArray',
'./vendor/zendframework/zend-i18n-resources/languages/de/Zend_Validate.php',
'default',
'de_DE'
);