Files
kuaishai2/lib/core/localization/app_localizations.dart
Developer d53c41c300 feat(device): 添加USB设备通信支持和程序参数优化
- 在AndroidManifest.xml中添加USB Host权限和设备过滤器配置
- 新增设备控制国际化词条包括速度档位、吹气时间等
- 重构数据库结构将速度相关字段统一为档位数值存储
- 添加通用KV存储方法用于settings表数据读写
- 优化首页导航实现tab间跳转和状态保持功能
- 更新程序详情页面布局和参数表单界面
- 移除模拟运行器相关测试代码
- 添加USB串口通信依赖包usb_serial
2026-06-04 15:13:36 +08:00

352 lines
18 KiB
Dart

import 'package:flutter/material.dart';
/// 应用国际化配置
class AppLocalizations {
final Locale locale;
AppLocalizations(this.locale);
static AppLocalizations? of(BuildContext context) {
return Localizations.of<AppLocalizations>(context, AppLocalizations);
}
static const LocalizationsDelegate<AppLocalizations> delegate =
_AppLocalizationsDelegate();
// 状态栏
String get deviceName => _localizedValues[locale.languageCode]?['deviceName'] ?? '污水毒品前处理一体机';
String get running => _localizedValues[locale.languageCode]?['running'] ?? '运行中';
String get idle => _localizedValues[locale.languageCode]?['idle'] ?? '未运行';
String get lighting => _localizedValues[locale.languageCode]?['lighting'] ?? '照明';
String get deviceControl => _localizedValues[locale.languageCode]?['deviceControl'] ?? '设备控制';
// 程序管理
String get programs => _localizedValues[locale.languageCode]?['programs'] ?? '程序管理';
String get programList => _localizedValues[locale.languageCode]?['programList'] ?? '程序列表';
String get programName => _localizedValues[locale.languageCode]?['programName'] ?? '程序名称';
String get programCode => _localizedValues[locale.languageCode]?['programCode'] ?? '程序编号';
String get createTime => _localizedValues[locale.languageCode]?['createTime'] ?? '创建时间';
String get addProgram => _localizedValues[locale.languageCode]?['addProgram'] ?? '新增程序';
String get editProgram => _localizedValues[locale.languageCode]?['editProgram'] ?? '编辑程序';
String get deleteProgram => _localizedValues[locale.languageCode]?['deleteProgram'] ?? '删除程序';
String get importProgram => _localizedValues[locale.languageCode]?['importProgram'] ?? '导入程序';
String get viewDetails => _localizedValues[locale.languageCode]?['viewDetails'] ?? '查看详情';
String get selectedProgram => _localizedValues[locale.languageCode]?['selectedProgram'] ?? '当前选中程序';
String get selectedProgramLabel => _localizedValues[locale.languageCode]?['selectedProgramLabel'] ?? '当前选中';
String get availablePrograms => _localizedValues[locale.languageCode]?['availablePrograms'] ?? '可用程序';
String get runningMonitor => _localizedValues[locale.languageCode]?['runningMonitor'] ?? '运行状态监控';
String get currentHole => _localizedValues[locale.languageCode]?['currentHole'] ?? '当前孔位';
String get stepParams => _localizedValues[locale.languageCode]?['stepParams'] ?? '步骤参数';
String get speed => _localizedValues[locale.languageCode]?['speed'] ?? '速度';
String get speedLevel => _localizedValues[locale.languageCode]?['speedLevel'] ?? '';
String get temperature => _localizedValues[locale.languageCode]?['temperature'] ?? '温度';
String get airflowTime => _localizedValues[locale.languageCode]?['airflowTime'] ?? '吹气时间';
String get duration => _localizedValues[locale.languageCode]?['duration'] ?? '持续时间';
String get sampleVolume => _localizedValues[locale.languageCode]?['sampleVolume'] ?? '样品体积';
String get pleaseSelectProgram => _localizedValues[locale.languageCode]?['pleaseSelectProgram'] ?? '请选择要运行的程序';
// 运行控制
String get run => _localizedValues[locale.languageCode]?['run'] ?? '运行';
String get pause => _localizedValues[locale.languageCode]?['pause'] ?? '暂停';
String get continue_ => _localizedValues[locale.languageCode]?['continue'] ?? '继续';
String get stop => _localizedValues[locale.languageCode]?['stop'] ?? '停止';
String get startRun => _localizedValues[locale.languageCode]?['startRun'] ?? '开始运行';
String get currentStep => _localizedValues[locale.languageCode]?['currentStep'] ?? '当前步骤';
String get remainingTime => _localizedValues[locale.languageCode]?['remainingTime'] ?? '剩余时间';
String get progress => _localizedValues[locale.languageCode]?['progress'] ?? '进度';
String get ceramicSleeveConfirm => _localizedValues[locale.languageCode]?['ceramicSleeveConfirm'] ?? '运行前请确认已安装瓷套棒';
String get ceramicSleeveConfirmMessage => _localizedValues[locale.languageCode]?['ceramicSleeveConfirmMessage'] ?? '请确认已放置瓷套棒后再启动程序。';
String get paused => _localizedValues[locale.languageCode]?['paused'] ?? '已暂停';
String get stopConfirm => _localizedValues[locale.languageCode]?['stopConfirm'] ?? '确定要停止当前运行的程序吗?';
String get currentProgram => _localizedValues[locale.languageCode]?['currentProgram'] ?? '当前程序';
String get backToHome => _localizedValues[locale.languageCode]?['backToHome'] ?? '返回首页';
String get runAgain => _localizedValues[locale.languageCode]?['runAgain'] ?? '重新运行';
String get deleteConfirm => _localizedValues[locale.languageCode]?['deleteConfirm'] ?? '确定要删除此程序吗?';
// 步骤参数
String get stepNo => _localizedValues[locale.languageCode]?['stepNo'] ?? '步骤编号';
String get position => _localizedValues[locale.languageCode]?['position'] ?? '孔位';
String get stepName => _localizedValues[locale.languageCode]?['stepName'] ?? '步骤名称';
String get mixTime => _localizedValues[locale.languageCode]?['mixTime'] ?? '混合时间';
String get magnetTime => _localizedValues[locale.languageCode]?['magnetTime'] ?? '吸磁时间';
String get volume => _localizedValues[locale.languageCode]?['volume'] ?? '容积';
String get blowTime => _localizedValues[locale.languageCode]?['blowTime'] ?? '吹气时间';
// 设置
String get settings => _localizedValues[locale.languageCode]?['settings'] ?? '系统设置';
String get language => _localizedValues[locale.languageCode]?['language'] ?? '语言设置';
String get password => _localizedValues[locale.languageCode]?['password'] ?? '密码修改';
String get upgrade => _localizedValues[locale.languageCode]?['upgrade'] ?? '软件升级';
String get usbImport => _localizedValues[locale.languageCode]?['usbImport'] ?? 'U盘导入';
// 通用
String get confirm => _localizedValues[locale.languageCode]?['confirm'] ?? '确认';
String get cancel => _localizedValues[locale.languageCode]?['cancel'] ?? '取消';
String get save => _localizedValues[locale.languageCode]?['save'] ?? '保存';
String get delete => _localizedValues[locale.languageCode]?['delete'] ?? '删除';
String get select => _localizedValues[locale.languageCode]?['select'] ?? '选择';
String get selected => _localizedValues[locale.languageCode]?['selected'] ?? '已选择';
String get detail => _localizedValues[locale.languageCode]?['detail'] ?? '详情';
String get noData => _localizedValues[locale.languageCode]?['noData'] ?? '暂无数据';
// 完成提示
String get runComplete => _localizedValues[locale.languageCode]?['runComplete'] ?? '运行完成';
String get sampleDropGuide => _localizedValues[locale.languageCode]?['sampleDropGuide'] ?? '请将样本滴入检测卡';
// 补充缺失的翻译
String get lightOn => _localizedValues[locale.languageCode]?['lightOn'] ?? '';
String get lightOff => _localizedValues[locale.languageCode]?['lightOff'] ?? '';
String get enabled => _localizedValues[locale.languageCode]?['enabled'] ?? '启用';
String get disabled => _localizedValues[locale.languageCode]?['disabled'] ?? '停用';
String get stepList => _localizedValues[locale.languageCode]?['stepList'] ?? '步骤列表';
String get operationSteps => _localizedValues[locale.languageCode]?['operationSteps'] ?? '操作步骤';
String get addStep => _localizedValues[locale.languageCode]?['addStep'] ?? '添加步骤';
String get editStep => _localizedValues[locale.languageCode]?['editStep'] ?? '编辑步骤';
String get deleteStep => _localizedValues[locale.languageCode]?['deleteStep'] ?? '删除步骤';
String get deleteStepConfirm => _localizedValues[locale.languageCode]?['deleteStepConfirm'] ?? '确定要删除此步骤吗?';
String get stepsCount => _localizedValues[locale.languageCode]?['stepsCount'] ?? '';
String get noSteps => _localizedValues[locale.languageCode]?['noSteps'] ?? '暂无步骤';
String get selectStepFirst => _localizedValues[locale.languageCode]?['selectStepFirst'] ?? '请选择或添加步骤';
String get oldPassword => _localizedValues[locale.languageCode]?['oldPassword'] ?? '原密码';
String get newPassword => _localizedValues[locale.languageCode]?['newPassword'] ?? '新密码';
String get confirmPassword => _localizedValues[locale.languageCode]?['confirmPassword'] ?? '确认新密码';
String get passwordMinLength => _localizedValues[locale.languageCode]?['passwordMinLength'] ?? '至少6位字符';
String get passwordChanged => _localizedValues[locale.languageCode]?['passwordChanged'] ?? '密码已修改';
String get passwordChangeFailed => _localizedValues[locale.languageCode]?['passwordChangeFailed'] ?? '密码修改失败';
String get oldPasswordError => _localizedValues[locale.languageCode]?['oldPasswordError'] ?? '原密码错误';
String get passwordMismatch => _localizedValues[locale.languageCode]?['passwordMismatch'] ?? '两次输入的新密码不一致';
String get fillAllFields => _localizedValues[locale.languageCode]?['fillAllFields'] ?? '请填写所有字段';
String get importSuccess => _localizedValues[locale.languageCode]?['importSuccess'] ?? '成功导入';
String get importFailed => _localizedValues[locale.languageCode]?['importFailed'] ?? '导入失败';
String get programsImported => _localizedValues[locale.languageCode]?['programsImported'] ?? '个程序';
String get usbDetected => _localizedValues[locale.languageCode]?['usbDetected'] ?? '检测到U盘';
String get usbNotDetected => _localizedValues[locale.languageCode]?['usbNotDetected'] ?? '未检测到U盘';
String get insertUsb => _localizedValues[locale.languageCode]?['insertUsb'] ?? '请插入U盘后重试';
String get detectingUsb => _localizedValues[locale.languageCode]?['detectingUsb'] ?? '正在检测U盘...';
String get currentVersion => _localizedValues[locale.languageCode]?['currentVersion'] ?? '当前版本';
String get latestVersion => _localizedValues[locale.languageCode]?['latestVersion'] ?? '已是最新版本';
String get updateAvailable => _localizedValues[locale.languageCode]?['updateAvailable'] ?? '有新版本可用';
String get checkUpdate => _localizedValues[locale.languageCode]?['checkUpdate'] ?? '检查更新';
static final Map<String, Map<String, String>> _localizedValues = {
'zh': {
'deviceName': '污水毒品前处理一体机',
'running': '运行中',
'idle': '未运行',
'lighting': '照明',
'deviceControl': '设备控制',
'programs': '程序管理',
'programList': '程序列表',
'programName': '程序名称',
'programCode': '程序编号',
'createTime': '创建时间',
'addProgram': '新增程序',
'editProgram': '编辑程序',
'deleteProgram': '删除程序',
'importProgram': '导入程序',
'viewDetails': '查看详情',
'selectedProgram': '当前选中程序',
'selectedProgramLabel': '当前选中',
'availablePrograms': '可用程序',
'runningMonitor': '运行状态监控',
'currentHole': '当前孔位',
'stepParams': '步骤参数',
'speed': '速度',
'speedLevel': '',
'temperature': '温度',
'airflowTime': '吹气时间',
'duration': '持续时间',
'sampleVolume': '样品体积',
'pleaseSelectProgram': '请选择要运行的程序',
'run': '运行',
'pause': '暂停',
'continue': '继续',
'stop': '停止',
'startRun': '开始运行',
'currentStep': '当前步骤',
'remainingTime': '剩余时间',
'progress': '进度',
'ceramicSleeveConfirm': '运行前请确认已安装瓷套棒',
'ceramicSleeveConfirmMessage': '请确认已放置瓷套棒后再启动程序。',
'paused': '已暂停',
'stopConfirm': '确定要停止当前运行的程序吗?',
'currentProgram': '当前程序',
'backToHome': '返回首页',
'runAgain': '重新运行',
'deleteConfirm': '确定要删除此程序吗?',
'stepNo': '步骤编号',
'position': '孔位',
'stepName': '步骤名称',
'mixTime': '混合时间',
'magnetTime': '吸磁时间',
'volume': '容积',
'blowTime': '吹气时间',
'settings': '系统设置',
'language': '语言设置',
'password': '密码修改',
'upgrade': '软件升级',
'usbImport': 'U盘导入',
'confirm': '确认',
'cancel': '取消',
'save': '保存',
'delete': '删除',
'select': '选择',
'selected': '已选择',
'detail': '详情',
'noData': '暂无数据',
'runComplete': '运行完成',
'sampleDropGuide': '请将样本滴入检测卡',
'lightOn': '',
'lightOff': '',
'enabled': '启用',
'disabled': '停用',
'stepList': '步骤列表',
'operationSteps': '操作步骤',
'addStep': '添加步骤',
'editStep': '编辑步骤',
'deleteStep': '删除步骤',
'deleteStepConfirm': '确定要删除此步骤吗?',
'stepsCount': '',
'noSteps': '暂无步骤',
'selectStepFirst': '请选择或添加步骤',
'oldPassword': '原密码',
'newPassword': '新密码',
'confirmPassword': '确认新密码',
'passwordMinLength': '至少6位字符',
'passwordChanged': '密码已修改',
'passwordChangeFailed': '密码修改失败',
'oldPasswordError': '原密码错误',
'passwordMismatch': '两次输入的新密码不一致',
'fillAllFields': '请填写所有字段',
'importSuccess': '成功导入',
'importFailed': '导入失败',
'programsImported': '个程序',
'usbDetected': '检测到U盘',
'usbNotDetected': '未检测到U盘',
'insertUsb': '请插入U盘后重试',
'detectingUsb': '正在检测U盘...',
'currentVersion': '当前版本',
'latestVersion': '已是最新版本',
'updateAvailable': '有新版本可用',
'checkUpdate': '检查更新',
},
'en': {
'deviceName': 'Wastewater Drug Pretreatment System',
'running': 'Running',
'idle': 'Idle',
'lighting': 'Lighting',
'deviceControl': 'Device Control',
'programs': 'Programs',
'programList': 'Program List',
'programName': 'Program Name',
'programCode': 'Program Code',
'createTime': 'Create Time',
'addProgram': 'Add Program',
'editProgram': 'Edit Program',
'deleteProgram': 'Delete Program',
'importProgram': 'Import Program',
'viewDetails': 'View Details',
'selectedProgram': 'Selected Program',
'selectedProgramLabel': 'Selected',
'availablePrograms': 'Available Programs',
'runningMonitor': 'Running Status Monitor',
'currentHole': 'Current Position',
'stepParams': 'Step Parameters',
'speed': 'Speed',
'speedLevel': 'level',
'temperature': 'Temperature',
'airflowTime': 'Airflow Time',
'duration': 'Duration',
'sampleVolume': 'Sample Volume',
'pleaseSelectProgram': 'Please select a program',
'run': 'Run',
'pause': 'Pause',
'continue': 'Continue',
'stop': 'Stop',
'startRun': 'Start Run',
'currentStep': 'Current Step',
'remainingTime': 'Remaining',
'progress': 'Progress',
'ceramicSleeveConfirm': 'Please confirm ceramic sleeve is installed',
'ceramicSleeveConfirmMessage': 'Please make sure the ceramic sleeve is in place before starting the program.',
'paused': 'Paused',
'stopConfirm': 'Are you sure to stop the running program?',
'currentProgram': 'Current Program',
'backToHome': 'Back to Home',
'runAgain': 'Run Again',
'deleteConfirm': 'Are you sure to delete this program?',
'stepNo': 'Step No.',
'position': 'Position',
'stepName': 'Step Name',
'mixTime': 'Mix Time',
'magnetTime': 'Magnet Time',
'volume': 'Volume',
'blowTime': 'Blow Time',
'settings': 'Settings',
'language': 'Language',
'password': 'Password',
'upgrade': 'Upgrade',
'usbImport': 'USB Import',
'confirm': 'Confirm',
'cancel': 'Cancel',
'save': 'Save',
'delete': 'Delete',
'select': 'Select',
'selected': 'Selected',
'detail': 'Detail',
'noData': 'No Data',
'runComplete': 'Complete',
'sampleDropGuide': 'Drop sample to test card',
'lightOn': 'On',
'lightOff': 'Off',
'enabled': 'Enabled',
'disabled': 'Disabled',
'stepList': 'Step List',
'operationSteps': 'Operation Steps',
'addStep': 'Add Step',
'editStep': 'Edit Step',
'deleteStep': 'Delete Step',
'deleteStepConfirm': 'Are you sure to delete this step?',
'stepsCount': 'steps',
'noSteps': 'No steps',
'selectStepFirst': 'Please select or add a step',
'oldPassword': 'Old Password',
'newPassword': 'New Password',
'confirmPassword': 'Confirm Password',
'passwordMinLength': 'At least 6 characters',
'passwordChanged': 'Password changed',
'passwordChangeFailed': 'Password change failed',
'oldPasswordError': 'Old password incorrect',
'passwordMismatch': 'Passwords do not match',
'fillAllFields': 'Please fill all fields',
'importSuccess': 'Successfully imported',
'importFailed': 'Import failed',
'programsImported': 'programs',
'usbDetected': 'USB detected',
'usbNotDetected': 'USB not detected',
'insertUsb': 'Please insert USB and try again',
'detectingUsb': 'Detecting USB...',
'currentVersion': 'Current Version',
'latestVersion': 'Already latest version',
'updateAvailable': 'Update available',
'checkUpdate': 'Check Update',
},
};
}
class _AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations> {
const _AppLocalizationsDelegate();
@override
bool isSupported(Locale locale) {
return ['zh', 'en'].contains(locale.languageCode);
}
@override
Future<AppLocalizations> load(Locale locale) async {
return AppLocalizations(locale);
}
@override
bool shouldReload(_AppLocalizationsDelegate old) => false;
}