[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_Form-I18n.xml
blob1cdf12cd4c13d50c6e803ec9a149a164199cdaf5
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 17987 -->
4 <sect1 id="zend.form.i18n">
5     <title>Zend_Form の国際化</title>
7     <para>
8         作成したコンテンツを複数の言語や地域に対応させるという作業は、
9         日増しに重要になってきています。
10         <classname>Zend_Form</classname> はそんな作業も簡単にできるように作られており、
11         <link
12             linkend="zend.translate">Zend_Translate</link> と <link
13             linkend="zend.validate">Zend_Validate</link>
14         の機能を使うことで国際化を実現できます。
15     </para>
17     <para>
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> を参照ください。
25     </para>
27     <note>
28         <title>項目単位での翻訳の無効化</title>
30         <para>
31             個々のフォームや要素、表示グループ、サブフォームなどの単位で翻訳を無効にするには、
32             <methodname>setDisableTranslator($flag)</methodname> メソッドをコールするか
33             あるいはそのオブジェクトにオプション <property>disableTranslator</property>
34             を渡します。これは、特定の要素 (あるいは要素群)
35             についてだけ翻訳を無効にしたい場合に有用です。
36         </para>
37     </note>
39     <sect2 id="zend.form.i18n.initialization">
40         <title>フォームでの I18n 機能の初期化</title>
42         <para>
43             フォームの I18n 機能を初期化するには
44             <classname>Zend_Translate</classname> オブジェクトあるいは
45             <classname>Zend_Translate_Adapter</classname> オブジェクトが必要です。詳細は
46             <classname>Zend_Translate</classname> のドキュメントを参照ください。
47             翻訳オブジェクトを作成したら、その後の手順にはいくつかの方法があります。
48         </para>
50         <itemizedlist>
51             <listitem>
52                 <para>
53                     <emphasis>最も簡単な方法:</emphasis>
54                     レジストリに登録します。Zend Framework の I18n
55                     対応コンポーネントはすべて、レジストリの 'Zend_Translate'
56                     キーに登録されている翻訳オブジェクトを自動取得して翻訳や地域化を行います。
57                 </para>
59                 <programlisting language="php"><![CDATA[
60 // 'Zend_Translate' キーを使用します。$translate は Zend_Translate オブジェクトです
61 Zend_Registry::set('Zend_Translate', $translate);
62 ]]></programlisting>
64                 <para>
65                     これは、<classname>Zend_Form</classname> や
66                     <classname>Zend_Validate</classname> そして
67                     <classname>Zend_View_Helper_Translate</classname> が使用します。
68                 </para>
69             </listitem>
71             <listitem>
72                 <para>
73                     検証エラーのメッセージだけを翻訳したいのなら、
74                     翻訳オブジェクトを <classname>Zend_Validate_Abstract</classname> に登録することもできます。
75                 </para>
77                 <programlisting language="php"><![CDATA[
78 // すべてのバリデーションクラスに、指定した翻訳アダプタを使用させます
79 Zend_Validate_Abstract::setDefaultTranslator($translate);
80 ]]></programlisting>
81             </listitem>
83             <listitem>
84                 <para>
85                     あるいは、<classname>Zend_Form</classname>
86                     オブジェクトにアタッチしてグローバルに使用することもできます。
87                     その副作用として、検証エラーメッセージも翻訳されます。
88                 </para>
90                 <programlisting language="php"><![CDATA[
91 // すべてのフォームクラスで特定の翻訳アダプタを使用させます。
92 // このアダプタは、検証エラーメッセージの翻訳にも用いられます。
93 Zend_Form::setDefaultTranslator($translate);
94 ]]></programlisting>
95             </listitem>
97             <listitem>
98                 <para>
99                     最後に、特定のフォームや要素のインスタンスに
100                     翻訳オブジェクトをアタッチすることもできます。
101                     その場合は <methodname>setTranslator()</methodname>
102                     メソッドを使用します。
103                 </para>
105                 <programlisting language="php"><![CDATA[
106 // 「この」フォームのインスタンスで特定の翻訳アダプタを使用させます。
107 // このアダプタは、すべての要素の検証エラーメッセージの翻訳にも用いられます。
108 $form->setTranslator($translate);
110 // 「この」要素のインスタンスで特定の翻訳アダプタを使用させます。
111 // このアダプタは、この要素の検証エラーメッセージの翻訳にも用いられます。
112 $element->setTranslator($translate);
113 ]]></programlisting>
114             </listitem>
115         </itemizedlist>
116     </sect2>
118     <sect2 id="zend.form.i18n.standard">
119         <title>標準的な I18N の対象</title>
121         <para>
122             これで翻訳オブジェクトがアタッチできました。
123             デフォルトでは、いったい何が翻訳の対象となるのでしょうか?
124         </para>
126         <itemizedlist>
127             <listitem>
128                 <para>
129                     <emphasis>検証エラーメッセージ。</emphasis>
130                     検証エラーメッセージを翻訳させることができます。
131                     そのためには、<classname>Zend_Validate</classname>
132                     のバリデーションクラスのエラーコード定数をメッセージ ID として使用します。
133                     エラーコードについての詳細は <link
134                         linkend="zend.validate">Zend_Validate</link>
135                     のドキュメントを参照ください。
136                 </para>
138                 <para>
139                     1.6.0 以降では、実際のエラーメッセージをメッセージ ID
140                     とする翻訳文字列を提供することができます。
141                     1.6.0 以降ではこの方法が推奨となります。
142                     メッセージキーによる翻訳は将来のバージョンで廃止予定です。
143                 </para>
144             </listitem>
146             <listitem>
147                 <para>
148                     <emphasis>ラベル。</emphasis>
149                     要素のラベルも、翻訳が存在すれば翻訳されます。
150                 </para>
151             </listitem>
153             <listitem>
154                 <para>
155                     <emphasis>フィールドセットの説明 (legend)。</emphasis>
156                     表示グループやサブフォームは、デフォルトでは fieldset
157                     としてレンダリングされます。Fieldset デコレータは、
158                     レンダリングの前に legend の翻訳を試みます。
159                 </para>
160             </listitem>
162             <listitem>
163                 <para>
164                     <emphasis>フォームや要素の説明。</emphasis>
165                     すべての型 (要素、フォーム、表示グループ、サブフォーム)
166                     で、オプションとしてその項目の説明を指定することができます。
167                     Description デコレータを用いて、これをレンダリングします。
168                     その際、デフォルトでこの値の翻訳を試みます。
169                 </para>
170             </listitem>
172             <listitem>
173                 <para>
174                     <emphasis>選択肢の値。</emphasis>
175                     <classname>Zend_Form_Element_Multi</classname> を継承した項目
176                     (MultiCheckbox、Multiselect および Radio 要素)
177                     で、もし翻訳がある場合に選択肢の値 (キーではありません)
178                     が翻訳の対象となります。つまり、
179                     ユーザ向けに表示される選択肢のラベルが翻訳されるということです。
180                 </para>
181             </listitem>
183             <listitem>
184                 <para>
185                     <emphasis>ボタンのラベル。</emphasis>
186                     ボタン系の要素 (Button、Submit および Reset)
187                     で、ユーザ向けに表示されるラベルが翻訳されます。
188                 </para>
189             </listitem>
190         </itemizedlist>
191     </sect2>
192 </sect1>
193 <!--
194 vim:se ts=4 sw=4 tw=80 et: