首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >asp.net MVC4中的全球化

asp.net MVC4中的全球化
EN

Stack Overflow用户
提问于 2012-10-24 20:43:41
回答 1查看 551关注 0票数 3

我想在我的ASP.NET MVC应用程序中实现GlobalizationLocalization

我看了几个像this这样的教程。

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

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

EN

回答 1

Stack Overflow用户

发布于 2012-10-24 21:40:06

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

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

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

模式

XML应用程序加载

  • 实例或静态配置service
  • Service根据需要加载相应的
  • 视图从上下文或静态方法调用服务@String.Format(Context.CultureService.GetFormat("HELLOWORLD"), "World")
  • Service返回格式字符串,如从加载的

获取的

编辑

哦,为了允许小数/货币/日期的缺省全球化,您还应该考虑一个返回当前区域性实例的Current属性。这样你就可以像这样使用它:@ViewModel.SomeDate.ToString(Context.CultureService.Current.DateTimeFormat)

Edit2

还有两件事。

因为整个@String.Format(Context.CultureService.GetFormat(), "")很长,所以可以考虑编写一个帮助器,这样就可以编写类似@Globalize("HELLOWORLD", "World")的代码了

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13049481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档