mstaender
I'm new here

Tab-Sprachkontext in Executable ermitteln

Jump to solution

Hi,

wieder ein Thema zu dem es einige Lösungen gibt aber keine die zu meinem Problem zu passen scheint.

Da ich inzwischen bei Mehrsprachigkeit angelangt bin möchte ich eine Executable ausführen die abhängig von der aktuell ausgewählten Sprache eine Aktion durchführt.

Wie komme ich an die aktuell ausgewählte Sprache meines Contents?

Ich habe einen Workaround versucht der in einem anderen Thread angepriesen wird und ein Feld erstellt in das mittels einer Regel die Sprache hineingeschrieben wird:

<ON_EVENT>
     <WITH>
          <PROPERTY source="#global" name="LANG"/>
     </WITH>
     <DO>
          <PROPERTY source='pt_lang' name='VALUE'/>
     </DO>
</ON_EVENT>

pt_lang ist für alle Sprachen gleich und solange ich im Edit-Modus bin klappt das sinnvollerweise ja auch aber ich werde nicht immer im Edit-Modus sein, dann kann das Feld aber über die Regel wohl nicht gesetzt werden.

Hilfe? Smiley Sad

0 Kudos
1 Solution

Accepted Solutions

Hallo Marcus,

das ist zwar möglich - aber nicht ganz so einfach 😉

Es gibt leider keine Möglichkeit direkt an die aktuelle Sprache zu kommen, mit einem kleinen Umweg geht es aber trotzdem.

Ein ähnlich gelagertes Problem ist, im SA an das aktuelle Element zu kommen, dazu hatte ich hier mal etwas geschrieben.

Da Du in Deinem Fall nicht das aktuelle Element sondern die Sprache haben willst, müsstest Du das Beispiel anpassen und anstatt des SelectionModels dann analog EditorialLanguageModel benutzen (inkl. dem entsprechenden Listener).

Ansonsten ist die Idee dieselbe: Im PermenentPlugin den Listener registrieren, der die jeweils selektierte Sprache dann in einen ganz simplen ClientService schiebt. In Deinem Executable kannst Du dann den ClientService (der sich dann eben statt des aktuellen Elementes die Sprache merkt) nach der Sprache fragen.

Im ContentCreator würdest Du den (dort möglichen) direkten Weg über den WebeditUiAgent gehen und dort dann getDisplayLanguage() bzw. getPreviewLanguage() nutzen. Hier würde sich aber anbieten, das auch in den ClientService auszulagern damit Du einfach immer nur den abfragen musst und in Deiner Implementierung die Fallunterscheidung sparst.

Wichtig wäre in dem Fal nur, dass Du dann im PermanentPlugin zwei Interfaces implementierst, damit es in beiden Clients angezogen wird: JavaClientPermanentPlugin und WebeditPermanentPlugin. Du musst hierzu ggf.auch zwei PermenentPlugin-Klassen implementieren weil die ModelListener-Klassen im CC gar nicht bekannt ist und Du darum sonst eine ClassNotFoundException bekommst wenn Du versuchst beide Interfaces mit einer Klasse zu implementieren.

Viele Grüße

Michael

View solution in original post

0 Kudos
4 Replies
mbergmann
Crownpeak employee

Hallo Marcus,

was meinst Du konkret mit "ein Executable ausführen"? D.h. wo/wie wird das ausgeführt? Da gibt es ja verschiedene Mechanismen. D.h. ist es ein FS_BUTTON (click? drop?), Menüskript, usw...

Vielleicht kannst Du noch etwas genauer beschreiben was Du vor hast.

Viele Grüße

Michael

0 Kudos

Hi Michael,

ich möchte eine Option anbieten über die man eine Testmail verschicken kann. Momentan bin ich dabei dies für den SiteArchitect zu bauen (Toolbar-Button).

Um ein Testmailing versenden zu können muss ich also zunächst wissen in welcher Sprache, dazu zeige ich ein Dropdown an das alle Sprachen enthält. Im SA würde ich nun natürlich gerne die aktuelle Sprache vorauswählen, bisher wird immer die Masterlanguage angezeigt. Man kann über die UIAgent ja herausfinden was die Oberflächensprache im SA ist aber wie man die aktuell editierte Sprache herausfinden kann, das habe ich noch nicht herausgefunden.

Es ist zwar zu 80% eine Convenience-Methode die ich da baue aber ich finde so sollte sich das UI verhalten Smiley Wink

Für den ContentCreator brauche ich später auch eine Möglichkeit die Funktion aufzurufen aber da habe ich noch nicht verstanden wie das mit den Sprachen am besten gehandhabt werden kann...

MfG Marcus

0 Kudos

Hallo Marcus,

das ist zwar möglich - aber nicht ganz so einfach 😉

Es gibt leider keine Möglichkeit direkt an die aktuelle Sprache zu kommen, mit einem kleinen Umweg geht es aber trotzdem.

Ein ähnlich gelagertes Problem ist, im SA an das aktuelle Element zu kommen, dazu hatte ich hier mal etwas geschrieben.

Da Du in Deinem Fall nicht das aktuelle Element sondern die Sprache haben willst, müsstest Du das Beispiel anpassen und anstatt des SelectionModels dann analog EditorialLanguageModel benutzen (inkl. dem entsprechenden Listener).

Ansonsten ist die Idee dieselbe: Im PermenentPlugin den Listener registrieren, der die jeweils selektierte Sprache dann in einen ganz simplen ClientService schiebt. In Deinem Executable kannst Du dann den ClientService (der sich dann eben statt des aktuellen Elementes die Sprache merkt) nach der Sprache fragen.

Im ContentCreator würdest Du den (dort möglichen) direkten Weg über den WebeditUiAgent gehen und dort dann getDisplayLanguage() bzw. getPreviewLanguage() nutzen. Hier würde sich aber anbieten, das auch in den ClientService auszulagern damit Du einfach immer nur den abfragen musst und in Deiner Implementierung die Fallunterscheidung sparst.

Wichtig wäre in dem Fal nur, dass Du dann im PermanentPlugin zwei Interfaces implementierst, damit es in beiden Clients angezogen wird: JavaClientPermanentPlugin und WebeditPermanentPlugin. Du musst hierzu ggf.auch zwei PermenentPlugin-Klassen implementieren weil die ModelListener-Klassen im CC gar nicht bekannt ist und Du darum sonst eine ClassNotFoundException bekommst wenn Du versuchst beide Interfaces mit einer Klasse zu implementieren.

Viele Grüße

Michael

0 Kudos

Hi Michael,

ich wollte mich nur nochmal für deinen Lösungsvorschlag bedanken. Das ist zwar wesentlich komplizierter als ich es erwartet hatte aber es ist ein gangbarer Weg und bringt mich auch an anderen Stellen auf weitere Ideen Smiley Happy

MfG Marcus

0 Kudos