2012-03-30 24 views
2

ASP.NET具有内置功能,可根据浏览器的首选语言自动加载正确的语言资源文件。支持ASP.NET本地化中的辅助语言

例如,如果访问者将丹麦语(da)作为他/她的首选语言,并且该网站具有* .da.resx文件,则会使用该资源。当首选资源文件不可用时,ASP.NET会回退到基本/默认资源文件(* .resx)。

现在,浏览器允许指定多个首选语言。如果访问者会说丹麦语,但将挪威语作为第二语言添加到浏览器首选项中(挪威语的写法与丹麦语的写法相同),则浏览器会向Web服务器发送“da,no; q = 0.9”。但是,似乎这种辅助语言不受ASP.NET支持;如果* .da.resx不可用,* .no.resx将不会被加载。

有人知道如何支持辅助语言吗?

回答

0

请注意,如果在web.config文件中启用enableClientBasedCulture,ASP.NET将仅自动处理accept-languages标头字段中的第一个条目,以确定使用哪种文化。

如果您希望扩展并检查accept-languages列表中的其他语言条目(如果有)以查看是否有匹配项,则必须以编程方式执行此操作并设置Thread.CurrentThread.CurrentUICulture(ResourceManager用于找到适当的本地化资源)和Thread.CurrentThread.CurrentCulture(它将控制如何呈现和处理区域感知数据类型)。这是解释here

+0

即使在第四个主要版本中,ASP.NET也是如此愚蠢,即使不支持这些基本功能!我想我甚至发现了一个很大的bug,但我想我会把它作为一个单独的问题提出来。你知道内置国际化支持的替代方案吗? – Peter 2012-04-02 07:51:54

+0

是的,我想知道为什么这样做,为什么只看清单中的第一项?也许他们发现大多数用户(即使在你的场景中)不够精明,无法正确设置该列表?这只是一个猜测。作为最终用户,您可能希望在网站上的任何地方看到语言选择器。如果你公开这样一个选择器,那么查看accept-languages头并且执行你希望的选择逻辑(查看列出的所有语言)来选择默认语言是相当简单的。 – Clafou 2012-04-02 10:08:37