Zend_Form-I18n.xml 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15215 -->
  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 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. ]]></programlisting>
  50. <para>
  51. Das wird von <classname>Zend_Form</classname>, <classname>Zend_Validate</classname>, und
  52. <classname>Zend_View_Helper_Translate</classname> aufgegriffen.
  53. </para>
  54. </listitem>
  55. <listitem>
  56. <para>
  57. Wenn man besorgt ist wegen der Übersetzung von Fehlermeldungen, kann das
  58. Übersetzungsobjekt in <classname>Zend_Validate_Abstract</classname> registriert werden:
  59. </para>
  60. <programlisting role="php"><![CDATA[
  61. // Allen Prüfklassen mitteilen, dass ein spezieller Übersetzungsadapter verwendet werden soll:
  62. Zend_Validate_Abstract::setDefaultTranslator($translate);
  63. ]]></programlisting>
  64. </listitem>
  65. <listitem>
  66. <para>
  67. Alternativ kann das <classname>Zend_Form</classname> Objekt als globaler Übersetzer
  68. angefügt werden. Das hat auch einen Nebeneffekt auf die Übersetzung von
  69. Fehlermeldungen:
  70. </para>
  71. <programlisting role="php"><![CDATA[
  72. // Allen Formularklassen mitteilen, dass ein spezieller Übersetzungsadapter
  73. // verwendet werden soll, sowie, dass der Adapter für die Übersetzung von
  74. // Fehlermeldungen verwendet werden soll:
  75. Zend_Form::setDefaultTranslator($translate);
  76. ]]></programlisting>
  77. </listitem>
  78. <listitem>
  79. <para>
  80. Letztendlich kann ein Übersetzer mit einer speziellen Instanz eines Formulars
  81. verbunden werden oder zu einem speziellen Element indem dessen
  82. <code>setTranslator()</code> Methode verwendet wird:
  83. </para>
  84. <programlisting role="php"><![CDATA[
  85. // *Dieser* Formularklassen mitteilen, dass ein spezieller Übersetzungsadapter
  86. // verwendet werden soll, sie wird auch für die Übersetzung von allen
  87. // Fehlermeldungen für alle Elemente verwendet:
  88. $form->setTranslator($translate);
  89. // *Diesem* Element mitteilen, dass ein spezieller Übersetzungsadapter
  90. // verwendet werden soll, sie wird auch für die Übersetzung von allen
  91. // Fehlermeldungen für dieses Elemente verwendet:
  92. $element->setTranslator($translate);
  93. ]]></programlisting>
  94. </listitem>
  95. </itemizedlist>
  96. </sect2>
  97. <sect2 id="zend.form.i18n.standard">
  98. <title>Standard I18n Ziele</title>
  99. <para>
  100. Was kann nun standardmäßig übersetzt werden, nachdem ein Übersetzungsobjekt
  101. definiert wurde?
  102. </para>
  103. <itemizedlist>
  104. <listitem>
  105. <para>
  106. <emphasis>Prüfungsfehlermeldungen.</emphasis> Prüfungsfehlermeldungen können
  107. übersetzt werden. Um das zu tun, müssen die verschiedenen Konstanten der
  108. Fehlercodes von den <classname>Zend_Validate</classname> Prüfungsklassen als Message IDs
  109. verwendet werden. Für weitere Details über diese Codes, kann in die Dokumentation
  110. zu <link linkend="zend.validate">Zend_Validate</link> gesehen werden.
  111. </para>
  112. <para>
  113. Zusätzlich können ab Version 1.6.0, Übersetzungen angegeben werden, indem die aktuelle
  114. Fehlermeldung als Identifikator der Meldung verwendet wird. Das ist die bevorzugte
  115. Verwendung für 1.6.0 und höher, da die Übersetzung der Nachrichtenschlüssel in
  116. zukünftigen Releases veraltet sein wird.
  117. </para>
  118. </listitem>
  119. <listitem>
  120. <para>
  121. <emphasis>Labels.</emphasis> Element Labels werden übersetzt, wenn eine Übersetzung
  122. existiert.
  123. </para>
  124. </listitem>
  125. <listitem>
  126. <para>
  127. <emphasis>Fieldset Legenden.</emphasis> Anzeigegruppen und Unterformulare werden
  128. standardmäßig in Fieldsets dargestellt. Der Fieldset Dekorator versucht die
  129. Legende zu übersetzen, bevor das Fieldset dargestellt wird.
  130. </para>
  131. </listitem>
  132. <listitem>
  133. <para>
  134. <emphasis>Formulare- und Elementbeschreibungen.</emphasis> Alle Formtypen (Elemente,
  135. Formulare, Anzeigegruppen, Unterformulare) erlauben die Spezifikation von optionalen
  136. Elementbeschreibungen. Der Beschreibungs Dekorator kann verwendet werden, um sie
  137. darzustellen und standardmäßig nimmt er den Wert und versucht ihn zu übersetzen.
  138. </para>
  139. </listitem>
  140. <listitem>
  141. <para>
  142. <emphasis>Multi-Option Werte.</emphasis> Für die verschiedenen Elemente die von
  143. <classname>Zend_Form_Element_Multi</classname> abgeleitet sind (enthält die MultiCheckbox,
  144. Multiselect, und Radio Elemente), werden die Optionswerte (nicht die Schlüssel)
  145. übersetzt, wenn eine Übersetzung vorhanden ist; das bedeutet, dass die Label der
  146. vorhandenen Optionen die dem Benutzer angezeigt werden, übersetzt werden.
  147. </para>
  148. </listitem>
  149. <listitem>
  150. <para>
  151. <emphasis>Submit und Button Labels.</emphasis> Die verschiedenen Submit- und
  152. Button-Elemente (Button, Submit und Reset) übersetzen das Label, welches dem
  153. Benutzer angezeigt wird.
  154. </para>
  155. </listitem>
  156. </itemizedlist>
  157. </sect2>
  158. </sect1>
  159. <!--
  160. vim:se ts=4 sw=4 tw=80 et:
  161. -->