gettext() wechselt sprache nicht?

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

  • gettext() wechselt sprache nicht?

    Hallo, ich möchte jetzt ein mehrsprachiges Projekt entwickeln und habe mich für gettext entschieden! Wenn ich so rum google, sehe ich oft das viele Probleme damit haben es zum laufen zu bekommen!
    Bei mir läuft zwar soweit alles, das einzigste Problem ist, dass ich immer nur die deutschen Ausgaben ausgegeben bekomme - selbst wenn ich englisch als sprache übergebe.

    So habe ich alles eingerichtet:

    1. Die Sprachdateien liegen vom root-verzeichnis ausgesehen hier:
    - ./languages/de_DE/LC_MESSAGES/mydomain.po
    - ./languages/en_GB/LC_MESSAGES/mydomain.po

    2. Der PHP-Code:
    PHP-Code:
        if (isset($_GET['locale'])) {
            
    $strLanguageCode $_GET['locale'];    
        } else {
            
    $strLanguageCode 'de_DE';
        }
        
    setlocale(LC_ALL$strLanguageCode);
        
    setlocale(LC_TIME$strLanguageCode);
        
    setlocale(LC_CTYPE$strLanguageCode);
        
    setlocale(LC_NUMERIC'C');
        
    bindtextdomain('mydomain''./languages');
        
    bind_textdomain_codeset('mydomain''UTF-8');
        
    textdomain('mydomain');
        echo 
    _('label1'); 
    Hinter "label1" steht "Hallo Welt". Das bekomm ich auch ausgeben!
    Wenn ich jetzt aber die "locale"-variable im aufruf mit "en_GB" übergeben, sollte die Ausgabe "Hello World" sein, ist es aber nicht sondern wieder nur "Hallo Welt". Auch wenn ich "en_GB" hart rein code, bleibt die Ausgabe deutsch. Die PO-Files haben die richtige Übersetzung, ein Fehler in der Hinsicht ist ausgeschlossen!

    Weiß jemand, warum er das Sprachfile nicht ändert, und immer wieder das deutsche Sprachfile verwendet. Apache hab ich auch neu gestartet, gleiches ergebnis! Aber mit dem Cache darf es auch nicht zusammen hängen, denn das umschalten der Sprache muss ja sofort immer klappen!

    Danke
    Zuletzt geändert von TriphunEM; 26.10.2009, 08:46.

  • #2
    Hallo,

    ich kann zwar auch nur raten, aber wenn du in deinen Sprachdateien LC_MESSAGES definierst, würde ich auch setlocale mal mit LC_MESSAGES aufrufen.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Existiert Locale en_GB auf deinem System überhaupt? Wenn nicht, fällt setlocale() auf Default-Locale zurück und wenn das zufällig de_DE ist, passt das zum beschriebenen Verhalten. Übrigens gibt setlocale() dann auch FALSE zurück.

      Kommentar


      • #4
        Wie meinst du das ob en_GB auf meinem System existiert? Muss ehrlich sagen, so ganz versteh ich das gettext nicht. Mein Übersetzungen sind doch in der po-datei, warum soll mein system dann en_gb haben???

        Mein projekt läuft aktuell lokal auf windows+xampp!

        Kommentar


        • #5
          Die gettext-Extension von PHP ist nicht gerade die beste Wahl, da du (wie bereits bemerkt) die locale-Einstellungen des Prozesses ändern musst. Das kann vor allem in Multithreading-Umgebungen zu unangenehmen Nebeneffekten führen. Ich würde eher so etwas wie den Gettext-Adapter von Zend_Translate empfehlen.

          Kommentar


          • #6
            Zitat von TriphunEM Beitrag anzeigen
            Wie meinst du das ob en_GB auf meinem System existiert? Muss ehrlich sagen, so ganz versteh ich das gettext nicht. Mein Übersetzungen sind doch in der po-datei, warum soll mein system dann en_gb haben???
            Siehe PHP: setlocale - Manual ff.

            Kommentar


            • #7
              hmm...also irgendwas von zend will ich nicht wirklich nehmen...ich nutze auch keine frameworks.

              hat jemand ein alternativen vorschlag für eine mehrsprachig keit? Ich will aber keine Array oder INI-Lösungen. Hmm...

              Kommentar


              • #8
                Zitat von TriphunEM Beitrag anzeigen
                hmm...also irgendwas von zend will ich nicht wirklich nehmen...ich nutze auch keine frameworks.
                Und der Grund dafür wäre? Die Zeit die du jetzt hier für die Extension verplemperst kannst du dir mit einer entsprechenden Bibliothek ganz dicke sparen.

                Kommentar


                • #9
                  Ja, bin aber nun mal einer der selber sein zeug schreibt und sich selber den problemen stellen will und sich nicht sich vorgefertigten sachen ausliefert. So kann ich alles selber anpassen wie ich will und muss mich nicht an regeln anderer halten. zumal das projekt sehr auf performance achtet, und deshalb lass ich auch die finger von frameworks.

                  Ich überlege mir grad eine komplett eigene lösung für mehrsprachigkeit zu bauen. die filebasierend funktioniert, programmiere dazu einen editor, mit dem man die übersetzungen schönen pflegen kann, und das ganze in verbindung mit ACP um die Übersetzungen zu cachen und die performance zu schonen

                  Kommentar


                  • #10
                    Zitat von TriphunEM Beitrag anzeigen
                    zumal das projekt sehr auf performance achtet, und deshalb lass ich auch die finger von frameworks.
                    Dann hast du dich für die falsche Programmiersprache entschieden. PHP ist allgemein sehr sehr langsam.

                    Kommentar


                    • #11
                      das meinst aber nur Du! du bist bestimmt einer, der ASP oder so ein schotter bevorzugt! Es gibt genügend große webanwendungen die auf php basis laufen, firmen arbeiten weit verbreitet mit php und php ist nicht umsonst web programmiersprache nummer 1!

                      aber das ist jetzt nicht die diskusionsgrundlage hier!

                      Kommentar


                      • #12
                        Ich darf die Herrschaften bitten, zum Thema zurückzukommen.
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Kommentar


                        • #13
                          Zitat von TriphunEM Beitrag anzeigen
                          das meinst aber nur Du! du bist bestimmt einer, der ASP oder so ein schotter bevorzugt! Es gibt genügend große webanwendungen die auf php basis laufen, firmen arbeiten weit verbreitet mit php und php ist nicht umsonst web programmiersprache nummer 1!
                          Du hast da was falsch verstanden. Bei professionellen Projekten geht es selten um die Geschwindigkeit, sondern um die Wartbarkeit des Codes. Wenn ein Programm 50% mehr Ressourcen braucht, was solls? Im Vergleich zur Arbeitszeit der Programmierer kostet Hardware so gut wie nix.

                          Und wenn es wirklich performancekritische Anwendungen sind, dann verwendet man einfach kein PHP.

                          Also entscheide dich, was du eigentlich machen willst.

                          Kommentar


                          • #14
                            das meinst aber nur Du!
                            Selber!

                            Ja, bin aber nun mal einer der selber sein zeug schreibt und sich selber den problemen stellen will
                            Löbliche Einstellung...
                            Nur gehts dann nicht vorwärts.
                            Das Rad wird nicht runder davon, wenn man es dauernd neu erfindet.

                            und sich nicht sich vorgefertigten sachen ausliefert
                            PHP hat ca 3000 eingebaute Funktionen/Klassen/Interfaces, die willst du nutzen. Egal ob die in Erweiterungen stecken, oder nicht.
                            Aber die paar Klassen eines Frameworks sind dir zuviel...
                            Warum?


                            Ich überlege mir grad eine komplett eigene lösung für mehrsprachigkeit zu bauen.
                            ................
                            und die performance zu schonen
                            Ein lustiger Wiederspruch....
                            Wir werden alle sterben

                            Kommentar

                            Lädt...
                            X