0

私はアルファ版からZF2を使用しているので、まったく新しいわけではありません。ただし、現在のプロジェクトを邪魔しないように、新しいSkeletonAppをセットアップして、機能しています。英語とドイツ語の両方に必要な翻訳を追加しましたが、期待どおりに機能しています。ただし、フォームエラーメッセージはドイツ語やその他の言語に翻訳されていません。

マニュアルを読みましたが、ファクトリに基づいて翻訳をセットアップする方法のみをカバーしており、module.config.php内でセットアップする方法に関する詳細はありません。ZF1と同様に、ZF2にも、すでに翻訳されているすべてのフォーム検証エラーメッセージを含むresources/languagesフォルダーがあります。それらを使いたい!そして、これが私の問題です。すべてのフォームでこれを機能させるための構成を追加する方法がわかりません。

SkeletonAppに基づく私のmodule.config.phpファイルでは、すでに翻訳がサポートされていたので、これが機能すると仮定して、その構成を取得し、別の配列を追加しました。

'translator' => array( 
    'locale' => 'en_US', 
    'translation_file_patterns' => array( 
        array( 
            'type'        => 'gettext', 
            'base_dir'    => __DIR__ . '/../language', 
            'pattern'     => '%s.mo' 
        ), 
        array( 
            'type'        => 'phparray', 
            'base_dir'    => __DIR__ . '/../resources/languages', 
            'pattern'     => '%s.php' 
        ) 
    ) 
), 

しかし、これは役に立たなかった。私のコントローラーには、次のようにロケールを設定するeventManagerがあります。

$ self-> getServiceLocator()-> get('translator')-> setLocale('en_US'); //ドイツ語の場合はde_DEに変更

上記のようにこれを行うと、テキストが英語からドイツ語などに翻訳されます。

フォームエラーを翻訳するために何が欠けていますか?この状況について共有できるガイダンスをありがとうございます。

4

1 に答える 1

1

どちらのソースも同じテキスト ドメインを使用し、gettext ソースの優先度が高くなります。これは、ロケールとテキスト ドメインの組み合わせが既に読み込まれているため、gettext ソースからロケールを読み込み、停止することを意味します。

解決策: ソースごとに異なるテキスト ドメインを使用します。

于 2012-11-27T18:00:12.077 に答える