방법: 사이트 맵 데이터 지역화

Visual Studio 2010

업데이트: 2007년 11월

사이트 맵의 다음 속성을 지역화할 수 있습니다.

이러한 속성은 명시적 또는 암시적 식을 속성 값으로 사용하여 지역화됩니다. 식에 대한 자세한 내용은 ASP.NET 식 개요를 참조하십시오. 리소스 파일에 대한 자세한 내용은 ASP.NET 응용 프로그램의 리소스를 참조하십시오.

명시적 식을 사용하여 사이트 맵 노드의 Title 또는 Description 속성을 지역화하려면

  1. 사이트 맵에서 EnableLocalization 속성을 true로 설정합니다. 예를 들어, Web.sitemap 파일에서 <siteMap> 노드를 다음 코드와 같이 변경합니다.

    <siteMap enableLocalization="true">
    
  2. 사이트 맵에서 다음 코드 줄(대/소문자 구분)과 같이 지역화할 속성 값을 리소스 문자열로 변경합니다.

    $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.resx라는 파일에서 HomePageTitleHomePageDescription 리소스 키를 사용하여 가져옵니다. 지역화된 사용자 지정 특성은 CustomLocalizations.resx라는 별도의 파일에서 가져옵니다. 리소스 문자열에 대한 자세한 내용은 ASP.NET 식 개요를 참조하십시오.

  3. 응용 프로그램 루트의 App_GlobalResources 폴더에 .resx 파일을 만듭니다. .resx 파일에서 개별 속성 값은 키 이름 값으로 인덱싱됩니다. 위 예제의 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>
    
  4. 문자열을 여러 언어로 지역화해야 하는 경우 파일 이름에 로캘 정보를 포함하여 추가 .resx 파일을 만들 수 있습니다. 예를 들어, 프랑스어 버전의 리소스 파일에는 SiteMapLocalizations.fr.resx라는 이름을 지정합니다.

암시적 식을 사용하여 사이트 맵 노드의 Title 또는 Description 속성을 지역화하려면

  1. 사이트 맵에서 EnableLocalization 속성을 true로 설정합니다. 예를 들어, Web.sitemap 파일에서 <siteMap> 노드를 다음 코드와 같이 변경합니다.

    <siteMap enableLocalization="true">
    
  2. 사이트 맵에서 다음 코드 줄(대/소문자 구분)을 사용하여 지역화할 사이트 맵 노드에 resourceKey라는 특성을 추가합니다.

    resourceKey="HomePage"
    

    예를 들어, Web.sitemap 파일에서 <siteMap> 노드는 다음 코드와 같이 나타납니다.

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

    지역화된 제목과 설명은 Web.sitemap.resx라는 파일에서 HomePage.titleHomePage.description 리소스 키를 사용하여 가져옵니다.

  3. 응용 프로그램 루트의 App_GlobalResources 폴더에 .resx 파일을 만듭니다. .resx 파일에서 개별 속성 값은 이름으로 인덱싱됩니다. 앞의 예제에서 Web.sitemap.resx 파일은 다음과 같을 수 있습니다.

    ms178427.alert_note(ko-kr,VS.100).gif참고:

    전역 리소스 파일의 키 이름에는 마침표(.)를 포함할 수 없습니다. 그러나 암시적 식을 사용할 때 사이트 맵 파일에서 참조되는 전역 리소스에는 마침표가 필요합니다. 이는 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>
    
  4. 문자열을 여러 언어로 지역화해야 하는 경우 파일 이름에 로캘 정보를 포함하여 추가 .resx 파일을 만들 수 있습니다. 예를 들어, 프랑스어 버전의 리소스 파일에는 Web.sitemap.fr.resx라는 이름을 지정합니다.

사이트 맵에서 Url 속성은 TitleDescription 속성과 같은 방법으로 지역화할 수 없습니다.

사용자 로캘에 따라 달라지는 탐색 구조를 정의하려면

  1. 각 로캘에 대해 별개의 사이트 맵 파일을 정의합니다.

  2. 각 사이트 맵을 Web.config 파일에 추가합니다. 자세한 내용은 방법: 여러 사이트 맵 및 사이트 맵 공급자 구성을 참조하십시오.

  3. 런타임에 프로그래밍 방식으로 적절한 Provider로 전환합니다. 이를 위해서는 SiteMapDataSource 개체의 SiteMapProvider 속성이나 SiteMapPath 개체의 SiteMapProvider 속성을 공급자 이름으로 설정합니다. 자세한 내용은 방법: 프로그래밍 방식으로 메모리에서 사이트 맵 노드 수정을 참조하십시오.

동일한 사이트 맵 파일에서 명시적 식과 암시적 식을 함께 사용할 수는 없습니다.

표시: