个人资料

跳过导航链接首页 > 博客列表 > 博客正文

WinUI3多语言帮助类

分类:

旧的ResourceLoader 在winui中报错 0x80073B27,使用新的manager

public static class AppResources
    {
        private static ResourceMap _map;
        private static ResourceMap Map
        {
            get
            {

                if (_map != null) return _map;
                else
                {
                    _manager = new ResourceManager();
                    _map = _manager.MainResourceMap.GetSubtree("Resources");
                    _context = _manager.CreateResourceContext();
                    return _map;
                }


            }
        }

        
        private static ResourceContext _context;
        private static ResourceManager _manager;

        private static readonly Dictionary<string, string> ResourceCache = new Dictionary<string, string>();

        public static string GetString(string key)
        {
            string s;
            if (ResourceCache.TryGetValue(key, out s))
            {
                return s;
            }
            else
            {
                //Debug.WriteLine($"getting:{key}");  
                string r= Map.GetValue(key, _context).ValueAsString;
                //Debug.WriteLine($"{key}:{r}");
                return r;
               
            }
        }




        public static string language
        {
            get { return GetCurLanguage(); }

           
        }


        public static string GetCurLanguage()
        {
            var languages = GlobalizationPreferences.Languages;
            Debug.WriteLine(languages[0].ToLower());

            string result = "en";
            if (languages.Count > 0)
            {
                List<string> lLang = new List<string>();//zh-hans-cn
                lLang.Add("zh、zh-cn、zh-Hans、zh-hans-cn、zh-sg、zh-hans-sg");
                lLang.Add("zh-tw、zh-Hant、zh-mo、zh-hk、zh-hant-hk、zh-hant-mo、zh-hant-tw");
                lLang.Add("de、de-at、de-ch、de-de、de-lu、de-li");
                lLang.Add("en、en-us、en-au、en-ca、en-gb、en-ie、en-in、en-nz、en-sg、en-za、en-bz、en-hk、en-id、en-jm、en-kz、en-mt、en-my、en-ph、en-pk、en-tt、en-vn、en-zw、en-053、en-021、en-029、en-011、en-018、en-014");
                lLang.Add("es、es-cl、es-co、es-es、es-mx、es-ar、es-bo、es-cr、es-do、es-ec、es-gt、es-hn、es-ni、es-pa、es-pe、es-pr、es-py、es-sv、es-us、es-uy、es-ve、es-019、es-419");
                lLang.Add("fr、fr-be、fr-ca、fr-ch、fr-fr、fr-lu、fr-015、fr-cd、fr-ci、fr-cm、fr-ht、fr-ma、fr-mc、fr-ml、fr-re、frc-latn、frp-latn、fr-155、fr-029、fr-021、fr-011");
                lLang.Add("hi、hi-in");
                lLang.Add("it、it-it、it-ch");
                lLang.Add("ja、ja-jp");
                lLang.Add("pt、pt-pt、pt-br");
                lLang.Add("ru、ru-ru");
                for (int i = 0; i < lLang.Count; i++)
                {
                    if (lLang[i].ToLower().Contains(languages[0].ToLower()))
                    {
                        string temp = lLang[i].ToLower();
                        string[] tempArr = temp.Split('、');
                        result = tempArr[0];

                    }

                }
            }
            return result;
        }

    }
songshizhao
最初发表2023/2/12 23:13:27 最近更新2023/2/12 23:13:27 144
为此篇作品打分
10
   评论