<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 20774 -->
<!-- Reviewed: no -->
<sect2 id="zend.filter.set.localizedtonormalized">
    <title>LocalizedToNormalized</title>

    <para>
        Dieser Filter ändert jede angegebene lokalisierte Eingabe in seine normalisierte
        Repräsentation. Er verwendet im Hintergrund <classname>Zend_Locale</classname> um diese
        Transformation durchzuführen.
    </para>

    <para>
        Das erlaubt es dem Benutzer Informationen in der Schreibweise seiner eigenen Sprache
        einzugeben, und man kann diese anschließend den normalisierten Wert zum Beispiel in der
        Datenbank speichern.
    </para>

    <note>
        <para>
            Es ist zu beachten das Normalisierung nicht mit Übersetzung gleichzusetzen ist. Dieser
            Filter kann Strings nicht von einer Sprache in eine andere Übersetzen, wie man es
            zum Beispiel bei Monaten oder Namen von Tagen erwarten könnte.
        </para>
    </note>

    <para>
        Die folgenden Eingabetypen können normalisiert werden:
    </para>

    <itemizedlist>
        <listitem>
            <para>
                <emphasis>integer</emphasis>: Ganzzahlen, welche lokalisiert sind, werden in die
                englische Schreibweise normalisiert.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>float</emphasis>: Gleitkommazahlen, welche lokalisiert sind, werden in
                die englische Schreibweise normalisiert.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>numbers</emphasis>: Andere Zahlen, wie Realzahlen, werden in die
                englische Schreibweise normalisiert.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>time</emphasis>: Zeitwerte, werden in ein benanntes Array normalisiert.
            </para>
        </listitem>

        <listitem>
            <para>
                <emphasis>date</emphasis>: Datumswerte, werden in ein benanntes Array normalisiert.
            </para>
        </listitem>
    </itemizedlist>

    <para>
        Jede andere Eingabe wird so wie Sie ist zurückgegeben, ohne das Sie geändert wird.
    </para>

    <note>
        <para>
            Man sollte beachten das normalisierte Ausgabe immer als String angegeben sind.
            Andernfalls würde die eigene Umgebung die normalisierte Ausgabe automatisch in die
            Schreibweise konvertieren welche die eigene Umgebung anhand des gesetzen Gebietsschemas
            aktuell verwendet.
        </para>
    </note>

    <sect3 id="zend.filter.set.localizedtonormalized.numbers">
        <title>Normalisierung von Zahlen</title>

        <para>
            Jede angegebene Zahl wie Integer, Float oder Realzahlen können normalisiert werden.
            Es ist zu beachten das Zahlen in der Wissenschaftlichen Schreibweise, aktuell nicht
            von diesem Filter behandelt werden können.
        </para>

        <para>
            Wie funktioniert diese Normalisierung also im Detail für Nummern:
        </para>

        <programlisting language="php"><![CDATA[
// Den Filter initiieren
$filter = new Zend_Filter_LocalizedToNormalized();
$filter->filter('123.456,78');
// Gibt den Wert '123456.78' zurück
]]></programlisting>

        <para>
            Nehmen wir an das wir das Gebietsschema 'de' als Anwendungsweites Gebietsschema gesetzt
            haben. <classname>Zend_Filter_LocalizedToNormalized</classname> nimmt das gesetzte
            Gebietsschema und verwendet es um zu erkennen welche Art der Eingabe angegeben wurde. In
            unserem Beispiel wurde ein Wert mit Nachkommastellen angegeben. Jetzt gibt der Filter
            die normalisierte Repräsentation für diesen Wert als String zurück.
        </para>

        <para>
            Man kann auch kontrollieren wie die normalisierte Nummer auszusehen hat. Hierfür kann
            man alle Optionen angeben die auch von <classname>Zend_Locale_Format</classname>
            verwendet werden. Die üblichsten sind:
        </para>

        <itemizedlist>
            <listitem><para><emphasis>date_format</emphasis></para></listitem>
            <listitem><para><emphasis>locale</emphasis></para></listitem>
            <listitem><para><emphasis>precision</emphasis></para></listitem>
        </itemizedlist>

        <para>
            Für Details darüber, wie diese Optionen verwendet werden, sollte man in der
            <link linkend="zend.locale.parsing">Kapitel Zend_Locale</link> sehen.
        </para>

        <para>
            Anbei ist ein Beispiel welches Nachkommastellen definiert damit man sehen kann
            wie Optionen arbeiten:
        </para>

        <programlisting language="php"><![CDATA[
// Nummerischer Filter
$filter = new Zend_Filter_LocalizedToNormalized(array('precision' => 2));

$filter->filter('123.456');
// Gibt den Wert '123456.00' zurück

$filter->filter('123.456,78901');
// Gibt den Wert '123456.79' zurück
]]></programlisting>
    </sect3>

    <sect3 id="zend.filter.set.localizedtonormalized.dates">
        <title>Normalisierung für Datum und Zeit</title>

        <para>
            Eingaben für Datum und Zeitwerte können auch normalisiert werden. Alle angegebenen
            Datums- und Zeitwerte werden als Array zurückgegeben, wobei jeder Teil des Datums
            mit einem eigenen Schlüssel angegeben wird.
        </para>

        <programlisting language="php"><![CDATA[
// Den Filter initiieren
$filter = new Zend_Filter_LocalizedToNormalized();
$filter->filter('12.April.2009');
// Gibt array('day' => '12', 'month' => '04', 'year' => '2009') zurück
]]></programlisting>

        <para>
            Angenommen wir haben wieder das Gebietsschema 'de' gesetzt. Die Eingaben werden jetzt
            automatisch als Datum erkannt und man erhält ein benanntes Array zurück.
        </para>

        <para>
            Natürlich kann man auch kontrollieren wie die Datumseingaben auszusehen haben indem
            die Optionen <emphasis>date_format</emphasis> und <emphasis>locale</emphasis>
            verwendet werden.
        </para>

        <programlisting language="php"><![CDATA[
// Datumsfilter
$filter = new Zend_Filter_LocalizedToNormalized(
    array('date_format' => 'ss:mm:HH')
);

$filter->filter('11:22:33');
// Gibt array('hour' => '33', 'minute' => '22', 'second' => '11') zurück
]]></programlisting>
    </sect3>
</sect2>
