Hallo Forum,
ganz oft komm ich mit dem durchstübern des Forums ans Ziel.
Vielen Dank dafür.
Aber es gibt immer wieder Punkte, da hänge ich trotz ewiger Suche.
So auch hier. Das Problem:
Habe eine mehrsprachige Seite, in der es einige Einprung-URLs gibt.
Nachdem bei den Einsprung-Punkten noch kein L-Parameter gesetzt wird, funktionieren alle Abfragen, die ich mir nach dem Schema [globalVar GP:L=1] gebaut habe natürlich erst nach dem ersten Klick.
Nach vielem Probieren und Suchen habe ich gedacht die Lösung zu haben:
#Sprachvariabeln default setzen
config.sys_language_uid = 0
config.language = de
config.locale_all = german
# Sprachparameter in Abhängigkeit der URL setzen
[globalString = HTTP_HOST= *.com]
config.sys_language_uid =1
config.language = en
config.locale_all = en
{$mylangvar} = 1
[global]
# Sprachparameter in Abhängigkeit des Parameters L setzen
[globalVar = GP:L=1]
config.sys_language_uid =1
config.language = en
config.locale_all = en
[global]
[globalVar = GP:L=0]
config.sys_language_uid = 0
config.language = de
config.locale_all = german
[global]
# temp-Variable zum Drucken
temp.PRINT = COA
temp.PRINT.10 = TEXT
temp.PRINT.10.value =Seite Drucken
...
#Nur zum Test wird die Sprach-id ausgegeben
# das funktioniert
temp.PRINT.20 = TEXT
temp.PRINT.20.data = TSFE:sys_language_uid
temp.PRINT.20.wrap = --Sprach-id: | --
#Abfrage, wenn Sprach-id 1, dann schreibe Print funktioniert nicht, da anscheinend ein Bug
[globalVar= TSFE:sys_language_uid =1]
temp.PRINT.10.value = Print
[global]
Nur kann man die Variable sys_language_uid zwar ausgeben, aber leider nicht abfragen. Habe gefunden, dass es offensichtlich ein Bug ist.
#24489
Jetzt weiß ich nicht, wie ich die Sache am günstigsten anpacken soll.
immer zusätzlich die Domain abzufragen ist sehr umständlich, zumal es mehrere sind und alle abhängigen Variablen oben zu definieren mag ich auch nicht, da der Code sonst sehr unübersichtlich wird.
Kann man denn eine temporäre Variable abfragen? Dann könnte man den Sprachparameter da festlegen, oder kann man den &L-Parameter in Typoscript selbst setzen?
Für alle Einfälle bin ich dankbar, es ist leider auch noch dringend.
Jo, das war´s von meiner Seite. Hoffe auf Meldungen
aga
Hallo aga,
ich hab den Fehler http://bugs.typo3.org/view.php?id=973 gerade korrigiert. Es gibt noch die Möglichkeit die Sprachumschaltung per type zu lösen. Siehe hier http://typo3.org/documentation/mailing-lists/german-user-list-archive/thread/326/?tx_maillisttofaq_pi1%5Bmode%5D=5. Vielleicht hilft Dir das weiter?
Gruß,
T.
Hallo Tetramatrix,
vielen Dank für die Info.
Hab das Problem jetzt erstmal auf die umständliche Art gelöst, indem ich alle sprachabhängigen Parameter der Seite im setup für alle URLs gesondert setze. Das funktioniert jedenfalls schonmal.
Die Sprache über typeNum zu lösen bringt mir ja nur was, wenn ich simulateStaticDocument verwende, ansonsten hab ich das Problem mit dem Einstieg über die Domain genauso wieder. Und an simulateStaticDocument hab ich mich noch nicht rangetraut.
Was mir vorschwebt wäre die Möglichkeit eigene Konstanten zu definieren, die ich dann im setup-Bereich sprachabhängig, ohne viel Abfragen oder extra ein PHP einzubinden oder ein extra Template zu schreiben einbinden kann.
Also in den constants sag ich:
myconst.1 = Alt Text in Deutsch
myconst.2 = Alt Text in Englisch
und im setup sag ich:
meinBild.altText = {myconst}
Dann kann ich in den Constants alle sprachabhängigen "Kleinigkeiten" definieren und im setup geht´s klarer zu.
Geht das nicht irgendwie. Ich hab den Eindruck, dass es da eine ganz einfache Lösung geben muss und ich komm nicht drauf.
#angry#
aga
Hallo aga,
np, kann man den in den Constants keine [globalVar *] conditions einbauen? dann könntest du doch deine variablen da definieren?
gruß,
t.
Tetramatrix,
das müsste schon gehen, dass ich ín die Constants die Condition einbaue, aber wenn es im setup nicht funktioniert die sys_language_uid über globalVar abzufragen, warum sollte es dann in den constants gehen.
Das ist ja der Punkt, an dem ich nicht vorbei komm, die Sprache ohne den L-Parameter einfach abzufragen.
Aber danke für Deine Anregungen, ich lass es einfach mal gären und wenn mich ein Einfall trifft, post ich´s hin.
aga
Ich meine du lädts direkt den richtigen text in die variable!
Beispiel:
in constants:
# Sprachparameter in Abhängigkeit der URL setzen
[globalString = HTTP_HOST= *.com]
config.sys_language_uid =1
config.language = en
config.locale_all = en
{$mylangvar} = Print
[global]
[globalVar = GP:L=1]
config.sys_language_uid =1
config.language = en
config.locale_all = en
{$mylangvar} = Drucken
[global]
im setup
temp.PRINT.10.value = $mylangvar
Oh aha,
na ich hab die ganzen globalVars im setup gesetzt.
Jetzt versteh ich. Das ist gut, sehr gut.
Ich wusste doch, dass ich da irgendwie im Dunkeln steh.
Muss noch viel lernen in typo3.
Aber wieder mal ein Lichtblick.
Danke Dir.
aga
hi,
falls es jemand interessiert, es geht noch einfacher. Bin gerade durch eine Frage im Forum draufgekommen.
in den constants kann man sich seine eingene l-Variable definieren:
# Sprachparameter in Abhängigkeit der URL setzen oder L-Parameter setzen
mylangvar = 0
[globalString = HTTP_HOST= *.com]
mylangvar = 1
[global]
[globalVar = GP:L=1]
mylangvar = 1
[global]
usw.
und im setup hat man dann statt der Abfrage über GP:L=1, die Abfrage der eigenen constant-Variablen.
[globalVar = LIT:1 = {$mylangvar}]
das was eben sprachabhängig gemacht werden muss
[global]
ist es nicht einfach?
😉
aga
ja, stimmt, cool 😃
hab direkt den bug http://bugs.typo3.org/view.php?id=973 auf typo3bugtracker korrigiert. damit hat sich das thema wohl endgültig erledigt. Danke!
Gruß,
T.
Das Problem wurde bei mir wieder aktuell:
Nachdem bei den Einsprung-Punkten noch kein L-Parameter gesetzt wird, funktionieren alle Abfragen, die ich mir nach dem Schema [globalVar GP:L=1] gebaut habe natürlich erst nach dem ersten Klick.
Die einfachste Lösung wäre doch dann das hier, da eine Aneinanderreihung von Bedingungen [Bedingung1][Bedinung2] in TS immer eine ODER-Verknüpfung darstellen. Oder habe ich was vergessen?
Beispiel:
# Sprachparameter in Abhängigkeit des Parameters L und der Domain setzen
[globalVar = GP:L=1][globalString = HTTP_HOST= *.com]
temp.PRINT.10.value = Print
[global]
Hi Tetramix,
das geht so auch (die Oder-Verknüpfung hab ich nicht gekannt - lesen zahlt sich immer wieder aus).
Welche Lösung am Einfachsten ist, ist doch nur eine Geschmacksfrage.
Ich find die Lösung, die Sprachabfragen in die Constants zu legen besser, weil ich so schnell den Überblick über die einzelnen Bedingungen hab (einige com-Adressen müssen trotzdem auf den deutschen Dienst zeigen usw.) , und das Setup damit nichts mehr zu tun hat.
aga
ich weiß, der Thread ist schon etwas älter, trotzdem scheint mir das beschriebene Problem immer noch nicht gelöst zu sein:
ich kann mir sys_language_mode zwar korrekt ausgeben, aber nicht in einer Condition abfragen.
Hi Duke,
meinst Du sys_language_mode oder _uid?
Ein paar Infos oder Beispiel, wäre nicht schlecht.
Gruß
Aga