ASP.NET MVC应用程序中有多种语言?
时间:2020-03-05 18:38:09 来源:igfitidea点击:
在ASP.NET MVC应用程序中为接口支持多种语言的最佳方法是什么?我见过人们将资源文件用于其他应用程序。这仍然是最好的方法吗?
解决方案
回答
是的,资源仍然是.NET环境中支持多种语言的最佳方法。因为它们易于参考,甚至更容易添加新语言。
Site.resx Site.en.resx Site.en-US.resx Site.fr.resx etc...
因此,我们仍然可以使用资源文件。
回答
如果使用默认视图引擎,则本地资源将在视图中工作。但是,如果需要在控制器操作中获取资源字符串,则无法获取本地资源,而必须使用全局资源。
考虑一下这是有道理的,因为本地资源对于apx页面是本地的,并且在控制器中,我们甚至都没有选择视图。
回答
我发现此资源非常有帮助
它是HttpContext.Current.GetGlobalResourceString和HttpContext.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")
我发现的唯一问题是控制器无权访问本地资源字符串。
回答
提到作为答案的其他一些解决方案不适用于MVC的发行版(它们与早期版本的alpha / beta一起使用)。
这是一篇很好的文章,描述了一种实现本地化的方法,该方法将是强类型的,并且不会破坏控制器和视图的单元测试:MVC v1的本地化指南