我想在ASP.NET MVC应用程序中实现Globalization
和Localization
。
我经历了一些像this这样的教程。
但问题是他正在为每种语言创建多个视图。
因此,如果有10个视图,那么我们必须为每种语言创建10个视图,最多为100个。请指导我使用单个视图创建多语言(即8种语言)应用程序的最佳方式,如果可能的话,使用PO文件。< / p>
答案 0 :(得分:1)
在我看来,做多个观点是最好的方法。如果你发现它太多了,那可能是因为你的MVC应用程序没有遵循适当的MVC模式。一个观点应该总是愚蠢的。如果一个观点是愚蠢的,那么唯一的就是写作和布局。
那说,当然你可以去做某种文化服务。您所需要的只是:
模式
@String.Format(Context.CultureService.GetFormat("HELLOWORLD"), "World")
"Hello %s!"
修改强>
哦,要允许十进制/货币/日期默认全球化,您还应该考虑返回当前Culture的实例的Current
属性。这样你可以像这样使用它:@ViewModel.SomeDate.ToString(Context.CultureService.Current.DateTimeFormat)
<强> EDIT2 强>
另外两件事。
因为整个@String.Format(Context.CultureService.GetFormat(), "")
事情太长了,所以考虑写一个帮助器,这样你就可以编写像@Globalize("HELLOWORLD", "World")
考虑使用Enums来概括字符串数据。通过摆脱魔术字符串,它将在视图中更加清晰,并且它将允许更容易的重构。结果可能类似于@Globalize(HOME.Hello, User.Name)