방법: 사이트 맵 데이터 지역화
업데이트: 2007년 11월
사이트 맵의 다음 속성을 지역화할 수 있습니다.
Attributes 컬렉션에 포함된 사용자 지정 속성
이러한 속성은 명시적 또는 암시적 식을 속성 값으로 사용하여 지역화됩니다. 식에 대한 자세한 내용은 ASP.NET 식 개요를 참조하십시오. 리소스 파일에 대한 자세한 내용은 ASP.NET 응용 프로그램의 리소스를 참조하십시오.
명시적 식을 사용하여 사이트 맵 노드의 Title 또는 Description 속성을 지역화하려면
사이트 맵에서 EnableLocalization 속성을 true로 설정합니다. 예를 들어, Web.sitemap 파일에서 <siteMap> 노드를 다음 코드와 같이 변경합니다.
<siteMap enableLocalization="true">
사이트 맵에서 다음 코드 줄(대/소문자 구분)과 같이 지역화할 속성 값을 리소스 문자열로 변경합니다.
$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라는 파일에서 HomePageTitle 및 HomePageDescription 리소스 키를 사용하여 가져옵니다. 지역화된 사용자 지정 특성은 CustomLocalizations.resx라는 별도의 파일에서 가져옵니다. 리소스 문자열에 대한 자세한 내용은 ASP.NET 식 개요를 참조하십시오.
응용 프로그램 루트의 App_GlobalResources 폴더에 .resx 파일을 만듭니다. .resx 파일에서 개별 속성 값은 키 이름 값으로 인덱싱됩니다. 위 예제의 SiteMapLocalizations.resx 파일은 다음과 같이 나타납니다.
<?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>
문자열을 여러 언어로 지역화해야 하는 경우 파일 이름에 로캘 정보를 포함하여 추가 .resx 파일을 만들 수 있습니다. 예를 들어, 프랑스어 버전의 리소스 파일에는 SiteMapLocalizations.fr.resx라는 이름을 지정합니다.
암시적 식을 사용하여 사이트 맵 노드의 Title 또는 Description 속성을 지역화하려면
사이트 맵에서 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" />
지역화된 제목과 설명은 Web.sitemap.resx라는 파일에서 HomePage.title 및 HomePage.description 리소스 키를 사용하여 가져옵니다.
응용 프로그램 루트의 App_GlobalResources 폴더에 .resx 파일을 만듭니다. .resx 파일에서 개별 속성 값은 이름으로 인덱싱됩니다. 앞의 예제에서 Web.sitemap.resx 파일은 다음과 같을 수 있습니다.
참고: 전역 리소스 파일의 키 이름에는 마침표(.)를 포함할 수 없습니다. 그러나 암시적 식을 사용할 때 사이트 맵 파일에서 참조되는 전역 리소스에는 마침표가 필요합니다. 이는 resourceKey 구문 때문입니다. Visual Web Developer와 같은 일부 편집 환경에서는 키 이름에 마침표를 사용할 경우 디자인 타임 오류가 발생할 수 있습니다. 그러나 이 오류는 파일 편집 또는 저장 기능에 영향을 주지 않으며 무시할 수 있습니다.
<?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>
문자열을 여러 언어로 지역화해야 하는 경우 파일 이름에 로캘 정보를 포함하여 추가 .resx 파일을 만들 수 있습니다. 예를 들어, 프랑스어 버전의 리소스 파일에는 Web.sitemap.fr.resx라는 이름을 지정합니다.
사이트 맵의 URL 속성 지역화
사이트 맵에서 Url 속성은 Title 및 Description 속성과 같은 방법으로 지역화할 수 없습니다.
사용자 로캘에 따라 달라지는 탐색 구조를 정의하려면
각 로캘에 대해 별개의 사이트 맵 파일을 정의합니다.
각 사이트 맵을 Web.config 파일에 추가합니다. 자세한 내용은 방법: 여러 사이트 맵 및 사이트 맵 공급자 구성을 참조하십시오.
런타임에 프로그래밍 방식으로 적절한 Provider로 전환합니다. 이를 위해서는 SiteMapDataSource 개체의 SiteMapProvider 속성이나 SiteMapPath 개체의 SiteMapProvider 속성을 공급자 이름으로 설정합니다. 자세한 내용은 방법: 프로그래밍 방식으로 메모리에서 사이트 맵 노드 수정을 참조하십시오.
강력한 프로그래밍
동일한 사이트 맵 파일에서 명시적 식과 암시적 식을 함께 사용할 수는 없습니다.
참고 항목
작업
방법: 프로그래밍 방식으로 메모리에서 사이트 맵 노드 수정