using CommunityToolkit.Mvvm.ComponentModel;
namespace YZWater.Core.Services;
///
/// 语言切换服务
///
public partial class LanguageService : ObservableObject
{
private static LanguageService? _instance;
public static LanguageService Instance => _instance ??= new LanguageService();
[ObservableProperty]
private bool _isChinese = true;
///
/// 语言变更事件
///
public event Action? LanguageChanged;
private LanguageService() { }
///
/// 从配置加载语言偏好
///
public void LoadFromConfig()
{
var config = ConfigService.GetConfig();
if (config != null)
{
IsChinese = config.IsChinese;
}
}
///
/// 切换语言并保存
///
public void ToggleLanguage()
{
IsChinese = !IsChinese;
SaveToConfig();
LanguageChanged?.Invoke();
}
private void SaveToConfig()
{
var config = ConfigService.GetConfig();
if (config != null)
{
config.IsChinese = IsChinese;
ConfigService.SaveConfig();
}
}
///
/// 获取翻译
///
public string Get(string key)
{
return IsChinese ? _zh.GetValueOrDefault(key, key) : _en.GetValueOrDefault(key, key);
}
// ─── 翻译字典 ───
private static readonly Dictionary _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 _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",
};
}