如何检测ASP.NET MVC本地化是否支持某种语言

时间:2012-12-19 19:07:00

标签: asp.net-mvc localization

我在我的ASP.NET MVC应用程序(/lang/{culture}/{controller}/{action}/{id})中使用自定义路由,在我的基本控制器中,我检测到culture参数的值存在并设置当前的线程文化。但是,如果某人设法导航到没有任何资源的语言,而不是默默地回归默认文化,我想提供一条消息,表明缺乏语言支持。

如何检测当前文化是否没有指定资源而不是默默地回退到默认值?

2 个答案:

答案 0 :(得分:1)

问题在于,在实践中,以编程方式确定您是否具有给定文化的本地化是很复杂的。对于一个程序集,您可能具有给定文化的附属程序集,但不适用于另一个程序集。更糟糕的是,一个附属程序集可能包含某些资源的翻译,但不是全部。这可能是有意的:对于en-GB,您可能更愿意采用“覆盖而不是重复”的方法,并且只在这里和那里定义一些资源,只在您与基础英语不同的地方。

因此,最简单和最清晰的方法可能是在应用程序代码中维护受支持的文化的硬编码主列表,然后将此语言支持警报逻辑基于此列表。添加新的本地化时,您需要在代码中更新该列表。但是我们大多数人通过将新的资源文件签入到解决方案中来进行本地化 - 代码和本地化资源之间已经没有完全分离。

答案 1 :(得分:0)

似乎没有直接API为您提供资源文件中可用文化的列表。

一种可能的解决方案是枚举资源文件并解析出语言代码。

看看这个问题:Get available languages from resource