Freigeben über


Grundlegendes zur MUI (Multilingual User Interface)

Letzte Änderung: Mittwoch, 1. Dezember 2010

Gilt für: SharePoint Foundation 2010

Inhalt dieses Artikels
MUI-Terminologie (Multilingual User Interface)
Aktivieren der Unterstützung für alternative Sprachen
Ändern der Anzeigesprache
Lokalisierung des Anzeigetexts
Hinzufügen von Übersetzungen zu Benutzerressourcen

Die MUI-Funktionalität (Multilingual User Interface) in Microsoft SharePoint Foundation 2010 ermöglicht es den Benutzern, die Sprache der Benutzeroberfläche einer Website zu ändern.

So kann ein Spanisch sprechender Benutzer auf einer englischen Benutzeroberfläche die Sprache in Spanisch ändern. Die Symbol- und Navigationsleisten, Listentitel und Spaltenüberschriften erscheinen dann auf Spanisch. Ähnlich kann ein arabischer Muttersprachler die Benutzeroberfläche in Arabisch ändern. In diesem Fall erscheinen die Symbol- und Navigationsleisten, die Listentitel und Spaltenüberschriften auf Arabisch, und die Website wird nicht mehr in Links-nach-rechts-Ausrichtung, sondern umgekehrt angezeigt.

Damit dies möglich ist, müssen die benötigten Sprachen in Form von Sprachpaketen, die auf den Servern mit SharePoint Foundation 2010 installiert werden, zur Verfügung gestellt werden, und der Besitzer der SharePoint Foundation-Website muss die Sprachen als alternative Sprachen für die Website aktivieren.

Sprachpakete enthalten Übersetzungen für den in SharePoint Foundation 2010 enthaltenen Benutzeroberflächentext. Text, den die Benutzer nach dem Erstellen zu einer Website hinzufügen, kann ebenfalls lokalisiert werden. SharePoint Foundation 2010 bietet zwar keine Unterstützung für die Lokalisierung von Listenelementen, allerdings kann das Chrom einer Liste lokalisiert werden. Dies umfasst den Titel und die Beschreibung der Liste, die Spaltenüberschriften, Namen und Beschreibungen von in der Liste verwendeten benutzerdefinierten Inhaltstypen sowie Anzeigetext, der in Listenmenüerweiterungen verwendet wird. Wenn Sie die Benutzeroberfläche der Website selbst anpassen, indem Sie beispielsweise Knoten zur oberen Navigationsleiste oder zum Schnellstartbereich hinzufügen oder das Menüband mit Erweiterungen versehen, können Sie Übersetzungen für den Anzeigetext dieser neuen Elemente in allen von der Website unterstützten Sprachen hinzufügen. Jeder Benutzeroberflächentext, der angepasst werden kann, unterstützt auch vom Benutzer erstellte Sprachressourcen.

MUI-Terminologie (Multilingual User Interface)

In den folgenden Abschnitten finden Sie Definitionen der Standardterminologie für MUI für SharePoint Foundation.

SKU-Sprache

Die Sprache, in der SharePoint Foundation installiert wurde, wird als SKU-Sprache bezeichnet. Diese Sprache wird von der Anwendung für die Zentraladministration verwendet und ist die Standardsprache, in der Websites und Websitesammlungen in der gesamten Farm erstellt werden.

Sie können die SKU-Sprache mithilfe des SharePoint Foundation-Objektmodells ermitteln. Die statische GlobalServerLanguage-Eigenschaft der SPRegionalSettings-Klasse gibt ein SPLanguage-Objekt mit Informationen zum Anzeigenamen der SKU-Sprache sowie deren Gebietsschema-ID (LCID) zurück. Eine Liste der LCIDs finden Sie in der SPLocale.LCID-Eigenschaft.

Installierte Sprachen

Eine installierte Sprache ist entweder die SKU-Sprache oder eine Sprache, die der Farmadministrator durch Herunterladen und Installieren eines Sprachpakets den Servern in der Farm hinzufügt.

HinweisHinweis

Eine Liste der verfügbaren Sprachpakete finden Sie unter Sprachpakete für SharePoint Foundation 2010.

