|
@@ -0,0 +1,275 @@
|
|
|
|
|
+using CommunityToolkit.Mvvm.ComponentModel;
|
|
|
|
|
+
|
|
|
|
|
+namespace YZWater.Core.Services;
|
|
|
|
|
+
|
|
|
|
|
+/// <summary>
|
|
|
|
|
+/// 璇█鍒囨崲鏈嶅姟
|
|
|
|
|
+/// </summary>
|
|
|
|
|
+public partial class LanguageService : ObservableObject
|
|
|
|
|
+{
|
|
|
|
|
+ private static LanguageService? _instance;
|
|
|
|
|
+ public static LanguageService Instance => _instance ??= new LanguageService();
|
|
|
|
|
+
|
|
|
|
|
+ [ObservableProperty]
|
|
|
|
|
+ private bool _isChinese = true;
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 璇█鍙樻洿浜嬩欢
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ public event Action? LanguageChanged;
|
|
|
|
|
+
|
|
|
|
|
+ private LanguageService() { }
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 鍒囨崲璇█
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ public void ToggleLanguage()
|
|
|
|
|
+ {
|
|
|
|
|
+ IsChinese = !IsChinese;
|
|
|
|
|
+ LanguageChanged?.Invoke();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 鑾峰彇缈昏瘧
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ public string Get(string key)
|
|
|
|
|
+ {
|
|
|
|
|
+ return IsChinese ? _zh.GetValueOrDefault(key, key) : _en.GetValueOrDefault(key, key);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 鈹鈹鈹 缈昏瘧瀛楀吀 鈹鈹鈹
|
|
|
|
|
+
|
|
|
|
|
+ private static readonly Dictionary<string, string> _zh = new()
|
|
|
|
|
+ {
|
|
|
|
|
+ // 閫氱敤
|
|
|
|
|
+ ["AppName"] = "姹℃按澶勭悊鐩戞帶绯荤粺",
|
|
|
|
|
+ ["Version"] = "鐗堟湰",
|
|
|
|
|
+ // 瀵艰埅
|
|
|
|
|
+ ["NavProcess"] = "宸ヨ壓娴佺▼",
|
|
|
|
|
+ ["NavParams"] = "鍙傛暟璁剧疆",
|
|
|
|
|
+ ["NavFlow"] = "娴侀噺璁板綍",
|
|
|
|
|
+ ["NavAlarm"] = "鎶ヨ璁板綍",
|
|
|
|
|
+ ["NavAbout"] = "鍏充簬",
|
|
|
|
|
+ // ViewA 鏍囬鏍
|
|
|
|
|
+ ["ProcessFlow"] = "宸ヨ壓娴佺▼",
|
|
|
|
|
+ ["PlcConnected"] = "PLC 宸茶繛鎺",
|
|
|
|
|
+ ["PlcDisconnected"] = "PLC 鏈繛鎺",
|
|
|
|
|
+ ["Connect"] = "杩炴帴",
|
|
|
|
|
+ ["Disconnect"] = "鏂紑",
|
|
|
|
|
+ ["Refresh"] = "鍒锋柊",
|
|
|
|
|
+ // ViewA 姘寸
|
|
|
|
|
+ ["TankInlet"] = "鍏ュ彛姹",
|
|
|
|
|
+ ["TankBio"] = "鐢熷寲姹",
|
|
|
|
|
+ ["TankSediment"] = "娌夋穩姹",
|
|
|
|
|
+ ["TankOutlet"] = "鍑哄彛姹",
|
|
|
|
|
+ ["Level"] = "娑蹭綅",
|
|
|
|
|
+ // ViewA 娉/椋庢満
|
|
|
|
|
+ ["Pump1"] = "杩涙按娉1",
|
|
|
|
|
+ ["Pump2"] = "杩涙按娉2",
|
|
|
|
|
+ ["Pump3"] = "鍥炴祦娉",
|
|
|
|
|
+ ["Pump4"] = "鎺掓偿娉",
|
|
|
|
|
+ ["Pump5"] = "鍔犺嵂娉",
|
|
|
|
|
+ ["Fan1"] = "椋庢満1",
|
|
|
|
|
+ ["Fan2"] = "椋庢満2",
|
|
|
|
|
+ // ViewA 闃闂
|
|
|
|
|
+ ["ValveInlet"] = "杩涙按",
|
|
|
|
|
+ ["ValveAeration"] = "鏇濇皵",
|
|
|
|
|
+ ["ValveReflux"] = "鍥炴祦",
|
|
|
|
|
+ ["ValveOutlet"] = "鍑烘按",
|
|
|
|
|
+ // ViewA 鏁版嵁闈㈡澘
|
|
|
|
|
+ ["Mode"] = "杩愯妯″紡",
|
|
|
|
|
+ ["Realtime"] = "瀹炴椂鏁版嵁",
|
|
|
|
|
+ ["Inflow"] = "杩涙按娴侀噺",
|
|
|
|
|
+ ["Outflow"] = "鍑烘按娴侀噺",
|
|
|
|
|
+ ["Delta"] = "宸",
|
|
|
|
|
+ ["Statistics"] = "杩愯缁熻",
|
|
|
|
|
+ ["Runtime"] = "杩愯鏃堕棿",
|
|
|
|
|
+ ["Devices"] = "璁惧",
|
|
|
|
|
+ ["Alarm"] = "鎶ヨ",
|
|
|
|
|
+ ["Efficiency"] = "鏁堢巼",
|
|
|
|
|
+ ["Active"] = "杩愯涓",
|
|
|
|
|
+ ["Stopped"] = "宸插仠姝",
|
|
|
|
|
+ // ViewA 蹇嵎鎿嶄綔
|
|
|
|
|
+ ["QuickOps"] = "蹇嵎鎿嶄綔",
|
|
|
|
|
+ ["StartAll"] = "鍏ㄩ儴鍚姩",
|
|
|
|
|
+ ["StopAll"] = "鍏ㄩ儴鍋滄",
|
|
|
|
|
+ ["AckAlarm"] = "鎶ヨ纭",
|
|
|
|
|
+ ["Export"] = "瀵煎嚭",
|
|
|
|
|
+ // ViewA 搴曢儴鐘舵佹爮
|
|
|
|
|
+ ["FlowMeters"] = "娴侀噺鐩戞祴",
|
|
|
|
|
+ ["DeviceStatus"] = "璁惧鐘舵",
|
|
|
|
|
+ // ViewB
|
|
|
|
|
+ ["Parameters"] = "鍙傛暟璁剧疆",
|
|
|
|
|
+ ["SysConfig"] = "绯荤粺鍙傛暟閰嶇疆",
|
|
|
|
|
+ ["PlcConnection"] = "PLC 杩炴帴璁剧疆",
|
|
|
|
|
+ ["IpAddress"] = "IP 鍦板潃",
|
|
|
|
|
+ ["Port"] = "绔彛",
|
|
|
|
|
+ ["AutoConnect"] = "鑷姩杩炴帴",
|
|
|
|
|
+ ["Status"] = "鐘舵",
|
|
|
|
|
+ ["Test"] = "娴嬭瘯",
|
|
|
|
|
+ ["AlarmThresholds"] = "鎶ヨ闃堝艰缃",
|
|
|
|
|
+ ["LevelHigh"] = "娑蹭綅楂橀檺",
|
|
|
|
|
+ ["LevelLow"] = "娑蹭綅浣庨檺",
|
|
|
|
|
+ ["FlowHigh"] = "娴侀噺楂橀檺",
|
|
|
|
|
+ ["PumpSettings"] = "娉佃缃",
|
|
|
|
|
+ ["Frequency"] = "棰戠巼",
|
|
|
|
|
+ ["SaveConfig"] = "淇濆瓨閰嶇疆",
|
|
|
|
|
+ ["ResetDefault"] = "鎭㈠榛樿",
|
|
|
|
|
+ ["Connected"] = "宸茶繛鎺",
|
|
|
|
|
+ ["Disconnected"] = "鏈繛鎺",
|
|
|
|
|
+ ["Connecting"] = "杩炴帴涓...",
|
|
|
|
|
+ // ViewC
|
|
|
|
|
+ ["FlowRecords"] = "娴侀噺璁板綍",
|
|
|
|
|
+ ["FlowHistory"] = "娴侀噺鍘嗗彶鏁版嵁",
|
|
|
|
|
+ ["From"] = "浠",
|
|
|
|
|
+ ["To"] = "鍒",
|
|
|
|
|
+ ["Query"] = "鏌ヨ",
|
|
|
|
|
+ ["ExportCsv"] = "瀵煎嚭CSV",
|
|
|
|
|
+ ["PurgeOld"] = "娓呴櫎鏃ф暟鎹",
|
|
|
|
|
+ ["InflowTrend"] = "杩涙按娴侀噺瓒嬪娍",
|
|
|
|
|
+ ["OutflowTrend"] = "鍑烘按娴侀噺瓒嬪娍",
|
|
|
|
|
+ // ViewD
|
|
|
|
|
+ ["AlarmLog"] = "鎶ヨ璁板綍",
|
|
|
|
|
+ ["AlarmHistory"] = "鎶ヨ鍘嗗彶璁板綍",
|
|
|
|
|
+ ["Unconfirmed"] = "鏈‘璁",
|
|
|
|
|
+ ["AckAll"] = "鍏ㄩ儴纭",
|
|
|
|
|
+ ["Purge"] = "娓呴櫎",
|
|
|
|
|
+ ["Time"] = "鏃堕棿",
|
|
|
|
|
+ ["Type"] = "绫诲瀷",
|
|
|
|
|
+ ["Message"] = "娑堟伅",
|
|
|
|
|
+ ["Value"] = "鏁板",
|
|
|
|
|
+ ["Level2"] = "绾у埆",
|
|
|
|
|
+ ["AckTime"] = "纭鏃堕棿",
|
|
|
|
|
+ ["AckBy"] = "纭浜",
|
|
|
|
|
+ ["AlarmDetail"] = "鎶ヨ璇︽儏",
|
|
|
|
|
+ // ViewE
|
|
|
|
|
+ ["About"] = "鍏充簬",
|
|
|
|
|
+ ["SystemInfo"] = "绯荤粺淇℃伅",
|
|
|
|
|
+ ["Description"] = "鍩轰簬 Avalonia UI 鐨勮法骞冲彴姹℃按澶勭悊鍘傜洃鎺х郴缁",
|
|
|
|
|
+ ["TechStack"] = "鎶鏈爤",
|
|
|
|
|
+ ["Company"] = "鍏徃淇℃伅",
|
|
|
|
|
+ ["CompanyName"] = "鍏徃鍚嶇О",
|
|
|
|
|
+ ["Contact"] = "鑱旂郴浜",
|
|
|
|
|
+ ["Phone"] = "鑱旂郴鐢佃瘽",
|
|
|
|
|
+ ["VisitWebsite"] = "璁块棶瀹樼綉",
|
|
|
|
|
+ ["CheckUpdate"] = "妫鏌ユ洿鏂",
|
|
|
|
|
+ ["Copyright"] = "漏 鎵窞鏃僵绉戞妧鏈夐檺鍏徃",
|
|
|
|
|
+ // 鎺т欢榛樿鍊
|
|
|
|
|
+ ["DefaultTank"] = "姘寸",
|
|
|
|
|
+ ["DefaultPump"] = "娉",
|
|
|
|
|
+ ["DefaultFan"] = "椋庢墖",
|
|
|
|
|
+ ["DefaultValve"] = "闃闂",
|
|
|
|
|
+ ["DefaultGauge"] = "浠〃",
|
|
|
|
|
+ ["DefaultDevice"] = "璁惧",
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ private static readonly Dictionary<string, string> _en = new()
|
|
|
|
|
+ {
|
|
|
|
|
+ ["AppName"] = "Wastewater Treatment System",
|
|
|
|
|
+ ["Version"] = "Version",
|
|
|
|
|
+ ["NavProcess"] = "Process",
|
|
|
|
|
+ ["NavParams"] = "Params",
|
|
|
|
|
+ ["NavFlow"] = "Flow",
|
|
|
|
|
+ ["NavAlarm"] = "Alarm",
|
|
|
|
|
+ ["NavAbout"] = "About",
|
|
|
|
|
+ ["ProcessFlow"] = "PROCESS FLOW",
|
|
|
|
|
+ ["PlcConnected"] = "PLC CONNECTED",
|
|
|
|
|
+ ["PlcDisconnected"] = "PLC DISCONNECTED",
|
|
|
|
|
+ ["Connect"] = "CONNECT",
|
|
|
|
|
+ ["Disconnect"] = "DISCONNECT",
|
|
|
|
|
+ ["Refresh"] = "REFRESH",
|
|
|
|
|
+ ["TankInlet"] = "Inlet",
|
|
|
|
|
+ ["TankBio"] = "Bio Tank",
|
|
|
|
|
+ ["TankSediment"] = "Sediment",
|
|
|
|
|
+ ["TankOutlet"] = "Outlet",
|
|
|
|
|
+ ["Level"] = "Level",
|
|
|
|
|
+ ["Pump1"] = "Inlet Pump 1",
|
|
|
|
|
+ ["Pump2"] = "Inlet Pump 2",
|
|
|
|
|
+ ["Pump3"] = "Reflux Pump",
|
|
|
|
|
+ ["Pump4"] = "Sludge Pump",
|
|
|
|
|
+ ["Pump5"] = "Dosing Pump",
|
|
|
|
|
+ ["Fan1"] = "Fan 1",
|
|
|
|
|
+ ["Fan2"] = "Fan 2",
|
|
|
|
|
+ ["ValveInlet"] = "Inlet",
|
|
|
|
|
+ ["ValveAeration"] = "Aeration",
|
|
|
|
|
+ ["ValveReflux"] = "Reflux",
|
|
|
|
|
+ ["ValveOutlet"] = "Outlet",
|
|
|
|
|
+ ["Mode"] = "MODE",
|
|
|
|
|
+ ["Realtime"] = "REALTIME",
|
|
|
|
|
+ ["Inflow"] = "INFLOW",
|
|
|
|
|
+ ["Outflow"] = "OUTFLOW",
|
|
|
|
|
+ ["Delta"] = "DELTA",
|
|
|
|
|
+ ["Statistics"] = "STATISTICS",
|
|
|
|
|
+ ["Runtime"] = "RUNTIME",
|
|
|
|
|
+ ["Devices"] = "DEVICES",
|
|
|
|
|
+ ["Alarm"] = "ALARM",
|
|
|
|
|
+ ["Efficiency"] = "EFFICIENCY",
|
|
|
|
|
+ ["Active"] = "ACTIVE",
|
|
|
|
|
+ ["Stopped"] = "STOPPED",
|
|
|
|
|
+ ["QuickOps"] = "QUICK OPS",
|
|
|
|
|
+ ["StartAll"] = "START ALL",
|
|
|
|
|
+ ["StopAll"] = "STOP ALL",
|
|
|
|
|
+ ["AckAlarm"] = "ACK ALARM",
|
|
|
|
|
+ ["Export"] = "EXPORT",
|
|
|
|
|
+ ["FlowMeters"] = "FLOW METERS",
|
|
|
|
|
+ ["DeviceStatus"] = "DEVICE STATUS",
|
|
|
|
|
+ ["Parameters"] = "PARAMETERS",
|
|
|
|
|
+ ["SysConfig"] = "System Configuration",
|
|
|
|
|
+ ["PlcConnection"] = "PLC CONNECTION",
|
|
|
|
|
+ ["IpAddress"] = "IP ADDRESS",
|
|
|
|
|
+ ["Port"] = "PORT",
|
|
|
|
|
+ ["AutoConnect"] = "AUTO CONNECT",
|
|
|
|
|
+ ["Status"] = "STATUS",
|
|
|
|
|
+ ["Test"] = "TEST",
|
|
|
|
|
+ ["AlarmThresholds"] = "ALARM THRESHOLDS",
|
|
|
|
|
+ ["LevelHigh"] = "LEVEL HIGH",
|
|
|
|
|
+ ["LevelLow"] = "LEVEL LOW",
|
|
|
|
|
+ ["FlowHigh"] = "FLOW HIGH",
|
|
|
|
|
+ ["PumpSettings"] = "PUMP SETTINGS",
|
|
|
|
|
+ ["Frequency"] = "FREQUENCY",
|
|
|
|
|
+ ["SaveConfig"] = "SAVE CONFIG",
|
|
|
|
|
+ ["ResetDefault"] = "RESET DEFAULT",
|
|
|
|
|
+ ["Connected"] = "Connected",
|
|
|
|
|
+ ["Disconnected"] = "Disconnected",
|
|
|
|
|
+ ["Connecting"] = "Connecting...",
|
|
|
|
|
+ ["FlowRecords"] = "FLOW RECORDS",
|
|
|
|
|
+ ["FlowHistory"] = "Flow History Data",
|
|
|
|
|
+ ["From"] = "FROM",
|
|
|
|
|
+ ["To"] = "TO",
|
|
|
|
|
+ ["Query"] = "QUERY",
|
|
|
|
|
+ ["ExportCsv"] = "EXPORT CSV",
|
|
|
|
|
+ ["PurgeOld"] = "PURGE OLD",
|
|
|
|
|
+ ["InflowTrend"] = "INFLOW TREND",
|
|
|
|
|
+ ["OutflowTrend"] = "OUTFLOW TREND",
|
|
|
|
|
+ ["AlarmLog"] = "ALARM LOG",
|
|
|
|
|
+ ["AlarmHistory"] = "Alarm History",
|
|
|
|
|
+ ["Unconfirmed"] = "Unconfirmed",
|
|
|
|
|
+ ["AckAll"] = "ACK ALL",
|
|
|
|
|
+ ["Purge"] = "PURGE",
|
|
|
|
|
+ ["Time"] = "TIME",
|
|
|
|
|
+ ["Type"] = "TYPE",
|
|
|
|
|
+ ["Message"] = "MESSAGE",
|
|
|
|
|
+ ["Value"] = "VALUE",
|
|
|
|
|
+ ["Level2"] = "LEVEL",
|
|
|
|
|
+ ["AckTime"] = "ACK TIME",
|
|
|
|
|
+ ["AckBy"] = "ACK BY",
|
|
|
|
|
+ ["AlarmDetail"] = "ALARM DETAIL",
|
|
|
|
|
+ ["About"] = "ABOUT",
|
|
|
|
|
+ ["SystemInfo"] = "SYSTEM INFO",
|
|
|
|
|
+ ["Description"] = "Cross-platform wastewater treatment plant monitoring system based on Avalonia UI",
|
|
|
|
|
+ ["TechStack"] = "TECH STACK",
|
|
|
|
|
+ ["Company"] = "COMPANY",
|
|
|
|
|
+ ["CompanyName"] = "COMPANY NAME",
|
|
|
|
|
+ ["Contact"] = "CONTACT",
|
|
|
|
|
+ ["Phone"] = "PHONE",
|
|
|
|
|
+ ["VisitWebsite"] = "VISIT WEBSITE",
|
|
|
|
|
+ ["CheckUpdate"] = "CHECK UPDATE",
|
|
|
|
|
+ ["Copyright"] = "漏 Yangzhou Xuxuan Technology Co., Ltd.",
|
|
|
|
|
+ ["DefaultTank"] = "Tank",
|
|
|
|
|
+ ["DefaultPump"] = "Pump",
|
|
|
|
|
+ ["DefaultFan"] = "Fan",
|
|
|
|
|
+ ["DefaultValve"] = "Valve",
|
|
|
|
|
+ ["DefaultGauge"] = "Gauge",
|
|
|
|
|
+ ["DefaultDevice"] = "Device",
|
|
|
|
|
+ };
|
|
|
|
|
+}
|