2017-02-10 4 views
1

Я хотел бы проверить, поддерживается ли язык Microsoft Translator, перед отправкой запроса на перевод текста.Microsoft переводчик nb-NO переводит отлично, но поддерживаемый язык 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); 

Проблема у меня в том, если я отправить запрос от этого апи с NB-NO как «на язык», перевод возвращается к норвежским: http://api.microsofttranslator.com/v2/Http.svc/Translate?text=textToTranslate&from=fromLanguage&to=toLanguage ...

... но я не могу найти способ предварительной проверки, если язык является Suppo rted потому, что даже если я делаю:

new CultureInfo(language) 

Он не имеет каких-либо знаний о языке будучи в состоянии возвратиться к норвежским.

Любые идеи, как я могу проверить это лучше, чем явное 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)); 
      } 
     } 
    } 
} 

Я получаю истинное ... Но я не совсем понимаю, если Родитель всегда будет безопасная ставка, чтобы перейти к за эту информацию?

ответ

0

Существует переводчик Microsoft, который возвращает необходимую вам информацию. Данные возвращаются как JSON. Вы можете получить поддерживаемые языки для перевода текста, перевода речи и текста в речь одним вызовом api. Вы также получите дополнительную информацию.

Узнайте об этом и попробуйте по: http://docs.microsofttranslator.com/languages.html

Смежные вопросы