Die statische GlobalInstalledLanguages-Eigenschaft der SPRegionalSettings-Klasse gibt ein SPLanguageCollection-Objekt zurück, das Sie zur Ermittlung der installierten Sprachpakete aufzählen können. Jedes SPLanguage-Objekt in der Sammlung enthält Informationen zum Anzeigenamen und zur LCID für eine installierte Sprache.

Standardsprache

Websitebesitzer oder Administratoren einer Websitesammlung können beim Erstellen von Websites oder neuen Websitesammlungen eine Sprache auswählen. Diese Auswahl wird die Standardsprache für die neue Website bzw., im Fall einer neuen Websitesammlung, die Standardsprache der Stammwebsite. Die Standardsprache wird für Text auf der Benutzeroberfläche verwendet, der beim Bereitstellen einer Website automatisch erzeugt wird. Außerdem wird diese Sprache für nicht übersetzten Benutzeroberflächentext verwendet, der einer Website hinzugefügt wird, die mehrere Sprachen unterstützt.

Die UICulture-Eigenschaft der SPWeb-Klasse gibt ein CultureInfo-Objekt mit Informationen zur Standardsprache zurück.

Alternative Sprachen

Der Besitzer einer Website kann angeben, welche der installierten Sprachen von der Website unterstützt werden. Besucher der Website können dann die Anzeigesprache der Benutzeroberfläche in jede beliebige der alternativen Sprachen ändern.

Die SupportedUICultures-Eigenschaft der SPWeb-Klasse gibt eine aufzählbare Sammlung von CultureInfo-Objekten mit Informationen zu den von der Benutzeroberfläche der Website unterstützten Sprachen zurück. Diese Sammlung enthält ein Objekt für die Standardsprache sowie Objekte für die alternativen Sprachen.

HinweisHinweis

Wenn MUI für eine Website nicht aktiviert wurde, enthält die von der SupportedUICultures-Eigenschaft zurückgegebene Sammlung nur ein einziges CultureInfo-Objekt für die Standardsprache. Sie können feststellen, ob MUI aktiviert ist, indem Sie den Wert der IsMultilingual-Eigenschaft abrufen.

Benutzerressourcen

Hinter jedem Benutzeroberflächentext in SharePoint Foundation, der angepasst werden kann, steht eine Sammlung mit je einer Zeichenfolge für jede von der Website unterstützte Sprache. Eine Sammlung von durch Benutzer erstellten, lokalisierbaren Zeichenfolgen wird als Benutzerressource bezeichnet.

Im SharePoint Foundation-Objektmodell wird eine Benutzerressource durch eine Instanz der SPUserResource-Klasse repräsentiert. Beispielsweise wird der Anzeigetext für einen Listentitel von der Title-Eigenschaft des SPList-Objekts bereitgestellt, das die Liste repräsentiert. Die Title-Eigenschaft wiederum erhält ihren Wert von einem SPUserResource-Objekt, das von der TitleResource-Eigenschaft der Liste zurückgegeben wird.

Wenn einer Website nach dem Erstellen neuer Benutzeroberflächentext hinzugefügt wird, gibt das SPUserResource-Objekt für den Text für alle Sprachen solange denselben Wert (den Anfangswert) zurück, bis jemand Übersetzungen hinzufügt.

HinweisHinweis

Benutzerressourcen sind nicht mit Sprachressourcendateien (RESX) identisch. Sprachressourcendateien sind sprachspezifisch. Sie enthalten zahlreiche Textelemente in einer Sprache. SPUserResource-Objekte sind hingegen textspezifisch. Sie enthalten die Darstellung eines einzigen Textelements in mehreren Sprachen.

Aktivieren der Unterstützung für alternative Sprachen

Der Besitzer einer Website kann MUI auf der Seite Spracheinstellungen (/_layouts/muisetng.aspx) über die Benutzeroberfläche aktivieren. (Klicken Sie auf Websiteaktionen und dann auf Websiteeinstellungen. Klicken Sie unter Websiteadministration auf Spracheinstellungen.) Die installierten Sprachen sind in der Gruppe Alternative Sprache(n) aufgeführt. Die derzeit von der Website unterstützten alternativen Sprachen sind mit einem Häkchen im Kontrollkästchen neben ihrem Namen gekennzeichnet. Sie können Unterstützung für eine Sprache hinzufügen oder entfernen, indem Sie das entsprechende Kontrollkästchen aktivieren oder deaktivieren.

