code it

Martins Tech Blog

Mehrsprachige Websites in SharePoint 2010

Mehrsprachige Benutzeroberflächen (sog. MUIs) werden in SharePoint 2010 out-of-the-box unterstützt. Voraussetzung dafür ist, dass das passende Language Pack installiert ist. Ist die Einstellung in einer Site aktiviert, können Anwender über eine Sprachauswahl die Sprache umschalten. Im Gegensatz zu vorherigen SharePoint-Versionen können nun zusätzlich zu den systemeigenen Beschriftungen beispielsweise auch Spaltenüberschriften in Listen in anderen Sprachen dargestellt werden.

Aktivierung über die Benutzeroberfläche
Unter Site Administration -> Language Settings finden sich die Spracheinstellungen der Site.

Die Standardsprache ist nicht änderbar. Dabei handelt es sich um die Sprache, mit der die Site angelegt wurde. Es kann jedoch festgelegt werden, welche Sprachen die Site zusätzlich unterstützen soll.

Auswirkungen
Standard-Templates von SharePoint (wie z.B. die Teamsite) unterstützen dank der Language Packs direkt die gewählten Sprachen. Kehrt man nach der Änderung der Einstellung in die Site Administration zurück und hat wie ich zwar eine englische Site, aber einen Browser mit deutscher Sprachauswahl, so wird die Site Administration direkt in deutsch angezeigt und auch die Listen, Dokument-Bibliotheken und Spaltenüberschriften erscheinen auf deutsch.

Bei näherer Betrachtung fällt auf, dass es nun im Menü einen neuen Menüpunkt gibt, über den die Anzeigesprache geändert werden kann. Wer sich bereits mit Variations beschäftigt hat, dem sollte dieses Verhalten bekannt vorkommen. Bereits in Microsoft Office SharePoint Server 2007 gab es den Variation Label Picker, der ähnlich funktioniert hat.

Als kleines Beispiel soll eine Liste dienen, die kleinere Projekte verwalten soll – so zum Beispiel den Hausbau von Familie Smith und den Bau einer Hundehütte bei Familie Doe. Da als Standard "English" definiert ist, lege ich auch die neuen Spalten in englisch an. Etwas unschön für die nicht-englischsprachige Anwender ist nun, dass selbst definierte Listenspalten und auch der Listentitel im Menü auch in englisch erscheint. Das lässt sich aber ganz einfach ändern. Dazu navigiert man in die Listeneinstellungen bzw. Spalteneinstellungen, wenn die entsprechende Sprache ausgewählt ist und überschreibt die Werte. Der Effekt ist, dass deutsche Benutzer nun eine fast perfekt übersetzte Seite sehen.

Die Listeninhalte sind natürlich weiterhin in der Sprache, in der sie angelegt wurden und sie sind auch nur in einer Instanz vorhanden – Änderungen wirken sich daher direkt auf andere Sprachen aus.

Aktivierung über die PowerShell
Die Einstellung gilt nur für die entsprechende Site. Besonders bei vielen Subsites ist es daher sinnvoll, eine skriptgesteuerte Variante für die Aktivierung von Mehrsprachigkeit zu haben. Die Einstellungen finden sich im Objekt vom Typ SPWeb. Das folgende Skript ermittelt das Rootweb der angegebenen Site-Collection und fügt die Sprache Deutsch zu den unterstützten Sprachen hinzu – also genau das was auch in der Beschreibung oben über die Benutzeroberfläche gemacht wurde.

Start-SPAssignment -Global

# add german language to alternate languages
$site = Get-SPSite "http://myServer/sites/mhytest"
$web = $site.RootWeb
$web.IsMultilingual = $True
$web.AddSupportedUICulture([System.Globalization.CultureInfo]::GetCultureInfo(1031))
$web.Update()

Stop-SPAssignment -Global;

Einladung zum Treffen der .NET Usergroup Dresden am 21.07.2010

