ASP.NET MVC中的本地化

4

Visual Studio 2008

我想为我的ASP.NET MVC网站添加一些本地化内容。

有人建议创建一个名为“Strings.resx”的公共强类型资源文件,这个方法很好用,可以让我编写如下代码:

<title><%= Strings.MyView_Title %></title>

我随后添加了一个文件 "Strings.da.resx"。该文件创建在第一个文件旁边,默认为“访问修饰符:无编译”,而第一个文件(没有语言修饰符的文件)默认为“内部”。
我可以在 bin 目录中看到已创建一个目录 ("da"),其中包含一个 resource.dll 文件,但我在网站上看不到任何翻译后的文本。
我已经检查了浏览器,确保唯一的首选语言是丹麦语 (da-DK),但我仍然只能看到英文文本。
问题: 1) 我需要在 web.config 中启用某些内容吗? 2) 我是否正在创建正确的文件,并使用正确的类型(例如,#2 应该是 "无编译")?
2个回答

6

在您的视图中,是否有页面指令?如果有,您是否设置了UICulture="Auto"和Culture="Auto"?

例如...

<%@ Page Language="C#" Inherits="..." 
    culture="auto" uiculture="auto" %>

这将确保使用请求中浏览器传递的 Accept-Language 标头来设置线程文化。它是 UICulture 影响选择哪个资源文件。
有关 ASP.NET 国际化的更多信息,请参考这本书...

http://www.amazon.co.uk/NET-Internationalization-Developers-Guide-Building/dp/0321341384/ref=sr_1_1?ie=UTF8&s=books&qid=1241010151&sr=8-1

它不包括MVC,但涵盖了ASP.NET,因此许多内容仍然相关。

实际上,结果证明我可以在web.config文件的<system.web>部分中设置<globalization uiCulture="auto" culture="auto" />。 - Soraz
是的,你也可以这样做。我倾向于在页面级别上执行此操作,以便没有来自配置的“特殊魔法”,这是项目中新开发人员不期望的。 - Martin Peck

2
首先,您需要创建一个操作筛选器,它将切换请求线程的区域设置。 或者 将您的globalization元素设置为UICulture="Auto"和Culture="Auto"
请查看此屏幕录像,它是用俄语录制的,但代码示例易于理解。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接