Mithilfe des SharePoint Foundation-Objektmodells können Sie dies ebenfalls erreichen. Rufen Sie hierfür einen Verweis auf ein SPWeb-Objekt ab, legen Sie dessen IsMultilingual-Eigenschaft auf true fest, und rufen Sie dann die AddSupportedUICulture-Methode auf, um Unterstützung für eine oder mehrere alternative Sprachen hinzuzufügen, oder die RemoveSupportedUICulture-Methode, um die Unterstützung zu entfernen. Die Vorgehensweise zum Hinzufügen der Unterstützung für alternative Sprachen wird von der folgenden Konsolenanwendung verdeutlicht:

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Microsoft.SharePoint;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.RootWeb)
                {

                    // A website can be created from a template that does not support MUI.
                    SPWebTemplateCollection templates = site.GetWebTemplates(web.Language);
                    SPWebTemplate template = templates[web.WebTemplate];
                    if (template.SupportsMultilingualUI)
                    {

                        // Enable MUI.
                        web.IsMultilingual = true;

                        // Add support for any installed language currently not supported.
                        SPLanguageCollection installed = SPRegionalSettings.GlobalInstalledLanguages;
                        IEnumerable<CultureInfo> supported = web.SupportedUICultures;

                        foreach (SPLanguage language in installed)
                        {
                            CultureInfo culture = new CultureInfo(language.LCID);

                            if (!supported.Contains(culture))
                            {
                                Console.WriteLine("Adding {0}", culture.Name);
                                web.AddSupportedUICulture(culture);
                            }
                        }
                        web.Update();
                    }
                }
            }
            Console.Write("\nPress ENTER to continue....");
            Console.Read();
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Threading
Imports Microsoft.SharePoint

Module ConsoleApp

    Sub Main()
        Using site As New SPSite("https://localhost")
            Using web As SPWeb = site.RootWeb

                ' A website can be created from a template that does not support MUI.
                Dim templates As SPWebTemplateCollection = site.GetWebTemplates(web.Language)
                Dim template As SPWebTemplate = templates(web.WebTemplate)

                If template.SupportsMultilingualUI Then

                    ' Enable MUI.
                    web.IsMultilingual = True

                    ' Add support for any installed language currently not supported.
                    Dim installed As SPLanguageCollection = SPRegionalSettings.GlobalInstalledLanguages
                    Dim supported As IEnumerable(Of CultureInfo) = web.SupportedUICultures

                    For Each language As SPLanguage In installed
                        Dim culture As New CultureInfo(language.LCID)

                        If Not supported.Contains(culture) Then
                            Console.WriteLine("Adding {0}", culture.Name)
                            web.AddSupportedUICulture(culture)
                        End If
                    Next
                    web.Update()
                End If

            End Using
        End Using
        Console.Write(vbCrLf & "Press ENTER to continue....")
        Console.Read()
    End Sub

End Module

Die Konsolenanwendung überprüft, ob die Website auf einer Webvorlage basiert, die MUI unterstützt. Es ist möglich, eine Webvorlage zu erstellen, die keine alternativen Sprachen unterstützt. Weitere Informationen finden Sie im SupportsMultilingualUI-Attribut im Configuration-Element (Website) und in der SupportsMultilingualUI-Eigenschaft der SPWebTemplate-Klasse.

Der Einfachheit halber umschließt die Konsolenanwendung den Code zum Festlegen der IsMultilingual-Eigenschaft nicht mit einem try-catch-Block. Eigentlich ist dies aber notwendig. Beim Versuch, die IsMultilingual-Eigenschaft auf true festzulegen, wird eine SPException-Ausnahme ausgelöst, wenn die Website angepasste Cascading Stylesheets (CSS) enthält. Auf einer Website, die angepasste CSS-Dateien verwendet, ist es nicht möglich, die Unterstützung für alternative Sprachen zu aktivieren.

