private string GetLanguage1Name_NoCache(string inLanguage) { string exactLanguageMatch; if (!_lookupIsoCode.GetBestLanguageName(Language1Iso639Code, out exactLanguageMatch)) { return("L1-Unknown-" + Language1Iso639Code); } return(GetLanguageNameInUILangIfPossible(exactLanguageMatch, inLanguage)); }
private string GetLanguage1Name_NoCache(string inLanguage) { var name = _lookupIsoCode.GetLocalizedLanguageName(Language1Iso639Code, inLanguage); if (name == Language1Iso639Code) { string exactLanguageMatch; if (!_lookupIsoCode.GetBestLanguageName(Language1Iso639Code, out exactLanguageMatch)) { return("L1-Unknown-" + Language1Iso639Code); } return(exactLanguageMatch); } return(name); }
private string GetLanguageName_NoCache(string inLanguage) { try { if (string.IsNullOrEmpty(Iso639Code)) { return(string.Empty); } var name = LookupIsoCode.GetLocalizedLanguageName(Iso639Code, inLanguage); if (name == Iso639Code) { string match; if (!LookupIsoCode.GetBestLanguageName(Iso639Code, out match)) { return($"L{_languageNumberInCollection}-Unknown-" + Iso639Code); } return(match); } return(name); } catch (Exception) { return("Unknown-" + Iso639Code); } }
public void GetBestLanguageName_ForLotsOfVariants_FindsExpectedName(string codeVariant, string expectedResult) { var sut = new LanguageLookupModel(); string name; Assert.That(sut.GetBestLanguageName(codeVariant, out name), Is.True); Assert.That(name, Is.EqualTo(expectedResult)); }
public void GetBestLanguageName_ForArab_FindsArab() { var sut = new LanguageLookupModel(); string name; Assert.That(sut.GetBestLanguageName("arab", out name), Is.False); Assert.That(name, Is.EqualTo("arab")); }
public void GetBestLanguageName_ForFR_FindsFrench() { var sut = new LanguageLookupModel(); string name; Assert.That(sut.GetBestLanguageName("fr", out name), Is.True); Assert.That(name, Is.EqualTo("French")); }
public void GetBestLanguageName_ForARA_FindsArabic() { var sut = new LanguageLookupModel(); string name; Assert.That(sut.GetBestLanguageName("ara", out name), Is.True); Assert.That(name, Is.EqualTo("Arabic")); }
/// <summary> /// For what languages we know about, return the English name. If we don't know anything, return null. /// This is called only when CultureInfo doesn't supply the information we need. /// </summary> private static string GetEnglishNameIfKnown(this LanguageLookupModel isoModel, string code) { string englishName; if (!isoModel.GetBestLanguageName(code, out englishName)) { switch (code) { case "pbu": englishName = "Northern Pashto"; break; case "prs": englishName = "Dari"; break; case "tpi": englishName = "New Guinea Pidgin English"; break; default: englishName = null; break; } } return(englishName); }
/// <summary> /// Add to the dictionary which maps original to Localized strings an entry for any language code that doesn't already /// have one. We have localizations for a few major languages that map e.g. de->German/Deutsch/etc, so they are functioning /// not just to localize but to expand from a language code to an actual name. For any other languages where we don't /// have localization information, we'd like to at least expand the cryptic code into a name. This method does that. /// </summary> /// <param name="xmlDocument"></param> /// <param name="mapOriginalToLocalized"></param> internal static void AddLanguagesUsedInPage(XmlDocument xmlDocument, Dictionary <string, string> mapOriginalToLocalized) { var langs = xmlDocument.SafeSelectNodes("//*[@lang]").Cast <XmlElement>() .Select(e => e.Attributes["lang"].Value) .Distinct() .Where(lang => !mapOriginalToLocalized.ContainsKey(lang)) .ToList(); if (langs.Any()) { // We don't have a localization for these languages, but we can at least try to give them a name var lookup = new LanguageLookupModel(); // < 1ms foreach (var lang in langs) // may include things like empty string, z, *, but this is harmless as they are not language codes. { string match; if (lookup.GetBestLanguageName(lang, out match)) // some better name found { mapOriginalToLocalized[lang] = match; } } } }