Seite 1 von 1

Bug mit der Fremdsprachigkeit im akt. Snapshopt 7.1.05

Verfasst: Di 11. Jan 2005, 17:24
von RH
Bin auf das nächste Problem beim Schreiben meines Plugins gestossen:

Ich verwende in Templates die i18n-Funktion zum Übersetzen analog zu den Standard-Templares Contenido.

Das Ganze scheint aber nur zu Funktionieren, wenn keine Domain angegeben wird. Gebe ich, wie bei Plugins erforderlich, den Domainnamen mit an, nimmt die i18n-Funktion in den Templates nur den 1. Parameter mit, übersetzt diesen dann nicht korrekt weil der Domain-Name nicht zusätzlich mitgenommen wurde und ignoriert alles was folgt. D.h., dass der Domainname als Text im HTML stehen bleibt.

Beispiel:
======

Originalcode:

frmvalidator.addValidation('isocode','req', 'i18n("Please enter the ISO-code", "productmgmt")'+'!');

Ergebnis nach dem Parsen:

frmvalidator.addValidation('isocode','req', 'Please enter the ISO-code", "productmgmt'+'!');

Erwartetes Ergebnis:

frmvalidator.addValidation('isocode','req', 'Bitte den ISO-Code eingeben'+'!');

Scheint ein Bug zu sein. Die Übersetzung ist jedenfalls korrekt vorhanden. Eigentlich sollte beim Analysieren des Templates die i18n-Funktion die Parameter bis zur schliessenden Klammer mitnehmen. Stattdessen scheint beim Komma nach dem 1. Parameter Schluss zu sein.
Ich verwende schon extra andere Hochkommata, damit es hier keine Probleme mit der Konstantenerkennung gibt. Aber das nutzt auch nichts.

Gruss
RH

Verfasst: Di 11. Jan 2005, 17:49
von timo
Ja, in den Templates wird keine Domain übernommen. Das war damals nur eine "Arbeitserleicherung" und nicht wirklich "sauber".

Du müsstest mit Platzhaltern arbeiten und dann über den PHP-Code diese füllen.

Verfasst: Di 11. Jan 2005, 18:17
von RH
Na gut muss ich mich anders behelfen. Ist aber eigentlich 'ne schicke Sache. Wäre toll, wenn es das irgendwann mal sauber implementiert gäbe. Finde ich eine gute Idee, denn das macht eine Mulitlingualität doch wesentlich einfacher als über Templates mit Platzhalter zu arbeiten.

Verfasst: Di 11. Jan 2005, 18:23
von timo
Ja prinipiell ist das ne Gute Sache, aber Funktionen in HTML-Templates parsen ist relativ komplex...ich laß den Bug aber auf jeden Fall mal offen.

Verfasst: Mi 12. Jan 2005, 11:01
von timo
Ich habe vermutlich eine Lösung für dich:

Wenn man bei der Template-Engine die i18n-Domain global angeben könnte, wäre das okay?

also nicht im Template selbst ein i18n(string, domain) sondern nur ein i18n(string) und dann im Template über

$tpl->setDomain("deinei18ndomain");

?

Verfasst: Mi 26. Jan 2005, 03:45
von RH
Wäre OK, aber die Standard-Übersetzungen Contenido müssten auch weiterhin verfügbar bleiben. Die Domain müsste zusätzlich geladen werden. Anonsten müsste ich alle Contenido-Standardübersetzungen dann in die Plugin-Übersetzungen mit einbauen. Wäre zuviel Aufwand und sicher auch nicht sinnvoll.

Verfasst: Mi 26. Jan 2005, 11:12
von timo
Ja, das ist ja nur Template-Spezifisch. d.h. es wird bei einer Instanziierung der Klasse "Template" erst einmal die Domain "Contenido" angenommen, mit setDomain wird für dieses eine Template eine benutzerdefinierte angenommen.

Verfasst: Mi 26. Jan 2005, 13:19
von RH
Supi, wann gibt's das? Wie ich Dich kenne hast Du das in der nächsten CVS-Version drin, oder? :lol:

Verfasst: Mi 26. Jan 2005, 13:20
von timo
bingo ;)

d.h. spätestens am Freitag ists drin.

Verfasst: Sa 5. Feb 2005, 18:18
von RH
So, habe jetzt alle meine Templates umgestellt. Funzt hervorragend. Vielen Dank.

Und: bitte ja nicht wieder rausnehmen, ich müsste ansonsten hunderte von Texten wieder von den Templates in die Programm-Module verschieben. :D

Verfasst: Sa 5. Feb 2005, 18:37
von timo
RH hat geschrieben:So, habe jetzt alle meine Templates umgestellt. Funzt hervorragend. Vielen Dank.

Und: bitte ja nicht wieder rausnehmen, ich müsste ansonsten hunderte von Texten wieder von den Templates in die Programm-Module verschieben. :D
Ich wüßte nicht warum man das rausnehmen sollte? ;)

Verfasst: So 6. Feb 2005, 19:32
von RH
Timo, meine Bemerkung bitte nicht so wichtig nehmen, war eher nur als Bitte artikuliert, dies zukünftig als Funktion weiterhin beizubehalten. Ich wollte nur meine Ehrfurcht vor Deiner schnellen Leistung zum Ausdruck bringen. Ich finde, diese Änderung stellt eine super Vereinfachung dar, da wirklich Code und Darstellung voneinander getrennt werden können.

Verfasst: So 6. Feb 2005, 20:04
von timo
Sehr nett ausgedrückt ;)

Verfasst: So 6. Feb 2005, 21:54
von RH
Na ja, Ehre wem Ehre gebürt. Ich finde, Ihr macht einen super Job. Danke.

Verfasst: So 6. Feb 2005, 23:10
von timo
RH hat geschrieben:Na ja, Ehre wem Ehre gebürt. Ich finde, Ihr macht einen super Job. Danke.
An dieser Stelle muß ich den Dank zurückgeben, denn ohne die Community wären wir wohl nie auf die Domain-Idee in den Templates gekommen ;)