Eine allgemeine Aufgabe, die der Vorgehensweise im letzten Beispiel sehr ähnlich ist, ist die Replikation der alternativen Sprachen einer Website in eine Unterwebsite. Dies ist deshalb erforderlich, weil jede neue Website mit einer Standardsprache, aber ohne alternative Sprachen erstellt wird. Zum Replizieren der Unterstützung alternativer Sprachen von einer Website auf eine Unterwebsite wird die von der SupportedUICultures-Eigenschaft der übergeordneten Website zurückgegebene Sammlung aufgezählt und der untergeordneten Website durch Aufrufen ihrer AddSupportedUICulture-Methode Unterstützung für jede Kultur hinzugefügt.

Ändern der Anzeigesprache

Wenn in SharePoint Foundation 2010 ein Benutzer eine mehrsprachige Website besucht, verwendet die Website den Accept-Language-Header, den der Clientbrowser zusammen mit der HTTP-Anforderung sendet, um die Sprache zu ermitteln, in der die Benutzeroberfläche gerendert werden soll. Sollte die Website keine der vom Browser angegebenen Sprachen unterstützen, wird die Standardsprache als Anzeigesprache verwendet.

Bei einer mehrsprachigen Website erscheint in der rechten oberen Ecke neben dem Benutzernamen ein Dropdownmenü, über das der Benutzer eine Anzeigesprache auswählen kann. Wenn jemand eine andere Sprache als die aktuelle Anzeigesprache auswählt, wechselt die Website zur neuen Sprache. Die Voreinstellung des Benutzers wird in einem Cookie permanent gespeichert, das auf dem Clientcomputer abgelegt wird. Die Website ruft die bevorzugte Sprache des Benutzers bei jedem nachfolgenden Besuch aus dem Cookie ab.

Die Benutzeroberfläche zum Abrufen der Spracheinstellung des Benutzers wird oben auf den meisten Seiten mit einem PersonalActions-Steuerelement implementiert. Mit diesem Steuerelement wird die Page.RegisterStartupScript-Methode aufgerufen, um das folgende Markup im HTML-Code zu platzieren, der an den Clientbrowser gesendet wird.

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

Nachdem eine Anzeigesprache ermittelt wurde, wird in SharePoint Foundation ein Thread zur Verarbeitung der Anfrage gestartet und die Thread.CurrentUICulture-Eigenschaft auf die gewählte Sprache festgelegt. Wenn Sie Code schreiben, der auf dem Server ausgeführt wird (beispielsweise in einem Webpart), können Sie die Anzeigesprache für den aktuellen HTTP-Kontext über die statische CultureInfo.CurrentUICulture-Eigenschaft abrufen.

Beim folgenden Beispiel handelt es sich um eine einfache Konsolenanwendung, die demonstriert, wie sich der Wechsel der Anzeigesprache auf den angezeigten Text auswirkt. Die Anwendung zählt die Liste der von einer Website unterstützten Kulturen auf, legt den Wert der CurrentUICulture-Eigenschaft des aktuellen Threads auf jede unterstützte Kultur fest und druckt den Titel der Website so aus, wie er in der aktuellen Anzeigesprache dargestellt wird.

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Threading;
using Microsoft.SharePoint;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.RootWeb)
                {
                    if (web.IsMultilingual)
                    {
                        IEnumerable<CultureInfo> cultures = web.SupportedUICultures;
                        foreach (CultureInfo culture in cultures)
                        {
                            // Change the UI culture of the thread.
                            Thread.CurrentThread.CurrentUICulture = culture;
 
                            // Print the name of the current language and the web title in the current language.
                            Console.WriteLine("{0}  {1}", CultureInfo.CurrentUICulture.Name, web.Title); 
                        }
                    }
                }
            }
            Console.WriteLine("\nPress ENTER to continue....");
            Console.Read();
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Threading
Imports Microsoft.SharePoint

