SharePoint 2013 Apps: Lokalisierung im Host Web

In diesem Beitrag geht es jetzt um die Lokalisierung von App-Komponenten, die im Hostweb angezeigt werden. Das ist zum einen der Name der App selbst, aber es sind z.B. auch die Texte, die für eigene Ribbon-Elemente benötigt werden. Oder Name und Beschreibung von Client Webparts (App Parts) und deren benutzerdefinierte Eigenschaften.

Im Beitrag Lokalisierung bei Remote Apps habe ich bereits gezeigt, wie man die Elemente cloud-basierter Apps lokalisieren kann.

Wie immer gehe ich auch hier wieder davon aus, daß die App mit Visual Studio 2012 erstellt wird. Das Hosting-Modell spielt in diesem Fall keine Rolle, weil es die genannten Elemente bei jeder Art App geben kann.

Ressourcendateien hinzufügen

Die zur Lokalisierung der Hostweb-Komponenten notwendigen Ressourcendateien werden über das App-Manifest zum Projekt hinzugefügt. Man öffnet dazu den Manifest-Designer durch einen Doppelklick auf die Datei AppManifest.xml. Im Reiter Supported Locales gibt man jetzt die zu unterstützenden Kulturen an und Visual Studio fügt dann automatisch eine passende resx-Datei ins Projekt ein. Bei der ersten Angabe, z.B. German (Germany), wird nicht nur die Resources.de-DE.resx, sondern auch die neutrale Resources.resx ins Projekt aufgenommen:

Die Dateien werden in einem Ordner Resources abgelegt. Im Solution Explorer sieht das dann so aus:

Achtung: wenn man bei einer App unterstützte Kulturen angibt, kann diese App nicht mehr auf einer Website verwendet werden, die für eine nicht unterstützte Kultur angelegt wurde! Insofern ist die Verwendung der neutralen Ressourcendatei hier ziemlich sinnlos.

Ressourcen verwenden

Die Texte aus den Ressourcendateien können jetzt in der von Farmlösungen gewohnten Weise verwendet werden. Um z.B. den Titel eines App Parts zu lokalisieren, gibt man dort die zu verwendete Ressource an:

Title="$Resources:AppPartTitle;"

Das funktioniert auch beim Titel der App selbst, bei Texten für eigene Ribbon-Elemente und bei eigenen Eigenschaften, die man einem App Part geben möchte.

OPC Beziehungen

Wer jetzt meint, das wäre schon alles gewesen, muß leider enttäuscht werden. Visual Studio fügt leider nicht alle notwendigen Beziehungen in das fertige App-Paket ein. Warum das nicht gemacht wird und ob diese Unterstützung irgendwann nachgeliefert wird, steht derzeit in den Sternen.

Man kann diese Beziehungen jetzt durch manuelles Gefrickel im App-Paket selbst einfügen, aber dann muß die App auch manuell bereitgestellt werden. D.h. man kann nicht mehr einfach in Visual Studio F5 drücken und es wird sich um alles andere gekümmert. Sehr unschön.

Es geht aber sehr viel einfacher mit einem Tool, das Ricardo Loo bereitgestellt hat und das er hier beschreibt: AddRelsToAppPackage.exe

Man kopiert dieses kleine Programm einfach in das Projektverzeichnis, also in das Verzeichnis, in dem Visual Studio die Dateien und Ordner des App-Projekts ablegt. In Visual Studio macht man dann einen Rechtsklick auf das App-Projekt und klickt dann auf Properties. Im Reiter SharePoint fügt man folgendes bei Pre-deployment Command Line ein:

"$(ProjectDir)\AddRelsToAppPackage.exe" "$(TargetDir) "

Achtung: man verwendet wirklich genau diesen Text inklusive der Anführungszeichen und dem Leerzeichen nach $(TargetDir)!

Das gesamte Projekt AddRelsToAppPackage kann hier heruntergeladen werden. Für alle, die sich nur für die fertige exe-Datei interessieren, habe ich hier eine Kopie hinterlegt.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s