CodeResourceControl.cs 5.4 KB
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CodeLibrary
{
    public class CodeResourceControl
    {
        //public delegate string GetStrDelegate(string id, string defaultStr);
        //public static event GetStrDelegate GetStrEvent;

        //public delegate string GetStringDelegate(string id, string defaultStr, params object[] param);
        //public static event GetStringDelegate GetStringEvent;
        public static bool OpenResourceLog = false;
        public static string China = "zh-CN";
        public static string English = "en-US";
        private static Dictionary<string, string> chineseMap = new Dictionary<string, string>();
         
        private static Dictionary<string, string> englishMap = new Dictionary<string, string>();

        public delegate string GetLanguageDelegate();
        public static event GetLanguageDelegate GetLanguageEvent;
        public static string GetLanguage()
        {
            if (GetLanguageEvent == null)
            {
                return China;
            }
            string result = GetLanguageEvent?.Invoke();
            if (result == null)
            {
                return "";
            }
            return result;
        }
 
        private static string spiltStr = "_";
        private static string Text = "Text";
        public static string GetTextIdStr(string className, string controlName)
        {
            return className + spiltStr + controlName + spiltStr + Text;
        }
        public static string GetTextIdStr(string className)
        {
            return className + spiltStr + Text;
        }
        public static string GetString(string id, string defaultStr)
        {
            string strCurLanguage = "";

            try
            {
                if (GetLanguage().Equals(China))
                {
                  chineseMap.TryGetValue(id,out strCurLanguage);
                }else if (GetLanguage().Equals(English))
                { 
                    englishMap.TryGetValue(id, out strCurLanguage);
                }
               
                if ((strCurLanguage==null||strCurLanguage.Equals("") )&& (!defaultStr.Equals("")))
                {
                    strCurLanguage = defaultStr;
                    NoIdLog(id, defaultStr);
                }

            }
            catch (Exception ex)
            {
                if (defaultStr.Equals(""))
                {
                }
                else
                {
                    strCurLanguage = "No id:[" + id + "], please add.";
                    strCurLanguage = defaultStr;
                    NoIdLog(id, defaultStr);
                }
            }
            if (strCurLanguage == null)
            {
                strCurLanguage = "";
            }
            return strCurLanguage;
        }
        public static string GetString(string id, string defaultStr, params object[] param)
        {
            string strCurLanguage = GetString(id, defaultStr); 
            return String.Format(strCurLanguage, param);
        }

        private static void NoIdLog(string id, string defaultStr)
        {
            if (OpenResourceLog)
            {
                HDLogUtil.info("No id:[" + id + "], please add,use default string :" + defaultStr);
            }
        }
        static CodeResourceControl()
        {
            try
            {
                chineseMap = new Dictionary<string, string>();
                englishMap = new Dictionary<string, string>();
                string path = Application.StartupPath + @"\resources\resources.txt";
                string[] lines = File.ReadAllLines(path);
                foreach (string line in lines)
                {
                    string[] array = line.Split(',');
                    if (array.Length >= 3)
                    {
                        string key = array[0];
                        string chinese = array[1];
                        string english = array[2];
                        if (chineseMap.ContainsKey(key))
                        {
                            chineseMap.Remove(key);

                        }
                        if (englishMap.ContainsKey(key))
                        {
                            englishMap.Remove(key);
                        }
                        chineseMap.Add(key, chinese);
                        englishMap.Add(key, english);
                    }
                }
                HDLogUtil.error("加载中英文配置文件完成,长度【" + chineseMap.Count + "】");
            }
            catch (Exception ex)
            {
                HDLogUtil.error("CodeResourceControl" + ex.ToString());
            }
        }
        /// <summary>
        /// 请先选择相机
        /// </summary>
        public static string selCamera = "selCamera";
        /// <summary>
        /// 请先选择图片
        /// </summary>
        public static string selImage = "selImage";
        /// <summary>
        /// 提示
        /// </summary>
        public static string title = "title";
        /// <summary>
        /// 获取二维码图片为空
        /// </summary>
        public static string imageIsNull = "imageIsNull";
        /// <summary>
        /// 确定删除文件:
        /// </summary>
        public static string sureDelete = "sureDelete";
       
    }

  
}