我想在我的 ASP.NET MVC 应用程序中实现Globalization
和。Localization
我经历了几个这样的教程。
但问题是他正在为每种语言创建多个视图。
因此,如果有 10 个视图,那么我们必须为每种语言创建 10 个视图,总计 100 个。请指导我使用单一视图创建多语言(即 8 种语言)应用程序的最佳方法,如果可能的话,使用 PO 文件。
我想在我的 ASP.NET MVC 应用程序中实现Globalization
和。Localization
我经历了几个这样的教程。
但问题是他正在为每种语言创建多个视图。
因此,如果有 10 个视图,那么我们必须为每种语言创建 10 个视图,总计 100 个。请指导我使用单一视图创建多语言(即 8 种语言)应用程序的最佳方法,如果可能的话,使用 PO 文件。
在我看来,做多个视图是最好的方法。如果你觉得它太麻烦,可能是因为你的 MVC 应用程序没有遵循正确的 MVC 模式。视图应该永远是愚蠢的。如果一个视图是愚蠢的,它唯一的东西就是文字和布局。
也就是说,你当然可以去做某种文化服务。所有你需要的是:
图案
@String.Format(Context.CultureService.GetFormat("HELLOWORLD"), "World")
"Hello %s!"
从加载的 XML 中获取编辑
哦,为了允许十进制/货币/日期默认全球化,您还应该考虑一个Current
返回当前文化实例的属性。这样你就可以像这样使用它:@ViewModel.SomeDate.ToString(Context.CultureService.Current.DateTimeFormat)
编辑2
还有2件事。
因为这整件事@String.Format(Context.CultureService.GetFormat(), "")
太长了,考虑写一个助手,这样你就可以写出类似的东西@Globalize("HELLOWORLD", "World")
考虑使用枚举来概括字符串数据。通过摆脱魔术字符串,视图将更加清晰,并且可以更轻松地进行重构。结果可能类似于@Globalize(HOME.Hello, User.Name)