Oft ist Mehrsprachigkeit ein wichtiges Thema bei der Umsetzung großer Portale. Im SharePoint WebCMS wird Mehrsprachigkeit durch Variationen abgedeckt. Der Inhalt einer Hauptvariation wird automatisch dupliziert und in eine parallele Inhaltsstruktur überführt. Dort kann der Inhalt in die jeweilige Sprache übersetzt werden. Im Collaboration-Umfeld sind Variationen allerdings nicht verfügbar! Um die Zusammenarbeit an Dokumenten auch über Sprachgrenzen hinaus zu ermöglichen, ist es in SharePoint 2010 möglich, die Oberflächen Sprache zur Laufzeit umzuschalten (Multi Language UI kurz MUI).

Sind auf einem SharePoint-System mehrere Sprachen installiert, dann können diese zur Umschaltung der Oberfläche freigeschaltet werden.

 10-01-12_01

Alternative Oberflächensprachen auswählen:

 10-01-12_02

Wurden alternative Sprachen ausgewählt, dann können diese mit dem out-of-the-box Sprachumschalter gesetzt werden.

 10-01-12_03

Dieser Sprachumschalter funktioniert natürlich einwandfrei, ist aber in Punkto Handhabung nicht der Komfortabelste. Er liegt versteckt und ist als “Fly out” realisiert.

Etwas praktischer und offensichtlicher ist es, das Umschalten der Oberflächensprache mit einem eigenen Control zu realisieren. In etwa in dieser Form:

 10-01-12_04

Einen eigenen Sprachumschalter zu implementieren, ist aufwandstechnischen keine große Sache. Ich wähle dazu immer gerne ein User Control (ASCX) mit einem Repeater und einer ObjectDataSource. Der Repeater rendert die Flaggen für alle Sprachen, die ihm die ObjectDataSource liefert.

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UiLanguageSwitchControl.ascx.cs" Inherits="HanseVision.Demo.UiLanguageSwitchControl" %>

<script language="javascript">

    function ChangeUiLanguage(value) {
        var today = new Date();
        var oneYear = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000);
        document.cookie = "lcid=" + value + ";path=/;expires=" + oneYear.toGMTString();
        var url = window.location.href;
        window.location.href = url;
    }
    
</script>

<asp:Repeater ID="LanguageSwitch" runat="server" DataSourceID="ObjectDataSourceUiLanguages">
<ItemTemplate>
    <img src='<%# Eval("ImgUrl") %>' onclick="ChangeUiLanguage(<%# Eval("Locale") %>)" title="Switch to language: <%# Eval("Locale") %>" />
</ItemTemplate>
</asp:Repeater>

<asp:ObjectDataSource ID="ObjectDataSourceUiLanguages" runat="server" EnableViewState="false"
    TypeName="HanseVision.Demo.Controls.UiLanguageSwitchControl, HanseVision.Demo.LanguageSwitching, Version=1.0.0.0, Culture=neutral, PublicKeyToken=11e99323d9a1fb04" 
    SelectMethod="GetUiLanguages">
       <SelectParameters>
        </SelectParameters>
</asp:ObjectDataSource>

Durch das Aufrufen der JavaScript-Funktion beim Selektieren einer Flagge wird die Oberflächensprache via Cookie gesetzt und bleibt dadurch auch beim Verlassen der Websitesammlung bestehen (1 Jahr lang).

Die Logik, die die verfügbaren Sprachen ausliest und an die Oberfläche (Repeater) durchreicht, ist ebenfalls kein Hexenwerk:

 public List&lt;UiData&gt; GetUiLanguages()
        {
            List&lt;UiData&gt; languages = new List&lt;UiData&gt;();

            if (SPContext.Current.Web.IsMultilingual)
            {
                foreach (CultureInfo language in SPContext.Current.Web.SupportedUICultures)
                {
                    UiData languageData = new UiData();
                    languageData.ImgUrl = GetMappedFlagImg(language.TwoLetterISOLanguageName);
                    languageData.Locale = language.LCID.ToString();

                    languages.Add(languageData);
                }
            }
            else
            {
                // no other languages available
            }

            return languages;
        }

In einer zentralen XML-Datei habe ich die Dateipfade zu den Flaggen mit den Sprachkürzel (bspw. ‘DE’) verknüpft. Diese wird beim Ausrollen der Lösung automatisch mit in das 14 Hive gelegt.

Wie dieser Artikel zeigt, lässt sich mit ganz einfachen Mitteln die Usebility von SharePoint 2010 noch weiter optimieren und steigert somit die Akzeptanz beim Kunden.

Leave a comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.