| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15215 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.form.i18n">
- <title>Internationalisierung von Zend_Form</title>
- <para>
- Immer mehr Entwickler müssen ihren Inhalt für mehere Sprachen und Regionen zur Verfügung
- stellen. <classname>Zend_Form</classname> versucht so einen Arbeitsschritt so einfach wie möglich zu machen und
- verwendet Funktionalitäten sowohl in <link linkend="zend.translate">Zend_Translate</link>,
- als auch in <link linkend="zend.validate">Zend_Validate</link> um das zu tun.
- </para>
- <para>
- Standardmäßig wird keine Internationalisiernug (I18n) durchgeführt. Um I18n Features in
- <classname>Zend_Form</classname> einzuschalten, muss ein <classname>Zend_Translate</classname> Objekt mit einem
- gewünschten Adapter instanziert werden, und es mit <classname>Zend_Form</classname> und/oder
- <classname>Zend_Validate</classname> verbunden werden. Für weitere Informationen darüber, wie ein
- Übersetzungsobjekt und Übersetzungsdateien erstellt werden, sehen Sie bite in die
- <link linkend="zend.translate">Dokumentation zu Zend_Translate</link>.
- </para>
- <note>
- <title>Die Übersetzung kann für jedes Element einzeln abgeschaltet werden</title>
- <para>
- Übersetzung kann für jedes Formular, Element, Anzeigegruppe, oder Unterformular, durch
- den Aufruf dessen <code>setDisableTranslator($flag)</code> Methode oder der Übergabe der
- <code>disableTranslator</code> Option an das Objekt, ausgeschaltet werden. Das kann
- nützlich sein, wenn man Übersetzungen selektiv für individuelle Elemente oder Sets von
- Elementen ausschalten will.
- </para>
- </note>
- <sect2 id="zend.form.i18n.initialization">
- <title>I18n in Formularen initialisieren</title>
- <para>
- Um I18n in Formularen zu initialisieren, muss man entweder ein <classname>Zend_Translate</classname>
- Objekt oder ein <classname>Zend_Translate_Adapter</classname> haben, wie in der
- <classname>Zend_Translate</classname> Dokumentation beschrieben. Sobald man ein
- Übersetzungsobjekt hat, besitzt man verschiedene Möglichkeiten:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>Einfachste:</emphasis> es der Registry hinzufügen. Alle I18n fähigen
- Komponenten vom Zend Framework erkennen ein Übersetzungsobjekt automatisch
- wenn es in der Registrierung unter dem 'Zend_Translate' Schlüssel vorhanden ist
- und verwenden es um eine Übersetzung und/oder Lokalisierung durchzuführen:
- </para>
- <programlisting role="php"><![CDATA[
- // verwende den 'Zend_Translate' Schlüssel; $translate ist ein Zend_Translate Objekt:
- Zend_Registry::set('Zend_Translate', $translate);
- ]]></programlisting>
- <para>
- Das wird von <classname>Zend_Form</classname>, <classname>Zend_Validate</classname>, und
- <classname>Zend_View_Helper_Translate</classname> aufgegriffen.
- </para>
- </listitem>
- <listitem>
- <para>
- Wenn man besorgt ist wegen der Übersetzung von Fehlermeldungen, kann das
- Übersetzungsobjekt in <classname>Zend_Validate_Abstract</classname> registriert werden:
- </para>
- <programlisting role="php"><![CDATA[
- // Allen Prüfklassen mitteilen, dass ein spezieller Übersetzungsadapter verwendet werden soll:
- Zend_Validate_Abstract::setDefaultTranslator($translate);
- ]]></programlisting>
- </listitem>
- <listitem>
- <para>
- Alternativ kann das <classname>Zend_Form</classname> Objekt als globaler Übersetzer
- angefügt werden. Das hat auch einen Nebeneffekt auf die Übersetzung von
- Fehlermeldungen:
- </para>
- <programlisting role="php"><![CDATA[
- // Allen Formularklassen mitteilen, dass ein spezieller Übersetzungsadapter
- // verwendet werden soll, sowie, dass der Adapter für die Übersetzung von
- // Fehlermeldungen verwendet werden soll:
- Zend_Form::setDefaultTranslator($translate);
- ]]></programlisting>
- </listitem>
- <listitem>
- <para>
- Letztendlich kann ein Übersetzer mit einer speziellen Instanz eines Formulars
- verbunden werden oder zu einem speziellen Element indem dessen
- <code>setTranslator()</code> Methode verwendet wird:
- </para>
- <programlisting role="php"><![CDATA[
- // *Dieser* Formularklassen mitteilen, dass ein spezieller Übersetzungsadapter
- // verwendet werden soll, sie wird auch für die Übersetzung von allen
- // Fehlermeldungen für alle Elemente verwendet:
- $form->setTranslator($translate);
- // *Diesem* Element mitteilen, dass ein spezieller Übersetzungsadapter
- // verwendet werden soll, sie wird auch für die Übersetzung von allen
- // Fehlermeldungen für dieses Elemente verwendet:
- $element->setTranslator($translate);
- ]]></programlisting>
- </listitem>
- </itemizedlist>
- </sect2>
- <sect2 id="zend.form.i18n.standard">
- <title>Standard I18n Ziele</title>
- <para>
- Was kann nun standardmäßig übersetzt werden, nachdem ein Übersetzungsobjekt
- definiert wurde?
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>Prüfungsfehlermeldungen.</emphasis> Prüfungsfehlermeldungen können
- übersetzt werden. Um das zu tun, müssen die verschiedenen Konstanten der
- Fehlercodes von den <classname>Zend_Validate</classname> Prüfungsklassen als Message IDs
- verwendet werden. Für weitere Details über diese Codes, kann in die Dokumentation
- zu <link linkend="zend.validate">Zend_Validate</link> gesehen werden.
- </para>
- <para>
- Zusätzlich können ab Version 1.6.0, Übersetzungen angegeben werden, indem die aktuelle
- Fehlermeldung als Identifikator der Meldung verwendet wird. Das ist die bevorzugte
- Verwendung für 1.6.0 und höher, da die Übersetzung der Nachrichtenschlüssel in
- zukünftigen Releases veraltet sein wird.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Labels.</emphasis> Element Labels werden übersetzt, wenn eine Übersetzung
- existiert.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Fieldset Legenden.</emphasis> Anzeigegruppen und Unterformulare werden
- standardmäßig in Fieldsets dargestellt. Der Fieldset Dekorator versucht die
- Legende zu übersetzen, bevor das Fieldset dargestellt wird.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Formulare- und Elementbeschreibungen.</emphasis> Alle Formtypen (Elemente,
- Formulare, Anzeigegruppen, Unterformulare) erlauben die Spezifikation von optionalen
- Elementbeschreibungen. Der Beschreibungs Dekorator kann verwendet werden, um sie
- darzustellen und standardmäßig nimmt er den Wert und versucht ihn zu übersetzen.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Multi-Option Werte.</emphasis> Für die verschiedenen Elemente die von
- <classname>Zend_Form_Element_Multi</classname> abgeleitet sind (enthält die MultiCheckbox,
- Multiselect, und Radio Elemente), werden die Optionswerte (nicht die Schlüssel)
- übersetzt, wenn eine Übersetzung vorhanden ist; das bedeutet, dass die Label der
- vorhandenen Optionen die dem Benutzer angezeigt werden, übersetzt werden.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Submit und Button Labels.</emphasis> Die verschiedenen Submit- und
- Button-Elemente (Button, Submit und Reset) übersetzen das Label, welches dem
- Benutzer angezeigt wird.
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
- </sect1>
- <!--
- vim:se ts=4 sw=4 tw=80 et:
- -->
|