FSS.social
25Sep 120

Mehrsprachige Anwendungen unter XPages

am Dienstag, den 25. September 2012

Laut IBM braucht man nur die Lokalisations-Option (bei den XPage Optionen) aktivieren, angeben in welchen Sprachen die Anwendung zur Verfügung stellen soll und erhält nach einem Clean für alle XPages und Customer Controls Elemente Properties Dateien, die man dann einem Übersetzer in die Hand drücken kann.

Anbei ein Screenshot von den Optionen (hier für Englisch/Deutsch wobei Englisch die Standardsprache bzw Orginalsprache ist)

XPages Mehrsprachig-1
Zunächst eine Warnung: Deaktiviert man die Option "Enable localization" werden alle übersetzten Properties-Dateien gelöscht. Entfernt man eine der Sprachen, werden die zugehörigen Dateien der Sprache gelöscht.

In der Praxis extrahiert die Lokalisationsroutine so gut wie möglich alle Texte wie z.B. Labels, Fehlermeldungen etc. Sie wird jedoch keine Texte aus berechneten Feldern oder Texte aus Javascript-Bibliotheken extrahieren.
Hier muß der Entwickler selbst noch einmal Hand anlegen und den Code mittels Javascript aus einer eigenen Property-Datei auslesen. (Beschreibung hierzu folgt)

Als Ergebnis der Extraktion enthält man dann properties-Dateien die wie folgt aussehen können:
<font color="blue"><blockquote><htmlblock>viewColumnHeader11/@value=[de| For Person/Team ]
switchFacet2/xe\:this.facets[1]/xp\:panel[2]/text()[2]=[de| \u00A0 ]
lnkCancel/xp\:eventHandler[1]/xp\:this.action[1]/xp\:actionGroup[1]/xp\:confirm[1]/@message=[de| Cancel adding a new member? ]</htmlblock></blockquote><font color="black">
Also ein paar Dateien bei denen sich so mancher Übersetzer erst einmal verwirrt die Augen reiben dürfte.

Bei kleinen überschaubaren Anwendungen, die nur aus einer Handvoll XPages/Customer Controls besteht ist dies sicher eine mögliche Variante.
Allerdings sollte man auch hier prüfen ob wirklich alle Texte eingefangen wurden und ob bei der Übersetzung nicht versehentlich ein Leerzeichen zu viel gelöscht wurde.

Sobald die Anwendung wesentlich komplexer wird z.B. aus vielen verschachtelten Customer Controls besteht, artet das Übersetzen schnell in eine Form von Schnitzeljagd für Entwickler aus und man fragt sich in welcher der vielen Properties-Dateien das eine oder andere Label noch einmal stand.

Übersetzung hausgemacht:
Alternativ zur obigen Lokalisierungsvariante kann man auch eigene Properties-Dateien erstellen

XPages Mehrsprachig-2

und diese als Datei-Resourcen seiner Anwendung hinzufügen.

XPages Mehrsprachig-3

XPages Mehrsprachig-4
Aus diesen Datei liest man nun die Texte für Labels, Fehlermeldungen, etc

Bei einem Label könnte folgender Javascript-Code stehen: <font color="blue"><blockquote><htmlblock>var message = strings.getString('greeting');
return message</htmlblock></blockquote><font color="black">
In einer Datei steht die passende Begrüßung auf Englisch (strings_en.properties) <font color="blue"><blockquote><htmlblock>greeting=Welcome</htmlblock></blockquote><font color="black">
und in einer anderen die Begrüßung auf Deutsch (strings_de.properties) <font color="blue"><blockquote><htmlblock>greeting=Willkommen</htmlblock></blockquote><font color="black">

Will man beim Willkommen noch den Namen des aktuellen Benutzers mit ausgeben, muss man zwei Stellen anpassen.
Einmal in den properties-Dateien: <font color="blue"><blockquote><htmlblock>greeting=Welcome {0} !</htmlblock></blockquote><font color="black">
Und dann muss man noch dafür sorgen, dass im Javascriptcode das "{0}“ durch den Namen ersetzt wird.
<font color="blue"><blockquote><htmlblock>var message = strings.getString('greeting');
message = I18n.format(message, @UserName());
return message</htmlblock></blockquote><font color="black">

Das Dateisuffix "_en" oder "_de" steht für die entsprechende Browser-Länderkennung. XPages kümmert sich dann selbst darum dass die passende Properties-Datei herangezogen wird.
Die Datei ohne Suffix z.B. strings.properties ist die Datei die gezogen wird, wenn für die Länderkennung keine eigene properties-Datei existiert.

Anbei noch zwei Links zu zwei ausführlichen englischsprachigen Artikeln zum Thema Übersetzung.
Eine Beschreibung wie man über die XPage Optionen eine Übersetzung vornimmt
Eine Beschreibung wie man über Javascripts auf eigene Properties-Dateien zugreifen kann

 

8Mrz 120

jQuery Foundation gegründet

am Donnerstag, den 8. März 2012

Bei der Entwicklung von Webapplikationen wird üblicherweise auf JavaScript Bibliotheken zurückgegriffen. Dies ist bei der Verwendung von Notes, wenn aus bestimmten Gründen keine XPages eingesetzt werden, nicht viel anders.
Eine häufig verwendete Bibliothek liefert seit 2006 das jQuery Projekt. Deren Leitung wird nun von der neu gegründeten jQuery Foundation übernommen. Präsident dieser Stiftung ist Dave Methvin, der als Entwickler beim jQuery Projekt, unter anderem als Leiter des jQuery Core, bekannt ist.

