public LanguagesTreeService() { LanguageTree = new List <Language>(); //PONS + COGNITIVE SERVICES var arabic = new Language("Arabic", "ar", new List <SpeechLocale> { new SpeechLocale("Arabic (Egypt)", "ar-EG", true) }, "ar-EG supports Modern Standard Arabic (MSA)"); var danish = new Language("Danish", "da", new List <SpeechLocale> { new SpeechLocale("Danish", "da-DK", false) }); var german = new Language("German", "de", new List <SpeechLocale> { new SpeechLocale("German", "de-DE", true) }); var english = new Language("English", "en", new List <SpeechLocale> { new SpeechLocale("English (U.K.)", "en-GB", true), new SpeechLocale("English (Australia)", "en-AU", true), new SpeechLocale("English (Canada)", "en-CA", true), new SpeechLocale("English (India)", "en-IN", true), new SpeechLocale("English (New Zealand)", "en-NZ", false), new SpeechLocale("English (U.S.)", "en-US", true) }); var spanish = new Language("Spanish", "es", new List <SpeechLocale> { new SpeechLocale("Spanish", "es-ES", true), new SpeechLocale("Spanish (Mexican)", "es-MX", true) }); var french = new Language("French", "fr", new List <SpeechLocale> { new SpeechLocale("French (Canadian)", "fr-CA", true), new SpeechLocale("French", "fr-FR", true) }); var italian = new Language("Italian", "it", new List <SpeechLocale> { new SpeechLocale("Italian", "it-IT", true) }); var norwegian = new Language("Norwegian", "no", new List <SpeechLocale> { new SpeechLocale("Norwegian (Bokmal)", "nb-NO", false) }); var dutch = new Language("Dutch", "nl", new List <SpeechLocale> { new SpeechLocale("Dutch", "nl-NL", false) }); var polish = new Language("Polish", "pl", new List <SpeechLocale> { new SpeechLocale("Polish", "pl-PL", false) }); var portuguese = new Language("Portuguese", "pt", new List <SpeechLocale> { new SpeechLocale("Portuguese", "pt-PT", false), new SpeechLocale("Portuguese (Brazilian)", "pt-BR", true) }); var russian = new Language("Russian", "ru", new List <SpeechLocale> { new SpeechLocale("Russian", "ru-RU", true) }); var swedish = new Language("Swedish", "sv", new List <SpeechLocale> { new SpeechLocale("Swedish", "sv-SE", false) }); var chinese = new Language("Chinese", "zh", new List <SpeechLocale> { new SpeechLocale("Chinese (Simplified)", "zh-CN", true), new SpeechLocale("Chinese (Hongkong)", "zh-HK", true), new SpeechLocale("Chinese (Taiwan)", "zh-TW", true) }); //COGNITIVE SERVICES ONLY var catalan = new Language("Catalan", "ca", new List <SpeechLocale> { new SpeechLocale("Catalan", "ca-ES", false) }, null, false); var finnish = new Language("Finnish", "fi", new List <SpeechLocale> { new SpeechLocale("Finnish", "fi-FI", false) }, null, false); var japanese = new Language("Japanese", "ja", new List <SpeechLocale> { new SpeechLocale("Japanese", "ja-JP", true) }, null, false); var korean = new Language("Korean", "ko", new List <SpeechLocale> { new SpeechLocale("Korean", "ko-KR", false) }, null, false); //PONS var greek = new Language("Greek", "el", null); var latin = new Language("Latin", "la", null); var slovenian = new Language("Slovenian", "sl", null); var turkish = new Language("Turkish", "tr", null); var czech = new Language("Czech", "cs", null); var hungarian = new Language("Hungarian", "hu", null); var elvish = new Language("Elvish", "lb", null); //TRANSLATIONS arabic.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(english, "aren"), new KeyValuePair <Language, string>(german, "arde") }); danish.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(german, "dade") }); german.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(arabic, "arde"), new KeyValuePair <Language, string>(chinese, "dezh"), new KeyValuePair <Language, string>(dutch, "denl"), new KeyValuePair <Language, string>(english, "deen"), new KeyValuePair <Language, string>(french, "defr"), new KeyValuePair <Language, string>(greek, "deel"), new KeyValuePair <Language, string>(italian, "deit"), new KeyValuePair <Language, string>(latin, "dela"), new KeyValuePair <Language, string>(polish, "depl"), new KeyValuePair <Language, string>(portuguese, "dept"), new KeyValuePair <Language, string>(russian, "deru"), new KeyValuePair <Language, string>(slovenian, "desl"), new KeyValuePair <Language, string>(spanish, "dees"), new KeyValuePair <Language, string>(turkish, "detr"), new KeyValuePair <Language, string>(czech, "csde"), new KeyValuePair <Language, string>(danish, "dade"), new KeyValuePair <Language, string>(hungarian, "dehu"), new KeyValuePair <Language, string>(norwegian, "deno"), new KeyValuePair <Language, string>(swedish, "desv"), new KeyValuePair <Language, string>(elvish, "delb") }); english.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(arabic, "aren"), new KeyValuePair <Language, string>(chinese, "enzh"), new KeyValuePair <Language, string>(french, "enfr"), new KeyValuePair <Language, string>(german, "deen"), new KeyValuePair <Language, string>(italian, "enit"), new KeyValuePair <Language, string>(polish, "enpl"), new KeyValuePair <Language, string>(portuguese, "enpt"), new KeyValuePair <Language, string>(russian, "enru"), new KeyValuePair <Language, string>(slovenian, "ensl"), new KeyValuePair <Language, string>(spanish, "enes") }); spanish.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(chinese, "eszh"), new KeyValuePair <Language, string>(english, "enes"), new KeyValuePair <Language, string>(french, "esfr"), new KeyValuePair <Language, string>(german, "dees"), new KeyValuePair <Language, string>(polish, "espl"), new KeyValuePair <Language, string>(portuguese, "espt"), new KeyValuePair <Language, string>(slovenian, "essl") }); french.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(chinese, "frzh"), new KeyValuePair <Language, string>(english, "enfr"), new KeyValuePair <Language, string>(german, "defr"), new KeyValuePair <Language, string>(polish, "frpl"), new KeyValuePair <Language, string>(slovenian, "frsl"), new KeyValuePair <Language, string>(spanish, "esfr") }); italian.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(english, "enit"), new KeyValuePair <Language, string>(german, "deit"), new KeyValuePair <Language, string>(polish, "itpl"), new KeyValuePair <Language, string>(slovenian, "itsl") }); norwegian.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(german, "deno") }); dutch.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(german, "denl") }); polish.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(english, "enpl"), new KeyValuePair <Language, string>(french, "frpl"), new KeyValuePair <Language, string>(german, "depl"), new KeyValuePair <Language, string>(italian, "itpl"), new KeyValuePair <Language, string>(russian, "plru"), new KeyValuePair <Language, string>(spanish, "espl") }); portuguese.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(english, "enpt"), new KeyValuePair <Language, string>(german, "dept"), new KeyValuePair <Language, string>(spanish, "espt") }); russian.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(english, "enru"), new KeyValuePair <Language, string>(german, "deru"), new KeyValuePair <Language, string>(polish, "plru") }); swedish.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(german, "desv") }); chinese.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(english, "enzh"), new KeyValuePair <Language, string>(french, "frzh"), new KeyValuePair <Language, string>(german, "dezh"), new KeyValuePair <Language, string>(spanish, "eszh") }); greek.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(german, "deel") }); latin.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(german, "dela") }); slovenian.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(english, "ensl"), new KeyValuePair <Language, string>(french, "frsl"), new KeyValuePair <Language, string>(german, "desl"), new KeyValuePair <Language, string>(italian, "itsl"), new KeyValuePair <Language, string>(spanish, "essl") }); turkish.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(german, "detr") }); czech.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(german, "csde") }); hungarian.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(german, "dehu") }); elvish.AddTranslationLanguage(new[] { new KeyValuePair <Language, string>(german, "delb") }); //POPULATING LanguageTree.AddRange(new[] { arabic, danish, german, english, spanish, french, italian, norwegian, dutch, polish, portuguese, russian, swedish, chinese, greek, latin, slovenian, turkish, czech, hungarian, elvish }); LanguageTree.AddRange(new[] { catalan, finnish, japanese, korean }); //SORTING LanguageTree.Sort((x, y) => string.CompareOrdinal(x.Name, y.Name)); }