コード例 #1
0
        private string GetLanguage1Name_NoCache(string inLanguage)
        {
            string exactLanguageMatch;

            if (!_lookupIsoCode.GetBestLanguageName(Language1Iso639Code, out exactLanguageMatch))
            {
                return("L1-Unknown-" + Language1Iso639Code);
            }
            return(GetLanguageNameInUILangIfPossible(exactLanguageMatch, inLanguage));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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"));
        }
コード例 #6
0
        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"));
        }
コード例 #7
0
        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"));
        }
コード例 #8
0
        /// <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);
        }
コード例 #9
0
        /// <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;
                    }
                }
            }
        }