ResourceCulture.cs 7.8 KB
using OnlineStore.Common;
using OnlineStore.DeviceLibrary;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Resources;
using System.Text;
using System.Threading;
using System.Threading.Tasks; 
namespace OnlineStore.ACSingleStore
{
    public class ResourceCulture
    {
        public static string China = "zh-CN";
        public static string English = "en-US";
        public static string German = "ge-DE";

        private static ResourceManager rm = null;
        public static string CurrLanguage = "zh-CN";

        public static Dictionary<string, string> chineseMap = new Dictionary<string, string>();
        public static Dictionary<string, string> englishMap = new Dictionary<string, string>();
        public static Dictionary<string, string> defaultMap = new Dictionary<string, string>();
        /// <summary>
        /// Set current culture by name
        /// </summary>
        /// <param name="name">name</param>
        public static void SetCurrentCulture(string name)
        {
            ResourceControl.GetStrEvent += GetString;
            ResourceControl.GetStringEvent += GetString;
         
            CodeLibrary.CodeResourceControl.GetLanguageEvent += GetLanguage; 
            if (string.IsNullOrEmpty(name))
            {
                name = "en-US";
            }
            CurrLanguage = name;
            Thread.CurrentThread.CurrentCulture = new CultureInfo(name);
        }
        public static string GetLanguage()
        {
            return CurrLanguage;
        }
        private static  Assembly assembly = Assembly.GetExecutingAssembly();
        public static string GetString(string id,string defaultStr)
        {
            string strCurLanguage = "";

            try
            {
                if (rm == null)
                {
                    rm = new ResourceManager("OnlineStore.ACSingleStore.Properties.Resource", assembly); 
                }
                CultureInfo ci = Thread.CurrentThread.CurrentCulture;
                ci= new CultureInfo(CurrLanguage); 
                strCurLanguage = rm.GetString(id, ci).Trim();
                if (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);
                }
            }
            return strCurLanguage;
        }
        public static string GetString(string id, string defaultStr, params object[] param)
        {
            string strCurLanguage = "";

            try
            {
                if (rm == null)
                {
                    rm = new ResourceManager("OnlineStore.ACSingleStore.Properties.Resource", assembly);
                }
                CultureInfo ci = Thread.CurrentThread.CurrentCulture;
                ci = new CultureInfo(CurrLanguage);
                strCurLanguage = rm.GetString(id, ci).Trim();
                if(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);
                }
            }
            return String.Format(strCurLanguage,param);
        }

        private static void NoIdLog(string id, string defaultStr)
        {
          
            LogUtil.info("No id:[" + id + "], please add,use default string :" + defaultStr);
            if (!defaultMap.ContainsKey(id))
            {
                defaultMap.Add(id, defaultStr);
            }
        }
        public static void LogDefaultMap()
        {
            LogUtil.info("开始打印缺少的文字配置" + defaultMap.Count);
            foreach (string key in defaultMap.Keys)
            {
                string value = defaultMap[key];
                LogUtil.info("     缺少文字配置[" + key + "]     默认值[" + value + "]");
            } 
            LogUtil.info("结束打印缺少的文字配置");
        }
        private static  string spiltStr = "_";
        private static string Text = "Text";
        public static string GetIdStr(string className, string controlName, string propertyName)
        {
            return className + spiltStr + controlName + spiltStr + propertyName;
        }
        public static string GetIdStr(string className, string propertyName)
        {
            return className + spiltStr + propertyName;
        }
        public static string GetTextIdStr(string className, string controlName )
        {
            return className + spiltStr + controlName + spiltStr + Text;
        }
        public static string GetTextIdStr(string className )
        {
            return className + spiltStr + Text;
        }
        /// <summary>
        /// 保存成功!
        /// </summary>
        public static string SaveOk = "SaveOk";
        /// <summary>
        /// 提示
        /// </summary>
        public static string MsgTitle = "MsgTitle";
        /// <summary>
        /// 打开串口失败
        /// </summary>
        public static string OpenComFail = "OpenComFail";

         
        /// <summary>
        /// 请先启动料仓
        /// </summary>
        public static string PleaseStartStore = "PleaseStartStore";
        /// <summary>
        /// 定位气缸不在下降端,不能移动进出轴
        /// </summary>
        public static string CannotMove = "CannotMove";
        /// <summary>
        /// 警告
        /// </summary>
        public static string WarnMsg = "WarnMsg";
        /// <summary>
        /// 保存失败
        /// </summary>
        public static string SaveError = "SaveError";
        /// <summary>
        /// 无报警,无出入库或者重置操作时,才可以回待机点
        /// </summary>
        public static string CanotReset = "CanotReset";
        /// <summary>
        /// 请先输入正确的速度
        /// </summary>
        public static string PWSpeed = "PWSpeed";
        /// <summary>
        /// 是否确定退出
        /// </summary>
        public static string SureExit = "SureExit";
        /// <summary>
        /// AutoOut 自动出库:
        /// </summary>
        public static string AutoOut = "AutoOut";
        /// <summary>
        /// AutoIn 自动入库:
        /// </summary>
        public static string AutoIn = "AutoIn";
        /// <summary>
        /// AutoEnd 自动出入库结束
        /// </summary>
        public static string AutoEnd = "AutoEnd";

 
        /// <summary>
        /// 前门未关
        /// </summary>
        public static string DoorOpen = "DoorOpen";
        /// <summary>
        /// 叉子料盘检测有料,请检查
        /// </summary>
        public static string HasWare = "HasWare";
        /// <summary>
        /// 开始自动出入库
        /// </summary>
        public static string StartAuto = "StartAuto";
        /// <summary>
        /// 停止自动出入库
        /// </summary>
        public static string StopAuto = "StopAuto";
        /// <summary>
        /// 等待启动
        /// </summary>
        public static string WaitStart = "WaitStart";
        ///// <summary>
        /////  
        ///// </summary>
        //public static string AutoEnd = "AutoEnd";
    }
}