Gewusst wie: Lokalisieren von Siteübersichtsdaten

Aktualisiert: November 2007

Sie können folgende Eigenschaften einer Siteübersicht lokalisieren:

Diese Eigenschaften können Sie lokalisieren, indem Sie einen expliziten oder impliziten Ausdruck als Wert angeben. Weitere Informationen zu Ausdrücken finden Sie unter Übersicht über ASP.NET-Ausdrücke. Informationen über Ressourcendateien finden Sie unter Ressourcen in ASP.NET-Anwendungen.

So lokalisieren Sie den Titel oder die Beschreibung eines Siteübersichtsknotens mithilfe eines expliziten Ausdrucks

  1. Legen Sie in der Siteübersicht die EnableLocalization-Eigenschaft auf true fest. Ändern Sie beispielsweise in der Datei Web.sitemap den <siteMap>-Knoten, wie im folgenden Code dargestellt:

    <siteMap enableLocalization="true">
    
  2. Ändern Sie in der Siteübersicht den Wert der Eigenschaft, die Sie lokalisieren möchten, in eine Ressourcezeichenfolge um, wie etwa in der folgenden Codezeile (Groß-/Kleinschreibung beachten):

    $resources:ClassName,KeyName,DefaultValue
    

    Zum Beispiel könnte der Siteübersichtsknoten in der Datei Web.sitemap wie im folgenden Beispielcode aussehen:

    <siteMapNode 
      url="~/Home.aspx" 
      title="$resources:SiteMapLocalizations,HomePageTitle"
    description="$resources:SiteMapLocalizations,HomePageDescription,Default description"
      myCustomAttribute="$resources: CustomLocalizations,MyCustomAttribute"
    />
    

    Der lokalisierte Titel und die lokalisierte Beschreibung werden aus der Datei SiteMapLocalizations.resx mithilfe des HomePageTitle-Ressourceschlüssels und des HomePageDescription-Ressourceschlüssels ermittelt. Das lokalisierte benutzerdefinierte Attribut wird aus einer anderen Datei mit dem Namen CustomLocalizations.resx ermittelt. Weitere Informationen über Ressourcezeichenfolgen finden Sie unter Übersicht über ASP.NET-Ausdrücke.

  3. Erstellen Sie die RESX-Dateien in einem Verzeichnis mit dem Namen App_GlobalResources im Wurzelverzeichnis Ihrer Anwendung. Innerhalb der RESX-Datei werden einzelne Eigenschaftenwerte anhand des Schlüsselnamens indiziert. Die Datei SiteMapLocalizations.resx für das obige Beispiel könnte wie die Folgende aussehen:

    <?xml version="1.0" encoding="utf-8"?>
    <root>
      <xsd:schema id="root"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xsd:element name="root" msdata:IsDataSet="true">
          <xsd:complexType>
            <xsd:choice maxOccurs="unbounded">
              <xsd:element name="metadata">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" />
                  <xsd:attribute name="type" type="xsd:string" />
                  <xsd:attribute name="mimetype" type="xsd:string" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="assembly">
                <xsd:complexType>
                  <xsd:attribute name="alias" type="xsd:string" />
                  <xsd:attribute name="name" type="xsd:string" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="data">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                    <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
                  <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
                  <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="resheader">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" use="required" />
                </xsd:complexType>
              </xsd:element>
            </xsd:choice>
          </xsd:complexType>
        </xsd:element>
      </xsd:schema>
      <resheader name="resmimetype">
        <value>text/microsoft-resx</value>
      </resheader>
      <resheader name="version">
        <value>2.0</value>
      </resheader>
      <resheader name="reader">
        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <resheader name="writer">
        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <data name="HomePageTitle">
        <value xml:space="preserve">Home Page</value>
      </data>
      <data name="HomePageDescription">
        <value xml:space="preserve">Home page of site</value>
      </data>
    </root>
    
  4. Wenn Sie Zeichenfolgen für mehrere Sprachen lokalisieren möchten, können Sie zusätzliche RESX-Dateien erstellen, deren Gebietsschemainformation im Dateinamen enthalten ist. Zum Beispiel würde die französische Version der Ressourcendatei SiteMapLocalizations.fr.resx heißen.

So lokalisieren Sie den Titel oder die Beschreibung eines Siteübersichtsknotens mithilfe eines impliziten Ausdrucks

  1. Legen Sie in der Siteübersicht die EnableLocalization-Eigenschaft auf true fest. Ändern Sie beispielsweise in der Datei Web.sitemap den <siteMap>-Knoten, wie im folgenden Code dargestellt:

    <siteMap enableLocalization="true">
    
  2. Fügen Sie in Ihrer Siteübersicht zu dem zu lokalisierenden Knoten ein Attribut mit dem Namen resourceKey hinzu. Beachten Sie die Groß-/Kleinschreibung in der folgenden Codezeile:

    resourceKey="HomePage"
    

    Zum Beispiel könnte der <siteMap>-Knoten in der Datei Web.sitemap wie der folgende Code aussehen:

    <siteMapNode 
      url="~/Home.aspx" 
      resourceKey="HomePage"
      title = "Default Title"   
      description = "Default Description" 
     />
    

    Der lokalisierte Titel und die lokalisierte Beschreibung werden aus der Datei Web.sitemap.resx mithilfe des HomePage.title-Ressourceschlüssels und des HomePage.description-Ressourceschlüssels ermittelt.

  3. Erstellen Sie die RESX-Datei in einem Verzeichnis mit dem Namen App_GlobalResources im Wurzelverzeichnis Ihrer Anwendung. Innerhalb der RESX-Datei werden einzelne Eigenschaftenwerte anhand des Namens indiziert. Die Datei Web.sitemap.resx für das obige Beispiel könnte folgendermaßen aussehen.

    Hinweis:

    Schlüsselnamen in globalen Ressourcendateien dürfen keine Punkte (.) enthalten. Punkte sind jedoch in globalen Ressourcen erforderlich, auf die in Siteübersichtsdateien in impliziten Ausdrücken verwiesen wird. Dies liegt an der resourceKey-Syntax. Einige Bearbeitungsumgebungen wie Visual Web Developer zeigen möglicherweise einen Entwurfszeitfehler an, wenn Sie einen Punkt im Schlüsselnamen verwenden. Dies hat jedoch keine Auswirkungen auf die Möglichkeit zum Bearbeiten und Speichern der Datei und kann ignoriert werden.

    <?xml version="1.0" encoding="utf-8"?>
    <root>
      <xsd:schema id="root"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xsd:element name="root" msdata:IsDataSet="true">
          <xsd:complexType>
            <xsd:choice maxOccurs="unbounded">
              <xsd:element name="metadata">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" />
                  <xsd:attribute name="type" type="xsd:string" />
                  <xsd:attribute name="mimetype" type="xsd:string" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="assembly">
                <xsd:complexType>
                  <xsd:attribute name="alias" type="xsd:string" />
                  <xsd:attribute name="name" type="xsd:string" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="data">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                    <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
                  <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
                  <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="resheader">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" use="required" />
                </xsd:complexType>
              </xsd:element>
            </xsd:choice>
          </xsd:complexType>
        </xsd:element>
      </xsd:schema>
      <resheader name="resmimetype">
        <value>text/microsoft-resx</value>
      </resheader>
      <resheader name="version">
        <value>2.0</value>
      </resheader>
      <resheader name="reader">
        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <resheader name="writer">
        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <data name="HomePage.description">
        <value xml:space="preserve">Home Page Description</value>
      </data>
      <data name="HomePage.Text">
        <value xml:space="preserve">Home Page Text from Resource File</value>
      </data>
      <data name="HomePage.title">
        <value xml:space="preserve">Home Page Title from Resource File</value>
      </data>
      <assembly alias="mscorlib" name="mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <data name="LabelResource1.Visible" type="System.Boolean, mscorlib">
        <value>True</value>
      </data>
    </root>
    
  4. Wenn Sie Zeichenfolgen für mehrere Sprachen lokalisieren möchten, können Sie zusätzliche RESX-Dateien erstellen, deren Gebietsschemainformation im Dateinamen enthalten ist. Zum Beispiel würde die französische Version der Ressourcendatei Web.sitemap.fr.resx heißen.

Lokalisieren der URL-Eigenschaft in einer Siteübersicht

Die Url-Eigenschaft kann in einer Siteübersicht nicht auf die gleiche Weise wie die Title-Eigenschaft und die Description-Eigenschaft lokalisiert werden.

So definieren Sie verschiedene Navigationsstrukturen auf Grundlage des Gebietsschemas eines Benutzers

  1. Definieren Sie für jedes Gebietsschema eine eigene Siteübersichtsdatei.

  2. Fügen Sie jede Siteübersicht zur Datei Web.config hinzu. Weitere Informationen hierzu finden Sie unter Gewusst wie: Konfigurieren mehrerer Siteübersichten und Siteübersichtsanbieter.

  3. Schalten Sie zur Laufzeit programmgesteuert zum entsprechenden Provider um. Legen Sie hierzu die SiteMapProvider-Eigenschaft des SiteMapDataSource-Objekts bzw. die SiteMapProvider-Eigenschaft des SiteMapPath-Objekts auf den Namen des Anbieters fest. Weitere Informationen hierzu finden Sie unter Gewusst wie: Programmgesteuertes Ändern von Siteübersichtsknoten im Arbeitsspeicher.

Robuste Programmierung

Explizite und implizite Ausdrücke können nicht in ein- und derselben Siteübersichtsdatei verwendet werden.

Siehe auch

Aufgaben

Gewusst wie: Konfigurieren mehrerer Siteübersichten und Siteübersichtsanbieter

Gewusst wie: Programmgesteuertes Ändern von Siteübersichtsknoten im Arbeitsspeicher

Konzepte

ASP.NET-Siteübersichten

Ressourcen in ASP.NET-Anwendungen

Übersicht über ASP.NET-Ausdrücke

Sichern der ASP.NET-Sitenavigation

Sichern des Datenzugriffs

Referenz

Title

Description

Attributes

Weitere Ressourcen

ASP.NET-Anwendungssicherheit in Hostumgebungen