| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- 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 LoadFromConfig()
- {
- var config = ConfigService.GetConfig();
- if (config != null)
- {
- IsChinese = config.IsChinese;
- }
- }
- /// <summary>
- /// 切换语言并保存
- /// </summary>
- public void ToggleLanguage()
- {
- IsChinese = !IsChinese;
- SaveToConfig();
- LanguageChanged?.Invoke();
- }
- private void SaveToConfig()
- {
- var config = ConfigService.GetConfig();
- if (config != null)
- {
- config.IsChinese = IsChinese;
- ConfigService.SaveConfig();
- }
- }
- /// <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",
- };
- }
|