Zend_Form-I18n.xml 8.7 KB

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