|
|
@@ -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",
|
|
|
+ };
|
|
|
+}
|