Module ConsoleApp

    Sub Main()
        Using site As New SPSite("https://localhost")
            Using web As SPWeb = site.RootWeb

                If web.IsMultilingual Then
                    Dim cultures As IEnumerable(Of CultureInfo) = web.SupportedUICultures
                    For Each culture As CultureInfo In cultures

                        ' Change the UI culture of the thread.
                        Thread.CurrentThread.CurrentUICulture = culture

                        ' Print the name of the current language and the web title in the current language.
                        Console.WriteLine("{0}  {1}", CultureInfo.CurrentUICulture.Name, web.Title)
                    Next
                End If

            End Using
        End Using
        Console.Write(vbCrLf & "Press ENTER to continue....")
        Console.Read()
    End Sub

End Module

Lokalisierung des Anzeigetexts

Lokalisierte Sprachressourcen für von Microsoft bereitgestellten Benutzeroberflächentext werden in Form von kulturspezifischen Ressourcendateien bereitgestellt, die auf jedem Webserver in der Farm installiert werden. Wenn eine neue Website erstellt wird, öffnet SharePoint Foundation eine Ressourcendatei für die Standardsprache der Website, sucht den benötigten Text und speichert ihn mit den Objekten, die den Anzeigetext für die Benutzeroberfläche repräsentieren. Wenn der Website alternative Sprachen hinzugefügt werden, werden mit derselben Vorgehensweise die Übersetzungen für den von Microsoft bereitgestellten Benutzeroberflächentext abgerufen.

Für jedes Benutzeroberflächenelement, das von Benutzern angepasst werden kann, gibt es eine Benutzerressource, ein SPUserResource-Objekt, in dem von Benutzern bereitgestellte Übersetzungen für jede von der Website unterstützte Sprache gespeichert werden können. Beispielsweise stellt die Title-Eigenschaft eines SPField-Objekts den Anzeigenamen für eine Spalte einer Liste bereit. Diese Eigenschaft hängt eng mit TitleResource zusammen, einer schreibgeschützten Eigenschaft, die ein SPUserResource-Objekt zurückgibt. Beim Abrufen gibt die Title-Eigenschaft TitleResource.Value zurück. Beim Festlegen legt die Title-Eigenschaft TitleResource.Value fest. In anderen Worten entspricht das Abrufen oder Festlegen der Title-Eigenschaft eines SPField-Objekts dem Abrufen oder Festlegen der Value-Eigenschaft eines SPUserResource-Objekts.

Die SPUserResource.Value-Eigenschaft ist äußerst interessant. Der Quellcode der Eigenschaft sieht in etwa folgendermaßen aus:

public string Value 
{
    get
    {
        return GetValueForUICulture(Thread.CurrentThread.CurrentUICulture);
    }
    set
    {
        SetValueForUICulture(Thread.CurrentThread.CurrentUICulture, value);
    }
}

Durch das Abrufen und Festlegen der Value-Eigenschaft wird eine von zwei öffentlichen Methoden der SPUserResource-Klasse aufgerufen: GetValueForUICulture oder SetValueForUICulture. In beiden Fällen wird ein CultureInfo-Objekt übergeben, das die Kultur des aktuellen Threads repräsentiert.

Die SPUserResource-Klasse verwaltet ein Wörterbuch, das verschiedene Schlüssel (Sprachen) einem Satz von Werten (Übersetzungen) zuordnet. Die Methoden GetValueForUICulture und SetValueForUICulture suchen die Wörterbucheinträge nach Sprache und rufen den Zeichenfolgenwert für die betreffende Sprache ab bzw. legen ihn fest.

Anfangswerte für Benutzerressourcen

Neue SPUserResource-Objekte erhalten beim Erstellen mindestens einen Wert: den Wert für die Standardsprache der Website. Der für die Standardsprache verwendete Wert muss jedoch nicht unbedingt in der Standardsprache vorliegen. Es kann eine beliebige Zeichenfolge sein, die zum Erstellen des Anzeigetexts für die Benutzerressource verwendet wird, und zwar in der Sprache, die beim Erstellen des Anzeigetexts eben verwendet wurde.

