Condividi tramite


Procedura: localizzare i dati della mappa del sito

Aggiornamento: novembre 2007

In una mappa del sito è possibile localizzare le seguenti proprietà:

Queste proprietà vengono localizzate utilizzando come valore un'espressione esplicita o implicita. Per ulteriori informazioni sulle espressioni, vedere Cenni preliminari sulle espressioni ASP.NET. Per informazioni sui file di risorse, vedere Risorse nelle applicazioni ASP.NET.

Per localizzare la proprietà Title o Description di un nodo della mappa del sito utilizzando un'espressione esplicita

  1. Nella mappa del sito impostare la proprietà EnableLocalization su true. Ad esempio, in un file Web.sitemap modificare il nodo <siteMap> per renderlo simile al seguente codice:

    <siteMap enableLocalization="true">
    
  2. Nella mappa del sito modificare il valore della proprietà da localizzare in una stringa di risorsa, come la riga di codice con distinzione maiuscole/minuscole riportata di seguito:

    $resources:ClassName,KeyName,DefaultValue
    

    Ad esempio, in un file Web.sitemap il nodo della mappa del sito può essere simile all'esempio di codice riportato di seguito.

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

    Il titolo e la descrizione localizzati vengono ottenuti da un file denominato SiteMapLocalizations.resx, utilizzando le chiavi di risorsa HomePageTitle e HomePageDescription. L'attributo personalizzato localizzato viene invece ottenuto dal file CustomLocalizations.resx. Per ulteriori informazioni sulle stringhe di risorsa, vedere Cenni preliminari sulle espressioni ASP.NET.

  3. Creare i file .resx in una cartella denominata App_GlobalResources nella radice dell'applicazione. Nel file .resx i singoli valori delle proprietà vengono indicizzati in base al valore del nome chiave. Nell'esempio precedente il file SiteMapLocalizations.resx potrebbe essere simile al seguente.

    <?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. Se occorre localizzare delle stringhe per più lingue, è possibile creare altri file .resx con informazioni relative alle impostazioni internazionali incluse nel nome file. La versione francese del file di risorsa, ad esempio, sarebbe SiteMapLocalizations.fr.resx.

Per localizzare la proprietà Title o Description di un nodo della mappa del sito utilizzando un'espressione implicita

  1. Nella mappa del sito impostare la proprietà EnableLocalization su true. Ad esempio, in un file Web.sitemap modificare il nodo <siteMap> per renderlo simile al seguente codice:

    <siteMap enableLocalization="true">
    
  2. Nella mappa del sito aggiungere un attributo resourceKey al nodo della mappa del sito che si desidera localizzare utilizzando la riga di codice con distinzione maiuscole/minuscole riportata di seguito:

    resourceKey="HomePage"
    

    Ad esempio, in un file Web.sitemap il nodo <siteMap> potrebbe essere simile al seguente codice:

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

    Il titolo e la descrizione localizzati vengono ottenuti da un file denominato Web.sitemap.resx utilizzando le chiavi di risorsa HomePage.title e HomePage.description.

  3. Creare il file .resx in una cartella denominata App_GlobalResources nella radice dell'applicazione. Nel file .resx i singoli valori delle proprietà vengono indicizzati in base al nome. Nell'esempio precedente il file Web.sitemap.resx potrebbe essere simile al seguente:

    Nota:

    I nomi delle chiavi nei file di risorse globali non devono includere punti (.). I punti sono tuttavia necessari nelle risorse globali a cui viene fatto riferimento nei file di mappa del sito quando si utilizzano espressioni implicite, a causa della sintassi resourceKey. In alcuni ambienti di modifica, come Visual Web Developer, potrebbe essere generato un errore di progettazione se si utilizza un punto nel nome della chiave. Tale errore non dovrebbe tuttavia influire sulla capacità di modificare o salvare il file e può pertanto essere ignorato.

    <?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. Se occorre localizzare delle stringhe per più lingue, è possibile creare altri file .resx con informazioni relative alle impostazioni internazionali incluse nel nome file. La versione francese del file di risorsa, ad esempio, sarebbe Web.sitemap.fr.resx.

Localizzazione della proprietà URL in una mappa del sito

La proprietà Url non può essere localizzata in una mappa del sito come avviene per le proprietà Title e Description.

Per definire differenti strutture di spostamento in base alle impostazioni internazionali di un utente

  1. Definire un file di mappa del sito differente per ciascuna lingua.

  2. Aggiungere ciascuna mappa del sito al file Web.config. Per ulteriori informazioni, vedere Procedura: configurare più mappe del sito e provider di mappa del sito.

  3. Passare al provider Provider appropriato a livello di codice in fase di esecuzione. Per eseguire questa operazione, impostare la proprietà SiteMapProvider dell'oggetto SiteMapDataSource o la proprietà SiteMapProvider dell'oggetto SiteMapPath sul nome del provider. Per ulteriori informazioni, vedere Procedura: modificare a livello di codice i nodi della mappa del sito in memoria.

Programmazione efficiente

Nello stesso file di mappa del sito non è possibile utilizzare espressioni esplicite e implicite.

Vedere anche

Attività

Procedura: configurare più mappe del sito e provider di mappa del sito

Procedura: modificare a livello di codice i nodi della mappa del sito in memoria

Concetti

Mappe del sito ASP.NET

Risorse nelle applicazioni ASP.NET

Cenni preliminari sulle espressioni ASP.NET

Protezione del sistema di spostamento all'interno dei siti ASP.NET

Protezione dell'accesso ai dati

Riferimenti

Title

Description

Attributes

Altre risorse

Protezione delle applicazioni ASP.NET in ambienti host