Exemple #1
0
 public static string ValidateLanguageCode(string languageCode)
 {
     return(AllLanguages.Contains(languageCode)
         ? languageCode
         : FallbackLanguages.ContainsKey(languageCode)
             ? FallbackLanguages[languageCode]
             : LanguageCodes.DefaultLanguage);
 }
Exemple #2
0
        private LocalizedTextCacheEntry GetTextEntryInternal(string ns, string key, LanguageInfo language, bool considerLanguageFallbacks)
        {
            if (_textCache != null)
            {
                Dictionary <string, Dictionary <string, LocalizedTextCacheEntry> > keys;
                if (_textCache.TryGetValue(ns, out keys))
                {
                    Dictionary <string, LocalizedTextCacheEntry> translations;
                    if (keys.TryGetValue(key, out translations))
                    {
                        LocalizedTextCacheEntry text;

                        if (translations.TryGetValue(language.Key, out text))
                        {
                            EnsureEvaluator(text);
                            return(text);
                        }
                    }
                }
            }


            if (PrepareTextSources(ns))
            {
                return(GetTextEntry(ns, key, language, considerLanguageFallbacks));
            }

            if (considerLanguageFallbacks)
            {
                var fallbacks = new List <LanguageInfo>();
                if (language.Fallbacks != null)
                {
                    fallbacks.AddRange(language.Fallbacks);
                }
                if (FallbackLanguages != null)
                {
                    fallbacks.AddRange(FallbackLanguages.Reverse());
                }

                LocalizedTextCacheEntry text = null;
                if (fallbacks.Any(x =>
                                  (text = GetTextEntry(ns, key, x, false, false)) != null))
                {
                    return(text);
                }
            }

            return(null);
        }