1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 22741 -->
<!-- Reviewed: no -->
<sect2 id="zend.application.available-resources.locale">
<title>Zend_Application_Resource_Locale</title>
<para>
<classname>Zend_Application_Resource_Locale</classname> kann verwendet werden um ein
Anwendungsweites Gebietsschema zu setzen welches dann in allen Klassen und Komponenten
verwendet wird welche mit Lokalisierung oder Internationalisierung arbeiten. Standardmäßig
wird das Gebietsschema in einem <classname>Zend_Registry</classname> Eintrag mit dem
Schlüssel '<property>Zend_Locale</property>' gespeichert.
</para>
<para>
Es gibt grundsätzlich drei Anwendungsfälle für das Locale Ressource Plugin. Jeder von Ihnen
sollte abhängig auf den Notwendigkeiten der Anwendung verwendet werden.
</para>
<sect3 id="zend.application.available-resources.locale.auto">
<title>Automatische Erkennung des zu verwendenden Gebietsschemas</title>
<para>
Ohne Spezifikation einer Option für
<classname>Zend_Application_Resource_Locale</classname>, erkennt
<classname>Zend_Locale</classname> das Gebietsschema, welches in der Anwendung verwendet
werden soll automatisch.
</para>
<para>
Diese Erkennung funktioniert weil der Client die gewünschte Sprache in seiner
<acronym>HTTP</acronym> Anfrage sendet. Normalerweise sendet der Client die Sprache
welche er sehen will, und <classname>Zend_Locale</classname> verwendet diese Information
für die Erkennung.
</para>
<para>
Aber es gibt 2 Probleme mit diesem Verfahren:
</para>
<itemizedlist>
<listitem>
<para>
Der Browser könnte so eingestellt sein das er keine Sprache sendet
</para>
</listitem>
<listitem>
<para>
Der Benutzer könnte ein Gebietsschema manuell gesetzt haben das gar nicht
existiert
</para>
</listitem>
</itemizedlist>
<para>
In beiden Fällen wird <classname>Zend_Locale</classname> auf einen anderen Mechanismus
zurückfallen um das Gebietsschema zu erkennen:
</para>
<itemizedlist>
<listitem>
<para>
Wenn ein Gebietsschema gesetzt wird das nicht existiert versucht
<classname>Zend_Locale</classname> diesen String degradieren.
</para>
<para>
Wenn zum Beispiel <emphasis>en_ZZ</emphasis> gesetzt wird, dann wird es
automatisch zu <emphasis>en</emphasis> degradiert. In diesem Fall wird
<emphasis>en</emphasis> als Gebietsschema für die Anwendung verwendet.
</para>
</listitem>
<listitem>
<para>
Wenn das Gebietsschema durch das degradieren nicht erkannt wird, dann wird
das Gebietsschema der Umgebung (Web Server) verwendet. Die meisten vorhandenen
Umgebungen von Web Hostern verwenden <emphasis>en</emphasis> als Gebietsschema.
</para>
</listitem>
<listitem>
<para>
Wenn das Gebietsschema des Systems nicht erkannt wird, verwendet
<classname>Zend_Locale</classname> sein eigenes Standardgebietsschema, welches
standardmäßig auf <emphasis>en</emphasis> gesetzt wird.
</para>
</listitem>
</itemizedlist>
<para>
Für weitere Informationen über die Erkennung von Gebietsschema sollte in <link
linkend="zend.locale.selection.automatic">dieses Kapitel für Zend_Locale's
automatischer Erkennung</link> gesehen werden.
</para>
</sect3>
<sect3 id="zend.application.available-resources.locale.fallback">
<title>Das Gebietsschema automatisch erkennen und ein eigenes Fallback hinzufügen</title>
<para>
Die automatische Erkennung von vorher könnte zu Problemen führen wenn das Gebietsschema
nicht erkannt werden kann und man ein anderes Standardgebietsschema als
<emphasis>en</emphasis> haben will. Um das zu verhindern erlaubt es
<classname>Zend_Application_Resource_Locale</classname> ein eigenes Gebietsschema zu
setzen welches in dem Fall verwendet wird wenn kein Gebietsschema erkannt wird.
</para>
<example id="zend.application.available-resources.locale.configExampleDetectAndFallback">
<title>Automatische Erkennung des Gebietsschemas und setzen eines Fallbacks</title>
<para>
Der folgende Abschnitt zeigt wie ein eigenes Standardgebietsschema gesetzt werden
kann welches verwendet wird wenn der Client selbst kein Gebietsschema sendet.
</para>
<programlisting language="ini"><![CDATA[
; Versucht zuerst die automatische Erkennung,
; ist diese nicht erfolgreich wird nl_NL als Fallback verwendet
resources.locale.default = "nl_NL"
]]></programlisting>
</example>
</sect3>
<sect3 id="zend.application.available-resources.locale.forcing">
<title>Erzwingen eines Gebietsschemas für die Verwendung</title>
<para>
Manchmal ist es nützlich ein einzelnes Gebietsschema zu definieren welches verwendet
werden soll. Das kann durch Verwendung der Option <property>force</property> getan
werden.
</para>
<para>
In diesem Fall wird dieses einzelne Gebietsschema verwendet und die automatische
Erkennung wird ausgeschaltet.
</para>
<example id="zend.application.available-resources.locale.configExampleFallbackOnly">
<title>Definition eines einzelnen Gebietsschemas für die Verwendung</title>
<para>
Der folgende Abschnitt zeigt wie ein einzelnes Gebietsschema für die komplette
Anwendung gesetzt werden kann.
</para>
<programlisting language="ini"><![CDATA[
; Unabhängig von allem wird das Gebietsschema nl_NL verwendet
resources.locale.default = "nl_NL"
resources.locale.force = true
]]></programlisting>
</example>
</sect3>
</sect2>
|