gpt4 book ai didi

php - ZF2.3 翻译验证信息

转载 作者:可可西里 更新时间:2023-11-01 13:22:49 25 4
gpt4 key购买 nike

我正在尝试将验证消息翻译成另一种语言。我正在使用 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',
),
),
),

但我的 View 文件中未翻译以下字符串(并且我确定该字符串包含在我的语言文件中):

echo $this->translate('Invalid type given. String, integer or float expected');

而且来自验证器的消息仍然是默认的/未翻译的。

我到处搜索解决方案,但似乎翻译已在 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);

这将导致 fatal error :

Catchable fatal error: Argument 1 passed to Zend\Mvc\I18n\Translator::__construct() must implement interface Zend\I18n\Translator\TranslatorInterface, none given

是否有 ZF 2.3 的已知解决方案?

解决方案:

在配置中:

'service_manager' => array(
'factories' => array (
'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
),
),

在模块引导事件中:

    $translator = $e->getApplication()->getServiceManager()->get('translator');
$translator->addTranslationFile('phpArray', __DIR__ . '/language_php/Zend_Validate.php', 'default', 'nl_NL');

\Zend\Validator\AbstractValidator::setDefaultTranslator(new \Zend\Mvc\I18n\Translator($translator));

最佳答案

这是我用于翻译验证消息的工作代码:

config/autoload/global.php

<?php
return array(

.........

'service_manager' => array(
'aliases' => array(
'translator' => 'MvcTranslator',
),
),

.........

);

module/Application/Module.php

<?php

namespace Application;

use Zend\Validator\AbstractValidator;
use Zend\Mvc\MvcEvent;

class Module
{
public function onBootstrap(MvcEvent $e)
{
date_default_timezone_set('Europe/Madrid');

$serviceManager = $e->getApplication()->getServiceManager();
$translator = $serviceManager->get('translator');

//$locale = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$locale = 'es_ES';
//$locale = 'en_US';

$translator->setLocale(\Locale::acceptFromHttp($locale));
$translator->addTranslationFile(
'phpArray',
'lang/es/Zend_Validate.php',
'default',
'es_ES'
);
AbstractValidator::setDefaultTranslator($translator);
}
}

希望对您有所帮助。祝你有美好的一天。

关于php - ZF2.3 翻译验证信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23151917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com