Jquery asp.net MVC4中的全球化
我想在我的ASP.NET MVC应用程序中实现Jquery asp.net MVC4中的全球化,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我想在我的ASP.NET MVC应用程序中实现全球化和本地化 我读了一些教程,比如 但问题是,他正在为每种语言创建多个视图 因此,如果有10个视图,那么我们必须为每种语言创建10个视图,总计100个。请指导我使用单视图和PO文件(如果可能)创建多语言(即8种语言)应用程序的最佳方法。在我看来,使用多视图是最好的方法。如果您觉得这太麻烦了,可能是因为您的MVC应用程序没有遵循正确的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方法以获取所请求的特定语言,然后将其与任何其他变量一样返回到视图。当然,这对静态内容很有效。对于数据库驱动的内容,您应该有一个单独的函数来获取所请求语言的特定字段。