我想在我的ASP.NET MVC应用程序中实现Globalization
和Localization
。asp.net中的全球化MVC4
我经历了几个教程,如this。
但问题是他正在为每种语言创建多个视图。
因此,如果有10个视图,那么我们必须为每种语言创建10个视图,总计为100个。请指导创建多语言(即8种语言)应用程序的最佳方式,即单个视图和PO文件。
我想在我的ASP.NET MVC应用程序中实现Globalization
和Localization
。asp.net中的全球化MVC4
我经历了几个教程,如this。
但问题是他正在为每种语言创建多个视图。
因此,如果有10个视图,那么我们必须为每种语言创建10个视图,总计为100个。请指导创建多语言(即8种语言)应用程序的最佳方式,即单个视图和PO文件。
在我看来,做多个视图是最好的方法。如果你发现它太多了,可能是因为你的MVC应用程序没有遵循适当的MVC模式。一个观点应该总是愚蠢的。如果一个观点是愚蠢的,它唯一的东西是写作和布局。
这就是说,当然你可以去做一些文化服务。所有你需要的是:
模式
@String.Format(Context.CultureService.GetFormat("HELLOWORLD"), "World")
"Hello %s!"
从加载XML牵强编辑
哦,要允许十进制/货币/日期默认全球化,您还应该考虑返回当前Culture的实例的Current
属性。这样,你可以使用它像这样:@ViewModel.SomeDate.ToString(Context.CultureService.Current.DateTimeFormat)
EDIT2
2更多的事情。
因为这整个@String.Format(Context.CultureService.GetFormat(), "")
事情是那么长,考虑写一个帮手,让您可以编写类似@Globalize("HELLOWORLD", "World")
考虑使用枚举归纳字符串数据。通过摆脱魔法字符串,它的视图会更清晰,并且可以更轻松地进行重构。结果可能类似于@Globalize(HOME.Hello, User.Name)
我不会推荐多个视图。我喜欢OpenCart和其他软件如何做。他们有一个单独的语言文件夹。所有控制器动作首先调用语言方法来获取请求的特定语言,然后像任何其他变量一样将其返回到视图。当然,这适用于静态内容。对于数据库驱动的内容,您应该有一个单独的函数来获取所请求语言的特定字段。 – user1477388