Hallo zusammen
mittlerweile habe ich es hinbekommen mit gettext ein paar Texte auf meine Seite zu zaubern.
Allerdings nur in de_DE alles andere wird scheinbar nicht erkannt.
Soll heissen bei allen anderen Sprachen liefert mir php nur die msgid als Ausgabe.
Das angesprochene Verzeichnis und Datei scheinen korrekt zu sein.
Zumindest wird jeweils die korrekte Datei erstellt.
Hier mal mein Code, wie ich gettext benutze:
Wer sich das ganze online anschauen will darf auch gern auf http://airfieldmanager-game.de/test.php?lang=de selber nachschauen.
Auf dem Server liegt neben der deutschen Datei auch noch eine englische.
Wenn ich den Dateiname nicht dynamisch vergebe bekomme ich zwar nicht mehr die msgid, dafür aber permanent die deutsche Übersetzung gezeigt.
Falls das noch relevant ist, der Hoster ist Lima-City.
Jemand eine Idee wo ich noch schauen kann, was da bei mir schief läuft?
mittlerweile habe ich es hinbekommen mit gettext ein paar Texte auf meine Seite zu zaubern.
Allerdings nur in de_DE alles andere wird scheinbar nicht erkannt.
Soll heissen bei allen anderen Sprachen liefert mir php nur die msgid als Ausgabe.
Das angesprochene Verzeichnis und Datei scheinen korrekt zu sein.
Zumindest wird jeweils die korrekte Datei erstellt.
Hier mal mein Code, wie ich gettext benutze:
Code:
<?php // settings you may want to change $locale = "de_CH"; // the locale you want if ($_GET) { if ($_GET['lang'] == 'en') $locale = "en_US"; else $locale = "de_DE"; } header("Content-language: $locale"); $locales_root = "locale"; // locales directory $domain = "messages"; // the domain you're using, this is the .PO/.MO file name without the extension // activate the locale setting setlocale(LC_ALL, $locale); setlocale(LC_TIME, $locale); putenv("LC_ALL=$locale"); // path to the .MO file that we should monitor $filename = "$locales_root/$locale/LC_MESSAGES/$domain.mo"; $mtime = filemtime($filename); // check its modification time // our new unique .MO file $filename_new = "$locales_root/$locale/LC_MESSAGES/{$domain}_{$mtime}.mo"; if (!file_exists($filename_new)) { //clean up the old mo file before copying the new one $current_dir = dirname($filename_new); $dir = scandir($current_dir); foreach ($dir as $file) { if (in_array($file, array("$domain.mo","$domain.po",".",".."))) continue; unlink($current_dir.'/'.$file); } copy($filename, $filename_new); } // compute the new domain name $domain_new = "{$domain}_{$mtime}"; // bind it bindtextdomain($domain_new,$locales_root); // then activate it textdomain($domain_new); // all done echo $domain_new."<br>"; echo "$locale<br><br>"._("HELLO_WORLD")."<br>"; echo _("Body")."<br>"; echo gettext('This is an example text'); ?>
Auf dem Server liegt neben der deutschen Datei auch noch eine englische.
Wenn ich den Dateiname nicht dynamisch vergebe bekomme ich zwar nicht mehr die msgid, dafür aber permanent die deutsche Übersetzung gezeigt.
Falls das noch relevant ist, der Hoster ist Lima-City.
Jemand eine Idee wo ich noch schauen kann, was da bei mir schief läuft?
Kommentar