Mehrsprachige Portale

Allgemeines

Jedes Intrexx-Portal kann mehrsprachig aufgebaut werden.

Sprache und Gebiet werden durch ISO-639- und ISO-3166-Codes repräsentiert (z. B. en-us für Englisch (Vereinigte Staaten von Amerika) oder en-gb für Englisch (Vereinigtes Königreich). Diese Codes sind die Grundlage für die Sprachsteuerung in Portalen.

Mehrsprachigkeit bedeutet nicht nur die sprachabhängige Darstellung von Texten, sondern auch die Darstellung von Zahlen- und Datumswerten im jeweiligen Land. Auch Farben können kulturell bedingt unterschiedlich interpretiert werden. Grafiken mit Schriftzügen bekommen ebenfalls einen sprachabhängigen Aspekt. Auch die Richtung der Schriftzeichenwiedergabe kann ins Spiel kommen.

Bei mehrsprachigen Portalen sind also einige Details zu berücksichtigen und umzusetzen – unabhängig von der eingesetzten Technologie. Hier finden Sie die nötigen Informationen zum Thema.

Sprachumschaltung im Browser

Für die Sprachumschaltung im Browser wird die Zusatzkontrolle "Sprachumschalter" aus dem Modul "Design" verwendet. Die auswählbaren Sprachen müssen in den Ländereinstellungen aktiviert sein.

Für die Umschaltung auf ein anderes Format, mit dem z.B. das Datum entsprechend formatiert angezeigt wird, wird die Zusatzkontrolle Localeumschalter aus dem Modul "Design" verwendet. Die auswählbaren Formate müssen in den Ländereinstellungen aktiviert sein.

Portaleigenschaften - Ländereinstellungen

In den Portaleigenschaften, die Sie im Hauptmenü "Portal" erreichen, finden Sie die Ländereinstellungen. Hier kann das Portal für den internationalen Einsatz konfiguriert werden.

Format

Weltweit werden unterschiedliche Darstellungsformen für Datumswerte und Zahlenwerte verwendet. Um Portalbenutzern die Möglichkeit zu geben, die der Region entsprechenden Darstellungsformate einzustellen, können sogenannte Formate definiert werden.

Verfügbare Standorte

Hier finden Sie eine Liste aller Formate, die wählbar sind.

Ausgewählte Standorte

Hier werden alle Formate, die für das aktuelle Portal aktiviert sind, aufgelistet.

Formate auswählen / abwählen

Mit den Pfeilschaltflächen können die markierten Formate in die jeweils andere Liste verschoben werden.

Standardeinstellung

Wählen Sie hier in der Auswahlliste rechts unten die Sprache für die Standardeinstellung aus.

Formate für den ausgewählten Standort bearbeiten

Öffnet einen Dialog, in dem die Datums- und Zahlenformate für den aktuell ausgewählten Standort bearbeitet werden können.

Datumsformat

Normal / Kurz /Lang

Für die Darstellung des Datums im Browser gibt es die drei Varianten Normal, Kurz und Lang. Zur Definition des Formats können die Muster des Java SimpleDateFormats verwendet werden.

Beispiel

In den Beispielfeldern sehen Sie jeweils eine Vorschau auf das formatierte Datum.

Wochenanfang

Stellen Sie hier den Tag ein, mit der die Woche beginnt.

Legende

Informiert Sie über die Bedeutung der verwendeten Kürzel in den Feldern Normal, Kurz und Lang.

Formateinstellungen zurücksetzen

Setzt alle Formateinstellungen auf die Standardeinstellungen des ausgewählten Standortes zurück.

Uhrzeitformat

Uhrzeitformat

Für die Darstellung der Uhrzeit im Browser kann hier das Format mit den Mustern des Java SimpleDateFormats definiert werden.

Beispiel

Hier sehen Sie eine Vorschau auf die formatierte Uhrzeit.

Legende

Informiert Sie über die Bedeutung der verwendeten Kürzel im Feld Uhrzeitformat.

Formateinstellungen zurücksetzen

Setzt alle Formateinstellungen auf die Standardeinstellungen des ausgewählten Standortes zurück.

Zahlenformat - Ganzzahlenfelder

1000er Trennzeichen

Wählen Sie hier das gewünschte Zeichen aus, das als 1000er Trennzeichen im Browser verwendet werden soll.

Beispiel

Hier sehen Sie eine Vorschau auf die formatierte Ganzzahl.

Formateinstellungen zurücksetzen

Setzt alle Formateinstellungen auf die Standardeinstellungen des ausgewählten Standortes zurück.

Zahlenformat - Zahlenfelder

1000er Trennzeichen

Wählen Sie hier das gewünschte Zeichen aus, das als 1000er Trennzeichen im Browser verwendet werden soll.

Dezimaltrennzeichen

Hier wird das Zeichen definiert, das im Browser als Dezimaltrennzeichen vor den Nachkommastellen eingesetzt wird.

Führende Null

Wählen Sie hier fest, ob eine führende Null angezeigt werden soll oder nicht.

Nachkommastellen

Legen sie hier fest, wie viele Nachkommastellen angezeigt werden sollen.

Beispiel

Hier sehen Sie eine Vorschau auf die formatierte Zahl.

Formateinstellungen zurücksetzen

Setzt alle Formateinstellungen auf die Standardeinstellungen des ausgewählten Standortes zurück.

Zahlenformat - Währungsfelder

1000er Trennzeichen

Wählen Sie hier das gewünschte Zeichen aus, das als 1000er Trennzeichen im Browser verwendet werden soll.

Dezimaltrennzeichen

Hier wird das Zeichen definiert, das im Browser als Dezimaltrennzeichen vor den Nachkommastellen eingesetzt wird.

Führende Null

Wählen Sie hier fest, ob eine führende Null angezeigt werden soll oder nicht.

Nachkommastellen

Legen sie hier fest, wie viele Nachkommastellen angezeigt werden sollen.

Beispiel

Hier sehen Sie eine Vorschau auf die formatierte Zahl.

Formateinstellungen zurücksetzen

Setzt alle Formateinstellungen auf die Standardeinstellungen des ausgewählten Standortes zurück.

Zeitzone

Hier kann dem Portal eine Zeitzone zugeordnet werden. In der Regel ist es die Zeitzone, in der sich der Server bzw. der Hauptsitz des Unternehmens befindet. Arbeiten die Portal-Benutzer in unterschiedlichen Zeitzonen, so kann den einzelnen Benutzern im Modul "Benutzer" in den Benutzer-Eigenschaften die jeweilige Zeitzone zugeordnet werden. Die in den Portaleigenschaften eingestellte Zeitzone wird verwendet, wenn keine individuelle Zeitzone für einen Benutzer eingetragen ist.

In Intrexx werden alle Datumswerte in der Datenbank in UTC Universal Time Coordinated (GMT Greenwich Mean Time) gespeichert. Für die Anzeige im Browser wird die Differenz von der aktuellen Zeitzone zur UTC addiert bzw. subtrahiert. Die Datenbank bezieht die Zeitzoneneinstellung vom Betriebssystem. Die Zeitzone des Intrexx Portal Servers und der Datenbank sollten in der Regel identisch eingestellt sein. Weichen Datenbank-Zeitzone und Intrexx-Zeitzone ab, kann es zu Abweichungen bei der Berechnung der lokalen Zeit kommen.

Datumswerte wie z.B. das Geburtsdatum, die nicht verändert werden dürfen, sollten im Zweifelsfall als Textinformation gespeichert und ggf. mit Velocity für die Anzeige (Formatierung) aufbereitet werden.

Sprachen

Für ein Portal können beliebig viele Sprachen aktiviert werden.

Länderspezifische Sprachen

Mit dieser Einstellung können lokalisierte Sprachen wie z.B. "Deutsch (Schweiz)" verwendet werden. Bei Klick auf "OK" werden intern die globalen Sprachkonstanten ergänzt. Dabei wird zuerst geprüft, ob schon die Elternsprache der lokalisierten Sprache im Portal vorhanden ist, z.B. "Deutsch". Ist dies nicht der Fall, wird geprüft, ob eine andere, lokalisierte Version der Sprache im Portal vorhanden ist, z.B. "Deutsch (Österreich)". Ist dies ebenfalls nicht der Fall, wird die Standardsprache des Portals verwendet, um die globalen Sprachkonstanten zu ergänzen.

Verfügbare Sprachen

Hier finden Sie eine Liste aller Sprachen, die wählbar sind.

Ausgewählte Sprachen

Hier werden alle Sprachen, die für das aktuelle Portal aktiviert sind, aufgelistet.

Verschiebt die aktuell markierte Sprache in die jeweils andere Liste.

Ändert die Reihenfolge der Sprachen, z.B. für die spätere Auswahl im Sprachumschalter.

Standardsprache

Die Standardsprache wird verwendet, wenn Sprachdaten wie z.B. Titel von Elementen in der ausgewählten Sprache fehlen. Die Standardsprache wird auch als Vorgabewert für die neu angelegte Benutzer verwendet.

Globale Texte

In den globalen Texten können alle Standardtexte, die im Portal vorkommen, in den verschiedenen Sprachen bearbeitet werden.

Metatags

Mit Metatags können Informationen für Webserver, Browser und automatische Suchprogramme im Internet bereitgestellt werden. Metatags sind HTML-Tags, mit denen der Inhalt einer HTML-Seite beschrieben wird. Suchmaschinen erstellen mit Hilfe der Metatags Einträge in ihren Datenbanken oder berechnen die Gewichtung in einer Trefferliste.

Bei fehlerhafter Änderung von Metatags übernimmt United Planet keine Haftung.

Definierte Metatags

Hier werden alle Metatags des Portals aufgelistet.

Metatag entfernen

Entfernt den aktuell markierten Metatag.

Nach oben / unten bewegen

Ändert die Reihenfolge der Metatags, in der sie ins HTML geschrieben werden.

Titel

Der Titel wird in den <title>-Tag der einzelnen Portalseiten geschrieben.

Mehrsprachigkeit

Öffnet einen Dialog, in dem der Titel in den Portalsprachen bearbeitet werden kann. Der mehrsprachig hinterlegte Titel kann bei Metatags nicht mit Globalen Sprachkonstanten verknüpft werden.

Spalte Sprache

Hier werden die aktivierten Portalsprachen angezeigt.

Spalte Wert

Tragen Sie hier den gewünschten Begriff in der jeweiligen Sprache ein.

Metatag hinzufügen / Metatag bearbeiten

Öffnet einen Dialog, in dem ein neuer Metatag erstellt und bestehende Metatags bearbeitet werden können.

Name

Hier können Sie die gebräuchlichsten Metatags auswählen. Zusätzlich können eigene Metatags definiert werden. Tragen Sie den Namen Ihres Metatags dazu einfach hier ein, ohne einen bestehenden Metatag auszuwählen.

Wert (einsprachig)

Hier können Werte für einsprachige Metatags, wie z.B. Robots=nofollow eingetragen werden.

Wert (mehrsprachig)

Mit dieser Option können Werte in den einzelnen Portalsprachen hinterlegt werden.

Mehrsprachigkeit

Öffnet einen Dialog, in dem der Titel in den Portalsprachen bearbeitet werden kann. Der mehrsprachig hinterlegte Titel kann bei Metatags nicht mit Globalen Sprachkonstanten verknüpft werden.

Layoutzuordnung

Für alle Layouts

Mit dieser Option wird der Metatag in allen Portal-Layouts generiert.

Nur für mobile Endgeräte

Der Metatag wird ausschließlich in den Seiten, die für mobile Endgeräte transformiert sind, generiert.

Nur für ausgewählte Layouts

Hier können sie den Metatag für einzelne Layouts freigeben.

Liste "Verfügbare Layouts"

Hier werden alle zur Auswahl stehenden Layouts angezeigt.

Liste "Ausgewählte Layouts"

Hier werden alle Layouts aufgelistet, in denen der Metatag eingetragen wird.

Verschiebt das aktuell markierte Layout von einer in die andere Liste.

Ändert die Reihenfolge der Layouts in der Liste.

Bedeutung der Metatags

  • Description (Beschreibung)

    Die Beschreibung darf eine Länge von 200 Zeichen nicht überschreiten. Hinterlegen Sie hier Informationen zu Firma, Produkt, Personen oder Seiteninhalt.

  • Keywords (Schlüsselwörter)

    Keywords bestehen aus einzelnen Wörtern und sollten mit Komma getrennt werden. Mit den Schlüsselwörtern wird der Inhalt der Seite zusammengefasst. Wählen Sie treffende Formulierungen, nach denen ein Anwender im Internet suchen würde, um eine Seite Ihres Portals zu finden.

  • Robots (Anweisungen für Suchmaschinen)

    Hier legen Sie fest, wie die Seite von Robots, die Seiten für Suchmaschinen indizieren, behandelt wird.

  • noindex

    Verbot, die Seite zu indizieren

  • index

    Aufforderung, die Seite zu indizieren

  • follow

    Seite indizieren, tiefer gehende Links verfolgen

  • nofollow

    Seite nicht indizieren, Links nicht verfolgen

Es gibt noch eine Reihe weiterer Metainformationen, die Sie hinterlegen können. Genaueres entnehmen Sie bitte der einschlägigen Literatur zum Thema Webdesign oder Internet.

Globale Sprachkonstanten

Alle im Intrexx-Standard verwendeten Textelemente sind in den globalen Sprachkonstanten definiert. Hier finden sich darüber hinaus spezielle Sprachkonstanten für Intrexx Share. Texte, die in vielen verschiedenen Applikationen eines Portals mehrfach vorkommen, können damit zentral vorgehalten werden.

Suche

Tragen Sie hier einen Suchbegriff ein. Der Begriff wird in den Namen der Konstanten und in allen Übersetzungstexten gesucht.

Filtern

Typ

Hier kann die Liste nach Konstanten, die in JavaScript oder Velocity verwendet werden, gefiltert werden.

Eigene / Standard

Mit diesem Filter werden nur selbst erstellte Konstanten, Intrexx-Standard-Konstanten oder beides angezeigt.

Spalte Name

Zeigt den Namen der Sprachkonstante.

Spalte Typ

Hier wird die Verwendung der Konstante angezeigt.

Spalte Sprache

In den folgenden Spalten werden alle Texte in den jeweiligen Portal-Sprachen angezeigt.

Sprachen filtern

Klicken Sie hier, wenn Sie eine Sprachspalte in der Liste, z.B. Englisch, ausblenden möchten.

Kopie der Sprachkonstante erstellen

Erstellt eine Kopie der aktuell markierten Konstante.

Entfernen

Löscht die aktuell markierte, selbst erstellte Konstante. Intrexx-Standard-Konstanten können nicht gelöscht werden.

Neue Sprachkonstante hinzufügen / Sprachkonstante bearbeiten

Öffnet einen Dialog, in dem eine neue Sprachkonstante definiert oder eine bestehende Sprachkonstante, die in der Liste markiert ist, bearbeitet werden kann.

Name

Tragen Sie hier den Namen der Sprachkonstanten ein. Mit diesem Namen kann die Konstante später im jeweiligen Gültigkeitsbereich angesprochen werden. Der Name muss eindeutig sein. Verwenden Sie möglichst einen englischen Namen, ausschließlich Großbuchstaben, keine Sonder- und Leerzeichen. Der Name muss mit einem Buchstaben beginnen, gefolgt von weiteren Buchstaben, Zahlen oder einem Unterstrich. Die Angabe eines Namensraumes ist empfehlenswert, um eigene Konstanten von den Intrexx-Standard-Konstanten zu isolieren. Dies kann Namensraum mit Bezug zu Projekten oder Kundensein.

Typ

Hier können Sie den Gültigkeitsbereich einer Sprachkonstante festlegen:

Konstante steht nur im JavaScript zur Verfügung

Die Konstante kann in Applikationen nicht als Titel gewählt und nicht in Velocity verwendet werden. Verwenden Sie möglichst wenige Sprachkonstanten diesen Typs, da JavaScript immer übertragen werden muss. Setzen Sie Sprachkonstanten in JavaScript ausschließlich für Meldungen in eigenen Prüfroutinen (alert(), prompt(), confirm() oder Intrexx-Notifier) bzw. bei der dynamischen Ausgabe in Textansichtsfeldern ein. In JavaScript wird immer die aktuell eingestellte Portalsprache verwendet. Wird wie im folgenden Beispiel der erste Key nicht gefunden, wird, wenn ein Fallback-Parameter vorhanden ist, mit diesem weitergesucht. Liefert auch der Fallback kein Ergebnis wird "undefined" zurückgeliefert.

// Read application constant
ix.text.i18n.getByApp(p_strAppGuid, p_strKey, p_strKeyFallback);
// Read portal constant
ix.text.i18n.get(p_strKey, p_strKeyFallback);

Konstante wird als Velocity-Ausdruck evaluiert

Die Konstante steht nicht in JavaScript, aber in Velocity und auch im Groovy-Kontext zur Verfügung. Auch Konstanten, die überall zur Verfügung stehen, können in Groovy verwendet werden. Verwenden Sie Konstanten in Velocity ausschließlich zur Beschriftung von Seiten. Es ist der häufigste Anwendungsfall und sollte daher vorrangig gewählt werden. Die Verwendung in Groovy schließt diese Variante mit ein. Der Sprachschlüssel wird als ISO-Schlüssel (de, en etc.) angegeben. Bei Zugriff auf Applikationskonstanten muss die GUID der Applikation als Parameter angegeben werden.

## Read portal constant 
##(Portal language is used as a criterion)
$I18N.get(p_strKey)

## Read portal constant with default language
$I18N.getByLang(p_strLang, p_strKey)

## Read application constant 
## (Application GUID and constant as parameter)
$I18N.getByApp(p_strAppGuid, p_strKey)

## Read application constant with default language
$I18N.getByAppByLang(p_strAppGuid, p_strLang, p_strKey)

## Example
$I18N.getByAppByLang('3E4..2AF', 'de', 'myKey')

Konstante steht überall zur Verfügung

Vermeiden Sie diese Einstellung weitgehend. Nur wenn eine Sprachkonstante in beiden vorgenannten Fällen auftritt, sollte dieser Typ verwendet werden. In Velocity können Globale Konstanten wie folgt angesprochen werden:

$I18N.get("NAME")

Applikationskonstanten können wie folgt angesprochen werden:

$I18N.getByApp(" APPGUID", " NAME")

In Groovy können mehrsprachige Textkonstanten zur Erzeugung von Log-Einträgen oder zur Erzeugung von Konstrukten, die z.B. wieder in Datenfelder zurückgeschrieben werden, verwendet werden. Auch der Einsatz bei der Erzeugung von Datenexporten mit Groovy (z.B. XML-Dateien) können Konstanten zur Beschriftung eingesetzt werden. Dafür steht das Objekt g_i18n zur Verfügung, das mit der Kontext-Sprache initialisiert ist. Als Fallback wird bei fehlendem Kontext die Standardsprache des Portals verwendet.

// Read application constant
def app = g_i18n.application("APPLIKATIONS_GUID")
def appConst = app["APPLIKATION_LANGUAGE_CONSTANT"]

// Read application constant with default language
def appde = app.language("ISO_LANGUAGE_CODE")

// Read portal constant
def portalConst = g_i18n["PORTAL_LANGUAGE_CONSTANT"]

// Read portal constant with default language
def portalde = g_i18n.language("ISO_LANGUAGE_CODE")
def portalConst = portalde["PORTAL_LANGUAGE_CONSTANT"]

// Example: Read application constants explicitly in English
def app = g_i18n.application("3F2…E1A")
def appen = app.language("en")
def text1 = appen["CUSTOMER"]
// Example: Read application constant
def app = g_i18n.application("3F2…E1A")
def text2 = app["CUSTOMER"]
// Example: Reading portal constants explicitly in German
def portalde = g_i18n.language("de")
def text3 = portalde["CAL_WEEK"]

// Example: Read out portal constants
def text4 = g_i18n["CAL_WEEK"]

Titel

Hier können Sie der Sprachkonstante einen Titel in den verschiedenen Portalsprachen geben.

Spalte "Sprache"

Hier sehen Sie die Portalsprachen.

Spalte "Titel"

Der Titel entspricht dem Wert, den die Konstante bei der entsprechenden Verwendung (z.B. in Velocity) hat. Tragen Sie den gewünschten Wert hier ein.

Benennung von Sprachkonstanten

Benennen Sie Sprachkonstanten sinnvoll, damit Sie den Überblick über die Verwendung behalten. Verschiedene Präfixe können zur besseren Unterscheidung im Namen verwendet werden.

Präfix

Verwendung für

COM_

allgemeine Konstanten, die an verschiedenen Stellen eingesetzt werden, z.B. zur Beschriftung von Elementen auf der Seite oder Seitennamen

ACTION_

Beschriftung von Schaltflächen

TABLE_

Texte in Tabellen wie z.B. die Ausgabe, wenn keine Datensätze vorhanden sind (TABLE_NODATA_) oder Tabellentitel (TABLE_TITLE_).

OPT_

Texte für Beschriftung und Angaben in der Systemdatengruppe

MSG_

Texte in Meldungen per JavaScript

MSG_WARN_

Texte in Warnmeldungen per JavaScript

MSG_ERROR_

Texte in Fehlermeldungen per JavaScript

CONFIRM_

Texte für die Beschreibung von Hinweisen in Bestätigungsanforderungen

Eine Besonderheit bilden die MSG_ Konstanten, denn Meldungen könnten einen Titel und einen Detailtext enthalten (Notifier). Unterscheiden Sie diese mit einem Suffix am Ende des Konstantennamens:

Suffix

Verwendung für

_TITLE

Titel des Meldung

_TEXT

Text der Meldung

Wenn Sprachkonstanten für Listeneinträge verwendet werden, sollten alle Angaben zu diesen Elementen in der Sprachkonstanten-Liste gruppiert werden. Verwenden Sie dazu ein Gruppierungsmerkmal nach dem Präfix - wie hier z.B. der Begriff ACCESSTYPE. Die einzelnen Optionen _ROLE, _GROUP und _USER wurden entsprechend angehängt.

COM_ACCESSTYPE_ROLE
COM_ACCESSTYPE_GROUP
COM_ACCESSTYPE_USER

Für die Benennung von Sprachkonstanten gibt es kein Patentrezept, da es von der Komplexität der Applikation abhängig ist, wie die Konstantennamen definiert werden. Die oben gezeigten Benennungsbeispiele sollen hier nur einen Ansatz geben.

Spracheinstellung Portal Manager

Diesen Dialog erreichen Sie über das Hauptmenü "Extras / Optionen".

Sprache des Portal Managers

Hier kann die Sprache des Portal Managers eingestellt werden. Die neue Einstellung wird beim nächsten Neustart des Portal Managers wirksam.

Anzeigesprache multilingualer Titel

Hier kann die Sprache ausgewählt werden, in der mehrsprachige Titel angezeigt werden.

Sprachanpassung

Wenn Sie eine Applikation, einen Prozess oder ein Layout im Portal Manager öffnen, wird geprüft, ob bei allen Elementen Titel in allen Portalsprachen eingetragen sind. Wenn Sie z.B. eine neue Portalsprache aktiviert haben, sind die Titel von Elementen in dieser neuen Sprache zunächst leer. Beim Öffnen wird dann ein Dialog eingeblendet, über den Sie die Titel einer vorhandenen Portalsprache in die leeren Titel der neu aktivierten Portalsprache übernehmen können.

Damit die Prüfung auf fehlende Titel beim Öffnen ausgeführt wird, muss im jeweiligen Modul über das Hauptmenü "Extras/Optionen" die Einstellung "Auf fehlende Titel überprüfen" gesetzt sein.

Titel von Elementen finden und übersetzen

In den Modulen "Applikationen", "Design" und "Prozesse" kann nach Elementen, die noch keinen Titel in einer der Portalsprachen haben, gesucht werden. Informationen zu diesem Thema finden Sie hier.

Texte und Sprachkonstanten exportieren und importieren

In den Modulen Applikationen und Prozesse können die Titel und Namen von allen Elementen über das Hauptmenü (z.B. Applikationen / Texte exportieren) exportiert und nach der Bearbeitung wieder importiert werden. Diese Funktion kann für die Übersetzung von Applikationen oder Prozessen in andere Sprachen genutzt werden.

Globale Sprachkonstanten können über das Hauptmenü Portal / Portaleigenschaften / Ländereinstellungen / Globale Texte / Globale Sprachkonstanten exportiert und importiert werden.

Texte und Konstanten können in den Formaten CSV, XLS oder XML exportiert werden. Beim Import ist zusätzlich das Format XLSX zulässig.

Texte-Export

Exportieren nach - Speicherort wählen

Wählen Sie hier eine Export-Datei aus. Zulässig sind die Datei-Formate CSV, XLS und XML.

Elemente von Export ausschließen

Wenn Sie diese Einstellung setzen, können mit Klick auf "Vom Export ausgeschlossene Elemente" in einem weiteren Dialog die Elemente festgelegt werden, deren Texte nicht exportiert werden sollen.

Hier werden alle Elemente aufgelistet, die nicht in die Exportdatei aufgenommen werden. Es kann auch definiert werden, welche Texte des Elementes nicht mit exportiert werden sollen (z.B. shapedtablebase:title - es werden, abgesehen von den Titeln, alle Texte des Objekts shapedtablebase exportiert). Mehrere Text-Typen können mit : verkettet werden (z.B. element:type:type[...]). Der XML-Name von Elementen und die entsprechenden Text-Typen können aus einer Export-Datei ausgelesen werden.

Element hinzufügen

Fügt eine weitere, leere Zeile ein. Mit Doppelklick auf die Zelle kann hier der XML-Name des Elements in die Liste aufgenommen werden.

Element löschen

Löscht ein Element aus der Liste.

Intrexx Standard wiederherstellen

Stellt den ursprünglichen Zustand der Liste wieder her.

Klicken Sie auf "OK", um die Einstellungen zu speichern und den Dialog zu schließen.

CSV-Einstellungen

Im CSV-Format werden Zeilenumbrüche in Texten mit <IXLB> codiert.

Trennzeichen / Kodierung

Wenn Sie eine CSV-Datei für den Export verwenden, wählen Sie hier die Art des Trennzeichens und die Kodierung aus.

Sprachen

Nur im Portal verwendete Sprachen anzeigen

Mit dieser Einstellung werden in der Liste "Verfügbar" nur die Sprachen angezeigt, die als Portalsprachen verwendet werden. Verschieben Sie die Sprachen, die in der Übersetzung bearbeitet werden sollen, mit der Pfeilschaltfläche in die Liste "Ausgewählt". Die Reihenfolge, die sich auf die Reihenfolge der Spalten in der Exportdatei auswirkt, kann mit den vertikalen Pfeilschaltflächen geändert werden.

Bezugssprache

Beim Export in eine XML- oder XLS-Datei kann hier eine Sprache ausgewählt werden, die als Übersetzungsgrundlage dient. Diese wird in der exportierten Datei kenntlich gemacht.

Globale Sprachkontanten - Export

Beim Export von Sprachkonstanten finden Sie dieselben Einstellungen wie für den Export von Texten, mit zwei Ausnahmen:

Intrexx-Standardkonstanten mitexportieren

Die Intrexx-Standardkonstanten werden in den Export aufgenommen.

Setze leere Strings für nicht vorhandene Werte

Schreibt bei fehlenden Texten, z.B. bei einem fehlenden Titel auf Französisch, einen leeren String. Damit wird bewirkt, dass das Sprachen-Attribut "Französisch" bei diesem Titel bei einem Import angelegt wird, sofern es noch nicht bei diesem Titel im Ziel noch nicht vorhanden ist. Ist die Einstellung nicht gesetzt, wird das Attribut im XML nicht angelegt.

Import

Wählen Sie die Importdatei aus. Zulässige Importformate sind CSV, XLS, XLSX und XML. Die restlichen Einstellungen in diesem Dialog entsprechen den Einstellungen, die beim Export gesetzt werden können.

Setze leere Strings für nicht vorhandene Werte

Wenn Sie Texte importieren, finden Sie hier zusätzlich die Einstellung "Setze leere Strings für nicht vorhandene Werte". Damit wird gesteuert, ob nicht vorhandene Texte beim Import als Leerstrings ins XML geschrieben werden.

Beispiel: In der Import-Datei ist für ein Label kein Text auf Französisch hinterlegt. Wird die Einstellung beim Import nicht aktiviert, dann bekommt das Label auch kein Attribut für Französisch im Titel-Element, sofern vor dem Import auch kein Attribut vorhanden war. Wird die Einstellung aktiviert, so bekommt das Titel-Element das Attribut für Französisch mit einem leeren String als Wert.

XML-Exportformat für Sprachkonstanten

Das XML-Format für den Import bzw. Export von Sprachkonstanten fasst alle Textkonstanten im Block <texts> zusammen. Jede Konstante wird über ein <element> definiert. Als Key wird der Konstantenname angegeben, wobei der Wert des type immer constant lauten muss. Die einzelnen Sprachvarianten werden als <text>-Elemente unter dem <element> notiert. Neben dem ISO-Sprachcode im language-Parameter wird der Bereitstellungsmodus (ALL, VELOCITY, JAVASCRIPT) der Konstanten definiert. Direkt an den Kontrollen definierte Sprachtexte werden im <element>-Tag mit den Parametern type (Kennung des Objekts) und dem key (GUID der Kontrolle) kenntlich gemacht. Im <text>-Tag werden weitere Angaben zum Export über die Parameter timestamp (Export-Zeitstempel), (application oder portal), guid (GUID der Applikation) und refLanguage (Bezugssprache) definiert.

Parameter

Wert

Beschreibung

timestamp

YYYYMMTTHHMMSS

Export-Zeitstempel

type

application portal

Unterscheidung, ob Export aus einer Applikation oder dem Portal stammt.

guid

GUID

GUID der Applikation

refLanguage

ISO-Sprachcode

Bezugssprache

version

Ganzzahlwert

Version des Exports

<?xml version="1.0" encoding="UTF-8"?><texts timestamp="20160212155654" guid="798…1F1"
 type="application" version="1" refLanguage="de">    <element key="ADDITIONAL_DISTRIBUTION_LIST" type="constant">        <text language="de" type="VELOCITY">Zusätzlicher Verteiler</text>        <text language="en" type="VELOCITY">Additional Distribution List</text>    </element>    <element type="dropdowncontrol" key="C22…D65">        <text type="title" language="de">Auswahlliste</text>        <text type="title" language="en">Auswahlliste</text>    </element><texts>

Mehrsprachige Titel

 

Immer, wenn Sie im Intrexx Portal Manager das Weltkugelsymbol für Mehrsprachigkeit finden, haben Sie die Möglichkeit, Titel mehrsprachig zu erfassen.

In Applikationen finden Sie im Eigenschaftendialog von Elementen rechts neben dem Titel eine Schaltfläche. Mit Klick auf den kleinen Pfeil rechts in dieser Schaltfläche wird ein Menü eingeblendet, in dem ausgewählt werden kann, ob ein statischer Titel oder ein Titel aus einer Konstante für das Element verwendet werden soll.

Wenn Sie hier "Titel" auswählen, wird auf der Schaltfläche anschließend das Weltkugelsymbol links neben dem kleinen Pfeil angezeigt.

Wenn Sie "Titel aus Konstante" auswählen, finden Sie auf der Schaltfläche anschließend ein "A".

Statische Titel

Klicken Sie auf das Weltkugelsymbol, um einen Dialog einzublenden, in dem ein statischer Titel in den eingestellten Portalsprachen erfasst werden kann.

Im Browser wird dann gemäß der Spracheinstellung in den Portaleigenschaften der hier eingetragene Text verwendet. Dies gilt auch bei einer Sprachumschaltung durch den Benutzer im Browser.

An manchen Stellen (z.B. im Menüdesigner, wenn dort eine vordefinierte Menüstruktur markiert und ein Klick auf das Weltkugelsymbol ausgeführt wurde) finden Sie hier im Dialog in der Spalte "Sprachkürzel" zusätzlich den entsprechenden ISO-Code. Tragen Sie in der Spalte "Wert" den gewünschten Text ein.

Titel aus Konstante

Für den Titel von Elementen in Applikationen können statt eines statischen Textes auch Konstanten verwendet werden. Im Browser wird dann gemäß der Spracheinstellung in den Portaleigenschaften der bei den Konstanten eingetragene Text verwendet. Dies gilt auch bei einer Sprachumschaltung durch den Benutzer im Browser. Informationen dazu, wie Konstanten erstellt, bearbeitet und der mehrsprachige Text hinterlegt werden kann, finden Sie hier:

Wenn Sie im Eigenschaftendialog von Elementen "Titel aus Konstante" ausgewählt haben, funktioniert die Auswahlliste für den Titel anschließend wie eine Suche.

Tragen Sie einfach den Konstantennamen, den Sie suchen, ein und wählen Sie die Konstante in der Auswahlliste aus.

Mit Klick auf das "A" in der Schaltfläche rechts neben der Titelauswahl wird der Dialog "Globale Sprachkonstanten" geöffnet, in dem ebenfalls nach Konstanten gesucht und diese auch direkt bearbeitet werden können.

Sprachumschaltung in Modulen

Die Sprache, in denen die Titel von Elementen im Portal Manager in den einzelnen Modulen angezeigt werden, kann über das Weltkugelsymbol in der Symbolleiste umgeschaltet werden.

Portalmenü

Bei Applikationen, die in der Menüstruktur eingebunden sind, kann eingestellt werden, dass der Titel der Applikation als Menüpunkt übernommen wird. Ist der Titel dort bereits mehrsprachig hinterlegt, so werden auch die Werte für die jeweiligen Portalsprachen übernommen. Wird die Einstellung Titel von der Applikation übernehmen deaktiviert, muss für den Menüpunkt der Titel an dieser Stelle mehrsprachig hinterlegt werden. Für alle anderen Objekte wie Menüordner, Links oder Trenner sind ebenfalls mehrsprachige Titel definierbar.

Weitere Informationen zur Menüstruktur finden Sie hier.

Layout

Da sich jedes Portal-Layout aus verschiedenen Containern zusammensetzt, die insbesondere bei barrierefreien Konzepten per Screenreader ausgewertet werden, müssen die mehrsprachigen Titel der Container ebenfalls berücksichtigt werden. Im Layout können keine eigenen Sprachkonstanten verwendet werden. Die einzelnen Elemente im Layout verwenden entsprechend definierte Globale Sprachkonstanten.

Benutzer-Einstellungen

Im Modul "Benutzer" können in den Eigenschaften von Benutzern länderspezifische Einstellungen gesetzt werden.

Die Einstellungen hier für Zeitzone, Sprache, Format und Layout sind vorrangig zu den Einstellungen, die in den länderspezifischen Portal-Eigenschaften gesetzt sind.

Applikationen

Im Modul "Applikationen" ist der Einsatz von Sprachkonstanten in Applikationen nicht nur für mehrsprachige Applikationen sinnvoll – auch einsprachige Applikationen profitieren vom Einsatz der Konstanten. Da Texte an vielen Stellen wiederholt auftreten, sind sie über eine zentrale Konstante schneller änderbar. United Planet empfiehlt daher, Applikationen bereits von Grund auf der Basis von Applikationskonstanten zu entwickeln.

Sprachkonstanten in Applikationen

Im Gegensatz zu den Globalen Sprachkonstanten können auch direkt in Applikationen Konstanten definiert werden, die dann nur innerhalb der Applikation gültig sind. Konstanten für Applikationen können über das Hauptmenü "Applikation / Sprachkonstanten verwalten" hinzugefügt, bearbeitet und gelöscht werden. Alle Informationen zu den Einstellungen im Dialog "Sprachkonstanten verwalten" finden Sie hier.

Optionen - Sprachkonstanten

Die optionalen Einstellungen für Sprachkonstanten und Titel erreichen Sie über das Hauptmenü "Extras / Optionen / Applikationen / Sprachkonstanten und Titel".

Konstantentyp beim Anlegen

Hier kann eingestellt werden, welcher Typ einer neu angelegten Sprachkonstante initial zugewiesen wird.

Initiale Titelvergabe

Hier kann eingestellt werden, welche Art von Titel den Elementen gegeben werden, die neu im Applikationsdesigner angelegt werden.

Titelfeld mit Standardtitel vorbelegen

Der Titel wird aus der Sprachkonstanten DEFAULT_CTRL_<Typ der Kontrolle> für das jeweilige Element übernommen. Im Browser wird der Titel in der aktuell eingestellten Portalsprache angezeigt. Auch für Datenfelder und Datengruppen wird der Titel mit dieser Einstellung übernommen.

Titelfeld mit Prefix-Pattern vorbelegen

Setzt beim Anlegen von Elementen die Einstellung Titel aus Konstante und befüllt das Titelfeld mit dem hier definierten Pattern. Diese Vorgabe kann auch durch den Konstantennamen ergänzt werden.

Titelfeld initial leer lassen und beim Verlassen des Dialogs

  • das Feld leer lassen

    Das Titelfeld bleibt leer, wenn der Benutzer den Dialog verlässt.

  • eine Warnung anzeigen

    Wenn das Titelfeld leer ist, wird ein entsprechender Hinweis eingeblendet, wenn der Benutzer den Dialog verlässt.

  • einen Standardtitel vergeben

    Der Titel wird aus der Sprachkonstanten DEFAULT_CTRL_<Typ der Kontrolle> übernommen, wenn das Titelfeld beim Verlassen des Dialogs leer ist.

Mehrsprachige Titel von Elementen

Wie Sie die Titel von Elementen in mehreren Sprachen hinterlegen können, erfahren Sie hier.

Mehrsprachige Listeneinträge

Bei den Elementen

können Benutzerdefinierte Werte als Quelle für die Liste im Element gewählt werden.

Mit Klick auf "Bearbeiten" wird der Dialog für die Bearbeitung der Listeneinträge geöffnet.

Hier können statt einem statischen angezeigten Wert auch Konstanten verwendet werden. Klicken Sie dazu auf den kleinen Pfeil rechts neben der Weltkugel. Wie Sie dann eine Konstante auswählen können, erfahren Sie hier. Der angezeigte Wert aus der Konstante und der gespeicherte Wert müssen in diesem Fall identisch sein.

Mehrsprachige Datensätze

Wie Sie Datensätze in verschiedenen Sprachen erfassen und abhängig von der jeweiligen Spracheinstellung des Portals in der richtigen Sprache anzeigen, erfahren Sie im Tipps & Tricks-Beitrag Mehrsprachige Datensätze.

Mehrsprachige Daten mit doppeltem Primärschlüssel

Mehrsprachige Daten können mit einem doppelten Primärschlüssel in einer Datengruppe gespeichert werden. Dieser setzt sich aus einem Key und einem ISO-Sprachcode zusammen. Bei Steuertabellen wie z.B. dem Status, sollte der Key ein sprechender String sein. Bei anderen Daten sollte eine GUID verwendet werden.

Vor dem Speichern der Applikation kann der Datentyp des vorhandenen Primärschlüssels auf dem Reiter "Expert" zu String geändert werden, damit hier später eine GUID gespeichert werden kann. Für den zweiten Primärschlüssel wird ebenfalls vor dem Veröffentlichen der Applikation ein neues Datenfeld mit dem Titel Sprache angelegt.

Auf dem Reiter "Expert" wird das Expert-Attribut "primarykey" auf ja gestellt.

Wenn neue Datensätze angelegt werden, müssen beide Primärschlüssel mit Werten gefüllt werden, damit kein Fehler in der Datenverarbeitung auftritt. Dazu kann das Sprache-Datenfeld mit einem Eingabefeld im versteckten Bereich verbunden werden. Das Eingabefeld wird mit dem Expert-Attribut "customdefault", Wert $lang, mit der aktuellen Portalsprache vorbelegt.

Soll auch der Hauptschlüssel automatisch mit einer GUID erzeugt werden, wird hier im Expert-Attribut customdefault der Wert $Unique.newGuid() eingetragen und das Feld ebenfalls in den versteckten Bereich verschoben.

Ein häufiges Szenario ist die Verwendung von mehrsprachigen Stammdaten wie z.B. Status oder Kategorien über eine Referenz in Bewegungsdatensätzen. Wird eine Referenz auf eine Datengruppe mit zwei Primärschlüsseln erzeugt, muss für den Sprachschlüssel die Sessionvariable "Sprache" zugeordnet werden. Der andere Primärschlüssel wird auf "Wird automatisch erstellt" belassen.

Intrexx liefert nun über die Referenz immer den entsprechenden Sprachtext im Browser.

Mehrsprachige Daten mit einem Kerndatensatz als Bezug

Diese Variante ist sinnvoll, wenn neben mehrsprachigen Texten viele weitere Daten, die sprachunabhängig sind, zu einem Datensatz definiert werden. D.h. im Kerndatensatz befinden sich alle sprachunabhängigen Daten und im Sprachdatensatz alle Textinformationen.

Mehrsprachige Baumkontrolle

Die Texte zur Beschriftung eines mehrsprachigen Baum-Elements werden in einer eigenen Datengruppe mit einem doppelten Primärschlüssel verwaltet.

Die Texte-Datengruppe wird in der Datengruppe des Baumes referenziert und die Sprache auf die aktuelle Portalsprache eingestellt. Wichtig ist, dass die in der Beschriftungstabelle gespeicherten Einträge als Hauptschlüssel die ID des Baumeintrages erhalten, um eine Synchronizität zwischen den beiden Datengruppen und den Datensätzen herzustellen.

In der Konfiguration der Baumkontrolle wird dann als Titel der Beschriftungstext über die Referenz zugeordnet. Dieser wird automatisch anhand der eingestellten Portalsprache ermittelt und angezeigt.

Zur Anlage eines neuen Baumeintrags muss in dieser Konstellation ein spezielles Verfahren angewendet werden, da in der Datengruppe des Baums keine Bezeichnung gespeichert wird. Dazu wird eine Eingabeseite mit einem Eingabefeld ohne Datenfeldverknüpfung angelegt.

Beim Speichern wird mit JavaScript der erfasste Text als Request-Parameter an einen Prozess übermittelt.

function newTreeEntry(oAction)
{
  var oDescription = getElement("GUID_EINGABEFELD");
  oAction.oUp.oTarget.addParam = Helper.setQsValueByParam(
  "rq_customDescription", oDescription.value, oAction.oUp.oTarget.addParam);
  return true;
}

Im Prozess wird der Requestwert über einen Datengruppen-Ereignisbehandler, der auf das Einfügen eines neuen Baumeintrags hört, mit Groovy-Skript ausgelesen und in der Beschriftungstabelle der entsprechende Eintrag angelegt. Zeitgleich werden die Datensätze für die Sprachvarianten erzeugt. Zudem wird der Referenzwert in der Baumdatengruppe auf den Datensatz in der Beschriftungstabelle eingetragen.

def conn = g_dbConnections.systemConnection

def l_strActualLang = g_language
def l_strDescription = g_request.get("rq_customDescription")
def l_intTreeId = g_record["GUID_ID_TREEDATENSATZ"].value

def l_aLanguages = g_portal.defaultLocale.languages

// Create data records
l_aLanguages.each { language ->  def l_strIsoLang = language
  g_dbQuery.executeUpdate(conn, "INSERT INTO
  DATAGROUP('GUID_DATA_GROUP_LABEL_TABLE') 
  (TREEID, LANG, STRNAME) VALUES (?,?,?)") {
    setInt(1, l_intTreeId)
    setString(2, l_strIsoLang)
    if(l_strIsoLang == l_strActualLang)
    {
      setString(3, l_strDescription)
    }
    else
    {
      setString(3, "Translate: " + l_strDescription)
    }
  }
}

g_dbQuery.executeUpdate(conn, "UPDATE
DATAGROUP('GUID_DATA_GROUP_TREE') SET LID = ?, 
REF_NAME = ? WHERE LID = ?") {
  setInt(1, l_intTreeId)
  setInt(2, l_intTreeId)
  setInt(3, l_intTreeId)
}

Sprachvarianten per Prozess erzeugen

In der Regel wird ein mehrsprachiger Datensatz immer ausgehend von einer Sprache erzeugt. Hat der Ersteller sein Portal in der englischen Spracheinstellung, wird der Datensatz in Englisch erzeugt. Alle weiteren Sprachvarianten müssen dann zusätzlich erstellt werden. Dies kann manuell erfolgen, was jedoch bei mehrsprachigen Portalen einen entsprechenden Aufwand darstellt. Hier kann ein Prozess die Vorarbeit übernehmen und für jede Sprache im Portal automatisch die Datensätze für die jeweilige Sprachvariante erzeugen. Die Weiterentwicklung eines Portals kann auch das Hinzufügen weiterer Portalsprachen umfassen. Auch hier kann ein Prozess die Datensätze für die neuen Sprachvarianten nachträglich erzeugen. Insbesondere bei Stammdaten wie z.B. Statusdefinitionen ist dies wichtig, um die Funktionsfähigkeit der Applikation unter der neuen Sprache zu gewährleisten.

Das nachfolgende Groovy-Script zeigt exemplarisch, wie beim Einfügen neuer Portalsprachen in einer Datengruppe Datensätze noch fehlender Sprachvarianten erzeugt werden.

def conn = g_dbConnections.systemConnection

// Determines all existing languages of the portal
def l_aLanguages = g_portal.defaultLocale.languages

// For each portal language
l_aLanguages.each
{
  // Check whether for this language 
  // at least one entry exists in one of the application tables
  def l_strIsoLanguage = it
  def l_intLanguageDetect = g_dbQuery.executeAndGetScalarIntValue(conn, 
  "SELECT COUNT(*) FROM DATAGROUP('GUID_DATA_GROUP') WHERE LANG = ?", 0) {
    setString(1, l_strIsoLanguage)
  }

  if(l_intLanguageDetect == 0)
  {
    // Language not exists in data, add language Variants
    def stmtData = g_dbQuery.prepare(conn, 
    "SELECT STRID FROM 
    DATAGROUP('GUID_DATA_GROUP')")
    def rsData = stmtData.executeQuery()

    while (rsData.next())
    {
      def l_strTypeId = rsData.getStringValue(1)
      g_dbQuery.executeUpdate(conn, "INSERT INTO
      DATAGROUP('GUID_DATA_GROUP') 
      (TREEID, LANG, STRNAME) VALUES (?,?,?)") 
      {
        setString(1, l_strTypeId)
        setString(2, l_strIsoLanguage)
        setString(3, "Translate")
      }
    }
    rsData.close()
    stmtData.close()
  }
}

Mehrsprachige Suche

Sprachisolierte Suche

Die sprachisolierte Suche orientiert sich an der eingestellten Portalsprache und liefert nur Inhalte, die dieser Sprache entsprechen, im Suchergebnis zurück. Dazu muss die Sprache des Portals in der Suchkonfiguration gefiltert werden. Das Datenfeld Sprache wird mit dem Systemwert "Sprache" verglichen. Nur bei Gleichheit werden die jeweiligen Suchtreffer angezeigt.

Suche mit Sprachauswahl durch den Anwender

Die Sprachauswahl durch den Anwender kann mit Hilfe von Facetten erfolgen. Dazu wird zunächst die Facette "Sprache" definiert.

Die Facette wird in der Suchkonfiguration mit dem Datenfeld "Sprache" verknüpft.

Sie bietet nun alle Sprachen, die bei der Suche gefunden werden, zur Filterung des Suchergebnisses an. Da die Suchmaschine die Facetten nicht interpretieren kann, werden in der Auswahl die ISO-Sprachcodes aufgelistet.

Mehrsprachige E-Mails

E-Mail an einen einzelnen Empfänger

Sendet ein Benutzer eine E-Mail ab, so kann dessen Spracheinstellung in einem Prozess ermittelt werden. Der Prozess kann dann die ermittelte Sprache in einer E-Mailaktion auf die zu versendende E-Mail anwenden.

Der Betreff kann durch entsprechende Übersetzung des sprachabhängigen Betreffs definiert werden. Um die Sprachsteuerung individueller zu gestalten, kann vor der Ausführung der E-Mail-Aktion die Sprache mit Groovy-Skript ermittelt und in den Verarbeitungskontext geschrieben werden, um die E-Mail-Aktion damit zu steuern.

// Language of the current user
def l_strLanguage = Locale.forLanguageTag(g_language).getDisplayLanguage(new Locale(g_language))

// Language of any user 
// (via its GUID and the user object)
def l_objUser = g_om.getUser(l_strUserGuid)
def l_strLanguage = objUser.getDefaultLanguage()

// Putting language into the processing context
g_sharedState.maillanguage = strLanguage

Im Eigenschaftendialog der E-Mail-Aktion kann auf dem Reiter "Expert" der Parameter "language" hinzugefügt und die aus dem Verarbeitungskontext ermittelte Sprache als Wert mit " urn.sharedState.maillanguage" übergeben werden.

Der Betreff kann auch über eine Sprachkonstante definiert werden. Dazu wird mit der entsprechenden Groovy-Methode der Inhalt der Sprachkonstante unter Angabe der zuvor ermittelten Sprache ausgelesen.


// Determine subject from language constant and place in processing context 

g_sharedState.subject = g_i18n.application("APP_GUID").language(l_strLanguage)["MYMAILSUBJECT"]

Der Wert aus dem Verarbeitungskontext wird dann mit "urn.sharedState.subject" in den statischen, sprachunabhängigen Betreff der E-Mail-Aktion eingetragen.

Wenn die E-Mail auch per CC und BCC an jeweils einen Empfänger mit unterschiedlichen Sprachen versendet wird, kann diese Vorgehensweise nicht angewendet werden. Hier wäre die separate Behandlung mit jeweils eigenen E-Mail-Aktionen in der Prozesskette notwendig. Der Nachrichtentext könnte ebenfalls in der vorangestellten Groovy-Aktion ermittelt und in den Verarbeitungskontext gelegt werden. Der Verarbeitungskontext kann dann in Velocity ausgelesen und daraus der E-Mail-Body erzeugt werden.

E-Mail an Verteiler

Um die Mehrsprachigkeit beim Versand von E-Mails an einen Verteiler zu berücksichtigen, gibt es zwei Lösungsansätze:

  • Pro Sprache wird eine E-Mail-Aktion erstellt, in der die Empfänger nach ihrer eingestellten Sprache selektiert werden.

  • Die E-Mail wird mit Groovy-Skript unter Berücksichtigung der Sprache des jeweiligen Empfängers erzeugt. Hier muss der Body der Nachricht jedoch selbst konstruiert werden.

Ein mögliches Grundkonstrukt ist nachfolgend aufgeführt. Allerdings dürfen als Empfänger über den Verteiler in diesem Fall nur Benutzerobjekte bestehen.

import de.uplanet.lucy.util.TextUtil
import de.uplanet.lucy.server.mail.GroovyMailBuilder
import de.uplanet.lucy.server.mail.MailUtil
import de.uplanet.lucy.server.portalserver.PortalServerPath
import de.uplanet.lucy.server.composer.UrlBuilder

// Contents of a distribution list (GUIDs of recipients)
def l_strRecipients = g_record["640...DAC"].value
def l_aReceipients = TextUtil.stringToList(strRecipients)

aReceipients.each {
  def strEmail = g_dbQuery.executeAndGetScalarStringValue(conn, "SELECT
  STRMAILBIZ FROM VBLUSER WHERE STRGUID = ?", null) {
    setString(1, it)
  }
  if(strEmail != null && strEmail != "")
  {	
    def mail = new GroovyMailBuilder().composeMail {
	  headers = [
		"X-IX-Share": "intrexx-share-notification",
	]

	from        = MailUtil.getDefaultSenderAddress()
	to          = strEmail
	subject     = l_mailHelper.getMailTitle()
	contentType = "text/html; charset=UTF-8"

	body << """<html>  … </html>"""
    }
    mail.drop()
  }
}

Sprachweichen

Mit Sprachkonstanten kann der Einsatz von Sprachweichen in Programmcodes weitgehend vermieden werden. Für besondere Fälle können die folgenden Konstrukte dennoch nützlich sein. Um eine Sprachweiche in JavaScript zu realisieren, muss zunächst die eingestellte Sprache des Portals mit dem oHtmlRoot-Objektermittelt werden.

var l_lang = oHtmlRoot.oUp.oFormatInfo.lang;

switch(l_lang)
{
  case "de":
       // Code for german language
       break;
  case "en":
       // Code for english language
       break;
  :

  default:
       // Fallback if language is missing (default language of the portal)
}

if(l_lang == "de")
{
  // Code for german language
}
else if(l_lang == "en")
{
  // Code for english language
}

:

else
{
  // Fallback if language is missing (default language of the portal)
}

Über das oHtmlRoot-Objekt kann auch die eingestellte Standardsprache des Portals ermittelt werden.

var l_defaultLang = oHtmlRoot.oUp.oFormatInfo.defaultLang;

Um im Velocity-Kontext sprachabhängige Weichen zu konstruieren, kann die Intrexx-Systemvariable $lang verwendet werden, die die aktuell eingestellte Portalsprache enthält.

#if($lang == "de")
  // Language dependent code
#elseif($lang == "en")
  // Language dependent code
#else
  // Fallback in case of missing language
#end

Um Daten in Groovy-Skript mehrsprachig zu erzeugen bzw. anhand der Sprache bestimmte Aktionen zu steuern stehen verschiedene Möglichkeiten zur Verfügung.

// Current portal language
g_language
// Default language of the portal
g_defaultLanguage
// Current portal language via request parameter rq_Lang 
g_request.get("rq_Lang")
// Default language Users from the current session
g_session.user.getDefaultLanguage()

Über eine switch-case-Konstruktion lässt sich eine Sprachweiche für verschiedene Zwecke gestalten.

switch(g_language)
{
  case "de":
    return german
    break
  case "en":
    return english
    break
  default:
    return english
}

Mehrsprachige Grafiken

Werden Grafiken über Datengruppen verwaltet, so können diese pro sprachabhängigem Datensatz definiert werden. Schwieriger wird die Anzeige von sprachabhängigen Grafiken im Layout, da dies technisch nicht vorgesehen ist. Hier gibt es den Lösungsansatz, die Grafik im Dateinamen mit dem ISO-Sprachcode zu versehen und mit der im Portal eingestellten Sprache die URL mit Velocity-Skript zu konstruieren. Das folgende ActionControl erzeugt einen DIV-Container mit einem Link auf die Startseite des Portals sowie der sprachabhängigen Einbettung einer Grafik. Wichtig ist die Benennung der Grafik mit logo_<iso-sprachkürzel>.png. Die Kontrolle baut den Dateinamen dynamisch unter Verwendung der eingestellten Portalsprache $lang zusammen.

<div id="Container_Logo">
	<a title="Home" href="/$Portal.getPortalName()">
		<img width="199" height="49" src="images/${layout}/logo_${lang}.png" alt="Home">
	</a>
</div>

Velocity-Variablen in Sprachkonstanten

In allen Sprachkonstanten vom Typ "Sprachkonstante wird als Velocity-Ausdruck evaluiert" können bei Verwendung auf Applikationsseiten Velocity-Variablen eingebettet werden. Voraussetzung für die korrekte Funktion ist die Verfügbarkeit der Variable im Seitenkontext. Im folgenden Beispiel ist die Variable $Rooms im Text eingebaut, damit der reine Text um eine dynamische Angabe – hier die Anzahl der Räume – ergänzt wird.

Konstantentext:

There are $Rooms Room/Rooms in this building!

Ausgabe:There are 10 Room/Rooms in diesem Gebäude!

Sprachumschalter mit Flaggen

Ein Sprachumschalter mit Flaggen macht nur bei wenigen Portalsprachen Sinn, und auch nur in Kombination mit dem Sprachnamen. Bei Sprachen wie Englisch, die durch mehrere Länder und somit Flaggen belegt sind, ein Flaggen-Sprachumschalter ebenfalls nicht immer ideal. Intrexx liefert bereits ein Set an Grafiken mit Flaggen, die als Namen das ISO-Sprächkürzel besitzen. Fügen Sie zunächst im Portal-Verzeichnis internal\system\vm\html\actioncontrol eine neue Datei mit dem Namen "languageswitch_flag.vm" ein und kopieren Sie den nachfolgenden Velocity-Code in diese Datei.

#set($l_aAllLang = $WebMenu.getMenuLanguages())
<span id="ID_Languageswitch">#foreach($l_strLang in $l_aAllLang)
	#set($l_strImagePath = "images/assets/flags_of_the_world/16x16/plain/${l_strLang}.png")
	#set($l_strDisplayLang = $TextUtil.getDisplayLanguage($l_strLang, $l_strLang))
 	<a style="width: 16px; height: 16px; display: inline-block; background-repeat: no-repeat; background-position: center; background-image: url($l_strImagePath); cursor: pointer;" onclick="var oLangAction=setLangAction('$velocityCount', '$!l_strLang');oLangAction.changeLang();return false;" lang="$!l_strLang" target="_top" href="$Request.get('DEFAULT_URL')?rq_Lang=$!l_strLang" id="ID_actionLangSwitch${velocityCount}" title="$I18N.get('LANGUAGESWITCH_DESCRIPTION')"></a>#end
</span>
<script type="text/javascript">
	function setLangAction(count, lang){oLangAction = new upTextActionControl();oLangAction = oLangAction.biDirectUpHtml(oLangAction, 'ID_actionLangSwitch' + count);oLangAction.linkType = '4';oLangAction.oTarget = new upTarget();oLangAction.oTarget.rq_Lang = lang;return oLangAction;}
</script>

In der Datei "controls.xml" fügen Sie den folgenden Block in die XML-Struktur ein:

<control id="Action_LanguageSwitchFlag" mobile="false" multipleUse="false" vm="languageswitch_flag.vm">
	<title lang="en" value="Language Switch with Flags"/>
	<title lang="de" value="Sprachumschalter mit Flaggen"/>
	<description lang="en" value="Language Switch"/>  
	<description lang="de" value="Sprachumschalter"/>
</control>

Nach dem Neustart des Portal Managers kann die Zusatzkontrolle nun entsprechend ausgewählt und im Layout hinzugefügt werden.