ASP.NET実践:サイトマップのデータをローカライズ

11572 ワード

開発者は、Webサイトの地図の次のプロパティをローカライズできます.
  • Title
  • Description
  • は、Attributesのセットに含まれるカスタム属性を含む.

  • これらのアトリビュート値を明示的または暗黙的に設定してローカライズできます.
    明示的な式を使用して、Webサイトの地図ノードのTitleまたはDescriptionのプロパティをローカライズします.
  • WebサイトマップのEnableLocalizationプロパティを設定する値はtrueです.例えば、Web.sitemapファイルの<siteMap>ノードは、
    
    
    <siteMap enableLocalization="true">
    
    
  • に変更されました.
  • Webサイトの地図で、ローカル化されたリソース列を必要とする属性値を変更します.以下の例では、大文字と小文字に敏感なコード:
    
    
    $resources:ClassName,KeyName,DefaultValue
    
    
    、例えばWeb.sitemapファイルのノードはそうかもしれません.
    
    
    <siteMapNode 
    
      url="~/Home.aspx" 
    
      title="$resources:SiteMapLocalizations,HomePageTitle"
    
      description="$resources:SiteMapLocalizations,HomePageDescription,Default description"
    
      myCustomAttribute="$resources: CustomLocalizations,MyCustomAttribute"
    
    />
    
    
    は、SiteMapLocalizationsからHomePageTitleおよびHomePageDescriptionのリソースキーワードを使用する.resxファイルでは、ローカライズされたtitleおよびdescriptionが取得されます.別の名前からresxのリソースファイルで、ローカライズされた他のカスタムパラメータを取得します.
  • アプリケーションルートの下でのApp_GlobalResourcesディレクトリにカスタムを作成します.resxファイル.はい.resxファイルでは、一部の属性値はキーワードのnameパラメータ値をインデックスとして使用します.前の例のSiteMapLocalizations.resxファイルはそうかもしれません.
    
    
    <?xml version="1.0" encoding="utf-8"?>
    
    <root>
    
      <xsd:schema id="root" xmlns="" 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>
    
    
  • 複数の言語のローカライズを実現する必要がある場合、ローカライズ情報を含むより多くの情報を作成する必要がある.resxファイル.例えば、リソースファイルのフランス語バージョンはSiteMapLocalizationsと命名される可能性がある.fr.resx.

  • 暗黙的な式を使用して、Webサイトの地図ノードのTitleまたはDescriptionのプロパティをローカライズします.
  • WebサイトマップにEnableLocalizationプロパティを設定する値はtrueです.例えば、Web.sitemapファイルの<siteMap>ノードは、
    
    
    <siteMap enableLocalization="true">
    
    
  • に変更されました.
  • ウェブサイト地図において、以下の例を用いる大文字と小文字に敏感なコードをローカライズする必要があるウェブサイト地図ノードに属性resourceKey:
    
    
    resourceKey="HomePage"
    
    
    、例えばWebを追加する.sitemapファイルの<siteMap>ノードは、
    
    
    <siteMapNode 
    
      url="~/Home.aspx" 
    
      resourceKey="HomePage"
    
      title = "Default Title"   
    
      description = "Default Description" 
    
     />
    
    
    HomePage.titleおよびHomePage.descriptionリソースキーワードを使用して、ファイルからローカライズされたtitleおよびdescriptionを取得する場合がある.
  • アプリケーションルートの下でのApp_GlobalResourcesディレクトリにカスタムを作成します.resxファイル.はい.resxファイルでは、異なる属性値がnameパラメータでインデックスされます.ヒント:グローバルリソースファイルのキーワード名に句点(.)を含めることはできません.ただし、句点の使用は、グローバルリソースファイルで暗黙的な式を使用してWebサイトの地図ファイルを参照する場合には必要ありません.なぜなら、resourceKeyパラメータの標準構文であるからです.たとえば、Visual Web Developerなどのコード編集環境では、開発者がキーワード名で句点を使用すると、設計時のエラーが発生します.ただし、このエラーは無視でき、ファイルの編集や保存にも影響しません.
    
    
    <?xml version="1.0" encoding="utf-8"?>
    
    <root>
    
      <xsd:schema id="root" xmlns="" 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>
    
    
  • 複数の言語のローカライズを実現する必要がある場合、ローカライズ情報を含むより多くの情報を作成する必要がある.resxファイル.例えば、リソースファイルのフランス語バージョンはWebと命名される可能性がある.sitemap.fr.resx.

  • ローカライズされたWebサイトの地図のURLプロパティUrlプロパティは、Webサイトの地図でローカライズできないため、Titleプロパティとは異なります.
    ユーザーの場所に応じて異なるバージョンのナビゲーション構造を定義します.
  • は、異なる地域に対して異なるウェブサイト地図ファイルを定義する.
  • はWeb.configファイルでは、さまざまな言語バージョンのWebサイトの地図ファイルを参照します.
  • は、実行時にプログラミングによって必要に応じてDescriptionの切り替えを行うことができる.この操作は、ProviderオブジェクトのSiteMapDataSourceプロパティまたはSitemapProviderオブジェクトのSiteMapPathプロパティ値をプロバイダの名前に設定することによって行うことができる.

  • 堅牢なコードの作成
    明示的な式と暗黙的な式は、同じWebサイトの地図ファイルで同時に使用できません.