n Sprachen verwalten
Kai
- php
0 Botix-1 Kai
0 Kalle_Worms0 Kai
1 Tobias Kloth0 Sebastian Becker
Hallo,
ich möchte eine Website basteln, die später mal n Sprachen ausgeben können soll. Ich bin mir nur momentan nicht so sicher, wie ich das angehen will. Meines Erachtens müsste für jede notwendige Ausgabe eine Variable definiert werden und dann der Text der entsprechenden Sprache zugewiesen und später nur die vom User eingestellte Sprache abgefragt/ausgegeben werden.
Nur wie/wo halte ich die Daten zusammen?
Ich will mir immer die kompletten Daten ziehen und im Template dann auf die entsprechende Key->Value-Kombination zugreifen. So lange ich nur 100 Übersetzungen (Texte, Wörter) habe, dürften sich alle Lösungen recht performant verhalten, aber wie sieht es aus, wenn z. B. 10000 Schlüssel-Wert-Paare in einem Array vorliegen? Kann ich sowas evtl. auch selber messen um eigene Tests durchzuführen?
Ich würde mich über ein paar Einschätzungen freuen.
Grüße
Kai
hi,
da gibts meherere Möglichkeiten.
Ich würde dis über ne DB erledigen und jeder Sprache ne eindeutige ID geben. Die ID ordnest du dann nur noch dem Text zu und fertig ist die Page.
Bis denne
Botix
PS: Natürlich must du noch irgendwo dem User die Möglichkeit geben die Sprache einzustellen. Diesen Wert musst du dann natürlich irgendwie mitschleifen (Cookie oder oder?).
PS: Natürlich must du noch irgendwo dem User die Möglichkeit geben die Sprache einzustellen. Diesen Wert musst du dann natürlich irgendwie mitschleifen (Cookie oder oder?).
Ich habe die Sprache in der Session stehen, mehr zum Vorgehen in der Antwort an Kalle.
Hallo,
ich möchte eine Website basteln, die später mal n Sprachen ausgeben können soll.
Du schreibst nicht, ob die Seiten relativ unverändert bleiben oder sich laufend ändern, also von daher eine DB erfordern.
Problematik: Bei Änderungen/Ergänzungen in einer Sprache müssen alle anderen mitgezogen werden. Deshalb sollten die verschiedenen Sprachen im Quellcode absatz- oder kapitelweise nahe beieinander bleiben.
Zwei bis drei Sprachen könnte man spaltenweise nebeneinander anzeigen, das sieht recht vernünftig aus:
deutsch english francais
-------------------- -------------------- --------------------
Bei mehr Sprachen wird diese Darstellung aber unübersichtlich und PHP sollte die Sprache ausfiltern:
<?PHP
if ( $n == 'dt' ) {
?>
deutsch
--------------------
<?PHP
} else if ( $n == 'en' ) {
?>
english
--------------------
<?PHP
} else if ( $n == 'fr' ) {
?>
francais
--------------------
<?PHP
}
?>
Kalle
Du schreibst nicht, ob die Seiten relativ unverändert bleiben oder sich laufend ändern, also von daher eine DB erfordern.
Na ja, ein paar dynamische Inhalte wird sie haben, aber das textliche Grundgerüst wird statisch sein.
Problematik: Bei Änderungen/Ergänzungen in einer Sprache müssen alle anderen mitgezogen werden. Deshalb sollten die verschiedenen Sprachen im Quellcode absatz- oder kapitelweise nahe beieinander bleiben.
Ist bei mir nicht so gravierend (s. u.)
Zwei bis drei Sprachen könnte man spaltenweise nebeneinander anzeigen, das sieht recht vernünftig aus:
deutsch english francais
Bei mehr Sprachen wird diese Darstellung aber unübersichtlich und PHP sollte die Sprache ausfiltern:
<?PHP
if ( $n == 'dt' ) {
?>
deutsch<?PHP
} else if ( $n == 'en' ) {
?>
english<?PHP
} else if ( $n == 'fr' ) {
?>
francais<?PHP
}
?>
Bei mir sieht das momentan so aus:
keyValue de en fr
------------- ------------- -------------- -------------
dictionaryHello hallo hello salut
dictionaryName Name name nom
usw. Den keyValue und die aktive Sprache in der Session lege ich dann in ein Array. Im Smarty Template frage ich dann nach dem keyValue und lasse mir den Wert dazu ausgeben. Funktioniert schon ganz gut, meine Hauptsorge ist halt die Performance, wenn die DB mal richtig groß wird. Ich frage SELECT keyValue, de FROM ab und das kann halt irgendwann mal mächtig viel werden, da ich mit meiner derzeitigen Templatelösung keine limitierten Abfragen machen kann. Und wenn doch, dann wären es etliche Einzelabfragen, ich denke, ein großes Array ist schneller.
Jedenfalls danke für Deine Meinung, DB scheint wirklich die angenehmste Lösung zu sein.
Grüße
Kai
Hallo Kai,
ich möchte eine Website basteln, die später mal n Sprachen ausgeben können soll. [...]
das Thema gabs hier schon öfters, schau dir mal </archiv/2004/8/t88003/#m524017> und evtl. auch </archiv/2004/8/t88483/#m527470> an. Auch die Suche sollte noch einiges ausspucken.
Grüße aus Nürnberg
Tobias
Hallo, Kai,
wenn die Seite sehr komplex ist und von verschiedenen Personen verwaltet wird, würde ich mit einem Content-Management-System arbeiten. Die Verwaltung mehrsprachiger Sites ist seit der aktuellen Version 3.7 im kostenlosen typo3 CMS recht brauchbar.
Bei sehr einfachen Seiten, die selten geupdated und von einer mit HTML erfahrebnen Person geupdated werden, würde ich zumindes bei schlechten Servervoraussetzungen wahrscheinlich mit statischen Seiten mit simplen Header- und Footer-Includes arbeiten. Die Dateien für jede Sprache kommen dabei in einen Ordner mit einem ISO-Sprachkürzel (de, en, etc.). Für das Anlegen einer neuen Sprache wird einfach ein neuer Ordner angelegt und die Files der Ursprungssprache dareinkopiert und übersetzt. Die sprachspezifische Navigation und Verlinkung der analogen Seiten in verschiedenen Sprachen untereinander wird per Skript automatisch eingefügt.
Grüße,
Sebastian