mehrsprachige Webseiten
-
@kingruedi:
OK, gettext sieht vernünftig aus - aber wie realisiere ich das mit Variablen IM Text? Und wie läuft das mit Mehrzahl-Wörtern ab?@Jan:
Das speichern in Textdateien/Datenbank ansich ist nicht das Problem. Wie gesagt, es geht mir darum, dass man Variablen im Text stehen haben kann und das Mehrzahl-Problem zu lösen.Am liebsten wäre mir natürlich eine fertige Lösung
Aber selber machen, mit gutem Design, ist auch OK.
-
mit Parametern geht das so "foo %1 %2" AFAIK. Hab gettext aber noch nicht sehr intensiv benutzt
-
Habe leider nichts dazu finden können.
Die PHP Doku sagt, dass gettext() nur 1 Param nimmt - und nirgends wird das Gegenteil behauptet
-
function replace(strText, strToReplace, strReplaceWith) { return str_replace(strToReplace, strReplaceWith, strText); } print(replace("Hallo %username%", "%username%", "Lutz"));
Natürlich könnte man das auch noch ein bisschen erweiters, Mit RegExreplace zum Beispiel. Dann könnte man auch in das Template if-Abfragen einbauen...
-
Hi,
schau dir doch mal das Design von dem phpBB Forum hier an! Das macht das auch mit language Dateien und stellt dann die Seite mit PHP zusammen.MfG
Alexander Sulfrian
-
@Lutz:
danke, aber mir geht es um das Design als ganzes. Textersetzung ist klar - ohne wird es kaum gehen.Aber wie löse ich das Mehrzahl Problem? Momentan überlege ich eine 'inline syntax für ifs'
Also etwas in der Art:
"There are %num% visitor online"
Allerdings frage ich mich, wie es dann mit der lesbarkeit aussieht...
Weiters habe ich momentan das Ladezeit Problem.
Die Language-Datei sieht so aus:
WELCOME_MESSAGE = Willkommen auf der Seite sowieso, hier finden sie blaDie Datei wird in ein Array eingelesen und ich schreibe im Code dann nur noch
$lang->get_text('WELCOME_MESSAGE');
bzw. $lang->get_text('VISITORS_ONLINE', 7);
um den Text zu bekommen.Allerdings wird dies bei einer großen Language Datei recht lange dauern. Vorallem stört es mich, dass ich sehr viele nutzlose Language IDs (wie WELCOME_MESSAGE) einlesen muss... Denn diese werden ja nur auf einer Seite verwendet - parsen muss ich die Datei aber bei allen.
@Alexander Sulfrian:
OK, werde ich machen. Hoffentlich ist es dort elegant gelöst.Denn mir geht es nicht um eine Lösung, denn das ist trivial. Sondern um eine gute Lösung.
-
Soweit ich das verstehe, verwendet PHPBB lediglich ein riesen Array für die Sprachen. Das macht auch nicht viel, da das Forum ja ansich nicht viel Text besitzt (denn den schreiben ja erst die User).
Ich suche aber eine Lösung für eine echte Webseite - mit viel Content.
Da ich dieses Language-System dann später in meine Projekte einbauen will. Und da muss der Kunde die Language Dateien ändern können - somit soll die Syntax _sehr_ simpel gehalten sein. uU sollen die Formatierunge sogar nur mit UBBCode gemacht werden
-
Leg doch Mysqlindizes an. Wenn nach der ID USER_ONLINE gefragt wird, wird ein DB-Select gemacht, geschaut in welcher zeite der mist ist, und dann nur diese geparst.
Das ist aber auch nur minimalst schneller, denke ich. Jedenfalls hat das bei mir und meinen 11.000 Templates nix gebracht von der Performance her(Wegen den vielen Dbquerys). Daher lege ich mir ein Array an, in das ich alle Ids(=Templatevars bei mir) einfüge. Wenn das Script dann fast fertig abgelaufen ist, ersetzte ich die Variablen alle auf einen Rutsch... das geht dann nochmal ein bisschen schneller
-
@Lutz:
OK, dh die Laufzeit ist nicht signifikant langsamer? Das ist schonmal gut. Ich habe hier nämlich als Server nur eine alte Kiste stehen - deshalb weiss ich nicht, wie die Laufzeit von meiner Version auf einer ordentlichen Maschine ist.Wie löst du das Mehrzahl Problem?
Mittlerweile läuft mein inline if zwar gut - aber irgendwie ist die Lesbarkeit nicht ideal:VISITORS_ONLINE = Momentan ist %count% Besucher online
-
@shade
Wie wärs, wenn du anstatt der inline if abfrage einen "Verweis" auf eine andere Text-ID machst, wobei du in der Programmsteuerung bei einem Wort mit der Mehrzahl etwas an die ID dranhängst oder voranstellst:USERONLINE = "There are currently %1% %VISIT% online"
VISIT = "visitor"
$VISIT = "visitors"Wenn %1% ungleich 1 ist, dann verwendest du anstatt nur VISIT einfach $VISIT und holst dir davon den Text.