在ASP.NET MVC应用程序中为接口支持多种语言的最佳方法是什么? 我见过人们将资源文件用于其他应用程序。 这仍然是最好的方式吗?

===============>>#1 票数:41 已采纳

如果您使用的是默认视图引擎,则本地资源可在视图中使用。 但是,如果需要在控制器操作中获取资源字符串,则无法获取本地资源,并且必须使用全局资源。

当您考虑它时,这是有道理的,因为本地资源是aspx页面的本地资源,而在控制器中,您甚至没有选择您的视图。

===============>>#2 票数:21

我发现这个资源非常有用

它是HttpContext.Current.GetGlobalResourceStringHttpContext.Current.GetLocalResourceString的包装器,它允许你调用这样的资源......

// default global resource
Html.Resource("GlobalResource, ResourceName")

// global resource with optional arguments for formatting
Html.Resource("GlobalResource, ResourceName", "foo", "bar")

// default local resource
Html.Resource("ResourceName")

// local resource with optional arguments for formatting
Html.Resource("ResourceName", "foo", "bar")

我发现的唯一问题是控制器无法访问本地资源字符串。

===============>>#3 票数:3

是资源仍然是在.NET环境中支持多种语言的最佳方式。 因为它们易于引用,甚至更容易添加新语言。

Site.resx
Site.en.resx
Site.en-US.resx
Site.fr.resx
etc...

所以你仍然使用资源文件。

===============>>#4 票数:2

Orchard项目使用名为“T”的快捷方法来执行所有页内字符串转换。 因此,您将看到带有@T的标签(“要转换的字符串”)。

我打算看看这是如何在幕后实现的,并可能在未来的项目中使用它。 短名称使代码更清晰,因为它将被大量使用

我喜欢这种方法的原因是原始字符串(在本例中为英文)在代码中仍然很容易看到,并且不需要在资源工具或其他位置查找以解码实际字符串应该在这里的内容。

有关详细信息,请参见http://orchardproject.net

===============>>#5 票数:1

作为答案提到的一些其他解决方案不适用于已发布的MVC版本(它们与以前版本的alpha / beta一起使用)。

这是一篇很好的文章,描述了一种实现本地化的方法,该方法将是强类型的,不会破坏控制器和视图的单元测试: MVC v1的本地化指南

===============>>#6 票数:0

这是另一种选择,您可以访问控制器中的CurrentUICulture:

检查MVC3多语言

  ask by Lance Fisher translate from so

未解决问题?本站智能推荐: