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」が他の2つのPHPファイルを含むフォルダーであるためです。

読むためにファイルresources/languages/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

ついに私は@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 に答える
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 に答える
1

コードをonBootstrapに積み上げたくなく、必要な言語が1つだけの場合は、構成ファイルを使用できます。

'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 に答える