2009-05-20 88 views
1

我想实现一个简单的ASP.NET示例改变文化的例子。我运行Windows 7,IE 8,和VS 2008我的标签是这样的:ASP.NET开发服务器忽略浏览器文化

<asp:Label ID="TextBox1" runat="server" meta:resourcekey="Greeting"></asp:Label> 

我在App_LocalResources文件两个文件:为Default.aspx.resx和Default.aspx.fr.resx。

在它们中,我有一个名为“Greeting.Text”的字符串值,并且该值设置为“Hello!”在一页中,和“Bonjour!”在另一个。

我的浏览器设置为更喜欢fr-FR作为默认语言。当我通过F5或Shift-F5使用ASP.NET开发服务器打开页面时,无论我在浏览器的“语言”对话框中设置了什么内容,该页面显然都会将我的文化视为en-US。

这就是说,浏览器配置正确,就像谷歌用法语显示的那样。

当我向页面添加标签并将标签的文本设置为CurrentCulture或CurrentUICulture的名称时,我得到了en-US,这显然不是我输入的内容。

有没有人有任何想法,为什么这不能正常工作?

回答

5

默认情况下,ASP.NET不会基于浏览器自动更改文化。添加到您的web.config:

<configuration> 
    <system.web> 
     <globalization culture="auto" 
         enableBestFitResponseEncoding="false" 
         fileEncoding="utf-8" 
         requestEncoding="utf-8" 
         responseEncoding="utf-8" 
         responseHeaderEncoding="utf-8" 
         uiCulture="auto"/> 
    </system.web> 
</configuration> 

注意,culture="auto"uiCulture="auto"是你在找什么重要的位,但剩下的可能是一个不错的主意为好。另请注意,您可能在文档中看到的enableClientBasedCulture属性当前不被ASP.NET使用。