Wenn beispielsweise ein Benutzer eine neue Liste erstellt, muss eine Zeichenfolge mit dem Listentitel als Argument an den Konstruktor für die SPList-Klasse übergeben werden. Wenn die TitleResource-Eigenschaft im SPList-Objekt initialisiert wird, wird dieselbe Titelzeichenfolge als Argument an den Konstruktor für ein SPUserResource-Objekt übergeben. Durch Code im SPUserResource-Konstruktor wird ein Anfangseintrag im Wertewörterbuch des Objekts erstellt, wobei die Standardsprache der Website als Schlüssel für den Eintrag verwendet wird und die Titelzeichenfolge als Anfangswert.

Dieser Anfangswert gewinnt an Bedeutung, wenn er der einzige Wert für die Benutzerressource ist. Die GetValueForUICulture-Methode gibt den Wert für die Standardsprache zurück, wenn ein beliebiger Aufruf der Methode eine Sprache angibt, die nicht im Wörterbuch der Sprache vorhanden ist. Dies hat zur Folge, dass der Wert der Standardsprache für sämtlichen unübersetzten Text verwendet wird.

Objekte, die Benutzerressourcen verbrauchen, können mit Werten aus sprachspezifischen Ressourcendateien (RESX) initialisiert werden, wenn die Objekte von einem Feature erstellt werden, von dem auch die Ressourcendateien bereitgestellt werden. Weitere Informationen finden Sie unter Lokalisieren von SharePoint-Lösungen.

Benutzeroberflächenelemente, die Benutzerressourcen verbrauchen

Das SharePoint FoundationObjektmodell umfasst sechs Klassen, deren Eigenschaften ein SPUserResource-Objekt zurückgeben:

Die folgende Tabelle enthält eine Liste der Eigenschaften, die SPUserResource-Objekte zurückgeben, sowie eine Beschreibung der Stellen, an denen die Ressourcen verbraucht werden.

Eigenschaft

Beschreibung

SPContentType.DescriptionResource

Die Quelle für die von der SPContentType.Description-Eigenschaft zurückgegebene Zeichenfolge, die den Text zur Beschreibung des Inhaltstyps bereitstellt.

SPContentType.NameResource

Die Quelle für die von der SPContentType.Name-Eigenschaft zurückgegebene Zeichenfolge, die den Anzeigenamen für einen Inhaltstyp bereitstellt.

SPField.DescriptionResource

Die Quelle für die von der SPField.Description-Eigenschaft zurückgegebene Zeichenfolge, die den Text zur Beschreibung der Spalte bereitstellt.

SPField.TitleResource

Die Quelle für die von der SPField.Title-Eigenschaft zurückgegebene Zeichenfolge, die den Anzeigenamen der Spalte bereitstellt.

SPList.DescriptionResource

Die Quelle für die von der SPList.Description-Eigenschaft zurückgegebene Zeichenfolge, die den Text zur Beschreibung der Liste bereitstellt.

SPList.TitleResource

Die Quelle für die von der SPList.Title-Eigenschaft zurückgegebene Zeichenfolge, die den Anzeigenamen der Liste bereitstellt.

SPNavigationNode.TitleResource

Die Quelle für die von der SPNavigationNode.Title-Eigenschaft zurückgegebene Zeichenfolge, die den Anzeigenamen eines Navigationsknotens bereitstellt.

SPUserCustomAction.CommandUIExtensionResource

Die Quelle für die von der SPUserCustomAction.CommandUIExtension-Eigenschaft zurückgegebene Zeichenfolge, die eine XML-Repräsentation einer benutzerdefinierten Aktion bereitstellt, die auf dem Menüband verwendet wird.

SPUserCustomAction.DescriptionResource

Die Quelle für die von der SPUserCustomAction.Description-Eigenschaft zurückgegebene Zeichenfolge, die den Text zur Beschreibung eines benutzerdefinierten Steuerelements mit website-, web- oder listenweitem Geltungsbereich bereitstellt.

SPUserCustomAction.TitleResource

Die Quelle für die von der SPUserCustomAction.Title-Eigenschaft zurückgegebene Zeichenfolge, die den Anzeigetext zur Beschreibung eines benutzerdefinierten Steuerelements mit website-, web- oder listenweitem Geltungsbereich bereitstellt.

SPWeb.DescriptionResource

