PHP und gettext (Kann Sprache nicht wecsheln)
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
all
anschauen
ausgabe
code
dateiname
deutschen datei
domain
extension
file
header
http
monitor
paar
schauen
server
setting
sprache
text
url
zaubern
-
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.
Hier mal mein Code, wie ich gettext benutze:
<?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'); ?>
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.
Jemand eine Idee wo ich noch schauen kann, was da bei mir schief läuft?
EDIT: Habe mich jetzt dann für eine andere Lösung ohne gettext entschieden :(
Beitrag zuletzt geändert: 11.11.2014 11:35:51 von airfield-manager -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage