テキストの翻訳依頼を送信する前に、Microsoft Translatorでサポートされている言語かどうかを確認します。Microsoft翻訳者nb-NOは正しく翻訳されていますが、サポートされている言語です。APIコールはサポートされている言語ではありません。
私はこのAPIをコールします: http://api.microsofttranslator.com/V2/Http.svc/GetLanguagesForTranslate
をし、それが言語のリストを返します。そのうちの1つは、Norweiganの"no"です。
私のアプリケーションはので、私の言語のチェックは、基本的にこのコードに降りてくる... NB-NOをサポートしています:私はこれまでオフ要求を送信する場合
string language = "nb-NO";
this.cachedSupportedLanguages = string[] { "no" };
return this.cachedSupportedLanguages.Contains(language);
私がいる問題がありますスッポ私は事前チェックの方法を見つけることができません
...しかし http://api.microsofttranslator.com/v2/Http.svc/Translate?text=textToTranslate&from=fromLanguage&to=toLanguageが...言語がある場合:NB-NO「言語へ」などとのAPIは、翻訳がNorweiganにフォールバックもし私がそうであっても、その理由は分かります。
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));
}
}
}
}
を私は真を取得...しかし、親はいつもに行く安全な賭けになるだろうされている場合、私は完全には理解していませんこの情報のために?