Asp.net mvc 3 ASP.NETMVC3中的全球化

Asp.net mvc 3 ASP.NETMVC3中的全球化,asp.net-mvc-3,globalization,Asp.net Mvc 3,Globalization,我试图在我的MVC 3应用程序中实现全球化/本地化。我不希望每种语言都有不同的观点。请建议我如何进行。任何受支持的链接/URL都会有很大帮助。您可以像其他应用程序一样对其进行本地化,如下所示: 创建一个文件夹,称之为Resources 右键单击文件夹并添加类。。。选择资源文件。可以随意称呼它,例如Strings.resx 在文件属性下,将自定义工具更改为PublicResXFileCodeGenerator 使用翻译键和值对填充资源文件(这将是默认翻译) 使用其所在区域性的名称以以下格式创建其他

我试图在我的MVC 3应用程序中实现全球化/本地化。我不希望每种语言都有不同的观点。请建议我如何进行。任何受支持的链接/URL都会有很大帮助。

您可以像其他应用程序一样对其进行本地化,如下所示:

  • 创建一个文件夹,称之为Resources
  • 右键单击文件夹并添加类。。。选择资源文件。可以随意称呼它,例如Strings.resx
  • 在文件属性下,将自定义工具更改为
    PublicResXFileCodeGenerator
  • 使用翻译键和值对填充资源文件(这将是默认翻译)
  • 使用其所在区域性的名称以以下格式创建其他资源:{name}.de.resx,例如Strings.de.resx
  • (适用于Razor)打开Views文件夹中的web.config,并将其添加到/configuration/system.web.webPages.Razor/pages/namespace:(假设resources是您在其中创建资源的文件夹的名称,并且您没有更改资源文件本身的默认名称空间)。 这一步意味着您不必每次引用翻译时都完全限定视图中的资源类
  • 使用翻译来代替视图中的文本,如以下代码所示:

    @Strings.MyString
    
  • 字符串将根据CultureInfo.CurrentCulture在视图中自动转换,但这不是为您自动设置的

    您需要更改
    CurrentCulture
    (可能在
    应用程序中_BeginRequest
    )。如何做到这一点取决于您,它可以是设置它的路由值,也可以是用户的浏览器语言


    您可以在
    HttpContext.Current.Request.UserLanguages
    中找到用户首选语言的列表(按顺序)

    这是一篇关于MVC 3全球化/国际化的详细文章

    下一步需要的是本地化Javascript库。 请看这里:

    要添加一些详细信息(以防他的MediaFire链接消失),以下是我如何识别它的:

    我使用了两个文件,因为我现在只需要英语和德语(“de”):

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

    最后,我在根Web.Config文件的
    部分下面输入了以下内容:

    <globalization uiCulture="auto" culture="auto" />
    
    
    
    当然,我还将namespace指令添加到了Views文件夹下的Web.Config文件中(即不是根目录),如Martin所述:

    <add namespace="ViewResources" />
    
    
    
    然后我终于可以访问我(部分)Razor视图中的强类型资源:

    <h2>@ViewResources.Test1</h2>
    
    @ViewResources.Test1
    

    顺便说一句:这也适用于MVC4,而不仅仅是MVC3。

    在第7步中,我在web中也这样做。配置为Highlighted,但出现错误“找不到类型或命名空间名称******‘资源’(是否缺少using指令或程序集引用?)”****“请详细说明或提供任何示例应用程序。这是实现此功能所需的最低要求。您应该添加如何访问javascript中的资源字符串?如果您希望通过javascript访问它们,您需要对返回字符串的服务执行一些ajax调用。这篇文章非常适合于讨论语言、区域性和区域性之间的差异,但它在调用Web.config中不完整的命名空间时犯了与上面文章相同的错误。它提到您需要将命名空间添加到视图Web.configSee中