Ankündigung

Einklappen
Keine Ankündigung bisher.

Sprachdatei !

Einklappen

Neue Werbung 2019

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

  • Sprachdatei !

    Hallo ,

    ich möchte eine mehrsprachige Projekt starten,
    wollte fragen wie ich am besten das Translation löse ..

    Ich habe bisschen darüber gelesen, es gibt 3 varianten ?

    1- Als ARRAY

    PHP-Code:
      $de  = array(
      
    'welcome'  =>  'wilkommen';
     ) 
    2- STARTY Configdatei

    PHP-Code:
      [welkomme]  = willkommen 
    3 - Datenbank ...

    Labels und description in die Datenbank schreiben ?

    Ja könnt mir eines davon, oder was anderes empfehlen ?

    Danke schonmal !


  • #2
    Hallo 7style,

    du kannst dir auch noch getText (PHP: Gettext - Manual) anschauen.

    Du kannst dir auch selsbt getText-ähnliche Funktionen erstellen und dir somit eine Art Wrapper für getText bauen. Dann kannst du später immernoch auf eine datenbank, ein array oer die config-dateien ausweichen...

    Du kannst dir auch mal folgenden Thread anschauen:
    Mehrsprachigkeit - gettext() - phpfriend.de
    Dort haben mir Zergling/Chriz und Dr.e bei einer ähnlichen Frage geholfen.
    Create your own quiz show.

    Kommentar


    • #3
      Hi agrajag,

      danke das du mich darauf aufmerksam gemacht hast.

      ich habe schon bisschen gelesen, und werde es noch testen !

      danke !

      Kommentar


      • #4
        @agrajag

        Hallo agrajag,

        Nach deinem Tip, habe ich mich für getText entschieden,
        ich habe poedit instaliiert,

        die Frage ist : mit poedit kann ich keine neue msgid einlegen ?
        womit muss ich das tun ?

        danke !

        Kommentar


        • #5
          Du schreibst die msgIds in deinen Quelltext. poEdit extrahiert automatisch alle msgIds die in deinen Quelltexten vorkommen.

          Kommentar


          • #6
            Ich mach das ganze mit ner Datenbank, hab mir folgende Klasse dazu geschrieben:

            PHP-Code:
            class lang
            {
              private 
            $IDLng;
              private 
            $tbl_lang "CI_Languages";
              private 
            $tbl_tran "CI_Translation";
              private 
            $def_lang 1;
              
              public function 
            __construct($lang "")
              {
                
            // Versuchen die ID der übergebenen Sprache herauszufinden andernfalls auf Standard setzen
                
            $sql "SELECT IDLng FROM $this->tbl_lang WHERE Lng_shortname = '$lang' OR Lng_longname = '$lang' AND Lng_St = 1";
                
            $qry mysql_query($sql) or die(mysql_error());
                if(
            mysql_num_rows($qry) == 1)
                {
                  
            $ergb mysql_fetch_assoc($qry);
                  
            $this->IDLng $ergb["IDLng"];
                }
                else
                {
                  
            $this->IDLng =$this->def_lang;
                }
              }
              
              public function 
            say($key)
              {
                
            // Versuchen den Text zum Key in der aktuellen Sprache zu bekommen
                
            $sql "SELECT Trn_Value FROM $this->tbl_tran WHERE Trn_IDLng = '$this->IDLng' AND Trn_Key = '$key'";
                
            $qry mysql_query($sql) or die(mysql_error());
                if(
            mysql_num_rows($qry) == 1)
                {
                  
            $word mysql_fetch_assoc($qry);
                  return 
            $word["Trn_Value"];
                }
                
                
            // Andernfalls versuchen den Text zum Key in der Standardsprache zu bekommen
                
            $sql "SELECT Trn_Value FROM $this->tbl_tran WHERE Trn_IDLng = '$this->def_lang' AND Trn_Key = '$key'";
                
            $qry mysql_query($sql) or die(mysql_error());
                if(
            mysql_num_rows($qry) == 1)
                {
                  
            $word mysql_fetch_assoc($qry);
                  return 
            $word["Trn_Value"];
                }
                
                
            // Andernfalls den Key zurück geben
                
            return $key;
              }
              
              public function 
            getLang()
              {
                
            $sql "SELECT * FROM $this->tbl_lang WHERE IDLng = '$this->IDLng'";
                
            $qry mysql_query($sql) or die(mysql_error());
                return 
            mysql_fetch_object($qry);
              }

            Dann kann ich irgendwo am Anfang die Sprache festlegen (oder nimm die Standardsprache):
            PHP-Code:
            $lng = new lang("EN");
            // oder
            // $lng = new lang(); 
            Dann kann ich beim ausgeben einfach

            PHP-Code:
            echo $lng->say('welcome'); 
            machen und er gibt mir entweder einfach den Key oder den Text in der Standardsprache oder den Text in der definierten Sprache aus.

            Damit bin ich vollkommen flexibel

            Kommentar


            • #7
              @cycap

              danke, so ähnliche Klasse habe ich auch geschrieben, aber dann habe ich mich für gettetx entschieden, also ich will nicht das die übersetzungen von datenbank kommen ...

              irgendwie hat mir agrajag's Vorschlag gut gefallen. ich habe einfach eine text-datei die kann ich per email verschicken und übersezten lassen, andersfall muss ich noch eine Schinitstelle programmieren für die Übersetzung.

              @MikeR

              also ich muss einfach alles in meinem Texteditor machen und dann mit poedit extrahieren lassen ?

              Kommentar


              • #8
                Cool wäre natürlich wenn sich mal jemand hinsetzt und ne Desktop-Anwendung zum Datenpflegen baut, die eine SQLite DB benutzt. Wenn man dann so eine Klasse wie meine da oben ebenfalls mit SQLite in PHP und anderen Sprachen hat, dann könnte man glatt nen neuen Standard einführen. Man bräuchte dann ja nur die SQLite-Datei verschicken

                Kommentar


                • #9
                  Da bringst du mich doch glatt auf eine Idee. Ich suche nämlich im Moment selber so eine Sprachumsetzung. Und das mit dem Zusatzprogramm wäre doch ne tolle Idee. Sollte mit C# eigentlich schnell gemacht sein. Wenn du Interesse hast, kannst du dich ja mal melden

                  Kommentar


                  • #10
                    Zitat von SJahr Beitrag anzeigen
                    Da bringst du mich doch glatt auf eine Idee. Ich suche nämlich im Moment selber so eine Sprachumsetzung. Und das mit dem Zusatzprogramm wäre doch ne tolle Idee. Sollte mit C# eigentlich schnell gemacht sein. Wenn du Interesse hast, kannst du dich ja mal melden
                    meinst du mich ?

                    Kommentar


                    • #11
                      Zitat von 7Style Beitrag anzeigen
                      meinst du mich ?
                      komisch, das gleiche hab ich mich eben auch gefragt

                      Kommentar


                      • #12
                        @MikeR

                        also ich muss einfach alles in meinem Texteditor machen und dann mit poedit extrahieren lassen ?
                        Irgendwo im Quelltext werden doch deine Übersetzungen stehen.

                        poEdit durchsucht deine PHP-Files nach Konstrukten wie
                        PHP-Code:
                        <div class="whatever"><?php echo _('My first translated String'?></div>
                        Wenn du jetzt also poEdit da drüber laufen lässt, dann wird er "My first translated String" als ID in deine po-Datei aufnehmen.

                        Kommentar


                        • #13
                          Eigentlich cycap. Ich werd mich heute abend mal ransetzen, dann sollte es morgen mal ne Betaversion geben Hoff ich zumindest

                          Kommentar


                          • #14
                            Programmiere es so damit Wine oder CrosXover damit klar kommt

                            Kommentar

                            Lädt...
                            X