|
|
using Newtonsoft.Json;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
|
|
|
namespace POS.Language.Language
|
|
|
{
|
|
|
public class LangProxy
|
|
|
{
|
|
|
public static LangType LangType = LangType.中文;
|
|
|
|
|
|
public static Dictionary<string, string> LangSource = new Dictionary<string, string>();
|
|
|
|
|
|
public static NLog.Logger LOGGET = null;
|
|
|
|
|
|
//public static List<string> NoLangSource = new List<string>();
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取语言列表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public Tuple<bool, string, List<string>> GetLangType()
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
List<string> _list = new List<string>();
|
|
|
foreach (int myCode in Enum.GetValues(typeof(LangType)))
|
|
|
{
|
|
|
string strName = Enum.GetName(typeof(LangType), myCode);
|
|
|
_list.Add(strName);
|
|
|
}
|
|
|
return new Tuple<bool, string, List<string>>(true, "", _list);
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
LOGGET.Error(ex);
|
|
|
return new Tuple<bool, string, List<string>>(false, ex.Message, null);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 初始化当前使用的语言
|
|
|
/// </summary>
|
|
|
/// <param name="val"></param>
|
|
|
/// <returns></returns>
|
|
|
public static Tuple<bool, string> SetLangTypeVal(string val)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(val))
|
|
|
{
|
|
|
return new Tuple<bool, string>(false, "值为空值");
|
|
|
}
|
|
|
LangType langType = LangType.中文;
|
|
|
if (Enum.TryParse(val, out langType))
|
|
|
{
|
|
|
LangType = langType;
|
|
|
}
|
|
|
return new Tuple<bool, string>(true, "");
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
LOGGET.Error(ex);
|
|
|
return new Tuple<bool, string>(false, "");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static NLog.Logger logger = null;
|
|
|
|
|
|
public static string ToLang(string _val)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(_val))
|
|
|
{
|
|
|
return _val;
|
|
|
}
|
|
|
|
|
|
if (LangSource.Count == 0)
|
|
|
{
|
|
|
var _path = System.Environment.CurrentDirectory + "\\Language\\" + LangType.ToString() + ".json";
|
|
|
|
|
|
if (!File.Exists(_path))
|
|
|
{
|
|
|
return _val;
|
|
|
}
|
|
|
|
|
|
using (StreamReader sr = new StreamReader(_path, Encoding.UTF8))
|
|
|
{
|
|
|
string data = sr.ReadToEnd();
|
|
|
|
|
|
LangSource = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(data);
|
|
|
}
|
|
|
|
|
|
if (LangSource == null || LangSource.Count == 0)
|
|
|
{
|
|
|
return _val;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var _Toval = LangSource.FirstOrDefault(f => f.Key.Equals(_val.Trim()));
|
|
|
|
|
|
if (_Toval.Key == null)
|
|
|
{
|
|
|
/*只有符号相差则找相近的翻译*/
|
|
|
if (_val.IndexOf(':') != -1 || _val.IndexOf(':') != -1)
|
|
|
{
|
|
|
|
|
|
int _in = _val.IndexOf(':');
|
|
|
if (_in == 0)
|
|
|
_in = _val.IndexOf(':');
|
|
|
|
|
|
var _ls = LangSource.FirstOrDefault(f => f.Key.Equals(_val.Substring(0, _in)));
|
|
|
|
|
|
if (_ls.Key == null)
|
|
|
{
|
|
|
if (logger == null)
|
|
|
{
|
|
|
logger = NLog.LogManager.GetLogger("翻译");
|
|
|
}
|
|
|
|
|
|
//logger.Info("***********************************" + Newtonsoft.Json.JsonConvert.SerializeObject(NoLangSource) + "***********************************");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return _ls.Value + _val.Substring(_in, _val.Length - (_in));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//if (NoLangSource.FirstOrDefault(f => f.Equals(_val.Trim())) == null)
|
|
|
// NoLangSource.Add(_val.Trim());
|
|
|
|
|
|
if (logger == null)
|
|
|
{
|
|
|
logger = NLog.LogManager.GetLogger("翻译");
|
|
|
}
|
|
|
|
|
|
//logger.Info("***********************************" + Newtonsoft.Json.JsonConvert.SerializeObject(NoLangSource) + "***********************************");
|
|
|
return _val;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return _Toval.Value;
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
if (logger == null)
|
|
|
{
|
|
|
logger = NLog.LogManager.GetLogger("翻译");
|
|
|
}
|
|
|
|
|
|
logger.Info("***********************************" + ex.Message + "***********************************");
|
|
|
return _val;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public enum LangType
|
|
|
{
|
|
|
中文,
|
|
|
英语,
|
|
|
日语,韩语
|
|
|
}
|
|
|
}
|