我有一个Default.aspx
我获取本地化值的文件:
默认.aspx:
<asp:Localize meta:resourcekey="lblTitle" runat="server">Welcome</asp:Localize>
然后我创建一个匹配的fallback资源文件:
默认.aspx.resx:
lblTitle.Text Welcome to Stackoverflow Localized
这有效:
现在我想创建一个法语本地化版本:
默认.aspx.fr.resx:
lblTitle.Text Bienvenue Stackoverflow
我更改浏览器以发送法语区域设置:
(它确实如此):
GET http://stackoverflow.com/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Accept-Language: fr-CH,qps-ploc;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: stackoverflow.com
但它根本不起作用:
我正在关注什么微软说 http://msdn.microsoft.com/en-us/library/ms227427.aspx:
例如,如果 App_LocalResources 文件夹中有一个名为 Default.aspx 的页面,则可以创建以下文件:
Default.aspx.resx
。如果未找到语言匹配,则这是默认的本地资源文件(后备资源文件)。
Default.aspx.es.resx
。这是西班牙语的资源文件,没有文化信息。
Default.aspx.es-mx.resx
。这是专门针对西班牙语(墨西哥)的资源文件。
Default.aspx.fr.resx
。这是法语的资源文件,没有文化信息。
为什么 .NET 没有做 .NET 应该做的事情?
Update:
来自 MSDN:
选择不同语言的资源文件
ASP.NET 可以将页面的 UICulture 和 Culture 属性设置为浏览器传递的语言和文化值。 ...有关详细信息,请参阅如何:设置 ASP.NET 网页全球化的文化和 UI 文化。 http://msdn.microsoft.com/en-us/library/bz9tc508.aspx
我怎样才能让 ASP.NET 设置UICulture
and Culture
页面属性到浏览器传递的语言和文化值?
From 如何:设置 ASP.NET 网页全球化的文化和 UI 文化 http://msdn.microsoft.com/en-us/library/bz9tc508.aspx:
用户可以在浏览器中设置UI文化和文化。为了
例如,在 Microsoft Internet Explorer 中,用户可以在“工具”菜单上
单击“Internet 选项”,在“常规”选项卡上,单击“语言”,然后
设置他们的语言偏好。如果启用ClientBasedCulture
Web.config 文件中全球化元素的属性已设置
为true时,ASP.NET可以设置UI文化和网页文化
根据浏览器发送的值自动进行。
以声明方式设置 ASP.NET 网页的区域性和 UI 区域性
- 若要让 ASP.NET 将 UI 区域性和区域性设置为当前浏览器设置中指定的第一种语言,请将 UICulture 和 Culture 设置为 auto。或者,您可以将此值设置为自动:文化信息名称, where 文化信息名称是一个文化名称。有关文化名称的列表,请参阅文化资讯 http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx。您可以在@ Page http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx指令或 Web.config 文件。