Jquery asp.net MVC4中的全球化

Jquery asp.net MVC4中的全球化,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我想在我的ASP.NET MVC应用程序中实现全球化和本地化 我读了一些教程,比如 但问题是,他正在为每种语言创建多个视图 因此,如果有10个视图,那么我们必须为每种语言创建10个视图,总计100个。请指导我使用单视图和PO文件(如果可能)创建多语言(即8种语言)应用程序的最佳方法。在我看来,使用多视图是最好的方法。如果您觉得这太麻烦了,可能是因为您的MVC应用程序没有遵循正确的MVC模式。一个视图应该永远是哑的。如果一个视图是哑的,那么它唯一拥有的就是写入和布局 也就是说,你当然可以做一些文化

我想在我的ASP.NET MVC应用程序中实现
全球化
本地化

我读了一些教程,比如

但问题是,他正在为每种语言创建多个视图


因此,如果有10个视图,那么我们必须为每种语言创建10个视图,总计100个。请指导我使用单视图和PO文件(如果可能)创建多语言(即8种语言)应用程序的最佳方法。

在我看来,使用多视图是最好的方法。如果您觉得这太麻烦了,可能是因为您的MVC应用程序没有遵循正确的MVC模式。一个视图应该永远是哑的。如果一个视图是哑的,那么它唯一拥有的就是写入和布局

也就是说,你当然可以做一些文化服务。您所需要的只是:

  • 区域性服务(实例、单例或静态。这取决于您的需要)
  • XML文件,用于保存每种语言的每个字符串的键值对
图案

  • 应用程序负载
  • 实例或静态配置服务
  • 服务根据您希望的内容加载适当的XML
  • View从上下文或静态方法调用服务
    @String.Format(Context.CultureService.GetFormat(“HELLOWORLD”),“World”)
  • 服务返回从加载的XML中提取的格式字符串,如
    “Hello%s!”
编辑

哦,为了允许十进制/货币/日期缺省全球化,您还应该考虑返回当前文化实例的<代码>当前< /代码>属性。这样您就可以像这样使用它:

@ViewModel.SomeDate.ToString(Context.CultureService.Current.DateTimeFormat)

Edit2

还有两件事

因为这个完整的<代码> @ String .Frand(上下文.CultuStudio.GETFalm()),事情太长了,请考虑编写一个帮助器,这样你就可以编写一些类似“<代码> @全球化”(“HeloWord”,“Word”)< /COD> < /P>


考虑使用枚举来泛化字符串数据。通过去掉神奇的字符串,它将在视图中更加清晰,并且允许更容易的重构。结果可能类似于
@Globalize(HOME.Hello,User.Name)

我不推荐多个视图。我喜欢OpenCart和其他软件的工作方式。他们有一个单独的语言文件夹。所有控制器操作首先调用language方法以获取所请求的特定语言,然后将其与任何其他变量一样返回到视图。当然,这对静态内容很有效。对于数据库驱动的内容,您应该有一个单独的函数来获取所请求语言的特定字段。