4

我正在编写一个完整的德语应用程序,因此需要基本上将所有内容设置为德语。

我的问题:将表单验证设置为德语的最佳和最简单的方法是什么?

我找到了这个页面,但不知道如何让这段代码工作:

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 文件的文件夹。

无法打开文件资源/语言/de.php 进行阅读

更改文件夹或其中任何现有文件的路径无济于事......

当我将“de_DE”更改为“de”或“de_de”时,什么也没有发生。没有错误和英文验证错误。有什么线索吗?

4

5 回答 5

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);
}

'./vendor/zendframework/zendframework/resources/languages/langfolderyouwant/Zend_Validate.php'

于 2013-02-12T17:51:28.910 回答
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)

于 2014-07-22T18:47:21.577 回答
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 和文档提供的功能中添加完整路径(从供应商开始)。

于 2012-12-19T11:07:15.820 回答
1

如果你不想把代码堆到 onBootstrap 中,只需要一种语言,你可以使用配置文件:

'translator' => array (
    'locale' => 'ru',
    'translation_files' => [
        [
            'type' => 'phparray',
            'filename' => 'path/to/ru/directory/Zend_Validate.php'
        ]
    ],
),

把它放进你module.config.php

于 2014-10-30T09:43:05.787 回答
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'
);
于 2015-06-05T13:26:41.340 回答