Internationalisierung mit intl/ICU

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Internationalisierung mit intl/ICU

    Hallo,
    offenbar hab ich grad nen Knoten im Hirn und kann nicht suchen...

    Ich möchte eine bestehende Webseite per intl (ICU) internationalisieren.
    Dazu habe ich 3 Dateien (root.txt, de_DE.txt, en_GB.txt) angelegt und per genrb .res Files erzeugt.

    In den Dateien steht in im Prinzip jeweils:
    Code:
    en_GB{
            say_hi { "Hello World" }
    }
    Wobei sich Rootelement und Ausgabestring jeweils der locale anpassen.

    ein
    PHP-Code:
    <?php
            $rb
    =new ResourceBundle('de_DE'"./test");
            echo 
    resourcebundle_count($rb);
    ?>
    sagt mit jedenfalls nur, dass $rb kein Resoucebundle ist...

    Vielen Dank schon mal für Euere Tipps

  • #2
    internationalisierung mit intl - PHP Forum: phpforum.de

    Kommentar


    • #3
      Sorry - nebenan kann ich auf eignen "Antrag" nicht mehr antworten. (Dort gab es übrigens auch nur einen kommentar- und linklosen Standardhinweis)

      Theoretisch könnte man jetzt nett flamen - man kann es auch lassen und mir einfach eine neue Tischkante besorgen.

      @Topic:
      Ich vermute, dass es an der Art und Weise liegt, wie ich das Resoucebundle erzeuge

      Kommentar


      • #4
        Gelöst

        Es lag an der Erzeugung der .res Dateien.

        So funktioniert es bei mir:

        1. Für jede Sprache eine Übersetzungsdatei erzeugen. Inhalt analog:
        Code:
        de {
                say_hi { "Hallo Welt" }
        }
        Dabei ist de die locale, say_hi der Key und "Hallo Welt" die Übersetzung. Wichtig scheinen hier die blanks vor und nach den Klammern zu sein.

        2. .res Dateien erzeugen (bei mir landes alles im Verzeichnis "simple")
        Code:
        genrb -d simple simple/de.txt simple/de_DE.txt simple/en.txt simple/en_GB.txt simple/root.txt
        3. eine res_index.txt mit folgendem Inhalt:
        Code:
        res_index:table(nofallback) {
            InstalledLocales {
        en {""}
        en_GB {""}
        de_DE {""}
        de {""}
        root {""}
            }
        }
        Hier die verwandten locales eintragen

        4.
        Code:
        genrb -s simple -d simple res_index.txt
        Beispielhafter Aufruf in PHP:
        PHP-Code:
        define('BUNDLE'dirname(__FILE__)."/simple");
        $rresourcebundle_create('de'BUNDLE,false);
        echo 
        resourcebundle_get($r,'say_hi'); 
        Sicherlich kann beim Aufruf in PHP noch einiges opimiert werden. Auch kann das ":table(nofallback)" in der res_index.txt wohl entfallen.

        Falls noch jemand PHP 5.3.6 im Einsatz hat, empfehle ich, die php_intl.dll aus der 5.3.8 zu verwenden (Achtung, diverse weitere .dlls werden auch gebraucht) da erstere eine ICU 3.x nutzt. Aktuell ist ICU 4.8.1, die .dll in den Windowsbinaries für PHP 5.3.8 findet sich ICU 4.6.1

        Viele Grüße


        Thomasch
        Zuletzt geändert von thomaschx; 18.10.2011, 11:29. Grund: Lösung gefunden

        Kommentar

        Lädt...
        X