| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <?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>
|