Oliver: multilinguale Seite

Hallo,

erst einmal allen ein frohes neues Jahr.

Ich hab folgendes Problem. Ich stelle meine Seite gerade auf Zwei Sprachen (Deutsch/Englisch) um. Das machen ich in php mit einer include -Datei. Hier definiere ich die Punkte mit define( Text1,"Hallo Welt");
In der bestimmten Datei hole ich das dann raus mit print "".Text1"";

Das funzt so weit auch super. Als Navi Leiste nutze ich eine Menüleiste von dhtmlcentral.com. Die Leiste hole ich mit einer select-abfrage aus einer MSSQL-Datenbank raus.
Die print ausgabe sieht dann so aus:

print"oM.makeMenu('$nameID','$parent_name','$text','$link','$target','$width','$height','$regImage','$overImage','$regClass','$overClass','$align','$rows','$nolink','$onclick','$onmouseover','$onmouseout');\n";
als Quelltext dann so:
oM.makeMenu('m2','','HalloWelt','','','','','','','','','','','','','','');

Das funzt so weit auch ganz gut. Die $text Variable möchte ich jetz gerne auch in das Format .Text1. kriegen. Und da habe ich mein Problem.
Wenn ich das hardcoded mache print"oM.makeMenu('$nameID','$parent_name','".Text1."',.....
dann klappt das, aber nicht mit meiner Datenbankabfrage. Kann mir dabei jamand weiterhelfen. Wäre echt super.

Gruss Oliver

  1. Ich verstehe dein Problem so:

    Du hast einen String in der DB, den du als Menütext einsetzten möchtest und fragst dich nun, wie du diese Ausgabe der DB lokalisieren kannst.

    Entweder du internationalisierst deine DB, oder du speicherst in dieser nur einen Bezeichner (z.B. MENU_TEXT_1), und definierst eine Konstante define("MENU_TEXT_1","dies wird angezeigt").

    Dann kannst du die Ausgabe mit constant("MENU_TEXT_1") machen (bzw. mit constant($DB_RESULT_MENU_TEXT_1).

    Ich kann dir aber nur von Herzen raten, Gettext (http://www.php.net/manual/de/ref.gettext.php) zu verwenden. Das ist einfach ein breiter und erprobter Standard.

    Grüße

    Heizer

    1. Hallo Heizer,

      Ich verstehe dein Problem so:

      Du hast einen String in der DB, den du als Menütext einsetzten möchtest und fragst dich nun, wie du diese Ausgabe der DB lokalisieren kannst.

      ja, soweit richtig.

      Entweder du internationalisierst deine DB, oder du speicherst in dieser nur einen Bezeichner (z.B. MENU_TEXT_1), und definierst eine Konstante define("MENU_TEXT_1","dies wird angezeigt").

      Die DB, kann ich nicht internationalisieren. Ich habe hier einen Bezeichner eingesetzt. (M1)

      Dann kannst du die Ausgabe mit constant("MENU_TEXT_1") machen (bzw. mit constant($DB_RESULT_MENU_TEXT_1).

      »»
      Und hier habe ich mein Problem. Wie setzte ich die Ausgabe:
       print "oM.makeMenu('$nameID','$parent_name','$text',....)";
      Bei $text müsste das jetzt ausgegeben werden. Ich lese jetzt aber im Menü nur M1.

      Ich kann dir aber nur von Herzen raten, Gettext (http://www.php.net/manual/de/ref.gettext.php) zu verwenden. Das ist einfach ein breiter und erprobter Standard.

      Danke, muss ich mir mal gedanken rüber machen. Habe bis jetzt aber alle auf define umgestellt.

      Gruss
      Olli

      1. Bei $text müsste das jetzt ausgegeben werden. Ich lese jetzt aber im Menü nur M1.

        Du brauchst eine Konstante, die M1 heist und den eigentlichen String enthält.

        define("M1","Dies ist das Menu");

        $text = "M1";

        print(constant($text));

        Habe ich nicht getestet, sollte aber so funktionieren

        Heizer

        1. Hallo Heizer,

          $text = "M1";
          print(constant($text));

          und warum nicht einfach
            print M1;
          ?

          Grüße aus Nürnberg
          Tobias

          1. und warum nicht einfach
              print M1;

            Wenn du die vorhergehenden Postings gelesen hättest, dann wüßtest du, daß der Name der Konstante (in diesem Falle jetzt als M1 vorgegeben) aus einer Datenbank ausgelesen werden soll.

        2. Hallo Heizer

          print(constant($text));

          jau wenn ich die Abfrage mache und genau nur den Printbefehl ausgeben lasse, funzt das super. Aber wie krieg ich das in meine Printanweisung rein. Mir stehen schon die Haare zu berge.
          print "oM.makeMenu('$nameID','$parent_name','(constant($text))')";
          Wenn ich das so eingebe, kommt da als Ausdruck (constant($text)).

          Gruss
          Olli

          1. print "oM.makeMenu('$nameID','$parent_name','(constant($text))')";

            print "oM.makeMenu('$nameID','$parent_name','".constant($text))."')";

            1. Hallo Heizer,

              es hat geklappt. Ich hatte mir mal den Quelltext angeschaut, als ich keine Ausgabe hatte, und da stand der Fehler, ich hatte einen Punkt nicht übersetzt. Wer lesen kann ist klar im Vorteil.

              Dank für deine Hilfe.

              Gruss
              Olli