Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Internationalisierung mit intl/ICU [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Internationalisierung mit intl/ICU


 
thomaschx
17-10-2011, 11:59 
 
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:

en_GB{
say_hi { "Hello World" }
}
Wobei sich Rootelement und Ausgabestring jeweils der locale anpassen.

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

 
h3ll
17-10-2011, 12:24 
 
internationalisierung mit intl - PHP Forum: phpforum.de (http://phpforum.de/forum/showthread.php?t=265878)

 
thomaschx
17-10-2011, 15:23 
 
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

 
thomaschx
18-10-2011, 11:25 
 
Es lag an der Erzeugung der .res Dateien.

So funktioniert es bei mir:

1. Für jede Sprache eine Übersetzungsdatei erzeugen. Inhalt analog:
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")
genrb -d simple simple/de.txt simple/de_DE.txt simple/en.txt simple/en_GB.txt simple/root.txt3. eine res_index.txt mit folgendem Inhalt:
res_index:table(nofallback) {
InstalledLocales {
en {""}
en_GB {""}
de_DE {""}
de {""}
root {""}
}
}Hier die verwandten locales eintragen

4. genrb -s simple -d simple res_index.txtBeispielhafter Aufruf in PHP:
define('BUNDLE', dirname(__FILE__)."/simple");
$r= resourcebundle_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

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:53 Uhr.