2012-12-19 119 views
1

我在我的ASP.NET MVC應用程序(/lang/{culture}/{controller}/{action}/{id})和我的基本控制器中使用自定義路由,我檢測到的值存在culture參數並設置當前的線程文化。但是,如果有人設法導航到沒有任何資源的語言,而不是默默地回到默認文化,我想提出一條消息,指出缺少語言支持。如何檢測是否支持ASP.NET MVC本地化語言

如何檢測當前文化是否沒有指定資源,而不是默默回落到默認值?

回答

1

的問題是,在實踐中它的複雜以編程方式確定是否有一個特定的文化本地化。對於一個組件,您可能有一個特定文化的衛星組件,但不適用於另一個組件。更糟的是,一個衛星組件可能包含一些資源的翻譯,但不是全部。這可能是故意的:對於en-GB,您可能更願意只採用「覆蓋而不是重複」的方法,並且只在這裏和那裏定義少量資源,只在與基礎英語不同的地方。

因此,最簡單和最清晰的方法可能是在您的應用程序代碼中維護一個支持文化的硬編碼主列表,然後將您的語言支持警報邏輯基於此列表。當您添加新的本地化時,您需要在代碼中更新該列表。但是我們大多數人都是通過簽入新的資源文件來完成本地化 - 無論如何,代碼和本地化資源之間並沒有完全分離。

0

似乎沒有直接的API給你從資源文件的可用文化列表。

一種可能的解決方案是枚舉資源文件並解析出語言代碼。

看一看這太問題:Get available languages from resource