1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 17987 -->
4 <sect1 id="zend.form.i18n">
5 <title>Zend_Form の国際化</title>
8 作成したコンテンツを複数の言語や地域に対応させるという作業は、
10 <classname>Zend_Form</classname> はそんな作業も簡単にできるように作られており、
12 linkend="zend.translate">Zend_Translate</link> と <link
13 linkend="zend.validate">Zend_Validate</link>
18 デフォルトでは、国際化 (I18n) は行われません。
19 i18n 機能を <classname>Zend_Form</classname> で使うには、まず適切なアダプタを指定して
20 <classname>Zend_Translate</classname> のインスタンスを作成し、それを
21 <classname>Zend_Form</classname> や <classname>Zend_Validate</classname>
22 にアタッチしなければなりません。翻訳オブジェクトや翻訳ファイルの作成方法についての詳細は
23 <link linkend="zend.translate">Zend_Translate
24 のドキュメント</link> を参照ください。
28 <title>項目単位での翻訳の無効化</title>
31 個々のフォームや要素、表示グループ、サブフォームなどの単位で翻訳を無効にするには、
32 <methodname>setDisableTranslator($flag)</methodname> メソッドをコールするか
33 あるいはそのオブジェクトにオプション <property>disableTranslator</property>
34 を渡します。これは、特定の要素 (あるいは要素群)
35 についてだけ翻訳を無効にしたい場合に有用です。
39 <sect2 id="zend.form.i18n.initialization">
40 <title>フォームでの I18n 機能の初期化</title>
44 <classname>Zend_Translate</classname> オブジェクトあるいは
45 <classname>Zend_Translate_Adapter</classname> オブジェクトが必要です。詳細は
46 <classname>Zend_Translate</classname> のドキュメントを参照ください。
47 翻訳オブジェクトを作成したら、その後の手順にはいくつかの方法があります。
53 <emphasis>最も簡単な方法:</emphasis>
54 レジストリに登録します。Zend Framework の I18n
55 対応コンポーネントはすべて、レジストリの 'Zend_Translate'
56 キーに登録されている翻訳オブジェクトを自動取得して翻訳や地域化を行います。
59 <programlisting language="php"><![CDATA[
60 // 'Zend_Translate' キーを使用します。$translate は Zend_Translate オブジェクトです
61 Zend_Registry::set('Zend_Translate', $translate);
65 これは、<classname>Zend_Form</classname> や
66 <classname>Zend_Validate</classname> そして
67 <classname>Zend_View_Helper_Translate</classname> が使用します。
73 検証エラーのメッセージだけを翻訳したいのなら、
74 翻訳オブジェクトを <classname>Zend_Validate_Abstract</classname> に登録することもできます。
77 <programlisting language="php"><![CDATA[
78 // すべてのバリデーションクラスに、指定した翻訳アダプタを使用させます
79 Zend_Validate_Abstract::setDefaultTranslator($translate);
85 あるいは、<classname>Zend_Form</classname>
86 オブジェクトにアタッチしてグローバルに使用することもできます。
87 その副作用として、検証エラーメッセージも翻訳されます。
90 <programlisting language="php"><![CDATA[
91 // すべてのフォームクラスで特定の翻訳アダプタを使用させます。
92 // このアダプタは、検証エラーメッセージの翻訳にも用いられます。
93 Zend_Form::setDefaultTranslator($translate);
99 最後に、特定のフォームや要素のインスタンスに
100 翻訳オブジェクトをアタッチすることもできます。
101 その場合は <methodname>setTranslator()</methodname>
105 <programlisting language="php"><![CDATA[
106 // 「この」フォームのインスタンスで特定の翻訳アダプタを使用させます。
107 // このアダプタは、すべての要素の検証エラーメッセージの翻訳にも用いられます。
108 $form->setTranslator($translate);
110 // 「この」要素のインスタンスで特定の翻訳アダプタを使用させます。
111 // このアダプタは、この要素の検証エラーメッセージの翻訳にも用いられます。
112 $element->setTranslator($translate);
118 <sect2 id="zend.form.i18n.standard">
119 <title>標準的な I18N の対象</title>
122 これで翻訳オブジェクトがアタッチできました。
123 デフォルトでは、いったい何が翻訳の対象となるのでしょうか?
129 <emphasis>検証エラーメッセージ。</emphasis>
130 検証エラーメッセージを翻訳させることができます。
131 そのためには、<classname>Zend_Validate</classname>
132 のバリデーションクラスのエラーコード定数をメッセージ ID として使用します。
134 linkend="zend.validate">Zend_Validate</link>
139 1.6.0 以降では、実際のエラーメッセージをメッセージ ID
140 とする翻訳文字列を提供することができます。
141 1.6.0 以降ではこの方法が推奨となります。
142 メッセージキーによる翻訳は将来のバージョンで廃止予定です。
148 <emphasis>ラベル。</emphasis>
149 要素のラベルも、翻訳が存在すれば翻訳されます。
155 <emphasis>フィールドセットの説明 (legend)。</emphasis>
156 表示グループやサブフォームは、デフォルトでは fieldset
157 としてレンダリングされます。Fieldset デコレータは、
158 レンダリングの前に legend の翻訳を試みます。
164 <emphasis>フォームや要素の説明。</emphasis>
165 すべての型 (要素、フォーム、表示グループ、サブフォーム)
166 で、オプションとしてその項目の説明を指定することができます。
167 Description デコレータを用いて、これをレンダリングします。
168 その際、デフォルトでこの値の翻訳を試みます。
174 <emphasis>選択肢の値。</emphasis>
175 <classname>Zend_Form_Element_Multi</classname> を継承した項目
176 (MultiCheckbox、Multiselect および Radio 要素)
177 で、もし翻訳がある場合に選択肢の値 (キーではありません)
179 ユーザ向けに表示される選択肢のラベルが翻訳されるということです。
185 <emphasis>ボタンのラベル。</emphasis>
186 ボタン系の要素 (Button、Submit および Reset)
187 で、ユーザ向けに表示されるラベルが翻訳されます。
194 vim:se ts=4 sw=4 tw=80 et: