Partager via


Comment : localiser les données sitemap

Mise à jour : novembre 2007

Vous pouvez localiser les propriétés suivantes dans un plan de site :

Ces propriétés sont localisées en utilisant une expression explicite ou implicite comme valeur de la propriété. Pour plus d'informations sur les expressions, consultez Vue d'ensemble des expressions ASP.NET. Pour plus d'informations sur les fichiers de ressources, consultez Ressources dans les applications ASP.NET.

Pour localiser les propriétés Titre ou Description d'un nœud sitemap en utilisant une expression explicite

  1. Dans votre plan de site, affectez à la propriété EnableLocalization la valeur true. Par exemple, dans un fichier Web.sitemap, modifiez le nœud <siteMap> pour qu'il ressemble au code suivant :

    <siteMap enableLocalization="true">
    
  2. Dans votre plan de site, modifiez la valeur de la propriété que vous souhaitez localiser en lui affectant une chaîne de ressource, tel que la ligne de code suivante, qui respecte la casse :

    $resources:ClassName,KeyName,DefaultValue
    

    Par exemple, votre nœud sitemap peut ressembler à l'exemple de code suivant dans un fichier Web.sitemap.

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

    Le titre et la description localisés sont obtenus à partir d'un fichier appelé SiteMapLocalizations.resx, à l'aide des clés de ressource HomePageTitle et HomePageDescription. L'attribut personnalisé localisé est obtenu à partir d'un fichier séparé appelé CustomLocalizations.resx. Pour plus d'informations sur les chaînes de ressource, consultez Vue d'ensemble des expressions ASP.NET.

  3. Créez vos fichiers .resx dans un dossier appelé App_GlobalResources dans la racine de votre application. Dans le fichier .resx, les valeurs de propriété individuelles sont indexées par la valeur du nom de la clé. Pour l'exemple précédent, le fichier SiteMapLocalizations.resx peut ressembler aux éléments suivants.

    <?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. Si vous devez localiser des chaînes pour plusieurs langues, vous pouvez créer des fichiers .resx supplémentaires incluant les informations de paramètres régionaux dans leur nom. Ainsi, la version française de votre fichier de ressources s'appellerait SiteMapLocalizations.fr.resx.

Pour localiser les propriétés Titre ou Description d'un nœud sitemap en utilisant une expression implicite

  1. Dans votre plan de site, affectez à la propriété EnableLocalization la valeur true. Par exemple, dans un fichier Web.sitemap, modifiez le nœud <siteMap> pour qu'il ressemble au code suivant :

    <siteMap enableLocalization="true">
    
  2. Dans votre plan de site, ajoutez un attribut appelé resourceKey au nœud sitemap que vous souhaitez localiser en utilisant la ligne de code suivante, qui respecte la casse :

    resourceKey="HomePage"
    

    Par exemple, votre nœud <siteMap> peut ressembler au code suivant dans un fichier Web.sitemap :

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

    Le titre et la description localisés sont obtenus à partir d'un fichier appelé Web.sitemap.resx, à l'aide des clés de ressource HomePage.title et HomePage.description.

  3. Créez votre fichier .resx dans un dossier appelé App_GlobalResources dans la racine de votre application. Dans le fichier .resx, les valeurs de propriété individuelles sont indexées par le nom. Pour l'exemple précédent, le fichier Web.sitemap.resx peut présenter l'aspect suivant :

    Remarque :

    Les noms de clés des fichiers de ressources globales ne doivent pas comporter de point (.). Cependant, les points sont nécessaires dans les ressources globales qui sont référencées dans les fichiers sitemap lors de l'utilisation d'expressions implicites. Cette nécessité est due à la syntaxe resourceKey. Dans certains environnements d'édition, comme Visual Web Developer, vous pouvez obtenir une erreur au moment du design si le nom de la clé comporte un point. Toutefois, celle-ci ne devrait pas affecter la modification ou l'enregistrement du fichier, et peut être ignorée.

    <?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. Si vous devez localiser des chaînes pour plusieurs langues, vous pouvez créer des fichiers .resx supplémentaires incluant les informations de paramètres régionaux dans leur nom. Ainsi, la version française de votre fichier de ressources s'appellerait Web.sitemap.fr.resx.

Localiser la propriété URL dans un plan de site

La propriété Url ne peut pas être localisée dans un plan de site de la même façon que les propriétés Title et Description.

Pour définir des structures de navigation différentes selon les paramètres régionaux d'un utilisateur

  1. Définissez un fichier sitemap différent pour tous les paramètres régionaux.

  2. Ajoutez chaque plan de site au fichier Web.config. Pour plus d'informations, consultez Comment : configurer plusieurs plans de sites et fournisseurs sitemap.

  3. Basculez par programme sur la propriété Provider appropriée au moment de l'exécution. Il convient pour cela d'affecter le nom du fournisseur à la propriété SiteMapProvider de l'objet SiteMapDataSource ou à la propriété SiteMapProvider de l'objet SiteMapPath. Pour plus d'informations, consultez Comment : modifier par programme des nœuds sitemap dans la mémoire.

Programmation fiable

Les expressions explicites et implicites ne peuvent pas être utilisées dans le même fichier sitemap.

Voir aussi

Tâches

Comment : configurer plusieurs plans de sites et fournisseurs sitemap

Comment : modifier par programme des nœuds sitemap dans la mémoire

Concepts

Plans de sites ASP.NET

Ressources dans les applications ASP.NET

Vue d'ensemble des expressions ASP.NET

Sécurisation de la navigation de site ASP.NET

Sécurisation de l'accès aux données

Référence

Title

Description

Attributes

Autres ressources

Sécurité des applications ASP.NET dans les environnements hébergés