Files
meshcore-sar_android/lib/l10n/app_localizations_zh.dart
2026-03-11 15:54:00 +01:00

1854 lines
43 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Chinese (`zh`).
class AppLocalizationsZh extends AppLocalizations {
AppLocalizationsZh([String locale = 'zh']) : super(locale);
@override
String get appTitle => 'MeshCore SAR';
@override
String get messages => '消息';
@override
String get contacts => '联系人';
@override
String get map => '地图';
@override
String get settings => '设置';
@override
String get connect => '连接';
@override
String get disconnect => '断开连接';
@override
String get noDevicesFound => '未找到设备';
@override
String get scanAgain => '重新扫描';
@override
String get tapToConnect => '点击连接';
@override
String get deviceNotConnected => '设备未连接';
@override
String get locationPermissionDenied => '位置权限被拒绝';
@override
String get locationPermissionPermanentlyDenied => '位置权限被永久拒绝。请在设置中启用。';
@override
String get locationPermissionRequired => 'GPS 跟踪和团队协调需要位置权限。您可以稍后在设置中启用。';
@override
String get locationServicesDisabled => '位置服务已禁用。请在设置中启用。';
@override
String get failedToGetGpsLocation => '获取 GPS 位置失败';
@override
String failedToAdvertise(String error) {
return '广播失败: $error';
}
@override
String get cancelReconnection => '取消重新连接';
@override
String get general => '通用';
@override
String get theme => '主题';
@override
String get chooseTheme => '选择主题';
@override
String get light => '亮色';
@override
String get dark => '暗色';
@override
String get blueLightTheme => '蓝色亮色主题';
@override
String get blueDarkTheme => '蓝色暗色主题';
@override
String get sarRed => '搜救红';
@override
String get alertEmergencyMode => '警报/紧急模式';
@override
String get sarGreen => '搜救绿';
@override
String get safeAllClearMode => '安全/解除警报模式';
@override
String get autoSystem => '自动 (跟随系统)';
@override
String get followSystemTheme => '跟随系统主题';
@override
String get showRxTxIndicators => '显示 RX/TX 指示器';
@override
String get displayPacketActivity => '在顶部栏显示数据包活动指示器';
@override
String get disableMap => '禁用地图';
@override
String get disableMapDescription => '隐藏地图标签页以减少电池消耗';
@override
String get language => '语言';
@override
String get chooseLanguage => '选择语言';
@override
String get save => '保存';
@override
String get cancel => '取消';
@override
String get close => '关闭';
@override
String get about => '关于';
@override
String get appVersion => '应用版本';
@override
String get appName => '应用名称';
@override
String get aboutMeshCoreSar => '关于 MeshCore 搜救助手';
@override
String get aboutDescription =>
'专为应急响应团队设计的搜救应用程序。功能包括:\n\n• 用于设备间通信的 BLE Mesh 网络\n• 带有多个图层选项的离线地图\n• 实时团队成员跟踪\n• 搜救战术标记(找到的人员、火灾、集结区)\n• 联系人管理和消息收发\n• 带有指南针方向的 GPS 跟踪\n• 用于离线使用的地图瓦片缓存';
@override
String get technologiesUsed => '使用的技术:';
@override
String get technologiesList =>
'• 用于跨平台开发的 Flutter\n• 用于 Mesh 网络的 BLE低功耗蓝牙\n• 用于地图的 OpenStreetMap\n• 用于状态管理的 Provider\n• 用于本地存储的 SharedPreferences';
@override
String get moreInfo => '更多信息';
@override
String get packageName => '包名';
@override
String get sampleData => '示例数据';
@override
String get sampleDataDescription => '加载或清除用于测试的示例联系人、频道消息和搜救标记';
@override
String get loadSampleData => '加载示例数据';
@override
String get clearAllData => '清除所有数据';
@override
String get clearAllDataConfirmTitle => '清除所有数据';
@override
String get clearAllDataConfirmMessage => '这将清除所有联系人和搜救标记。您确定吗?';
@override
String get clear => '清除';
@override
String loadedSampleData(
int teamCount,
int channelCount,
int sarCount,
int messageCount,
) {
return '已加载 $teamCount 个团队成员,$channelCount 个频道,$sarCount 个搜救标记,$messageCount 条消息';
}
@override
String failedToLoadSampleData(String error) {
return '加载示例数据失败:$error';
}
@override
String get allDataCleared => '所有数据已清除';
@override
String get failedToStartBackgroundTracking => '启动后台跟踪失败。请检查权限和 BLE 连接。';
@override
String locationBroadcast(String latitude, String longitude) {
return '位置广播:$latitude, $longitude';
}
@override
String get defaultPinInfo => '无屏幕设备的默认 PIN 是 123456。配对有问题请在系统设置中忘记该蓝牙设备。';
@override
String get noMessagesYet => '暂无消息';
@override
String get pullDownToSync => '下拉同步消息';
@override
String get deleteContact => '删除联系人';
@override
String get delete => '删除';
@override
String get viewOnMap => '在地图上查看';
@override
String get refresh => '刷新';
@override
String get resetPath => '重置路径 (重新路由)';
@override
String get publicKeyCopied => '公钥已复制到剪贴板';
@override
String copiedToClipboard(String label) {
return '$label 已复制到剪贴板';
}
@override
String get pleaseEnterPassword => '请输入密码';
@override
String failedToSyncContacts(String error) {
return '同步联系人失败:$error';
}
@override
String get loggedInSuccessfully => '登录成功!正在等待房间消息...';
@override
String get loginFailed => '登录失败 - 密码错误';
@override
String loggingIn(String roomName) {
return '正在登录到 $roomName...';
}
@override
String failedToSendLogin(String error) {
return '发送登录命令失败:$error';
}
@override
String get lowLocationAccuracy => '位置精度低';
@override
String get continue_ => '继续';
@override
String get sendSarMarker => '发送搜救标记';
@override
String get deleteDrawing => '删除绘图';
@override
String get drawingTools => '绘图工具';
@override
String get drawLine => '绘制线条';
@override
String get drawLineDesc => '在地图上绘制手绘线条';
@override
String get drawRectangle => '绘制矩形';
@override
String get drawRectangleDesc => '在地图上绘制矩形区域';
@override
String get measureDistance => '测量距离';
@override
String get measureDistanceDesc => '长按两个点进行测量';
@override
String get clearMeasurement => '清除测量';
@override
String distanceLabel(String distance) {
return '距离:$distance';
}
@override
String get longPressForSecondPoint => '长按以选择第二个点';
@override
String get longPressToStartMeasurement => '长按以设置第一个点';
@override
String get longPressToStartNewMeasurement => '长按以开始新的测量';
@override
String get shareDrawings => '共享绘图';
@override
String get clearAllDrawings => '清除所有绘图';
@override
String get completeLine => '完成线条';
@override
String broadcastDrawingsToTeam(int count, String plural) {
return '向团队广播 $count 个绘图';
}
@override
String removeAllDrawings(int count, String plural) {
return '移除所有 $count 个绘图';
}
@override
String deleteAllDrawingsConfirm(int count, String plural) {
return '从地图上删除所有 $count 个绘图吗?';
}
@override
String get drawing => '绘图';
@override
String shareDrawingsCount(int count, String plural) {
return '共享 $count 个绘图';
}
@override
String get showReceivedDrawings => '显示接收到的绘图';
@override
String get showingAllDrawings => '显示所有绘图';
@override
String get showingOnlyYourDrawings => '仅显示您自己的绘图';
@override
String get showSarMarkers => '显示搜救标记';
@override
String get showingSarMarkers => '显示搜救标记';
@override
String get hidingSarMarkers => '隐藏搜救标记';
@override
String get clearAll => '全部清除';
@override
String get publicChannel => '公共频道';
@override
String get broadcastToAll => '广播给所有附近节点(临时)';
@override
String get storedPermanently => '永久存储在房间中';
@override
String get notConnectedToDevice => '未连接到设备';
@override
String get typeYourMessage => '输入您的消息...';
@override
String get quickLocationMarker => '快速位置标记';
@override
String get markerType => '标记类型';
@override
String get sendTo => '发送至';
@override
String get noDestinationsAvailable => '没有可用的目的地。';
@override
String get selectDestination => '选择目的地...';
@override
String get ephemeralBroadcastInfo => '临时:仅通过无线广播。不存储 - 节点必须在线。';
@override
String get persistentRoomInfo => '持久:不可变地存储在房间中。自动同步并离线保留。';
@override
String get location => '位置';
@override
String get fromMap => '来自地图';
@override
String get gettingLocation => '正在获取位置...';
@override
String get locationError => '位置错误';
@override
String get retry => '重试';
@override
String get refreshLocation => '刷新位置';
@override
String accuracyMeters(int accuracy) {
return '精度:±$accuracy米';
}
@override
String get notesOptional => '备注(可选)';
@override
String get addAdditionalInformation => '添加附加信息...';
@override
String lowAccuracyWarning(int accuracy) {
return '位置精度为 ±$accuracy米。这可能不足以用于搜救行动。\n\n仍然继续吗?';
}
@override
String get loginToRoom => '登录到房间';
@override
String get enterPasswordInfo => '输入访问此房间的密码。密码将被保存以供将来使用。';
@override
String get password => '密码';
@override
String get enterRoomPassword => '输入房间密码';
@override
String get loggingInDots => '正在登录...';
@override
String get login => '登录';
@override
String failedToAddRoom(String error) {
return '无法将房间添加到设备:$error\n\n该房间可能尚未广播。\n请等待房间广播。';
}
@override
String get direct => '直连';
@override
String get flood => '泛洪';
@override
String get loggedIn => '已登录';
@override
String get noGpsData => '无 GPS 数据';
@override
String get distance => '距离';
@override
String directPingTimeout(String name) {
return '直连 Ping 超时 - 正在使用泛洪重试 $name...';
}
@override
String pingFailed(String name) {
return 'Ping $name 失败 - 未收到响应';
}
@override
String deleteContactConfirmation(String name) {
return '您确定要删除“$name”吗?\n\n这将从应用程序和配套的无线电设备中移除该联系人。';
}
@override
String failedToRemoveContact(String error) {
return '移除联系人失败:$error';
}
@override
String get type => '类型';
@override
String get publicKey => '公钥';
@override
String get lastSeen => '最后在线';
@override
String get roomStatus => '房间状态';
@override
String get loginStatus => '登录状态';
@override
String get notLoggedIn => '未登录';
@override
String get adminAccess => '管理员权限';
@override
String get yes => '';
@override
String get no => '';
@override
String get permissions => '权限';
@override
String get passwordSaved => '密码已保存';
@override
String get locationColon => '位置:';
@override
String get telemetry => '遥测';
@override
String get voltage => '电压';
@override
String get battery => '电池';
@override
String get temperature => '温度';
@override
String get humidity => '湿度';
@override
String get pressure => '气压';
@override
String get gpsTelemetry => 'GPS遥测';
@override
String get updated => '更新于';
@override
String pathResetInfo(String name) {
return '已重置 $name 的路径。下一条消息将寻找新路由。';
}
@override
String get reLoginToRoom => '重新登录到房间';
@override
String get heading => '航向';
@override
String get elevation => '海拔';
@override
String get accuracy => '精度';
@override
String get bearing => '方位角';
@override
String get direction => '方向';
@override
String get filterMarkers => '筛选标记';
@override
String get filterMarkersTooltip => '筛选标记';
@override
String get contactsFilter => '联系人';
@override
String get repeatersFilter => '转发节点';
@override
String get sarMarkers => '搜救标记';
@override
String get foundPerson => '找到的人员';
@override
String get fire => '火灾';
@override
String get stagingArea => '集结区';
@override
String get showAll => '显示全部';
@override
String get locationUnavailable => '位置不可用';
@override
String get ahead => '前方';
@override
String degreesRight(int degrees) {
return '向右 $degrees°';
}
@override
String degreesLeft(int degrees) {
return '向左 $degrees°';
}
@override
String latLonFormat(String latitude, String longitude) {
return '纬度:$latitude 经度:$longitude';
}
@override
String get noContactsYet => '暂无联系人';
@override
String get connectToDeviceToLoadContacts => '连接设备以加载联系人';
@override
String get teamMembers => '团队成员';
@override
String get repeaters => '转发节点';
@override
String get rooms => '房间';
@override
String get channels => '频道';
@override
String get selectMapLayer => '选择地图图层';
@override
String get openStreetMap => 'OpenStreetMap';
@override
String get openTopoMap => 'OpenTopoMap';
@override
String get esriSatellite => 'ESRI 卫星图';
@override
String get googleHybrid => 'Google 混合图';
@override
String get googleRoadmap => 'Google 道路图';
@override
String get googleTerrain => 'Google 地形图';
@override
String get dragToPosition => '拖动以定位';
@override
String get createSarMarker => '创建搜救标记';
@override
String get compass => '指南针';
@override
String get navigationAndContacts => '导航与联系人';
@override
String get sarAlert => '搜救警报';
@override
String get textCopiedToClipboard => '文本已复制到剪贴板';
@override
String get cannotReplySenderMissing => '无法回复:缺少发送者信息';
@override
String get cannotReplyContactNotFound => '无法回复:未找到联系人';
@override
String get copyText => '复制文本';
@override
String get saveAsTemplate => '另存为模板';
@override
String get templateSaved => '模板保存成功';
@override
String get templateAlreadyExists => '具有此表情符号的模板已存在';
@override
String get deleteMessage => '删除消息';
@override
String get deleteMessageConfirmation => '您确定要删除此消息吗?';
@override
String get shareLocation => '共享位置';
@override
String shareLocationText(
String markerInfo,
String lat,
String lon,
String url,
) {
return '$markerInfo\n\n坐标:$lat, $lon\n\n谷歌地图:$url';
}
@override
String get sarLocationShare => '搜救位置';
@override
String get justNow => '刚刚';
@override
String minutesAgo(int minutes) {
return '$minutes分钟前';
}
@override
String hoursAgo(int hours) {
return '$hours小时前';
}
@override
String daysAgo(int days) {
return '$days天前';
}
@override
String secondsAgo(int seconds) {
return '$seconds秒前';
}
@override
String get sending => '发送中...';
@override
String get sent => '已发送';
@override
String get delivered => '已送达';
@override
String deliveredWithTime(int time) {
return '已送达($time毫秒';
}
@override
String get failed => '失败';
@override
String get broadcast => '广播';
@override
String deliveredToContacts(int delivered, int total) {
return '已送达 $delivered/$total 个联系人';
}
@override
String get allDelivered => '全部送达';
@override
String get recipientDetails => '收件人详情';
@override
String get pending => '等待中';
@override
String get sarMarkerFoundPerson => '找到的人员';
@override
String get sarMarkerFire => '火灾位置';
@override
String get sarMarkerStagingArea => '集结区';
@override
String get sarMarkerObject => '发现的物品';
@override
String get from => '来自';
@override
String get coordinates => '坐标';
@override
String get tapToViewOnMap => '点击在地图上查看';
@override
String get radioSettings => '无线电设置';
@override
String get frequencyMHz => '频率 (MHz)';
@override
String get frequencyExample => '例如 869.618';
@override
String get bandwidth => '带宽';
@override
String get spreadingFactor => '扩频因子';
@override
String get codingRate => '编码率';
@override
String get txPowerDbm => '发射功率 (dBm)';
@override
String maxPowerDbm(int power) {
return '最大:$power dBm';
}
@override
String get you => '';
@override
String exportFailed(String error) {
return '导出失败:$error';
}
@override
String importFailed(String error) {
return '导入失败:$error';
}
@override
String get unknown => '未知';
@override
String get onlineLayers => '在线图层';
@override
String get locationTrail => '位置轨迹';
@override
String get showTrailOnMap => '在地图上显示轨迹';
@override
String get trailVisible => '轨迹在地图上可见';
@override
String get trailHiddenRecording => '轨迹已隐藏(仍在记录)';
@override
String get duration => '持续时间';
@override
String get points => '点数';
@override
String get clearTrail => '清除轨迹';
@override
String get clearTrailQuestion => '清除轨迹?';
@override
String get clearTrailConfirmation => '您确定要清除当前的位置轨迹吗?此操作无法撤销。';
@override
String get noTrailRecorded => '尚未记录轨迹';
@override
String get startTrackingToRecord => '开始位置跟踪以记录您的轨迹';
@override
String get trailControls => '轨迹控制';
@override
String get contactTrails => '联系人轨迹';
@override
String get showAllContactTrails => '显示所有联系人轨迹';
@override
String get noContactsWithLocationHistory => '没有带位置历史的联系人';
@override
String showingTrailsForContacts(int count) {
return '正在显示 $count 个联系人的轨迹';
}
@override
String get individualContactTrails => '单个联系人轨迹';
@override
String get deviceInformation => '设备信息';
@override
String get bleName => 'BLE 名称';
@override
String get meshName => 'Mesh 名称';
@override
String get notSet => '未设置';
@override
String get model => '型号';
@override
String get version => '版本';
@override
String get buildDate => '构建日期';
@override
String get firmware => '固件';
@override
String get maxContacts => '最大联系人数量';
@override
String get maxChannels => '最大频道数量';
@override
String get publicInfo => '公共信息';
@override
String get meshNetworkName => 'Mesh 网络名称';
@override
String get nameBroadcastInMesh => '在 Mesh 广播中公布的名称';
@override
String get telemetryAndLocationSharing => '遥测与位置共享';
@override
String get lat => '纬度';
@override
String get lon => '经度';
@override
String get useCurrentLocation => '使用当前位置';
@override
String get noneUnknown => '无/未知';
@override
String get chatNode => '聊天节点';
@override
String get repeater => '转发节点';
@override
String get roomChannel => '房间/频道';
@override
String typeNumber(int number) {
return '类型 $number';
}
@override
String copiedToClipboardShort(String label) {
return '$label 已复制到剪贴板';
}
@override
String failedToSave(String error) {
return '保存失败:$error';
}
@override
String failedToGetLocation(String error) {
return '获取位置失败:$error';
}
@override
String get sarTemplates => '搜救模板';
@override
String get manageSarTemplates => '管理光标目标模板';
@override
String get addTemplate => '添加模板';
@override
String get editTemplate => '编辑模板';
@override
String get deleteTemplate => '删除模板';
@override
String get templateName => '模板名称';
@override
String get templateNameHint => '例如 找到的人员';
@override
String get templateEmoji => '表情符号';
@override
String get emojiRequired => '需要表情符号';
@override
String get nameRequired => '需要名称';
@override
String get templateDescription => '描述(可选)';
@override
String get templateDescriptionHint => '添加上下文信息...';
@override
String get templateColor => '颜色';
@override
String get previewFormat => '预览(搜救消息格式)';
@override
String get importFromClipboard => '导入';
@override
String get exportToClipboard => '导出';
@override
String deleteTemplateConfirmation(String name) {
return '删除模板“$name”?';
}
@override
String get templateAdded => '模板已添加';
@override
String get templateUpdated => '模板已更新';
@override
String get templateDeleted => '模板已删除';
@override
String templatesImported(int count) {
return '已导入 $count 个模板';
}
@override
String templatesExported(int count) {
return '已导出 $count 个模板到剪贴板';
}
@override
String get resetToDefaults => '恢复默认';
@override
String get resetToDefaultsConfirmation => '这将删除所有自定义模板并恢复 4 个默认模板。是否继续?';
@override
String get reset => '重置';
@override
String get resetComplete => '模板已重置为默认值';
@override
String get noTemplates => '没有可用的模板';
@override
String get tapAddToCreate => '点击 + 创建您的第一个模板';
@override
String get ok => '确定';
@override
String get permissionsSection => '权限';
@override
String get locationPermission => '位置权限';
@override
String get checking => '正在检查...';
@override
String get locationPermissionGrantedAlways => '已授予(始终)';
@override
String get locationPermissionGrantedWhileInUse => '已授予(使用期间)';
@override
String get locationPermissionDeniedTapToRequest => '已拒绝 - 点击请求';
@override
String get locationPermissionPermanentlyDeniedOpenSettings => '永久拒绝 - 打开设置';
@override
String get locationPermissionDialogContent =>
'位置权限被永久拒绝。请在设备设置中启用它,以便使用 GPS 跟踪和位置共享功能。';
@override
String get openSettings => '打开设置';
@override
String get locationPermissionGranted => '位置权限已授予!';
@override
String get locationPermissionRequiredForGps => 'GPS 跟踪和位置共享需要位置权限。';
@override
String get locationPermissionAlreadyGranted => '位置权限已被授予。';
@override
String get sarNavyBlue => '搜救海军蓝';
@override
String get sarNavyBlueDescription => '专业/操作模式';
@override
String get selectRecipient => '选择收件人';
@override
String get broadcastToAllNearby => '广播给所有附近设备';
@override
String get searchRecipients => '搜索收件人...';
@override
String get noContactsFound => '未找到联系人';
@override
String get noRoomsFound => '未找到房间';
@override
String get noRecipientsAvailable => '没有可用的收件人';
@override
String get noChannelsFound => '未找到频道';
@override
String get newMessage => '新消息';
@override
String get channel => '频道';
@override
String get samplePoliceLead => '警队负责人';
@override
String get sampleDroneOperator => '无人机操作员';
@override
String get sampleFirefighterAlpha => '消防员';
@override
String get sampleMedicCharlie => '医护人员';
@override
String get sampleCommandDelta => '指挥部';
@override
String get sampleFireEngine => '消防车';
@override
String get sampleAirSupport => '空中支援';
@override
String get sampleBaseCoordinator => '基地协调员';
@override
String get channelEmergency => '紧急';
@override
String get channelCoordination => '协调';
@override
String get channelUpdates => '更新';
@override
String get sampleTeamMember => '示例团队成员';
@override
String get sampleScout => '示例侦察员';
@override
String get sampleBase => '示例基地';
@override
String get sampleSearcher => '示例搜索员';
@override
String get sampleObjectBackpack => ' 发现的背包 - 蓝色';
@override
String get sampleObjectVehicle => ' 遗弃车辆 - 请核实车主';
@override
String get sampleObjectCamping => ' 发现的露营装备';
@override
String get sampleObjectTrailMarker => ' 在小径外发现的路标';
@override
String get sampleMsgAllTeamsCheckIn => '所有小队签到';
@override
String get sampleMsgWeatherUpdate => '天气更新:晴朗,气温 18°C';
@override
String get sampleMsgBaseCamp => '基地营已在集结区建立';
@override
String get sampleMsgTeamAlpha => '小队正在前往第 2 区';
@override
String get sampleMsgRadioCheck => '无线电检查 - 所有电台回应';
@override
String get sampleMsgWaterSupply => '3 号检查点有水源';
@override
String get sampleMsgTeamBravo => '小队报告:第 1 区已排查完毕';
@override
String get sampleMsgEtaRallyPoint => '预计到达集合点时间15 分钟';
@override
String get sampleMsgSupplyDrop => '已确认 14:00 进行物资空投';
@override
String get sampleMsgDroneSurvey => '无人机勘察完成 - 无发现';
@override
String get sampleMsgTeamCharlie => '小队请求支援';
@override
String get sampleMsgRadioDiscipline => '所有单位:保持无线电纪律';
@override
String get sampleMsgUrgentMedical => '紧急:第 4 区需要医疗援助';
@override
String get sampleMsgAdultMale => ' 成年男性,意识清醒';
@override
String get sampleMsgFireSpotted => '发现火灾 - 坐标即将发送';
@override
String get sampleMsgSpreadingRapidly => ' 正在迅速蔓延!';
@override
String get sampleMsgPriorityHelicopter => '优先级:需要直升机支援';
@override
String get sampleMsgMedicalTeamEnRoute => '医疗队正在前往您的位置';
@override
String get sampleMsgEvacHelicopter => '救援直升机预计 10 分钟后到达';
@override
String get sampleMsgEmergencyResolved => '紧急情况已解决 - 解除警报';
@override
String get sampleMsgEmergencyStagingArea => ' 紧急集结区';
@override
String get sampleMsgEmergencyServices => '紧急服务部门已接到通知并正在响应';
@override
String get sampleAlphaTeamLead => '小队队长';
@override
String get sampleBravoScout => '侦察员';
@override
String get sampleCharlieMedic => '医护人员';
@override
String get sampleDeltaNavigator => '导航员';
@override
String get sampleEchoSupport => '支援';
@override
String get sampleBaseCommand => '基地指挥部';
@override
String get sampleFieldCoordinator => '现场协调员';
@override
String get sampleMedicalTeam => '医疗队';
@override
String get mapDrawing => '地图绘制';
@override
String get navigateToDrawing => '导航到绘图';
@override
String get copyCoordinates => '复制坐标';
@override
String get hideFromMap => '在地图上隐藏';
@override
String get lineDrawing => '线条绘图';
@override
String get rectangleDrawing => '矩形绘图';
@override
String get manualCoordinates => '手动输入坐标';
@override
String get enterCoordinatesManually => '手动输入坐标';
@override
String get latitudeLabel => '纬度';
@override
String get longitudeLabel => '经度';
@override
String get exampleCoordinates => '例如46.0569, 14.5058';
@override
String get shareDrawing => '共享绘图';
@override
String get shareWithAllNearbyDevices => '与所有附近设备共享';
@override
String get shareToRoom => '共享到房间';
@override
String get sendToPersistentStorage => '发送到持久房间存储';
@override
String get deleteDrawingConfirm => '您确定要删除此绘图吗?';
@override
String get drawingDeleted => '绘图已删除';
@override
String yourDrawingsCount(int count) {
return '您的绘图 ($count)';
}
@override
String get shared => '已共享';
@override
String get line => '线条';
@override
String get rectangle => '矩形';
@override
String get updateAvailable => '有可用更新';
@override
String get currentVersion => '当前版本';
@override
String get latestVersion => '最新版本';
@override
String get downloadUpdate => '下载';
@override
String get updateLater => '稍后';
@override
String get cadastralParcels => '地籍地块';
@override
String get forestRoads => '森林道路';
@override
String get wmsOverlays => 'WMS 覆盖层';
@override
String get hikingTrails => '徒步小径';
@override
String get mainRoads => '主要道路';
@override
String get houseNumbers => '门牌号';
@override
String get fireHazardZones => '火灾危险区';
@override
String get historicalFires => '历史火灾';
@override
String get firebreaks => '防火隔离带';
@override
String get krasFireZones => '喀斯特火灾区';
@override
String get placeNames => '地名';
@override
String get municipalityBorders => '市镇边界';
@override
String get topographicMap => '地形图 1:25000';
@override
String get recentMessages => '最近消息';
@override
String get addChannel => '添加频道';
@override
String get channelName => '频道名称';
@override
String get channelNameHint => '例如 救援队阿尔法';
@override
String get channelSecret => '频道密钥';
@override
String get channelSecretHint => '此频道的共享密码';
@override
String get channelSecretHelp => '此密钥必须与需要访问此频道的所有团队成员共享';
@override
String get channelTypesInfo =>
'哈希频道 (#团队):密钥根据名称自动生成。名称相同 = 跨设备频道相同。\n\n私有频道:使用显式密钥。只有拥有密钥的人才能加入。';
@override
String get hashChannelInfo => '哈希频道:密钥将根据频道名称自动生成。任何使用相同名称的人将加入同一个频道。';
@override
String get channelNameRequired => '需要频道名称';
@override
String get channelNameTooLong => '频道名称必须为 31 个字符或更少';
@override
String get channelSecretRequired => '需要频道密钥';
@override
String get channelSecretTooLong => '频道密钥必须为 32 个字符或更少';
@override
String get invalidAsciiCharacters => '只允许 ASCII 字符';
@override
String get channelCreatedSuccessfully => '频道创建成功';
@override
String channelCreationFailed(String error) {
return '创建频道失败:$error';
}
@override
String get deleteChannel => '删除频道';
@override
String deleteChannelConfirmation(String channelName) {
return '您确定要删除频道“$channelName”吗?此操作无法撤销。';
}
@override
String get channelDeletedSuccessfully => '频道删除成功';
@override
String channelDeletionFailed(String error) {
return '删除频道失败:$error';
}
@override
String get createChannel => '创建频道';
@override
String get wizardBack => '返回';
@override
String get wizardSkip => '跳过';
@override
String get wizardNext => '下一步';
@override
String get wizardGetStarted => '开始使用';
@override
String get wizardWelcomeTitle => '欢迎使用 MeshCore 搜救助手';
@override
String get wizardWelcomeDescription =>
'一个功能强大的离网通信工具,用于搜索和救援行动。当传统网络不可用时,使用 Mesh 无线电技术与您的团队保持联系。';
@override
String get wizardConnectingTitle => '连接到您的无线电';
@override
String get wizardConnectingDescription =>
'通过蓝牙将您的智能手机连接到 MeshCore 无线电设备,开始离网通信。';
@override
String get wizardConnectingFeature1 => '扫描附近的 MeshCore 设备';
@override
String get wizardConnectingFeature2 => '通过蓝牙与您的无线电配对';
@override
String get wizardConnectingFeature3 => '完全离线工作 - 无需互联网';
@override
String get wizardChannelTitle => '频道';
@override
String get wizardChannelDescription => '向频道上的所有人广播消息,非常适合全队通告和协调。';
@override
String get wizardChannelFeature1 => '用于一般团队通信的公共频道';
@override
String get wizardChannelFeature2 => '为特定小组创建自定义频道';
@override
String get wizardChannelFeature3 => '消息由 Mesh 网络自动转发';
@override
String get wizardContactsTitle => '联系人';
@override
String get wizardContactsDescription =>
'您的团队成员在加入 Mesh 网络时会自动出现。向他们发送直连消息或查看他们的位置。';
@override
String get wizardContactsFeature1 => '联系人自动发现';
@override
String get wizardContactsFeature2 => '发送私密的直连消息';
@override
String get wizardContactsFeature3 => '查看电池电量和最后在线时间';
@override
String get wizardMapTitle => '地图与位置';
@override
String get wizardMapDescription => '实时跟踪您的团队,并为搜救行动标记重要位置。';
@override
String get wizardMapFeature1 => '用于标记找到的人员、火灾和集结区的搜救标记';
@override
String get wizardMapFeature2 => '团队成员的实时 GPS 跟踪';
@override
String get wizardMapFeature3 => '为偏远地区下载离线地图';
@override
String get wizardMapFeature4 => '绘制形状并共享战术信息';
@override
String get viewWelcomeTutorial => '查看欢迎教程';
@override
String get allTeamContacts => '所有团队联系人';
@override
String directMessagesInfo(int count) {
return '带有确认消息的直连消息。发送给 $count 名团队成员。';
}
@override
String sarMarkerSentToContacts(int count) {
return '搜救标记已发送给 $count 个联系人';
}
@override
String get noContactsAvailable => '没有可用的团队联系人';
@override
String get reply => '回复';
@override
String get technicalDetails => '技术细节';
@override
String get messageTechnicalDetails => '消息技术细节';
@override
String get linkQuality => '链路质量';
@override
String get delivery => '投递';
@override
String get status => '状态';
@override
String get expectedAckTag => '预期的 ACK 标签';
@override
String get roundTrip => '往返时间';
@override
String get retryAttempt => '重试尝试';
@override
String get floodFallback => '泛洪回退';
@override
String get identity => '身份';
@override
String get messageId => '消息 ID';
@override
String get sender => '发送者';
@override
String get senderKey => '发送者密钥';
@override
String get recipient => '接收者';
@override
String get recipientKey => '接收者密钥';
@override
String get voice => '语音';
@override
String get voiceId => '语音 ID';
@override
String get envelope => '信封';
@override
String get sessionProgress => '会话进度';
@override
String get complete => '完成';
@override
String get rawDump => '原始数据';
@override
String get cannotRetryMissingRecipient => '无法重试:缺少接收者信息';
@override
String get voiceUnavailable => '当前语音不可用';
@override
String get requestingVoice => '正在请求语音';
@override
String get device => 'device';
@override
String get change => 'Change';
@override
String get wizardOverviewDescription =>
'This app combines MeshCore messaging, SAR field updates, mapping, and device tools in one place.';
@override
String get wizardOverviewFeature1 =>
'Send direct, room, and channel messages from the main Messages tab.';
@override
String get wizardOverviewFeature2 =>
'Share SAR markers, map drawings, voice clips, and images over the mesh.';
@override
String get wizardOverviewFeature3 =>
'Connect over BLE or TCP, then manage the companion radio from inside the app.';
@override
String get wizardMessagingTitle => 'Messaging and Field Reports';
@override
String get wizardMessagingDescription =>
'Messages are more than plain text here. The app already supports several operational payloads and transfer workflows.';
@override
String get wizardMessagingFeature1 =>
'Send direct messages, room posts, and channel traffic from one composer.';
@override
String get wizardMessagingFeature2 =>
'Create SAR updates and reusable SAR templates for common field reports.';
@override
String get wizardMessagingFeature3 =>
'Transfer voice sessions and images, with progress and airtime estimates in the UI.';
@override
String get wizardConnectDeviceTitle => 'Connect device';
@override
String get wizardConnectDeviceDescription =>
'Connect your MeshCore radio, choose a name, and apply a radio preset before continuing.';
@override
String get wizardSetupBadge => 'Setup';
@override
String get wizardOverviewBadge => 'Overview';
@override
String wizardConnectedToDevice(String deviceName) {
return 'Connected to $deviceName';
}
@override
String get wizardNoDeviceConnected => 'No device connected yet';
@override
String get wizardSkipForNow => 'Skip for now';
@override
String get wizardDeviceNameLabel => 'Device name';
@override
String get wizardDeviceNameHelp =>
'This name is advertised to other MeshCore users.';
@override
String get wizardConfigRegionLabel => 'Config region';
@override
String get wizardConfigRegionHelp =>
'Uses the full official MeshCore preset list. Default is EU/UK (Narrow).';
@override
String get wizardPresetNote1 =>
'Make sure the selected preset matches your local radio regulations.';
@override
String get wizardPresetNote2 =>
'The list matches the official MeshCore config tool preset feed.';
@override
String get wizardPresetNote3 =>
'EU/UK (Narrow) stays selected by default for onboarding.';
@override
String get wizardSaving => 'Saving...';
@override
String get wizardSaveAndContinue => 'Save and continue';
@override
String get wizardEnterDeviceName => 'Enter a device name before continuing.';
@override
String wizardDeviceSetupSaved(String deviceName, String presetName) {
return 'Saved $deviceName with $presetName.';
}
@override
String get wizardNetworkTitle => 'Contacts, Rooms, and Repeaters';
@override
String get wizardNetworkDescription =>
'The Contacts tab organizes the network you discover and the routes you learn over time.';
@override
String get wizardNetworkFeature1 =>
'Review team members, repeaters, rooms, channels, and pending adverts in one list.';
@override
String get wizardNetworkFeature2 =>
'Use smart ping, room login, learned paths, and route reset tools when connectivity gets messy.';
@override
String get wizardNetworkFeature3 =>
'Create channels and manage network destinations without leaving the app.';
@override
String get wizardMapOpsTitle => 'Map, Trails, and Shared Geometry';
@override
String get wizardMapOpsDescription =>
'The app map is tied directly into messaging, tracking, and SAR overlays instead of being a separate viewer.';
@override
String get wizardMapOpsFeature1 =>
'Track your own position, teammate locations, and movement trails on the map.';
@override
String get wizardMapOpsFeature2 =>
'Open drawings from messages, preview them inline, and remove them from the map when needed.';
@override
String get wizardMapOpsFeature3 =>
'Use repeater map views and shared overlays to understand network reach in the field.';
@override
String get wizardToolsTitle => 'Tools Beyond Messaging';
@override
String get wizardToolsDescription =>
'There is more here than the four main tabs. The app also includes configuration, diagnostics, and optional sensor workflows.';
@override
String get wizardToolsFeature1 =>
'Open device config to change radio settings, telemetry, TX power, and companion details.';
@override
String get wizardToolsFeature2 =>
'Enable the Sensors tab when you want watched sensor dashboards and quick refresh actions.';
@override
String get wizardToolsFeature3 =>
'Use packet logs, spectrum scan, and developer diagnostics when troubleshooting the mesh.';
@override
String get contactInSensors => 'In Sensors';
@override
String get contactAddToSensors => 'Add to Sensors';
@override
String get contactSetPath => 'Set path';
@override
String contactAddedToSensors(String contactName) {
return '$contactName added to Sensors';
}
@override
String contactFailedToClearRoute(String error) {
return 'Failed to clear route: $error';
}
@override
String get contactRouteCleared => 'Route cleared';
@override
String contactRouteSet(String route) {
return 'Route set: $route';
}
@override
String contactFailedToSetRoute(String error) {
return 'Failed to set route: $error';
}
}