【发布时间】:2011-07-27 11:13:49
【问题描述】:
我正在尝试在我的 MVC 3 应用程序中实现全球化/本地化。我不希望每种语言都有不同的视图。请建议我如何继续。任何受支持的链接/URL 都会有很大帮助。
【问题讨论】:
标签: asp.net-mvc-3 globalization
我正在尝试在我的 MVC 3 应用程序中实现全球化/本地化。我不希望每种语言都有不同的视图。请建议我如何继续。任何受支持的链接/URL 都会有很大帮助。
【问题讨论】:
标签: asp.net-mvc-3 globalization
您可以像任何其他应用程序一样对其进行本地化:
PublicResXFileCodeGenerator
在您的视图中使用翻译代替文本,如以下代码:
@Strings.MyString
将根据 CultureInfo.CurrentCulture 在视图中自动翻译字符串,但这不会为您自动设置
您需要更改CurrentCulture(可能在Application_BeginRequest)。你如何做到这一点取决于你,它可以是一个设置它的路由值,或者你可以阅读用户的浏览器语言
您可以在HttpContext.Current.Request.UserLanguages 中找到用户首选语言的列表(按顺序)。
【讨论】:
这是一篇关于 MVC 3 全球化/国际化的非常详细的帖子http://afana.me/post/aspnet-mvc-internationalization-part-2.aspx
【讨论】:
要向Martin Booth's great answer 添加一些详细信息(以防他的 MediaFire 链接可能会消失),我是这样做的:
我使用了两个文件,因为我现在只需要英语和德语(“de”):
对于每个文件的属性,我必须为每个文件手动输入 Custom Tool 以及 Custom Tool Namespace 值:
最后,我在根 Web.Config 文件的 <system.web> 部分下方输入了以下内容:
<globalization uiCulture="auto" culture="auto" />
当然,我还在 Views 文件夹(即不是根目录)下的 Web.Config 文件中添加了命名空间指令,正如 Martin 所描述的:
<add namespace="ViewResources" />
然后我终于可以访问在我的(部分)Razor 视图中强类型化的资源:
<h2>@ViewResources.Test1</h2>
顺便说一句:这也适用于 MVC 4,而不仅仅是 MVC 3。
【讨论】:
您需要的下一步是本地化您的 Javascript 库。 看这里:MVC-JavaScript-localization-of-external-js-files
【讨论】: