Microsoft翻译nb-NO翻译得很好,但支持的语言api调用不会列为支持的语言
我想在发送翻译文本请求之前检查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));
}
}
}
}
我得到真正的...但我不完全明白如果家长总是将是一个安全的赌注去对于这些信息?
有一个Microsoft翻译器方法,可以返回您需要的信息。数据以JSON形式返回。您可以在一次api调用中获得支持的文本翻译,语音翻译和文本到语音的语言。您还可以获得更多信息。