Nach einer durch die Fußball-Weltmeisterschaft bedingten Pause, findet das nächste Treffen der .NET Usergroup am 21. Juli 2010 um 18:00 Uhr im Erdgeschoss der T-Systems MMS statt.

Auch an diesem Abend gibt es wieder zwei interessante Präsentationen:

Dynamic Linq von Martin Hey Anhand eines Beispieles zeige ich, wie man zur Laufzeit Expression-Trees für Linq-Abfragen erstellt, die man dann zur dynamischen Filterung und Sortierung von Objekten verwenden kann. Diese Präsentation musste ja leider aufgrund von Krankheit Anfang des Jahres verschoben werden und wird jetzt nachgeholt.

Buildmanagement & Branching/Merging Strategien mit dem TFS von Robert Mühsig Anhand eines Real Life Projektes, welches aus Windows Diensten, Webservices & ASP.NET Applikationen besteht, zeigt Robert die Verwendung der Team Builds vom Team Foundation Server. Nightly Deployments, Continous Integration und der Einsatz von MSBuild zum Bauen von Paketen werden zusammen mit der Branching & Merging Strategie, die sich in diesem Projekt bewährt haben, vorgestellt.

Wer teilnehmen möchte, trägt sich bitte in die Teilnehmerliste in Doodle oder im Xing ein, damit wir die Raumplanung entsprechend vornehmen können.

Anonymen Zugriff in SharePoint mit PowerShell aktivieren

Um auf einer Site Collection anonymen Zugriff zu aktivieren, sind mehrere Schritte notwendig: Zunächst muss in der Central Administration grundsätzlich der anonyme Zugriff auf der Webanwendung aktiviert werden.

Im Anschluss daran kann man auf den gewünschten Site Collections dieser Webanwendung definieren, ob hier die komplette Site Collection oder Listen anonym erreichbar sein sollen, oder ob dieses Feature ganz unterbunden wird.

Eine gute Beschreibung, wie man der Reihe nach vorgehen muss, um diese Einstellungen über die Weboberfläche vorzunehmen, findet man im Post von Randy Drisgill.

Was über die Benutzeroberfläche geht, geht auch über die PowerShell - dem Tool der Wahl für die Administration des SharePoint über die Kommandozeile, allerdings sind die Einstellungen gut versteckt.

Um die Einstellungen in der Central Administration per Kommandozeile durchzuführen, sind ist das Cmdlet GET-SPWebApplication von zentraler Bedeutung. Ist das passende Objekt vom Typ SPWebApplication dann ermittelt, kann man darüber die SPIisSettings ermitteln, in denen der anonyme Zugriff gesetzt werden kann. Laut MSDN ist im Anschluss noch ein Re-Provisioning notwendig, damit sämtliche Frontendserver aktualisiert werden.

Nach diesem Schritt kann in den gewünschten SPSiteCollections die Eigenschaft AnonymousState des RootWebs auf On gesetzt werden. Hier schlägt die in diesem Punkt gewöhnungsbedüftige Syntax der PowerShell zu, nach der sogenannte Nested Types (wie es SPWeb.WebAnonymousState ist) nicht mit dem ".", sondern mit einem "+" dargestellt werden.

Start-SPAssignment -Global;

# set anonymous access in webapp
$webapp = Get-SPWebApplication "http://myserver";
$webAppZone = [Microsoft.SharePoint.Administration.SPUrlZone]::Default;
$webappsettings = $webapp.GetIisSettingsWithFallback($webAppZone);
$webappsettings.AllowAnonymous = $true;
$webapp.Update()
$webapp.Provision()

# set anonymous access in website
$site = Get-SPSite "http://myserver/sites/mytest";
$web = $site.RootWeb;
$web.AnonymousState = [Microsoft.SharePoint.SPWeb+WebAnonymousState]::On;
$web.Update();

Stop-SPAssignment -Global;

Weiß man all diese Hürden zu umschiffen, hat man im Anschluss ein anonym zugreifbares Portal.