Zend_Form-I18n.xml 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.form.i18n">
  5. <title>Internationalisierung von Zend_Form</title>
  6. <para>
  7. Immer mehr Entwickler müssen ihren Inhalt für mehere Sprachen und Regionen zur Verfügung
  8. stellen. <classname>Zend_Form</classname> versucht so einen Arbeitsschritt so einfach wie
  9. möglich zu machen und verwendet Funktionalitäten sowohl in <link
  10. linkend="zend.translate">Zend_Translate</link>, als auch in <link
  11. linkend="zend.validate">Zend_Validate</link> um das zu tun.
  12. </para>
  13. <para>
  14. Standardmäßig wird keine Internationalisiernug (I18n) durchgeführt. Um I18n Features in
  15. <classname>Zend_Form</classname> einzuschalten, muss ein
  16. <classname>Zend_Translate</classname> Objekt mit einem gewünschten Adapter instanziert
  17. werden, und es mit <classname>Zend_Form</classname> und/oder
  18. <classname>Zend_Validate</classname> verbunden werden. Für weitere Informationen darüber,
  19. wie ein Übersetzungsobjekt und Übersetzungsdateien erstellt werden, sehen Sie bite in die
  20. <link linkend="zend.translate">Dokumentation zu Zend_Translate</link>.
  21. </para>
  22. <note>
  23. <title>Die Übersetzung kann für jedes Element einzeln abgeschaltet werden</title>
  24. <para>
  25. Übersetzung kann für jedes Formular, Element, Anzeigegruppe, oder Unterformular, durch
  26. den Aufruf dessen <methodname>setDisableTranslator($flag)</methodname> Methode oder der
  27. Übergabe der <property>disableTranslator</property> Option an das Objekt, ausgeschaltet
  28. werden. Das kann nützlich sein, wenn man Übersetzungen selektiv für individuelle
  29. Elemente oder Sets von Elementen ausschalten will.
  30. </para>
  31. </note>
  32. <sect2 id="zend.form.i18n.initialization">
  33. <title>I18n in Formularen initialisieren</title>
  34. <para>
  35. Um I18n in Formularen zu initialisieren, muss man entweder ein
  36. <classname>Zend_Translate</classname> Objekt oder ein
  37. <classname>Zend_Translate_Adapter</classname> haben, wie in der
  38. <classname>Zend_Translate</classname> Dokumentation beschrieben. Sobald man ein
  39. Übersetzungsobjekt hat, besitzt man verschiedene Möglichkeiten:
  40. </para>
  41. <itemizedlist>
  42. <listitem>
  43. <para>
  44. <emphasis>Einfachste:</emphasis> es der Registry hinzufügen. Alle I18n fähigen
  45. Komponenten vom Zend Framework erkennen ein Übersetzungsobjekt automatisch
  46. wenn es in der Registrierung unter dem 'Zend_Translate' Schlüssel vorhanden ist
  47. und verwenden es um eine Übersetzung und/oder Lokalisierung durchzuführen:
  48. </para>
  49. <programlisting language="php"><![CDATA[
  50. // verwende den 'Zend_Translate' Schlüssel; $translate ist ein Zend_Translate Objekt:
  51. Zend_Registry::set('Zend_Translate', $translate);
  52. ]]></programlisting>
  53. <para>
  54. Das wird von <classname>Zend_Form</classname>,
  55. <classname>Zend_Validate</classname>, und
  56. <classname>Zend_View_Helper_Translate</classname> aufgegriffen.
  57. </para>
  58. </listitem>
  59. <listitem>
  60. <para>
  61. Wenn man besorgt ist wegen der Übersetzung von Fehlermeldungen, kann das
  62. Übersetzungsobjekt in <classname>Zend_Validate_Abstract</classname> registriert
  63. werden:
  64. </para>
  65. <programlisting language="php"><![CDATA[
  66. // Allen Prüfklassen mitteilen, dass ein spezieller Übersetzungsadapter verwendet werden soll:
  67. Zend_Validate_Abstract::setDefaultTranslator($translate);
  68. ]]></programlisting>
  69. </listitem>
  70. <listitem>
  71. <para>
  72. Alternativ kann das <classname>Zend_Form</classname> Objekt als globaler
  73. Übersetzer angefügt werden. Das hat auch einen Nebeneffekt auf die Übersetzung
  74. von Fehlermeldungen:
  75. </para>
  76. <programlisting language="php"><![CDATA[
  77. // Allen Formularklassen mitteilen, dass ein spezieller Übersetzungsadapter
  78. // verwendet werden soll, sowie, dass der Adapter für die Übersetzung von
  79. // Fehlermeldungen verwendet werden soll:
  80. Zend_Form::setDefaultTranslator($translate);
  81. ]]></programlisting>
  82. </listitem>
  83. <listitem>
  84. <para>
  85. Letztendlich kann ein Übersetzer mit einer speziellen Instanz eines Formulars
  86. verbunden werden oder zu einem speziellen Element indem dessen
  87. <methodname>setTranslator()</methodname> Methode verwendet wird:
  88. </para>
  89. <programlisting language="php"><![CDATA[
  90. // *Dieser* Formularklassen mitteilen, dass ein spezieller Übersetzungsadapter
  91. // verwendet werden soll, sie wird auch für die Übersetzung von allen
  92. // Fehlermeldungen für alle Elemente verwendet:
  93. $form->setTranslator($translate);
  94. // *Diesem* Element mitteilen, dass ein spezieller Übersetzungsadapter
  95. // verwendet werden soll, sie wird auch für die Übersetzung von allen
  96. // Fehlermeldungen für dieses Elemente verwendet:
  97. $element->setTranslator($translate);
  98. ]]></programlisting>
  99. </listitem>
  100. </itemizedlist>
  101. </sect2>
  102. <sect2 id="zend.form.i18n.standard">
  103. <title>Standard I18n Ziele</title>
  104. <para>
  105. Was kann nun standardmäßig übersetzt werden, nachdem ein Übersetzungsobjekt
  106. definiert wurde?
  107. </para>
  108. <itemizedlist>
  109. <listitem>
  110. <para>
  111. <emphasis>Prüfungsfehlermeldungen.</emphasis> Prüfungsfehlermeldungen können
  112. übersetzt werden. Um das zu tun, müssen die verschiedenen Konstanten der
  113. Fehlercodes von den <classname>Zend_Validate</classname> Prüfungsklassen als
  114. Message IDs verwendet werden. Für weitere Details über diese Codes, kann in die
  115. Dokumentation zu <link linkend="zend.validate">Zend_Validate</link> gesehen
  116. werden.
  117. </para>
  118. <para>
  119. Zusätzlich können ab Version 1.6.0, Übersetzungen angegeben werden, indem die
  120. aktuelle Fehlermeldung als Identifikator der Meldung verwendet wird. Das ist die
  121. bevorzugte Verwendung für 1.6.0 und höher, da die Übersetzung der
  122. Nachrichtenschlüssel in zukünftigen Releases veraltet sein wird.
  123. </para>
  124. </listitem>
  125. <listitem>
  126. <para>
  127. <emphasis>Labels.</emphasis> Element Labels werden übersetzt, wenn eine
  128. Übersetzung existiert.
  129. </para>
  130. </listitem>
  131. <listitem>
  132. <para>
  133. <emphasis>Fieldset Legenden.</emphasis> Anzeigegruppen und Unterformulare werden
  134. standardmäßig in Fieldsets dargestellt. Der Fieldset Dekorator versucht die
  135. Legende zu übersetzen, bevor das Fieldset dargestellt wird.
  136. </para>
  137. </listitem>
  138. <listitem>
  139. <para>
  140. <emphasis>Formulare- und Elementbeschreibungen.</emphasis> Alle Formtypen
  141. (Elemente, Formulare, Anzeigegruppen, Unterformulare) erlauben die Spezifikation
  142. von optionalen Elementbeschreibungen. Der Beschreibungs Dekorator kann verwendet
  143. werden, um sie darzustellen und standardmäßig nimmt er den Wert und versucht ihn
  144. zu übersetzen.
  145. </para>
  146. </listitem>
  147. <listitem>
  148. <para>
  149. <emphasis>Multi-Option Werte.</emphasis> Für die verschiedenen Elemente die von
  150. <classname>Zend_Form_Element_Multi</classname> abgeleitet sind (enthält die
  151. MultiCheckbox, Multiselect, und Radio Elemente), werden die Optionswerte (nicht
  152. die Schlüssel) übersetzt, wenn eine Übersetzung vorhanden ist; das bedeutet,
  153. dass die Label der vorhandenen Optionen die dem Benutzer angezeigt werden,
  154. übersetzt werden.
  155. </para>
  156. </listitem>
  157. <listitem>
  158. <para>
  159. <emphasis>Submit und Button Labels.</emphasis> Die verschiedenen Submit- und
  160. Button-Elemente (Button, Submit und Reset) übersetzen das Label, welches dem
  161. Benutzer angezeigt wird.
  162. </para>
  163. </listitem>
  164. </itemizedlist>
  165. </sect2>
  166. </sect1>