Die Quelle für die von der SPWeb.Description-Eigenschaft zurückgegebene Zeichenfolge, die den Text zur Beschreibung einer Website bereitstellt.

SPWeb.TitleResource

Die Quelle für die von der SPWeb.Title-Eigenschaft zurückgegebene Zeichenfolge, die den Anzeigenamen für eine Website bereitstellt.

Zwei zusätzliche Eigenschaften geben Sammlungen von Benutzerressourcen in einem SPUserResourceCollection-Objekt zurück. Die SPList-Klasse enthält eine UserResources-Eigenschaft mit SPUserResource-Objekten, die lokalisierbare Ressourcen aufweisen, die von der Liste sowie von Feldern, Inhaltstypen und benutzerdefinierten Aktionen verwendet werden, die mit der Liste verknüpft sind. Wenn der Anzeigetext für diese Objekte nicht angepasst wurde, gibt die UserResources-Eigenschaft eine leere Sammlung zurück. In der Regel ist der Anzeigetext für Standardlisten wie Ankündigungen und Freigegebene Dokumente nicht angepasst. Die UserResources-Eigenschaften für diese Listen geben entsprechend häufig leere Sammlungen zurück.

Die UserResources-Eigenschaft der SPWeb-Klasse hat eine ähnliche Funktion, indem sie eine Sammlung von SPUserResource-Objekten mit lokalisierbaren Ressourcen zurückgibt, die von den Websites sowie von Websitespalten, Inhaltstypen, Navigationsknoten und mit der Website verknüpften benutzerdefinierten Aktionen eines Benutzers verwendet werden. Die in der Sammlung zurückgegebenen Objekte repräsentieren nur Anzeigetext, der von Benutzern (einschließlich Entwicklern und Administratoren) der Website angepasst wurde.

Gemischte Sprachen

Verschiedene Umstände können zur Folge haben, dass eine Website eine Mischung aus mehreren verschiedenen Sprachen aufweist. Einer davon ist ganz offensichtlich, wenn Benutzer die Website anpassen, indem sie neue Elemente (beispielsweise eine neue Liste oder einen neuen Navigationsknoten) hinzufügen, ohne Übersetzungen für die mit diesen Elementen verknüpfte Benutzerressource bereitzustellen.

Ein weiterer Fall einer gemischtsprachigen Benutzeroberfläche kann bei bestimmten integrierten Elementen der Benutzeroberfläche auftreten. Fehlermeldungen, Benachrichtigungen und manche Dialogfelder werden u. U. nicht in der aktuellen Anzeigesprache angezeigt. Der Grund hierfür ist, dass sich SharePoint Foundation auf mehrere zugrunde liegende Technologien stützt, beispielsweise auf Microsoft .NET Framework, Windows Workflow Foundation und Microsoft ASP.NET, die zum Teil nicht in alle Sprachen lokalisiert wurden. Wenn ein Benutzeroberflächenelement, das von einer der zugrunde liegenden Technologien generiert wird, nicht in der Sprache verfügbar ist, die vom Websitebenutzer für die Website angegeben wurde, wird es in der Sprache angezeigt, in der die unterstützende Technologie installiert wurde (also in der SKU-Sprache).

Und schließlich kann eine gemischte Benutzeroberflächensprache auch bei einigen Elementen der administrativen Benutzeroberfläche auftreten. In einigen wenigen Fällen wird der Benutzeroberflächentext möglicherweise in der Sprache angezeigt, in der SharePoint Foundation installiert wurde. Dieses Phänomen ist in der Regel nur für Websitebesitzer oder Administratoren sichtbar, nicht aber für Websitebenutzer.

Hinzufügen von Übersetzungen zu Benutzerressourcen

Am einfachsten lässt sich eine Übersetzung zur Benutzerressource für einen benutzerdefinierten Benutzeroberflächentext hinzufügen, indem ein zweisprachiger Benutzer die Website besucht, zu einer der alternativen Sprachen wechselt und den Text direkt in der administrativen Benutzeroberfläche übersetzt. Zum Übersetzen des Titels und der Beschreibung einer Liste klickt der Benutzer beispielsweise auf dem Menüband auf Listeneinstellungen und dann unter Allgemeine Einstellungen auf Titel, Beschreibung und Navigation. Anschließend bearbeitet er den Text in den Feldern Name und Beschreibung. Änderungen in einer alternativen Sprache werden als Wert für die betreffende Sprache in der Benutzerressource für den entsprechenden Text gespeichert.

