PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrsprachig aber wie?


Opendix
22.09.2005, 10:47:09
Hallo
Ich würde gerne meine Seite „mehrsprachig“ machen, nun bräuchte ich aber noch einen kleinen Denkanstoss:

Ich setzt Smarty ein, d.h. wenn der User z.B. von Deutsch nach English wechselt dann nehme ich einfach die übersetzten Templates aus einem anderen Ordner.
Ich möchte nun aber auch, dass das der Inhalt (sprich Menü, Berichte, News, ..) übersetzt werden kann. Sollte keine Übersetzung vorhanden sein möchte ich, dass im Menü einfach die Standard-Sprache angezeigt wird, bei Berichten/News, … hingegen soll dann angezeigt werden, in welchen Alternativ-Sprachen der Bericht verfügbar ist .

Nun frage ich mich, wie ich das am besten mit der Datenbank in Einklang bringe?
Also wenn der Administrator einen neuen Bericht erfasst hat er dann einfach zwei Felder, eins für Deutsch und eins für English, aber wie soll ich dann das in der Datenbank ablegen?

feuervogel
22.09.2005, 11:01:39
also das mit templates mach ich so: es gibt so ne genannte smarty-variablen die in einer externen datei definiert werden können.

http://smarty.php.net/manual/en/config.files.php

da mache ich persönlich verschiedene sections.

z.b.

#fuer alle sprachen
labelsendbutton = "Send"

#fuer deutsch
[de]
labelsendbutton = "Abschicken"

#fuer fran
[fr]
labelsendbutton = "watweißich"

welche config-section geladen werden soll bestimme ich dann vorher in der index.php, je nachdem welche sprache ausgewählt wurde.

und das mit den artikeln halte ich für schwachsinn.

du speicherst in einer tabelle eben die artikel mit zugehörigen sprach-irrelevanten daten. dazu noc ne tabelle mit den sprachrelevanten daten.

dort hast du dann meinetwegen

id | articleid | languageid | text

und dort trägst du dann die artikel-id ein, die id der sprache (falls die irgendwo gespeichert sind) und dann den text von dem artikel.

stell dir vor du willst ne weitere sprache einführen und dann musst du noch ne spalte hinzufügen - sowas macht man nicht.

Opendix
22.09.2005, 11:22:45
suuper ;)

genau so kann ich das machen :D

danke!

feuervogel
22.09.2005, 11:46:03
bittebitte :-)

nur immer dran denken: mehrsprachigkeit wirklich intelligent zu lösen ist nicht einfach - da haben sich schon viele dran versucht!

stkiessling
15.01.2006, 15:37:24
Ich habe nach langem Nachdenken für mich eine Lösung gefunden, die in meinem Augen erstaunlich einfach zu handhaben ist. Allerdings benutze ich ein selbstprogrammiertes CMS, dann kann man natürlich alles nach eigenem Gutdünken machen. Jedenfalls wird Mehrsprachigkeit bei mir immer so gekennzeichnet:

<h1>{de}Hallo{en}Hello{ru}Privet{fr}Bonjour{nordsee}Moin Moin{/}!</h1>

Da das Skript, welches Template und Inhalt zusammenmixt, erst ganz am Schluß die Auswahl der Sprache vornimmt, kann an grundsätzlich jeder Stelle (auch im Template) Text und jeder andere Inhalt in verschiedenen Sprachversionen angegeben werden. Inhalt, der nicht zwischen solchen Sprach-Tags steht, wird immer angezeigt. Man kann auf diese Weise auch in den Meta-Tags dem Browser verschiedene Codierungen anbieten, so daß obiges "Privet" auch in kyrillisch möglich wäre. Oder man benutzt von vornherein gleich UTF-Codierung...

Nur mal so als Anregung....