PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : HP in mehreren Sprachen; beste Lösung?


Ma-Qs
2006-03-02, 15:14:39
Hi,
ich möchte, dass eine Seite in drei Sprachen verfügbar ist. Deutsch, englisch und französisch. Auf der Begrüßungsseite soll man also durch nen Klick auf eine der drei jeweiligen Flaggen zu der Site in entsprechender Sprache gelangen. Wie mache ich das am besten? Es ändert sich nur der Text, die Seite an sich bleibt identisch (Layout, Grafiken etc).
Die ganze Seite komplett in drei Ausführungen auf den Server zu laden is etwas umständlich oder?
Sorry aber ich hab keinen Plan von CSS und sowatt... :tongue:

thx schomma ... ;D

darph
2006-03-02, 15:44:36
Ehm... dafür brauchst du eine serverseitige Scriptsprache wie php. Dort verwendest du eine Template Engine, beispielsweise fastTemplate (http://www.devmag.net/webprog/php_fast_template.htm).

Dein Template schaut dann zum Haifisch so aus: <html><body>{LANG_HELLO}</body></html>

So. Dann hast du deine .php Datei, dort steht dann zum Haifisch


include("lang_".$langID.".php");
include("fastTemplate.php3");
$tpl = new fastTemplate();
$tpl->define("{LANG_HELLO}", $lang["hello"]);

Und das wird dann geparst.

Der Trick ist, daß du für jede Sprache eine lang_de.php hast, oder eine lang_en.php und die einfach inkludierst. Darin wird ein assoziatives Array definiert, das deine sprachspezifischen Strings enthält.

$lang["hello"] = "Hallo!";
$lang["sir"] = "Herr";
etc pp.


Welches Sprachpaket geladen werden soll, also welche lang_??.php inkludiert wird, wird in $langID gespeichert, welche sinnvollerweise eine Session-Variable ist.


Um's Plan haben wirst du aber nicht herum kommen. ;)

Ma-Qs
2006-03-02, 16:04:08
püh, dann erstelle ich eben die gleiche site nur mit verändertem (übersetztem) Text drei mal! :P

The_Invisible
2006-03-02, 16:10:46
püh, dann erstelle ich eben die gleiche site nur mit verändertem (übersetztem) Text drei mal! :P

ist nicht sehr elegant, außerdem musst du immer jede Änderung 3mal durchführen, dafür würde ich lieber am anfang bisschen zeit aufbringen damit es dann "richtig" funzt

mfg

Kabelsalat
2006-03-02, 16:13:44
Viele CMS bringen ebenfalls Unterstützung für mehrere Sprachen mit. Mit DNN (www.dotnetnuke.com) lässt sich das z.B. sehr elegant erreichen (es gibt entsprechende Module / PAs)

Sephiroth
2006-03-02, 17:54:50
ist nicht sehr elegant, außerdem musst du immer jede Änderung 3mal durchführen, dafür würde ich lieber am anfang bisschen zeit aufbringen damit es dann "richtig" funzt

mfg
Naja, aber mega große arrays zusammenbauen mit den Sätzen und Wörtern ist auch nicht besser. Kommt aber auf die größe der Seite drauf an. Ich hab z. B. nur den Mozilla-Part bei mir zweisprachig und das als getrennte Dateien. Der Änderungsaufwand ist recht gering, wenn man die eine bereits erledigt hat. Die Übersetzungsarbeit muß so oder so gemacht werden!

Ein andere Option wäre mit CSS und dem lang Attribut - alles ausblenden was nicht die Sprache ist. Nachteil dabei ist, daß man den Code eben alles in einer Seite hat und die dann freilich größer wird.
Beispiel: <span lang="de" xml:lang="de">hallo</span><span lang="en" xml:lang="en">hello</span>
span:lang(de) { color:#f00 }
span:lang(en) { color:#0f0 }
siehe auch: http://www.w3.org/International/questions/qa-css-lang

darph
2006-03-02, 23:00:50
Wird das vom IE unterstützt?

MadMan2k
2006-03-02, 23:16:03
nein, aber man kann die container auch über das class attribut ansprechen...

Sephiroth
2006-03-03, 01:13:00
nein, aber man kann die container auch über das class attribut ansprechen...
Jo, leider, und bisher auch nicht in der Beta von IE 7 und so sicher auch nicht in der final. :(
Ab IE 7 klappen aber immerhin die Attribut-Selektoren.

The_Invisible
2006-03-03, 14:30:03
Naja, aber mega große arrays zusammenbauen mit den Sätzen und Wörtern ist auch nicht besser. Kommt aber auf die größe der Seite drauf an. Ich hab z. B. nur den Mozilla-Part bei mir zweisprachig und das als getrennte Dateien. Der Änderungsaufwand ist recht gering, wenn man die eine bereits erledigt hat. Die Übersetzungsarbeit muß so oder so gemacht werden!


Davon halte ich auch nichts, dafür gibts ja aber datenbanken. Ich brauch dann nur eine PHP-Funktion aufrufen mit Übergabeparameter und er holt mir den entsprechenden Text in der passenden Sprache, die per Session gesetzt wird.

Außerdem gehts bei 3Sprachen eh noch, bei 10 oder mehr machen 10mal die gleichen Änderungen aber keinen Spaß mehr.

mfg

darph
2006-03-03, 16:03:05
Stimmt, eleganter ist das. Dann müßte er aber auch noch SQL lernen. ;)