Mehrsprachige Webseiten programmieren

Hallo Experten,

ich interessiere mich für Methoden, einen Webauftritt möglichst effizient mehrsprachig gestalten zu können. D.h., ich will nicht jede Seite zweimal (in beiden Sprachen) vorhalten, sondern irgendwie Textblöcke vom Layout trennen, und je nach gewählter Sprache in die einzelnen Seiten den Text in der jeweiligen Sprache „einblenden“.

Wie löst man so etwas am einfachsten und effizientesten? Ist eine „Template Engine“ hier die einzige bzw. einfachste Lösung?

Über ein paar Tipps zu sinnvollen Technologien würde ich mich sehr freuen.

Grüße,
Andreas

Auch hallo.

Wie löst man so etwas am einfachsten und effizientesten?

Eine Möglichkeit wäre es mit JavaScript zu realisieren: http://www.amaris.de/tip.php?id=286

HTH
mfg M.L.

ich mach das indem ich eine language datei mit den variablen in einem assoziativen array habe.

also

deutsch.pl

$varAssArryLang{‚Heute‘}=„Heute“;
$varAssArryLang{‚Morgen‘}=„Morgen“;
$varAssArryLang{‚Hallo‘}=„Willkommen zu meiner Webseite“;

english.pl

$varAssArryLang{‚Heute‘}=„today“;
$varAssArryLang{‚Morgen‘}=„tomorrow“;
$varAssArryLang{‚Hallo‘}=„Welcome to my Homepage“;

und dann wir eben jenachdem die Datei eingebunden.
Oder gleich alle Texte in eine Datenbank .

Ich halte nix davon das automatisch über die Browser angaben zu machen, weil auch ein Besucher möchte englisch lesen obwohl er auf einem Deutschen Browser ist.

und dafür nehme ich SERVER SCRIPT, weil per HTML wirds meist doch doppeltes schreiben.

Hi,

das klingt schon mal sehr gut! Welche Skriptsprache meinst Du? PERL, PHP oder was anderes? (*.pl Dateien kenne ich noch nicht). Der Server muss ja die entsprechende Skriptsprache unterstützen, daher meine Frage.

Viele Grüße,
Andreas

und dafür nehme ich SERVER SCRIPT, weil per HTML wirds meist
doch doppeltes schreiben.

Zur einfachheit, nimm php, das lernt sich schnell und macht den ganzen variablen kram (sessions) automatisch :smile:

Viel spass dabei :smile:

aber mach dich vorher schlau wie man am besten bei php vorgeht, aber eigentlich binden alle eine language datei mit ein, ob nun als text, zeilenweise, oder als variablen zuweisung.

Mal ein Beispiel wie man was machen kann, gleich mit User und Gast trennung.

http://abc-xyz.no-ip.org/helptheworld/php/language.php

unten die 3 Dateien .

language.php

 HEADER HEADER HEADER 
<?php reset ($HTTP_POST_VARS);<br />// Hole GET vars
foreach ($HTTP\_GET\_VARS as $k=\>$elem) {
 ${"g\_$k"} = $elem;
}
// Hole POST vars
foreach ($HTTP\_POST\_VARS as $k=\>$elem) {
 ${"p\_$k"} = $elem;
}
if ($g\_lng == "" ) {$g\_lng="de";}; 
$varinclude = $g\_lng.".php";
include $varinclude;

if ($p\_username == "") {
$iswhat="User";
$isgoto="Gast";
} else {
$iswhat="Gast";
$isgoto="User";
};
$wer="";
echo " ".$lngtxt["Hallo".$iswhat]." ";
echo " ".$lngtxt["Einleitung".$iswhat]." ";
if ($g\_lng == "en" ) {echo "

[Deutsch](?lng=de)";}
if ($g\_lng == "de" ) {echo "

[Englisch](?lng=en)";}
echo "

„;
if ($iswhat == „Gast“ ) { $wer=“";} else { $wer=„Kurt“;}
echo „“;
echo „“;
echo „“;
?>
FOOTER FOOTER FOOTER

en.php

$lngtxt[HalloGast]="Welcome Guest,";
$lngtxt[HalloUser]="Welcome user,";
$lngtxt[EinleitungGast]="This Site is only a test site,";
$lngtxt[EinleitungGast].=" click stuff, write stuff or whatever you like to do.";
$lngtxt[EinleitungUser]="You find the News at the News sektion , ";
$lngtxt[EinleitungUser].=" ................................";
$lngtxt[als]="as";
?\>

de.php

$lngtxt[HalloGast]="Wilkommen Gast,";
$lngtxt[HalloUser]="Wilkommen Benutzer,";
$lngtxt[EinleitungGast]="Diese Seite ist einfach nur eine Testseite,";
$lngtxt[EinleitungGast].=" klicken Sie oder Schreiben Sie was immer Sie wollen";
$lngtxt[EinleitungUser]="Neuheiten finden Sie wie immer unter News, ";
$lngtxt[EinleitungUser].=" weiterhin sind alle Funktionen über das Menu erreichbar.";
$lngtxt[als]="als";
?\>
1 Like

Hallo,

ich interessiere mich für Methoden, einen Webauftritt
möglichst effizient mehrsprachig gestalten zu können. D.h.,
ich will nicht jede Seite zweimal (in beiden Sprachen)
vorhalten, sondern irgendwie Textblöcke vom Layout trennen,
und je nach gewählter Sprache in die einzelnen Seiten den Text
in der jeweiligen Sprache „einblenden“.

Dann solltest du ein CMS nehmen, das mehrere Sprachen kann. Das ist die sauberste Möglichkeit, Layout und Inhalt zu trennen.

Auf http://sudokugarden.de/online/ mache ich das ganze mit zweisprachigen Templates und CGI-Scripten. Wenn die URL ein /de/ enthält (wie in http://sudokugarden.de/de/online ) oder ein /en/ wird die entsprechende Sprache zurückgeliefert, wenn nicht wir der Accept-Language Header ausgewertet, den der Browser (hoffentlich) liefert.
Das hat den Vorteil, dass man per default die „richtige“ Sprache geliefert bekommt, aer auch die andere Sprache wählen kann.

Grüße,
Moritz

nix

Hallo Andreas,

ich verwende aspx Seiten, die ich über einen Web-Service mit der jeweiligen Sprache füttere. Dieser holt sich den Text aus ein SQL-DB.

Dabei stellt sich mir eine Frage: Wer soll wie den Content barbeiten können.

Je nach Zweck kann man da einfachen (max ein paar Worte) Text und ganze Textabschnitte unterscheiden. Für ersteren Fall ist mE eine DB das einfachste, in die man je Sprache die Übersetzung ablegt:

id, Kennung, languageCode, caption
124, „Der Text“, „deu“, „Der Text“
125, „Der Text“, „eng“, „The text“

Per Kennung und variabler Sprache kann dann der notwendige Text geholt werden. Übersetzung zentral in der DB. Die jeweiligen Seiten haben dann alle nur die „Kennung“ im Bauch und holen per languageCode die Übersetzung.

Bei langen Texten verwende ich XML und XSLT. Wenn man das nicht von Hand schreiben will, muss man einen XML-Editor einsetzen. Ich verwende einen eigenen „Editor“ für das XML, da ich nur feste Elemente zulasse. Damit ist auch mein XSLT fix und braucht keine Überrschungen fürchten. Ich liege damit zwischen „von Hand geschrieben“ und echten CMS.

mfg

Dirk.Pegasus