Viv*_*vek 27 globalization asp.net-mvc-3
我试图在我的MVC 3应用程序中实现全球化/本地化.我不希望每种语言都有不同的视图.请建议我如何继续.任何受支持的链接/ URL都会有很大帮助.
Mar*_*oth 43
您可以像以下任何其他应用程序一样对其进行本地化:
PublicResXFileCodeGenerator在视图中使用翻译代替文本,例如使用以下代码:
@Strings.MyString
Run Code Online (Sandbox Code Playgroud)字符串将根据CultureInfo.CurrentCulture在视图中自动翻译,但不会自动为您设置
您需要更改CurrentCulture(可能在Application_BeginRequest).如何执行此操作取决于您,它可能是设置它的路由值,或者您可以读取用户的浏览器语言
您可以在中找到用户首选语言的列表(按顺序)HttpContext.Current.Request.UserLanguages.
为了向Martin Booth的回答添加一些细节(如果他的MediaFire链接可能会消失),我就是这样做的:
我使用了两个文件,因为我现在只需要英语和德语("de"):

对于每个文件的属性,我必须为每个文件手动输入自定义工具以及自定义工具命名空间值:


最后,我在根Web.Config文件中输入以下<system.web>内容:
<globalization uiCulture="auto" culture="auto" />
Run Code Online (Sandbox Code Playgroud)
当然,我还在Views文件夹下面的Web.Config文件中添加了namespace指令(即不是根文件夹),正如Martin所描述的那样:
<add namespace="ViewResources" />
Run Code Online (Sandbox Code Playgroud)
然后我终于可以在我的(部分)Razor视图中访问强类型的资源了:
<h2>@ViewResources.Test1</h2>
Run Code Online (Sandbox Code Playgroud)
BTW:这也适用于MVC 4,而不仅仅是MVC 3.
| 归档时间: |
|
| 查看次数: |
15859 次 |
| 最近记录: |