kostenloser Webspace werbefrei: lima-city


PHP und gettext (Kann Sprache nicht wecsheln)

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    airfield-manager

    Kostenloser Webspace von airfield-manager

    airfield-manager hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!