Der Besitzer einer Website kann die Benutzerressourcen auch alle auf einmal übersetzen lassen. Hierzu exportiert er die unübersetzten Zeichenfolgen für jede von der Website unterstützte Sprache in eine Ressourcendatei (RESX). Die Ressourcendatei kann anschließend an die Übersetzer übergeben und von diesen offline bearbeitet werden. Nach Abschluss der Übersetzung kann der Besitzer die Ressourcendateien importieren. Die Übersetzungen werden von SharePoint Foundation den korrekten Benutzerressourcen hinzugefügt.

Der Export kann auf der Benutzeroberfläche über die Seite Übersetzungen exportieren (_layouts/exporttranslations.aspx) durchgeführt werden. Die fertigen Übersetzungen können über die Seite Übersetzungen importieren (_layouts/importtranslations.aspx) importiert werden. Alternativ können Sie für beide Vorgänge eigenen Code schreiben. Der Code kann die ExportUserResources-Methode der SPWeb-Klasse aufrufen und das Ergebnis in einer Ressourcendatei speichern. Die übersetzten Zeichenfolgen können dann durch einen Aufruf der ImportUserResources-Methode importiert werden. Beispielcode finden Sie in der Dokumentation für die beiden Methoden.

Eine aus Entwicklersicht bessere Lösung besteht darin, die Übersetzungen im Voraus anzufertigen, noch bevor ein neues Feature auf einer mehrsprachigen Website bereitgestellt wird. Sie können sprachspezifische Ressourcendateien erstellen, in Collaborative Application Markup Language (CAML) auf sie verweisen, sie in einer SharePoint-Lösung verpacken und dann auf einer Website oder in einer Websitesammlung bereitstellen. SharePoint Foundation kann mithilfe der Ressourcendateien dann die SPUserResource-Objekte auffüllen, die von dem Feature erstellt werden. Weitere Informationen finden Sie unter Lokalisieren von SharePoint-Lösungen.

Zulassen, dass Änderungen Übersetzungen überschreiben

Auf der Seite Spracheinstellungen (_layouts/muisetng.aspx) haben Websitebesitzer die Möglichkeit, vorhandene Übersetzungen für alternative Sprachen zu überschreiben, wenn in der Standardsprache Änderungen vorgenommen werden. Über die Optionsfelder Ja und Nein auf der Seite wird die OverwriteTranslationsOnChange-Eigenschaft der SPWeb-Klasse auf true oder false festgelegt. Die Standardeinstellung ist false (Nein auf der Benutzeroberfläche).

Wenn die OverwriteTranslationsOnChange-Eigenschaft auf true (Ja auf der Benutzeroberfläche) festgelegt wird und beispielsweise ein Benutzer, der in der Standardsprache arbeitet, den Text der Überschrift für eine Listenspalte ändert, werden alle Werte der TitleResource-Eigenschaft, aus der die Spaltenüberschrift bezogen wird, automatisch zurückgesetzt. Vorhandene Übersetzungen für alternative Sprachen werden vom neuen Text in der Standardsprache überschrieben. Für den Text sind dann also keine Übersetzungen mehr vorhanden.

Wenn die Eigenschaft false zurückgibt, bleiben Übersetzungen für alternative Sprachen erhalten, wenn die Version in der Standardsprache geändert wird. In diesem Fall passt der Text in der alternativen Sprache u. U. nicht mehr als Übersetzung für den Originaltext in der Standardsprache.

Die Entscheidung liegt also tatsächlich darin, ob der Text leichter verständlich (Auswahl von Nein) oder besonders genau (Auswahl von Ja) sein soll.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Lokalisieren eines Webparts

Exemplarische Vorgehensweise: Lokalisieren von Spalten, Inhaltstypen und Listen

Referenz

SupportsMultilingualUI

SPWeb.IsMultilingual

SPWeb.Language

Thread.CurrentUICulture