Reisen in die Karibik
Geniesse den Himmel, das Wasser, die Meereblicke


Von günstig bis luxuriös
Immobilien und Unterkünfte
Dom Rep, Kuba

Caribation logo for rentals and real estate

Caribation. Die Sonnenseite Ihres Lebens.

Bungalow zu vermieten


Caribation zu den Favoriten hinzufügen: Strg-D


Nationalflagge Dominikanische RepublikNotrufnummer
Dominikanische Republik
Notarzt 809-532 0000
Feuerwehr Santo Domingo 809-682 2000
Feuerwehr Boca Chica 809-523 4626
Feuerwehr Puerto Plata 809-586 2312
Polizei:
Santo Domingo 809-682 2151
Puerto Plata 809-586 2331
Nationalflagge KubaNotrufnummer Cuba
Notarzt (Havanna)
838 1185
838 2185
Feuerwehr: 105
Polizei: 106
Drogen: 103


Home | Impressum | Kontakt  English English

Palma Real

Zend_Locale und getTranslation()
Übung in translation Funktion

 

Von Caribation Labs


Caribation Service für Web Entwickler

Using Zend_Locale für Web Internationalisierung


eCommerce winkt: möchten Sie ein Teil des Kuchens aus den internationalen Märkten? Zend_Locale() ist ein fantastischer Begleiter wenn Sie ihren Webs Fremdsprachen beibringen möchten.

In dieser Übung zeige ich lediglich ein kleines Teil des Zend_Locale(); die Methode getTranslation().

Aufgabe: Liste der Weltgebiete (territories) in mehreren Sprachen

Stellen wir uns vor, für ein eCommerce Projekt (Airline?) wird eine Liste der Ländernamen gebraucht und zwar in 5 Sprachen:

  1. Englisch (hauptsächlich für den Web Developer, der ausser Englisch nur PHP spricht ;-)
  2. Original gemeint wird Ländername geschrieben in der Sprache des Landes, z.B., España für Spanien oder "Ελλάδα" für Griechenland
  3. Chinesisch - unser neuer Zielmarkt
  4. Traditionell Chinesisch (wir möchten Hong Kong and Taiwan nicht vermissen)
  5. Deutsch (Investoren gesucht)

(Hong Kong und Taiwan sprechen dieselbe Sprache, geschrieben wird aber anders)

Wozu brauche ich diese Namen? Für die <SELECT> statements in meiner Webforms, zum Beispiel, oder für eMail Templates. Zum Schluss möchte ich ein Array bekommen mit allen Territorien der Welt (fast 300, mehr als UNO Mitglieder), und jedes Element als Sub-array von 5 weiteren Elementen. Für Griechenland, zum Beispiel, werde ich fünf Zeichenketten benötigen:

"Greece", "Ελλάδα", "希腊", "希臘", "Griechenland"

Frage: wie viele Zeilen muss ich schreiben, um die gewünschten Daten von Zend zu bekommen?

Ich wäre auch mit ca. 10 fertig, da aber Kodierungsregeln von Zend 80 Zeichen pro Zeile empfehlen (haben die überhaupt bemerkt, wie die Displays in den letzten Jahren gewachesn sind?) werden es warscheinlich 20

Wir starten mit der Kodierung:

        $locale = new Zend_Locale();
        $territoryList = $locale->getTranslationList('territory');
      

Einfacher geht es kaum. Zend_Locale initialisiert und die Liste der Territorien bekommen. Analog könnte man eine Liste der Monate, Währungssymbole und ähnlich süsser Sachen bekommen. Sie werden bemerkt haben, dass ich kein locale ('de_CH' z.B.) dem Konstruktor übergeben habe. locale kann oft wichtig und praktisch sein, nicht aber für diese Übung.

Es wäre an der Zeit, den Array zu bauen:

        foreach ($territoryList as $key => $value) {
          try {
            $aCountries[$key] = array(
                'english'   => $value,
                'original'  => $locale->getTranslation($key, 'territory', $key),
                'china'     => $locale->getTranslation($key, 'territory', 'zh_ZH'),
                'hong_kong' => $locale->getTranslation($key, 'territory', 'zh_HK'),
                'german'    => $locale->getTranslation($key, 'territory', 'de')

            );
          } catch (Exception $e) {
            continue;
          }
        }
        

Das wäre's, liebe Leute.

Kommentare

der $key ist 2-Zeichen Code für das Territorium, z.B. GR für Griechenland.

der $value wird in Englisch zurückgegeben und somit eignet sich als der 1. Element des Arrays

getTranslation() bekommt drei Parameter: (1) der Landeskode, (2) die Kategorie, oder der Dateninhalt, (3) locale, wie 'en_US', oder sogar nur die Sprachabkürzung ('en') für den String, der zurückgegeben wird.

Achtung: Der Wert im zweiten Element des Arrrays ('original') kann täuschen. Hier wollte ich Landesname in der Sprache des Landes bekommen, was auf dem Beispiel von Griechenland auch kein Problem war. Für Länder mit mehreren Nationalsprachen (Kanada, Schweiz, etc.) Zend wird selbst die Entscheidung treffen. Für das Territorium von Kanada ($key == 'CA') Zend gibt English zurück und für das Territorium von der Schweiz ($key == 'CH') bekommt man Deutsch zurück.

Der Grund ist, dass in dem Beispiel geben wir territory als $key und nicht ein Locale (fr_CH) oder Sprache (fr). territory wird in deutscher Zend Dokumentation als Gebietsschema bezeichnet.

Beachten Sie bitte, wie mächtig der dritte Parameter interpretiert wird. Wenn es eine locale ist, wie 'zh_HK', bekommen wir den Rückgabewert in der Sprachversion (Dialekt) aus dem Gebiet. In diesem Beispiel: Hong-Kong Chinesisch

Endergebnis wird ausgegeben: $aCountries

        ...
        ["GR"] =>
        array (
          ["english"] =>  "Greece",
          ["original"] => "Ελλάδα",
          ["china"] =>  "希腊",
          ["hong_kong"] =>  "希臘",
          ["german"] =>  "Griechenland"
        ),
        ["GS"] =>
        ...

Kommt bald : Zend_Date() und Zend_Currency()



Zend Fan? Was meinen Sie? Teilen Sie hier ihre Erfahrung, Bemerkungen, Fragen mit Web Community...


Etwas mash-up zum Thema...

Pictures from flickr (Yahoo): zend

Renault T Zend BV Muntendam
2022-05-12

Lucas Ensing posted a photo:

Renault T Zend BV Muntendam

DSCN1320
2022-01-27

Zend Framework auf Wiki






Caribation Labs für die Zukunft der Web

Atlantic Villa in the Dom Rep

Villa mit Meerblick $350 000

Appartment mit Meerblick in der Karibik

Appartment mit Meerblick zu vermieten in Strandnähe

To the girls

red heart club

Caribation succeeds with Huawei Technology!