Markus: Mehrsprachige Seiten entwickeln

Hallo!

Ich habe ein Projekt das aus jsp Seiten besteht und zur Zeit nur auf Deutsch verfügbar ist. Nun habe ich den Auftrag dieses Projekt auch auf Englisch anzubieten.
Nun stellt sich die grundsätzliche Frage wie ich vorgehen soll.
a) ich kann alle Seiten kopieren und auf Englisch anlegen, was das natürlich heisst wenn sich an der Logik etwas ändert ist klar, da die Logik leider direkt in den JSPs liegt und nicht über Servlets gelöst wird.
b) Ich könnte in den aktuellen Seiten bei jedem Tag abfragen ob Englisch oder Deutsch und dann den entsprechenden Text ausgeben, was aber denke auch nicht ideal ist, vor allem aus Performance-technischen Gründen.

Vielleicht hat jemand schon mal ein ähnliches Problem gehabt und kann mir einen alternativen Ansatz geben.

regards, Markus

  1. Hallo,

    schau mal, das habe ich gestern Abend auch schon gefragt: http://forum.de.selfhtml.org/?t=127973&m=826191 und ich finde das ist echt sehr gut. So habe ich nun meine ganzen Sachen gestern Abend umgestellt. Wenn du was wissen willst, wie ich das gemacht habe, dann kannst du dich ja melden.

    Gruß,
    Kleines

  2. a) ich kann alle Seiten kopieren und auf Englisch anlegen, was das natürlich heisst wenn sich an der Logik etwas ändert ist klar, da die Logik leider direkt in den JSPs liegt und nicht über Servlets gelöst wird.

    Das ist Unsinn.

    b) Ich könnte in den aktuellen Seiten bei jedem Tag abfragen ob Englisch oder Deutsch und dann den entsprechenden Text ausgeben, was aber denke auch nicht ideal ist, vor allem aus Performance-technischen Gründen.

    Das ist das übliche Prinzip, aber nicht so wie du es schilderst.

    Du musst ja, um mehrsprachige Anwendungen entwickeln zu können, jede Ausgabe von Text entsprechend vorbereiten. eigentlich sollte es für jede Programmiersprache entsprechende Möglichkeiten/Module geben soetwas zu realisieren, denn das ganze ist nicht unbedingt trivial, denn was ist z.b. mit sowas:

    Du hast 1 neue Nachricht bzw. Du hast 2 neue Nachrichen
    You got 1 new message -> you got 2 new messages
    (man verzeihe mir falls das nicht sauber ist, ist nur exemplarisch)

    Du brauchst also eine Funktion, der du mitteilst welche Nachricht du ausgeben möchtest, gleichzeitig müssen auch evtl. einzelne Parameter eingefügt werden und zwischen Ein- und Mehrzahl unterschieden werden (evtl. auch noch null Werte)

    Der einfach Weg ist einen Hash (gibt es sowas in Java?) zu benutzen und je nach Sprache den aus einer anderen Datei zu laden:

    ich kann nur Perl:

    Datei: de.lang
    %LANG = {
    'new msg' => 'Du hast %s neue Nachricht(en)'
    };

    Datei: en.lang
    %LANG = {
    'new msg' => 'you got %s new message(s)'
    };

    und die Ausgabe erfolgt dann so:
    printf $LANG{new_msg}, $number_of_new_msg;

    Du kannst aber auch das ganze in eine DB packen. Ich benutze beides, eine DB macht die Übersetzung bzw. Pflege leichter, da du jederzeit neue Werte einfügen kannst und sofort jede Sprache mit eingeben kannst. Dürfte aber langsamer sein, zumal die Daten schnell einen gewissen Umfang erreichen (was durch Modularität sich verbessern liesse - also nicht alle Texte immer laden, sondern je nach Modul nur einige).

    Aber wie gesagt, ich würd mal schauen ob es nicht fertige Lösungen gibt.

    Struppi.

  3. (Habs unter dem falschen Thread gepostet gehabt. Steht nochmal unter dem Thread von Kleines :) )

    i18n ist ein guter Suchbegriff für Übersetzungen in Verbindung mit Programmiersprachen.

    Dieser Php-Center Artikel beschreibt unter anderem die Technik der dynamischen Textersetzung anhand von gettext.

    Ist sicher eine interessante Alternative und vorallem gibt es da sicher schon entsprechende Scripte, damit du es leicht in deine Seite einbinden kannst.

    Gruß Ben