Exemple #1
0
        public LocalizedTextCacheEntry GetTextEntry(string ns, string key, LanguageInfo language, bool considerLanguageFallbacks, bool considerNamespaceFallbacks = true)
        {
            EnsureLoaded();
            var entry = GetTextEntryInternal(ns, key, language, considerLanguageFallbacks);

            if (entry == null && FallbackNamespaces != null && considerNamespaceFallbacks)
            {
                foreach (var fallbackNs in FallbackNamespaces.Reverse())
                {
                    if ((entry = GetTextEntryInternal(fallbackNs, key, language, considerLanguageFallbacks)) != null)
                    {
                        break;
                    }
                }
            }
            return(entry);
        }
        public DefaultTextManager()
            : base()
        {
            CurrentLanguage = () =>
            {
                LanguageInfo languageInfo;
                var          culture = CultureInfo.CurrentUICulture;
                if (!_languageInfoCache.TryGetValue(culture, out languageInfo))
                {
                    _languageInfoCache.Add(culture, languageInfo = (LanguageInfo)culture);
                }
                return(languageInfo);
            };

            CurrentTimeZone = () => TimeZoneInfo.Local;



            TrackCallingAssembly = true;

            //Build-in texts
            FallbackNamespaces.Add(GetNamespace <DefaultTextManager>());

            //Empty namespace
            FallbackNamespaces.Add("");


            // This is used to match texts that all languages should fall back to
            FallbackLanguages = new List <LanguageInfo> {
                new LanguageInfo {
                    Key = "*"
                }
            };

            NamespaceTextResolver = (asm, ns) =>
            {
                return(AssemblySourceLoader.GetTextSource(asm, this, ns));
            };
        }