| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- 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 <methodname>setDisableTranslator($flag)</methodname> Methode oder der
- Übergabe der <property>disableTranslator</property> 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 language="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 language="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 language="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
- <methodname>setTranslator()</methodname> Methode verwendet wird:
- </para>
- <programlisting language="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>
|