방법: ASP.NET 웹 페이지 세계화를 위한 문화권 및 UI 문화권 설정
ASP.NET 웹 페이지에서 Culture 및 UICulture 속성의 두 문화권 값을 설정할 수 있습니다.Culture 값은 날짜, 숫자, 통화 형식 등 문화권에 따른 함수의 결과를 결정합니다.UICulture 값은 페이지에 대해 로드되는 리소스를 결정합니다.
참고
Culture 및 UICulture 속성은 언어(예: 영어의 경우 en, 스페인어의 경우 es, 독일어의 경우 de) 및 문화권(예: 미국의 경우 US, 영국의 경우 GB, 멕시코의 경우 MX, 독일의 경우 DE)을 식별하는 인터넷 표준 문자열을 사용하여 설정됩니다. 일부 예는 영어/미국의 경우 en-US, 영어/영국의 경우 en-GB, 스페인어/멕시코의 경우 es-MX입니다. 자세한 내용은 CultureInfo을 참조하십시오.
두 문화권 설정에 동일한 값을 설정할 필요가 없습니다. 응용 프로그램에 따라 개별적으로 설정하는 것이 중요할 수 있습니다. 한 예로, 웹 경매 사이트가 있습니다.UICulture 속성은 각 웹 브라우저에 대해 변경될 수 있지만, Culture은(는) 유지됩니다. 그러므로 가격은 항상 동일한 통화 및 서식으로 표시됩니다.
Culture 값은 en-US 또는 en-GB처럼 특정 문화권으로만 설정될 수 있습니다. 이렇게 하면 en에 대해 사용하기 위해 올바른 통화 기호를 식별하지 않아도 됩니다. 여기서 en-US 및 en-GB의 통화 기호는 서로 다릅니다.
사용자는 브라우저에서 UI 문화권 및 문화권을 설정할 수 있습니다. 예를 들어 Microsoft Internet Explorer의 도구 메뉴에서 사용자는 인터넷 옵션을 클릭하고 일반 탭에서 언어를 클릭한 다음 언어 기본 설정을 지정할 수 있습니다. Web.config 파일에서 세계화 요소의 enableClientBasedCulture 특성이 true(으)로 설정된 경우에 ASP.NET은 브라우저에서 전송한 값을 기반으로 웹 페이지의 UI 문화권 및 문화권을 자동으로 설정할 수 있습니다.
브라우저 설정만 사용하여 페이지의 UI 문화권을 결정하는 것은 바람직하지 않습니다. 사용자들은 인터넷 카페와 같은 장소에서 기본 설정으로 지정되지 않은 브라우저를 자주 사용합니다. 사용자에게 페이지의 언어 또는 언어 및 문화권(CultureInfo 이름)을 구체적으로 선택하는 방법을 제공해야 합니다.
ASP.NET 웹 페이지에 대한 문화권 및 UI 문화권을 선언적으로 설정하려면 다음과 같이 하세요.
모든 페이지에 대해 UI 문화권 및 문화권을 설정하려면 다음 예제처럼 Web.config 파일에 globalization 섹션을 추가한 다음 uiculture 및 culture 특성을 설정합니다.
<globalization uiCulture="es" culture="es-MX" />
개별 페이지에 대해 UI 문화권 및 문화권을 설정하려면 다음 예제처럼 @ Page 지시문의 Culture 및 UICulture 특성을 설정합니다.
<%@ Page UICulture="es" Culture="es-MX" %>
ASP.NET에서 현재 브라우저 설정에 지정된 첫 번째 언어로 UI 문화권 및 문화권을 설정하도록 하려면 UICulture 및 Culture을(를) auto(으)로 설정합니다. 또는 이 값을 **auto:**culture_info_name으로 설정할 수 있습니다. 여기서 culture_info_name은 문화권 이름입니다. 문화권 이름의 목록은 CultureInfo을(를) 참조하세요.@ Page 지시문 또는 Web.config 파일에서 이 설정을 지정할 수 있습니다.
ASP.NET 웹 페이지에 대한 문화권 및 UI 문화권을 프로그래밍 방식으로 설정하려면 다음과 같이 하세요.
페이지에 대해 InitializeCulture 메서드를 재정의합니다.
재정의된 메서드에서 페이지에 설정할 언어 및 문화권을 결정합니다.
참고
InitializeCulture 메서드는 페이지에 대해 컨트롤을 만들거나 속성이 설정되기 전에, 페이지 수명 주기 초기에 호출됩니다. 그러므로 컨트롤에서 페이지에 전달되는 값을 읽으려면 Form 컬렉션을 사용하여 요청에서 바로 가져와야 합니다.
다음 방법 중 하나로 UI 문화권 및 문화권을 설정하세요.
페이지의 Culture 및 UICulture 속성을 언어 및 문화권 문자열(예: en-US)로 설정합니다. 이러한 속성은 페이지의 내부에 있으며 페이지에만 사용할 수 있습니다.
현재 스레드의 CurrentUICulture 및 CurrentCulture 속성을 UI 문화권 및 문화권에 각각 설정합니다.CurrentUICulture 속성은 언어 및 문화권 정보 문자열을 사용합니다.CurrentCulture 속성을 설정하기 위해 CultureInfo 클래스의 인스턴스를 만들고 CreateSpecificCulture 메서드를 호출할 수 있습니다.
다음 코드 예제에서는 사용자가 드롭다운 목록에서 기본 설정 언어를 선택할 수 있는 ASP.NET 웹 페이지를 보여 줍니다. 페이지는 두 개의 네임스페이스를 가져와서 스레딩 및 세계화 클래스 작업을 더 편리하게 만듭니다.
소스 코드가 포함된 Visual Studio 웹 사이트 프로젝트는 다음 항목과 함께 사용할 수 있습니다. 다운로드
<%@ Page Language="VB" uiculture="auto" %> <%@ Import Namespace="System.Threading" %> <%@ Import Namespace="System.Globalization" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <script runat="server"> Protected Overrides Sub InitializeCulture() If Request.Form("ListBox1") IsNot Nothing Then Dim selectedLanguage As String = _ Request.Form("ListBox1") UICulture = Request.Form("ListBox1") Culture = Request.Form("ListBox1") Thread.CurrentThread.CurrentCulture = _ CultureInfo.CreateSpecificCulture(selectedLanguage) Thread.CurrentThread.CurrentUICulture = New _ CultureInfo(selectedLanguage) End If MyBase.InitializeCulture() End Sub </script> <html> <body> <form id="form1" runat="server"> <div> <asp:ListBox ID="ListBox1" runat="server"> <asp:ListItem Value="en-US" Selected="True">English</asp:ListItem> <asp:ListItem Value="es-MX">Español</asp:ListItem> <asp:ListItem Value="de-DE">Deutsch</asp:ListItem> </asp:ListBox><br /> <asp:Button ID="Button1" runat="server" Text="Set Language" meta:resourcekey="Button1" /> <br /> <asp:Label ID="Label1" runat="server" Text="" meta:resourcekey="Label1" /> </div> </form> </body> </html>
<%@ Page Language="C#" uiculture="auto" %> <%@ Import Namespace="System.Threading" %> <%@ Import Namespace="System.Globalization" %> <script runat="server"> protected override void InitializeCulture() { if (Request.Form["ListBox1"] != null) { String selectedLanguage = Request.Form["ListBox1"]; UICulture = selectedLanguage ; Culture = selectedLanguage ; Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage); Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage); } base.InitializeCulture(); } </script> <html> <body> <form id="form1" runat="server"> <div> <asp:ListBox ID="ListBox1" runat="server"> <asp:ListItem Value="en-US" Selected="True">English</asp:ListItem> <asp:ListItem Value="es-MX">Español</asp:ListItem> <asp:ListItem Value="de-DE">Deutsch</asp:ListItem> </asp:ListBox><br /> <asp:Button ID="Button1" runat="server" Text="Set Language" meta:resourcekey="Button1" /> <br /> <asp:Label ID="Label1" runat="server" Text="" meta:resourcekey="Label1" /> </div> </form> </body> </html>