我想在發送翻譯文本請求之前檢查Microsoft翻譯是否支持某種語言。Microsoft翻譯nb-NO翻譯得很好,但支持的語言api調用不會列爲支持的語言
我打個電話給這個API: http://api.microsofttranslator.com/V2/Http.svc/GetLanguagesForTranslate
並返回語言列表。其中之一是:「否」 Norweigan。
我的應用程序有NB-NO支持......所以我的語言主要檢查歸結爲以下代碼:
string language = "nb-NO";
this.cachedSupportedLanguages = string[] { "no" };
return this.cachedSupportedLanguages.Contains(language);
我遇到的問題是,如果我發送請求關閉這個API與NB-NO爲「到語言」,翻譯回落到挪威語: http://api.microsofttranslator.com/v2/Http.svc/Translate?text=textToTranslate&from=fromLanguage&to=toLanguage ...
...但我找不到前檢查的方式,如果一門語言是suppo因爲即使我這樣做:
new CultureInfo(language)
它沒有任何語言能夠退回到Norweigan的知識。
任何想法,我可以檢查這個比明確switch
更好的方式嗎?
編輯
將培養具有層次結構,使得特定 培養的親本是中性培養和中性培養的親本是 的InvariantCulture的。 Parent屬性返回與特定文化相關的中性文化 。
https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.71).aspx
如果我這樣做:
CultureInfo cultureInfo = new CultureInfo(language);
// For languages like en-US
if (this.cachedSupportedLanguages.Any(x => x.Equals(cultureInfo.TwoLetterISOLanguageName, StringComparison.OrdinalIgnoreCase)))
{
return true;
}
// For languages like nb-NO where the explicit language is not supported but its parent culture is
if (!string.IsNullOrEmpty(cultureInfo.Parent.ToString()))
{
if (cultureInfo.Parent.IsNeutralCulture)
{
if (!string.IsNullOrEmpty(cultureInfo.Parent.Parent.ToString()))
{
if (!string.IsNullOrEmpty(cultureInfo.Parent.Parent.CompareInfo.ToString()))
{
return this.cachedSupportedLanguages.Any(x => x.Equals(cultureInfo.Parent.Parent.CompareInfo.Name, StringComparison.OrdinalIgnoreCase));
}
}
}
}
我得到真正的...但我不完全明白如果家長總是將是一個安全的賭注去對於這些信息?