Nähere Informationen zu den Möglichkeiten, die jQuery liefert, findet man auf der Website des Projekts.

11Jan 120

JDBC-Projekt für den Zugriff auf Domino-Daten

am Mittwoch, den 11. Januar 2012

Auf OpenNTF.Org ist seit kurzen ein Projekt veröffentlicht, das sich mit dem Zugriff auf Domino-Daten mittels JDBC-Driver - insbesondere über XPages, aber auch Drittanwendungen wie z. B. Reportgeneratoren, die über JDBC kommunizieren können - beschäftigt. Es ermöglicht den Zugriff auf Ansichten über Server- und Datenbankengrenzen hinweg und erlaubt so z. B. die Auswertung und Darstellung verschiedenster Datenbestände.
Als Basis wird SQLite verwendet. Erforderlich sind Domino 8.5.3, die neueste Extension Library, sowie ein weiteres OpenNTF-Projekt mit dem Namen OSGI Tasklet Service for IBM Lotus Domino.
Testen konnten wir bisher noch nicht, zumal die Implementierung nicht ganz banal und offenbar etwas aufwendiger ist. Insgesamt aber für bestimmte Szenarien ein recht spannendes Projekt...


Vollständiger Artikel

8Nov 110

Fehlerhafte Darstellung von Umlauten in MS Excel

am Dienstag, den 8. November 2011

Eine Webapplikation erlaubte das Exportieren von Datensätzen in Form einer csv-Datei. Der Download zeigte in Texteditoren keine Auffälligkeiten. Beim Öffnen mit MS Excel wurden allerdings alle Umlaute fehlerhaft dargestellt. Weitere Analysen ergaben, dass selbstverständlich nicht nur Umlaute davon betroffen waren, sondern alle Sonderzeichen.

Offensichtlich liegt dies an der Kodierung. Die Webapplikation liefert die Daten utf-8-kodiert, was im Web auch die übliche Verfahrensweise ist. Im Gegensatz zu MS Word wird dies von MS Excel aber nicht automatisch erkannt.

Hier muss man den Umweg über die Importfunktion wählen. Mit der Excel-Version 2007 sucht man zum Beispiel "Daten/Externe Daten abrufen". Einer der nun folgenden Dialoge zeigt unter "Dateiursprung" als Vorgabe bereits die korrekte Kodierung an. Man kann sich einfach durch die Dialog klicken und erhält die korrekte Darstellung.

17Jun 110

HTTP_REFERER beim Internet Explorer

am Freitag, den 17. Juni 2011

Bei der Entwicklung von webfähigen Anwendungen stellt sich häufig die Aufgabe, ein Dokument im Backend zu bearbeiten und die aktualisierte Version anschließend anzuzeigen.

Die Bearbeitung im Backend kann dabei bequem von einem Agenten ausgeführt werden, der über einen Link oder eine Schaltfläche ausgelöst wird. Die Anzeige des Dokuments erhält man beispielsweise, indem der Agent als einzigen Output folgenden Ausdruck liefert:


"[" + session.getDocumentContext().getItemValueString("HTTP_REFERER") + "]"


Hierbei nutzt man die Funktionalität von Domino aus, den in eckigen Klammern befindlichen Teil als Ziel-URL zu interpretieren. Die CGI-Variable HTTP_REFERER beinhaltet die URL der aufrufenden Seite, von welcher der Agent gestartet wurde.


Letzteres ist aber leider nicht immer der Fall. Der Internet Explorer liefert häufig keinen Wert für HTTP_REFERER. Eine erste Recherche ergab leider noch keine befriedigende Erklärung. Eine Rolle scheint aber zu spielen, ob der Link per JavaScript ausgelöst wurde und ob dieser relativ oder absolut adressiert wird.


Da man dieses Verhalten wohl aber auch mit Erklärung nicht ändern kann, muss auf Alternativen ausgewichen werden. Bewährt hat sich die Methode, die Agenten-URL in einen AJAX-Aufruf zu verpacken und nach Abarbeitung die Seite mit "location.reload(true)" zu aktualisieren.


Diese Methode hat den zusätzlichen Vorteil, Probleme bei der Agentenausführung zu behandeln.

28Dez 090

Bilder werden per UMTS nicht angezeigt

am Montag, den 28. Dezember 2009

Bei der Übertragung von Bildern werden diese in vielen Fällen nicht angezeigt, wenn der Zugriff auf die jeweilige Seite per UMTS erfolgt. Hintergrund hierfür ist offenbar, das die Bilder vom jeweiligen Provider auf die ein oder andere Art und Weise komprimiert werden. Hierzu finden sich im Netz verschiedene Hinweise.
Wir haben bisher unsererseits dieses Problem auch nicht wirklich lösen können, allerdings konnten wir - zumindest für unsere Zwecke - einen workarround unter Notes schaffen. Wir hatten bisher die Bilder beispielweise so referenziert: "http://.../Image1.jpg/$FILE/Image.jpg". Das funktioniert gemeinhin ja auch, nur eben per UMTS nicht oder nicht zuverlässig. Wir haben die URL jetzt umgestellt auf "http://.../Image1.jpg/$FILE/Image.jpg?OpenElement", was ja eigentlich auch der "korrekten" Notessyntax entspricht. Offenbar können die Provider - in unserem Beispiel vodafone - mit dieser URL nicht umgehen und unterlassen dann den Kompromierungsversuch, oder der Dominoserver liefert "etwas Anderes". Für sachdienliche Hinweise diesbezüglich wären wir natürlich dankbar...