我试图将验证消息翻译成另一种语言.我正在使用ZF 2.3和骨架应用程序.
我配置了翻译器:
'translator' => array(
'locale' => 'nl_NL',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
array(
'type' => 'phpArray',
'base_dir' => __DIR__ . '/../data/language',
'pattern' => '%s.php',
),
),
),
Run Code Online (Sandbox Code Playgroud)
但是我的视图文件中没有翻译以下字符串(并确保此字符串包含在我的语言文件中):
echo $this->translate('Invalid type given. String, integer or float expected');
Run Code Online (Sandbox Code Playgroud)
此外,来自验证器的消息仍然是默认/未翻译.
我到处寻找解决方案,但似乎翻译已经在ZF 2.3中进行了重构,我找到的所有解决方案都适用于旧版本.
以下文档页面应提供解决方案:http: //framework.zend.com/manual/2.3/en/modules/zend.validator.messages.html
但是"使用预翻译验证消息"下的代码无效:
$translator = new Zend\Mvc\I18n\Translator();
$translator->addTranslationFile(
'phpArray',
'resources/languages/en.php',
'default',
'en_US'
);
Zend\Validator\AbstractValidator::setDefaultTranslator($translator);
Run Code Online (Sandbox Code Playgroud)
这将导致致命错误:
Catchable fatal error: Argument 1 passed to Zend\Mvc\I18n\Translator::__construct() must implement …Run Code Online (Sandbox Code Playgroud)