1

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

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

4

2 回答 2

1

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

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

于 2012-12-20T11:49:24.710 回答
0

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

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

看看这个 SO 问题:从资源中获取可用语言

于 2012-12-19T19:19:19.760 回答