<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.currency.usage">
    <title>Zend_Currency verwenden</title>

    <sect2 id="zend.currency.usage.generic">
        <title>Generelle Verwendung</title>

        <para>
            Der einfachste Anwendungsfall in einer Anwendung ist die Verwendung des Gebietsschemas
            des Clients. Wenn man eine Instanz von <classname>Zend_Currency</classname> erstellt
            ohne eine Option anzugeben, wird das Gebietsschema des Clients verwendet um die richtige
            Währung zu setzen.
        </para>

        <example id="zend.currency.usage.generic.example-1">
            <title>Erstellung einer Währung mit Client Einstellungen</title>

            <para>
                Angenommen unser Client hat "en_US" als gewünschte Sprache in seinem Browser
                gesetzt. In diesem Fall wird <classname>Zend_Currency</classname> die Währung welche
                zu verwenden automatisch erkannt.
            </para>

            <programlisting language="php"><![CDATA[
$currency = new Zend_Currency();

// Siehe die Standardwerte welche vom Client abhängen
// var_dump($currency);
]]></programlisting>

            <para>
                Das erstellte Objekt würde jetzt die Währung "US Dollar" enthalten da dies die
                aktuell zugeordnete Währung für US (Vereinigte Staaten) ist. Es wurden auch andere
                Optionen gesetzt wie "$" für das Währungszeichen oder "USD" für die Abkürzung.
            </para>
        </example>

        <note>
            <title>Die automatische Erkennung des Gebietsschemas funktioniert nicht immer</title>

            <para>
                Es ist zu beachten das die automatische Erkennung des Gebietsschemas nicht immer
                richtig funktioniert. Der Grund für dieses Verhalten liegt darin das
                <classname>Zend_Currency</classname> ein Gebietsschema benötigt welches eine Region
                enthält. Wenn der Client nur "en" als Gebietsschema setzt würde
                <classname>Zend_Currency</classname> nicht mehr wissen welches der mehr als 30
                Länder gemeint ist. In diesem Fall wird eine Exception geworfen.
            </para>

            <para>
                Ein Client könnte die Einstellungen des Gebietsschemas in seinem Browser auch
                unterdrücken. Das würde zum Problem führen dass die Einstellungen der eigenen
                Umgebung als Fallback verwendet werden und dies könnte auch zu einer Exception
                führen.
            </para>
        </note>
    </sect2>

    <sect2 id="zend.currency.usage.locale">
        <title>Erstellung einer Währung basierend auf einem Gebietsschema</title>

        <para>
            Um diese Probleme mit dem Client zu vermeiden kann man das gewünschte Gebietsschema
            einfach manuell setzen.
        </para>

        <programlisting language="php"><![CDATA[
$currency = new Zend_Currency('en_US');

// Man könnte auch die 'locale' Option verwenden
// $currency = new Zend_Currency(array('locale' => 'en_US'));

// Siehe die aktuellen Einstellungen welche auf 'en_US' fixiert sind
// var_dump($currency);
]]></programlisting>

        <para>
            Wie in unserem ersten Beispiel ist die verwendete Währung "US Dollar". Aber jetzt sind
            wir nicht mehr von den Einstellungen des Clients abhängig.
        </para>

        <para>
            <classname>Zend_Currency</classname> unterstützt auch die Verwendung eines
            Anwendungsweiten Gebietsschemas. Man kann eine Instanz von
            <classname>Zend_Locale</classname> wie anbei gezeigt in der Registry setzen. Mit dieser
            Schreibweise vermeidet man das manuelle Setzen des Gebietsschemas für jede Instanz, wenn
            man das selbe Gebietsschema in der gesamten Anwendung verwenden will.
        </para>

        <programlisting language="php"><![CDATA[
// In der Bootstrap Datei
$locale = new Zend_Locale('de_AT');
Zend_Registry::set('Zend_Locale', $locale);

// Irgendwo in der Anwendung
$currency = new Zend_Currency();
]]></programlisting>
    </sect2>

    <sect2 id="zend.currency.usage.territory">
        <title>Erstellung einer Währung basierend auf einem Land</title>

        <para>
            <classname>Zend_Currency</classname> ist auch in der Lage basierend auf einem
            angegebenen Land zu arbeiten indem intern <classname>Zend_Locale</classname> verwendet
            wird.
        </para>

        <programlisting language="php"><![CDATA[
$currency = new Zend_Currency('US');

// See the actual settings which are fixed to 'en_US'
// var_dump($currency);
]]></programlisting>

        <note>
            <title>Uppercase territories</title>

            <para>
                When you know that you are using a territory, then you should uppercase it.
                Otherwise you could get an in your eyes false locale in return. For example,
                when you give "om" then you could expect "ar_OM" to be returned. But in fact it
                returns "om", as it's also a language.
            </para>

            <para>
                Therefor always uppercase the input when you know that a territory is meant.
            </para>
        </note>
    </sect2>
</sect1>
