mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-11 08:20:36 +00:00
- i18n: translate connection screen + chat tab keys into 13 locales; add "Send my contact" (advert) strings in all locales - feat: move self-advert from home header into composer "+" action menu (new lib/utils/advert_helper.dart, always shows Flood/Direct sheet) - fix: hide-repeaters map toggle was bypassed in simple mode - fix: simple mode map now shows only favourite chat contacts - fix: wrap ListTiles in Material (contact_tile secondary actions, inferred contact group card) to satisfy Flutter ink assertions - device-authoritative contact/channel sync and UX review fixes Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3304 lines
74 KiB
Dart
3304 lines
74 KiB
Dart
// 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 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 disableMap => '禁用地图';
|
||
|
||
@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 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 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 autoSend => '自动发送';
|
||
|
||
@override
|
||
String get autoSendDescription => '通过当前路径发送。';
|
||
|
||
@override
|
||
String get sendDirect => '直接发送';
|
||
|
||
@override
|
||
String get sendDirectDescription => '直接发送给此联系人。';
|
||
|
||
@override
|
||
String get sendFlood => '泛洪发送';
|
||
|
||
@override
|
||
String get sendFloodDescription => '通过所有中继器发送。';
|
||
|
||
@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 yes => '是';
|
||
|
||
@override
|
||
String get no => '否';
|
||
|
||
@override
|
||
String get permissions => '权限';
|
||
|
||
@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 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 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 model => '型号';
|
||
|
||
@override
|
||
String get version => '版本';
|
||
|
||
@override
|
||
String get maxContacts => '最大联系人数量';
|
||
|
||
@override
|
||
String get maxChannels => '最大频道数量';
|
||
|
||
@override
|
||
String get publicInfo => '公共信息';
|
||
|
||
@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 failedToSave(String error) {
|
||
return '保存失败:$error';
|
||
}
|
||
|
||
@override
|
||
String failedToGetLocation(String error) {
|
||
return '获取位置失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get sarTemplates => '搜救模板';
|
||
|
||
@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 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 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 => '设备';
|
||
|
||
@override
|
||
String get change => '更改';
|
||
|
||
@override
|
||
String get wizardOverviewDescription =>
|
||
'此应用将 MeshCore 消息、SAR 现场更新、地图功能和设备工具整合到同一处。';
|
||
|
||
@override
|
||
String get wizardOverviewFeature1 => '在主消息标签页中发送私聊消息、房间消息和频道消息。';
|
||
|
||
@override
|
||
String get wizardOverviewFeature2 => '通过 mesh 网络共享 SAR 标记、地图绘图、语音片段和图像。';
|
||
|
||
@override
|
||
String get wizardOverviewFeature3 => '通过 BLE 或 TCP 连接,然后直接在应用中管理配套电台。';
|
||
|
||
@override
|
||
String get wizardMessagingTitle => '消息与现场报告';
|
||
|
||
@override
|
||
String get wizardMessagingDescription => '这里的消息不只是纯文本。应用已经支持多种操作载荷和传输流程。';
|
||
|
||
@override
|
||
String get wizardMessagingFeature1 => '通过一个编辑器发送私聊消息、房间消息和频道流量。';
|
||
|
||
@override
|
||
String get wizardMessagingFeature2 => '为常见现场报告创建 SAR 更新和可复用的 SAR 模板。';
|
||
|
||
@override
|
||
String get wizardMessagingFeature3 => '传输语音会话和图像,并在界面中显示进度和空口时间估算。';
|
||
|
||
@override
|
||
String get wizardConnectDeviceTitle => '连接设备';
|
||
|
||
@override
|
||
String get wizardConnectDeviceDescription =>
|
||
'连接你的 MeshCore 电台,选择名称,并在继续前应用无线电预设。';
|
||
|
||
@override
|
||
String get wizardSetupBadge => '设置';
|
||
|
||
@override
|
||
String get wizardOverviewBadge => '概览';
|
||
|
||
@override
|
||
String wizardConnectedToDevice(String deviceName) {
|
||
return '已连接到 $deviceName';
|
||
}
|
||
|
||
@override
|
||
String get wizardNoDeviceConnected => '尚未连接设备';
|
||
|
||
@override
|
||
String get wizardSkipForNow => '暂时跳过';
|
||
|
||
@override
|
||
String get wizardDeviceNameLabel => '设备名称';
|
||
|
||
@override
|
||
String get wizardDeviceNameHelp => '此名称会广播给其他 MeshCore 用户。';
|
||
|
||
@override
|
||
String get wizardConfigRegionLabel => '配置区域';
|
||
|
||
@override
|
||
String get wizardConfigRegionHelp =>
|
||
'使用完整的官方 MeshCore 预设列表。默认值为 EU/UK (Narrow)。';
|
||
|
||
@override
|
||
String get wizardPresetNote1 => '请确认所选预设符合你所在地区的无线电规定。';
|
||
|
||
@override
|
||
String get wizardPresetNote2 => '该列表与 MeshCore 配置工具的官方预设源保持一致。';
|
||
|
||
@override
|
||
String get wizardPresetNote3 => '在引导设置中默认保持选中 EU/UK (Narrow)。';
|
||
|
||
@override
|
||
String get wizardSaving => '正在保存...';
|
||
|
||
@override
|
||
String get wizardSaveAndContinue => '保存并继续';
|
||
|
||
@override
|
||
String get wizardEnterDeviceName => '继续前请输入设备名称。';
|
||
|
||
@override
|
||
String wizardDeviceSetupSaved(String deviceName, String presetName) {
|
||
return '已保存 $deviceName,配置为 $presetName。';
|
||
}
|
||
|
||
@override
|
||
String get wizardNetworkTitle => '联系人、房间和中继器';
|
||
|
||
@override
|
||
String get wizardNetworkDescription => '联系人标签页会整理你发现的网络以及随着时间学习到的路由。';
|
||
|
||
@override
|
||
String get wizardNetworkFeature1 => '在一个列表中查看团队成员、中继器、房间、频道和待处理广播。';
|
||
|
||
@override
|
||
String get wizardNetworkFeature2 => '当连接变得混乱时,使用智能 ping、房间登录、已学习路径和路由重置工具。';
|
||
|
||
@override
|
||
String get wizardNetworkFeature3 => '无需离开应用即可创建频道并管理网络目的地。';
|
||
|
||
@override
|
||
String get wizardMapOpsTitle => '地图、轨迹与共享几何';
|
||
|
||
@override
|
||
String get wizardMapOpsDescription => '应用地图直接与消息、跟踪和 SAR 叠加层关联,而不是单独的查看器。';
|
||
|
||
@override
|
||
String get wizardMapOpsFeature1 => '在地图上跟踪你自己的位置、队友位置和移动轨迹。';
|
||
|
||
@override
|
||
String get wizardMapOpsFeature2 => '打开消息中的绘图,内联预览,并在需要时将其从地图上移除。';
|
||
|
||
@override
|
||
String get wizardMapOpsFeature3 => '使用中继器地图视图和共享叠加层来了解现场网络覆盖范围。';
|
||
|
||
@override
|
||
String get wizardToolsTitle => '消息之外的工具';
|
||
|
||
@override
|
||
String get wizardToolsDescription => '这里不只有四个主标签页。应用还包含配置、诊断和可选的传感器工作流。';
|
||
|
||
@override
|
||
String get wizardToolsFeature1 => '打开设备配置以更改无线电设置、遥测、TX 功率和配套设备详情。';
|
||
|
||
@override
|
||
String get wizardToolsFeature2 => '当你需要受监控的传感器面板和快速刷新操作时,启用传感器标签页。';
|
||
|
||
@override
|
||
String get wizardToolsFeature3 => '在排查 mesh 网络问题时使用数据包日志、频谱扫描和开发者诊断。';
|
||
|
||
@override
|
||
String get postConnectDiscoveryTitle => '现在发现中继器?';
|
||
|
||
@override
|
||
String get postConnectDiscoveryDescription =>
|
||
'连接后立即运行中继器发现,以查看附近的 MeshCore 节点并更快地将它们添加到您的网络中。';
|
||
|
||
@override
|
||
String get contactInSensors => '在传感器中';
|
||
|
||
@override
|
||
String get contactAddToSensors => '添加到传感器';
|
||
|
||
@override
|
||
String get contactSetPath => '设置路径';
|
||
|
||
@override
|
||
String contactAddedToSensors(String contactName) {
|
||
return '已将 $contactName 添加到传感器';
|
||
}
|
||
|
||
@override
|
||
String contactFailedToClearRoute(String error) {
|
||
return '清除路由失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get contactRouteCleared => '路由已清除';
|
||
|
||
@override
|
||
String contactRouteSet(String route) {
|
||
return '路由已设置:$route';
|
||
}
|
||
|
||
@override
|
||
String contactFailedToSetRoute(String error) {
|
||
return '设置路由失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get rssi => 'RSSI';
|
||
|
||
@override
|
||
String get snr => 'SNR';
|
||
|
||
@override
|
||
String get ackTimeout => 'ACK 超时';
|
||
|
||
@override
|
||
String get opcode => '操作码';
|
||
|
||
@override
|
||
String get payload => '有效载荷';
|
||
|
||
@override
|
||
String get hops => '跳数';
|
||
|
||
@override
|
||
String get hashSize => '哈希大小';
|
||
|
||
@override
|
||
String get pathBytes => '路径字节';
|
||
|
||
@override
|
||
String get selectedPath => '选定路径';
|
||
|
||
@override
|
||
String get estimatedTx => '预计传输';
|
||
|
||
@override
|
||
String get senderToReceipt => '发送到接收';
|
||
|
||
@override
|
||
String get receivedCopies => '收到的副本';
|
||
|
||
@override
|
||
String get retryCause => '重试原因';
|
||
|
||
@override
|
||
String get retryMode => '重试模式';
|
||
|
||
@override
|
||
String get retryResult => '重试结果';
|
||
|
||
@override
|
||
String get lastRetry => '最后重试';
|
||
|
||
@override
|
||
String get rxPackets => 'RX 数据包';
|
||
|
||
@override
|
||
String get mesh => 'Mesh';
|
||
|
||
@override
|
||
String get rate => '速率';
|
||
|
||
@override
|
||
String get window => '窗口';
|
||
|
||
@override
|
||
String get posttxDelay => '发送后延迟';
|
||
|
||
@override
|
||
String get bandpass => '带通';
|
||
|
||
@override
|
||
String get bandpassFilterVoice => '带通语音滤波';
|
||
|
||
@override
|
||
String get active => '活动';
|
||
|
||
@override
|
||
String get addContact => '添加联系人';
|
||
|
||
@override
|
||
String get all => '全部';
|
||
|
||
@override
|
||
String get clearAllLabel => '清除全部';
|
||
|
||
@override
|
||
String get clearFilters => '清除过滤器';
|
||
|
||
@override
|
||
String get clearRoute => '清除路由';
|
||
|
||
@override
|
||
String get clearMessages => '清除消息';
|
||
|
||
@override
|
||
String get clearScale => '清除比例';
|
||
|
||
@override
|
||
String get clearDiscoveries => '清除发现';
|
||
|
||
@override
|
||
String get clearOnlineTraceDatabase => '清除在线追踪数据库';
|
||
|
||
@override
|
||
String get clearAllChannels => '清除所有频道';
|
||
|
||
@override
|
||
String get clearAllContacts => '清除所有联系人';
|
||
|
||
@override
|
||
String get clearChannels => '清除频道';
|
||
|
||
@override
|
||
String get clearContacts => '清除联系人';
|
||
|
||
@override
|
||
String get clearPathOnMaxRetry => '最大重试时清除路径';
|
||
|
||
@override
|
||
String get create => '创建';
|
||
|
||
@override
|
||
String get custom => '自定义';
|
||
|
||
@override
|
||
String get defaultValue => '默认';
|
||
|
||
@override
|
||
String get duplicate => '复制';
|
||
|
||
@override
|
||
String get editName => '编辑名称';
|
||
|
||
@override
|
||
String get open => '打开';
|
||
|
||
@override
|
||
String get paste => '粘贴';
|
||
|
||
@override
|
||
String get preview => '预览';
|
||
|
||
@override
|
||
String get remove => '移除';
|
||
|
||
@override
|
||
String get rename => '重命名';
|
||
|
||
@override
|
||
String get resolveAll => '解析全部';
|
||
|
||
@override
|
||
String get send => '发送';
|
||
|
||
@override
|
||
String get sendAnyway => '仍然发送';
|
||
|
||
@override
|
||
String get share => '分享';
|
||
|
||
@override
|
||
String get trace => '追踪';
|
||
|
||
@override
|
||
String get discovery => '发现';
|
||
|
||
@override
|
||
String get discoverRepeaters => '发现中继器';
|
||
|
||
@override
|
||
String get discoverSensors => '发现传感器';
|
||
|
||
@override
|
||
String get repeaterDiscoverySent => '中继器发现已发送';
|
||
|
||
@override
|
||
String get sensorDiscoverySent => '传感器发现已发送';
|
||
|
||
@override
|
||
String get clearedPendingDiscoveries => '已清除待处理的发现。';
|
||
|
||
@override
|
||
String get autoDiscovery => '自动发现';
|
||
|
||
@override
|
||
String get enableAutomaticAdding => '启用自动添加';
|
||
|
||
@override
|
||
String get autoaddRepeaters => '自动添加中继器';
|
||
|
||
@override
|
||
String get autoaddRoomServers => '自动添加房间服务器';
|
||
|
||
@override
|
||
String get autoaddSensors => '自动添加传感器';
|
||
|
||
@override
|
||
String get autoaddUsers => '自动添加用户';
|
||
|
||
@override
|
||
String get overwriteOldestWhenFull => '满时覆盖最旧的';
|
||
|
||
@override
|
||
String get storage => '存储';
|
||
|
||
@override
|
||
String get dangerZone => '危险区域';
|
||
|
||
@override
|
||
String get profiles => '配置文件';
|
||
|
||
@override
|
||
String get favourites => '收藏夹';
|
||
|
||
@override
|
||
String get sensors => '传感器';
|
||
|
||
@override
|
||
String get others => '其他';
|
||
|
||
@override
|
||
String get gpsModule => 'GPS 模块';
|
||
|
||
@override
|
||
String get liveTraffic => '实时流量';
|
||
|
||
@override
|
||
String get repeatersMap => '中继器地图';
|
||
|
||
@override
|
||
String get blePacketLogs => 'BLE 数据包日志';
|
||
|
||
@override
|
||
String get onlineTraceDatabase => '在线追踪数据库';
|
||
|
||
@override
|
||
String get routePathByteSize => '路由路径字节大小';
|
||
|
||
@override
|
||
String get messageNotifications => '消息通知';
|
||
|
||
@override
|
||
String get sarAlerts => 'SAR 警报';
|
||
|
||
@override
|
||
String get discoveryNotifications => '发现通知';
|
||
|
||
@override
|
||
String get updateNotifications => '更新通知';
|
||
|
||
@override
|
||
String get muteWhileAppIsOpen => '应用打开时静音';
|
||
|
||
@override
|
||
String get disableContacts => '禁用联系人';
|
||
|
||
@override
|
||
String get enableSensorsTab => '启用传感器标签';
|
||
|
||
@override
|
||
String get enableProfiles => '启用配置文件';
|
||
|
||
@override
|
||
String get nearestRepeaterFallback => '最近中继器回退';
|
||
|
||
@override
|
||
String get deleteAllStoredMessageHistory => '删除所有存储的消息历史';
|
||
|
||
@override
|
||
String get messageFontSize => '消息字体大小';
|
||
|
||
@override
|
||
String get rotateMapWithHeading => '随航向旋转地图';
|
||
|
||
@override
|
||
String get showMapDebugInfo => '显示地图调试信息';
|
||
|
||
@override
|
||
String get openMapInFullscreen => '全屏打开地图';
|
||
|
||
@override
|
||
String get showSarMarkersLabel => '显示 SAR 标记';
|
||
|
||
@override
|
||
String get hideRepeatersOnMap => '在地图上隐藏中继器';
|
||
|
||
@override
|
||
String get setMapScale => '设置地图比例';
|
||
|
||
@override
|
||
String get customMapScaleSaved => '自定义地图比例已保存';
|
||
|
||
@override
|
||
String get voiceBitrate => '语音比特率';
|
||
|
||
@override
|
||
String get voiceCompressor => '语音压缩器';
|
||
|
||
@override
|
||
String get voiceLimiter => '语音限制器';
|
||
|
||
@override
|
||
String get micAutoGain => '麦克风自动增益';
|
||
|
||
@override
|
||
String get echoCancellation => '回声消除';
|
||
|
||
@override
|
||
String get noiseSuppression => '噪音抑制';
|
||
|
||
@override
|
||
String get trimSilenceInVoiceMessages => '修剪语音消息中的静音';
|
||
|
||
@override
|
||
String get compressor => '压缩器';
|
||
|
||
@override
|
||
String get limiter => '限制器';
|
||
|
||
@override
|
||
String get autoGain => '自动增益';
|
||
|
||
@override
|
||
String get echoCancel => '回声';
|
||
|
||
@override
|
||
String get noiseSuppress => '噪声';
|
||
|
||
@override
|
||
String get silenceTrim => '静音';
|
||
|
||
@override
|
||
String get maxImageSize => '最大图片大小';
|
||
|
||
@override
|
||
String get imageCompression => '图片压缩';
|
||
|
||
@override
|
||
String get grayscale => '灰度';
|
||
|
||
@override
|
||
String get ultraMode => '超级模式';
|
||
|
||
@override
|
||
String get fastPrivateGpsUpdates => '快速私有 GPS 更新';
|
||
|
||
@override
|
||
String get movementThreshold => '移动阈值';
|
||
|
||
@override
|
||
String get fastGpsMovementThreshold => '快速 GPS 移动阈值';
|
||
|
||
@override
|
||
String get fastGpsActiveuseInterval => '快速 GPS 活动使用间隔';
|
||
|
||
@override
|
||
String get activeuseUpdateInterval => '活动使用更新间隔';
|
||
|
||
@override
|
||
String get repeatNearbyTraffic => '转发附近流量';
|
||
|
||
@override
|
||
String get relayThroughRepeatersAcrossTheMesh => '通过网格中的中继器转发';
|
||
|
||
@override
|
||
String get nearbyOnlyWithoutRepeaterFlooding => '仅附近,无中继器泛洪';
|
||
|
||
@override
|
||
String get multihop => '多跳';
|
||
|
||
@override
|
||
String get createProfile => '创建配置文件';
|
||
|
||
@override
|
||
String get renameProfile => '重命名配置文件';
|
||
|
||
@override
|
||
String get newProfile => '新配置文件';
|
||
|
||
@override
|
||
String get manageProfiles => '管理配置文件';
|
||
|
||
@override
|
||
String get enableProfilesToStartManagingThem => '启用配置文件以开始管理它们。';
|
||
|
||
@override
|
||
String get openMessage => '打开消息';
|
||
|
||
@override
|
||
String get jumpToTheRelatedSarMessage => '跳转到相关的 SAR 消息';
|
||
|
||
@override
|
||
String get removeSarMarker => '移除 SAR 标记';
|
||
|
||
@override
|
||
String get pleaseSelectADestinationToSendSarMarker => '请选择目标以发送 SAR 标记';
|
||
|
||
@override
|
||
String get sarMarkerBroadcastToPublicChannel => 'SAR 标记已广播到公共频道';
|
||
|
||
@override
|
||
String get sarMarkerSentToRoom => 'SAR 标记已发送到房间';
|
||
|
||
@override
|
||
String get loadFromGallery => '从图库加载';
|
||
|
||
@override
|
||
String get replaceImage => '替换图片';
|
||
|
||
@override
|
||
String get selectFromGallery => '从图库选择';
|
||
|
||
@override
|
||
String get team => '团队';
|
||
|
||
@override
|
||
String get found => '已找到';
|
||
|
||
@override
|
||
String get staging => '集结区';
|
||
|
||
@override
|
||
String get object => '物体';
|
||
|
||
@override
|
||
String get quiet => '安静';
|
||
|
||
@override
|
||
String get busy => '繁忙';
|
||
|
||
@override
|
||
String get searchMessages => '搜索消息';
|
||
|
||
@override
|
||
String get sendImageFromGallery => '从图库发送图片';
|
||
|
||
@override
|
||
String get takePhoto => '拍照';
|
||
|
||
@override
|
||
String get allMessages => '所有消息';
|
||
|
||
@override
|
||
String get sendToPublicChannel => '发送到公共频道?';
|
||
|
||
@override
|
||
String get selectMarkerTypeAndDestination => '选择标记类型和目标';
|
||
|
||
@override
|
||
String get noDestinationsAvailableLabel => '没有可用的目标';
|
||
|
||
@override
|
||
String get image => '图片';
|
||
|
||
@override
|
||
String get format => '格式';
|
||
|
||
@override
|
||
String get dimensions => '尺寸';
|
||
|
||
@override
|
||
String get segments => '分段';
|
||
|
||
@override
|
||
String get transfers => '传输';
|
||
|
||
@override
|
||
String get downloadedBy => '已下载';
|
||
|
||
@override
|
||
String get saveDiscoverySettings => '保存发现设置';
|
||
|
||
@override
|
||
String get savePublicInfo => '保存公共信息';
|
||
|
||
@override
|
||
String get saveRadioSettings => '保存无线电设置';
|
||
|
||
@override
|
||
String get savePath => '保存路径';
|
||
|
||
@override
|
||
String get wipeDeviceData => '擦除设备数据';
|
||
|
||
@override
|
||
String get wipeDevice => '擦除设备';
|
||
|
||
@override
|
||
String get destructiveDeviceActions => '破坏性设备操作。';
|
||
|
||
@override
|
||
String get chooseAPresetOrFinetuneCustomRadioSettings => '选择预设或微调自定义无线电设置。';
|
||
|
||
@override
|
||
String get used => '已使用';
|
||
|
||
@override
|
||
String get total => '总计';
|
||
|
||
@override
|
||
String get renameValue => '重命名值';
|
||
|
||
@override
|
||
String get customizeFields => '自定义字段';
|
||
|
||
@override
|
||
String get livePreview => '实时预览';
|
||
|
||
@override
|
||
String get refreshSchedule => '刷新计划';
|
||
|
||
@override
|
||
String get noResponse => '无响应';
|
||
|
||
@override
|
||
String get refreshing => '刷新中';
|
||
|
||
@override
|
||
String get unavailable => '不可用';
|
||
|
||
@override
|
||
String get pickARelayOrNodeToWatchInSensors => '选择要在传感器中监视的中继或节点。';
|
||
|
||
@override
|
||
String get publicKeyLabel => '公钥';
|
||
|
||
@override
|
||
String get alreadyInContacts => '已在联系人中';
|
||
|
||
@override
|
||
String get connectToADeviceBeforeAddingContacts => '添加联系人前请连接到设备';
|
||
|
||
@override
|
||
String get fromContacts => '来自联系人';
|
||
|
||
@override
|
||
String get onlineOnly => '仅在线';
|
||
|
||
@override
|
||
String get inBoth => '两者中';
|
||
|
||
@override
|
||
String get source => '来源';
|
||
|
||
@override
|
||
String get allMessagesCleared => '所有消息已清除';
|
||
|
||
@override
|
||
String get onlineTraceDatabaseCleared => '在线追踪数据库已清除';
|
||
|
||
@override
|
||
String get packetLogsCleared => '数据包日志已清除';
|
||
|
||
@override
|
||
String get hexDataCopiedToClipboard => '十六进制数据已复制到剪贴板';
|
||
|
||
@override
|
||
String get developerModeEnabled => '开发者模式已启用';
|
||
|
||
@override
|
||
String get developerModeDisabled => '开发者模式已禁用';
|
||
|
||
@override
|
||
String get clipboardIsEmpty => '剪贴板为空';
|
||
|
||
@override
|
||
String get contactImported => '联系人已导入';
|
||
|
||
@override
|
||
String get contactLinkCopiedToClipboard => '联系人链接已复制到剪贴板';
|
||
|
||
@override
|
||
String get failedToExportContact => '导出联系人失败';
|
||
|
||
@override
|
||
String get noLogsToExport => '没有日志可导出';
|
||
|
||
@override
|
||
String get exportAsCsv => '导出为 CSV';
|
||
|
||
@override
|
||
String get exportAsText => '导出为文本';
|
||
|
||
@override
|
||
String get receivedRfc3339 => '收到 (RFC3339)';
|
||
|
||
@override
|
||
String get buildTime => '构建时间';
|
||
|
||
@override
|
||
String get downloadUrlNotAvailable => '下载链接不可用';
|
||
|
||
@override
|
||
String get cannotOpenDownloadUrl => '无法打开下载链接';
|
||
|
||
@override
|
||
String get updateCheckIsOnlyAvailableOnAndroid => '更新检查仅在 Android 上可用';
|
||
|
||
@override
|
||
String get youAreRunningTheLatestVersion => '您正在使用最新版本';
|
||
|
||
@override
|
||
String get updateAvailableButDownloadUrlNotFound => '有更新可用但未找到下载链接';
|
||
|
||
@override
|
||
String get startTictactoe => '开始井字棋';
|
||
|
||
@override
|
||
String get tictactoeUnavailable => '井字棋不可用';
|
||
|
||
@override
|
||
String get tictactoeOpponentUnknown => '井字棋:对手未知';
|
||
|
||
@override
|
||
String get tictactoeWaitingForStart => '井字棋:等待开始';
|
||
|
||
@override
|
||
String get acceptsShareLinks => '接受分享链接';
|
||
|
||
@override
|
||
String get supportsRawHex => '支持原始十六进制';
|
||
|
||
@override
|
||
String get clipboardfriendly => '剪贴板友好';
|
||
|
||
@override
|
||
String get captured => '已捕获';
|
||
|
||
@override
|
||
String get size => '大小';
|
||
|
||
@override
|
||
String get noCustomChannelsToClear => '没有自定义频道可清除。';
|
||
|
||
@override
|
||
String get noDeviceContactsToClear => '没有设备联系人可清除。';
|
||
|
||
@override
|
||
String get aToZ => 'A-Z';
|
||
|
||
@override
|
||
String get add => '添加';
|
||
|
||
@override
|
||
String get addAdditionalDetails => '添加其他详情';
|
||
|
||
@override
|
||
String get addPeer => '添加节点';
|
||
|
||
@override
|
||
String get addPeerManually => '手动添加节点';
|
||
|
||
@override
|
||
String addedToContacts(String name) {
|
||
return '$name 已添加到联系人';
|
||
}
|
||
|
||
@override
|
||
String addedToSensors(String name) {
|
||
return '$name 已添加到传感器';
|
||
}
|
||
|
||
@override
|
||
String get allowAll => '全部允许';
|
||
|
||
@override
|
||
String get anonymousRxStats => '匿名接收统计';
|
||
|
||
@override
|
||
String get appearance => '外观';
|
||
|
||
@override
|
||
String get ascii => 'ASCII';
|
||
|
||
@override
|
||
String get baseTelemetry => '基础遥测';
|
||
|
||
@override
|
||
String get blePin => 'BLE PIN';
|
||
|
||
@override
|
||
String get buzzerAlerts => '蜂鸣器警报';
|
||
|
||
@override
|
||
String get cancelImageReceive => '取消接收图片';
|
||
|
||
@override
|
||
String get choose => '选择';
|
||
|
||
@override
|
||
String get chooseWhichTabsAndContactSectionsToShow => '选择要显示的标签页和联系人分区';
|
||
|
||
@override
|
||
String get clearCache => '清除缓存';
|
||
|
||
@override
|
||
String get clearHistory => '清除历史';
|
||
|
||
@override
|
||
String get clearLiveView => '清除实时视图';
|
||
|
||
@override
|
||
String get clearLogs => '清除日志';
|
||
|
||
@override
|
||
String get clearOfflineCache => '清除离线缓存?';
|
||
|
||
@override
|
||
String get clearOverlay => '清除叠加层';
|
||
|
||
@override
|
||
String get clearRouteOnlyAfterAllRetriesFail => '仅在所有重试失败后清除路由';
|
||
|
||
@override
|
||
String get codecBitrateAndAudioProcessing => '编解码器、比特率和音频处理';
|
||
|
||
@override
|
||
String get connectByIpAddress => '通过 IP 地址连接';
|
||
|
||
@override
|
||
String get controlWhichAlertsYouReceive => '控制接收哪些警报';
|
||
|
||
@override
|
||
String get copyFullHex => '复制完整 Hex';
|
||
|
||
@override
|
||
String get copyRawResponse => '复制原始响应';
|
||
|
||
@override
|
||
String get couldNotLoadMetHistory => '无法加载 MET 历史';
|
||
|
||
@override
|
||
String customizeSensor(String name) {
|
||
return '自定义 $name';
|
||
}
|
||
|
||
@override
|
||
String get data => '数据';
|
||
|
||
@override
|
||
String get deleteGroup => '删除群组';
|
||
|
||
@override
|
||
String deleteStyleConfirm(String name) {
|
||
return '删除 $name?';
|
||
}
|
||
|
||
@override
|
||
String deleteThisDrawing(String type) {
|
||
return '删除此$type?';
|
||
}
|
||
|
||
@override
|
||
String get deny => '拒绝';
|
||
|
||
@override
|
||
String get deviceInfo => '设备信息';
|
||
|
||
@override
|
||
String get deviceSettings => '设备设置';
|
||
|
||
@override
|
||
String get deviceTimeSynced => '设备时间已同步到此手机。';
|
||
|
||
@override
|
||
String get disableFastGpsPublishing => '禁用快速 GPS 发布';
|
||
|
||
@override
|
||
String get displayMarkersAndTraceDatabase => '显示、标记和轨迹数据库';
|
||
|
||
@override
|
||
String get download => '下载';
|
||
|
||
@override
|
||
String get environmentalTelemetry => '环境遥测';
|
||
|
||
@override
|
||
String errorCheckingForUpdates(String error) {
|
||
return '检查更新出错:$error';
|
||
}
|
||
|
||
@override
|
||
String errorGeneric(String error) {
|
||
return '错误:$error';
|
||
}
|
||
|
||
@override
|
||
String errorOpeningDownload(String error) {
|
||
return '打开下载出错:$error';
|
||
}
|
||
|
||
@override
|
||
String get exportLogs => '导出日志';
|
||
|
||
@override
|
||
String get extraAggressiveAvifCompression => '超强 AVIF 压缩';
|
||
|
||
@override
|
||
String failedToAddContact(String error) {
|
||
return '添加联系人失败:$error';
|
||
}
|
||
|
||
@override
|
||
String failedToAddName(String name, String error) {
|
||
return '添加 $name 失败:$error';
|
||
}
|
||
|
||
@override
|
||
String failedToClearChannels(String error) {
|
||
return '清除频道失败:$error';
|
||
}
|
||
|
||
@override
|
||
String failedToClearContacts(String error) {
|
||
return '清除联系人失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get failedToConnectViaSerial => '通过串口连接失败';
|
||
|
||
@override
|
||
String failedToLoadPreviewImage(String error) {
|
||
return '加载预览图片失败:$error';
|
||
}
|
||
|
||
@override
|
||
String failedToLoadTrace(String error) {
|
||
return '加载轨迹失败:$error';
|
||
}
|
||
|
||
@override
|
||
String failedToSendSarMarker(String error) {
|
||
return '发送 SAR 标记失败:$error';
|
||
}
|
||
|
||
@override
|
||
String failedToSetBuzzerMode(String error) {
|
||
return '设置蜂鸣器模式失败:$error';
|
||
}
|
||
|
||
@override
|
||
String failedToSetGpsMode(String error) {
|
||
return '设置 GPS 模式失败:$error';
|
||
}
|
||
|
||
@override
|
||
String failedToSyncDeviceTime(String error) {
|
||
return '同步设备时间失败:$error';
|
||
}
|
||
|
||
@override
|
||
String failedToWipeDeviceData(String error) {
|
||
return '擦除设备数据失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get fastGpsTargetChannel => '快速 GPS 目标频道';
|
||
|
||
@override
|
||
String get fastUpdatesThresholdsAndPermissions => '快速更新、阈值和权限';
|
||
|
||
@override
|
||
String get fetchingCatalog => '正在获取目录…';
|
||
|
||
@override
|
||
String get fifteenMinutes => '15 分钟';
|
||
|
||
@override
|
||
String get fifteenSeconds => '15 秒';
|
||
|
||
@override
|
||
String get filterByDirection => '按方向筛选';
|
||
|
||
@override
|
||
String get finish => '完成';
|
||
|
||
@override
|
||
String get fiveMinutes => '5 分钟';
|
||
|
||
@override
|
||
String get fiveSeconds => '5 秒';
|
||
|
||
@override
|
||
String get fix => '定位';
|
||
|
||
@override
|
||
String get gps => 'GPS';
|
||
|
||
@override
|
||
String get gpsAdvertPolicy => 'GPS 广播策略';
|
||
|
||
@override
|
||
String get gpsAndLocation => 'GPS 与位置';
|
||
|
||
@override
|
||
String get gpsDiagnostics => 'GPS 诊断';
|
||
|
||
@override
|
||
String get gpsSection => 'GPS';
|
||
|
||
@override
|
||
String get help => '帮助';
|
||
|
||
@override
|
||
String get hex => 'Hex';
|
||
|
||
@override
|
||
String get hidden => '已隐藏';
|
||
|
||
@override
|
||
String get howTheRadioAutoAddsDiscoveredNodes => '无线电自动添加已发现节点的方式。';
|
||
|
||
@override
|
||
String get images => '图片';
|
||
|
||
@override
|
||
String get importProfile => '导入配置文件';
|
||
|
||
@override
|
||
String get lastFix => '最后定位';
|
||
|
||
@override
|
||
String get latest => '最新';
|
||
|
||
@override
|
||
String get latitude => '纬度';
|
||
|
||
@override
|
||
String get loadASavedRegion => '加载已保存的区域';
|
||
|
||
@override
|
||
String get loading => '加载中';
|
||
|
||
@override
|
||
String get locationSharingHardwareAndUpdateInterval => '位置共享、硬件和更新间隔。';
|
||
|
||
@override
|
||
String get locationTelemetry => '位置遥测';
|
||
|
||
@override
|
||
String get lockDestination => '锁定目的地';
|
||
|
||
@override
|
||
String get longitude => '经度';
|
||
|
||
@override
|
||
String get mapStyle => '地图样式';
|
||
|
||
@override
|
||
String get max => '最大';
|
||
|
||
@override
|
||
String get maxZoom => '最大缩放';
|
||
|
||
@override
|
||
String get messaging => '消息传递';
|
||
|
||
@override
|
||
String get metHistory => 'MET 历史';
|
||
|
||
@override
|
||
String get min => '最小';
|
||
|
||
@override
|
||
String get minZoom => '最小缩放';
|
||
|
||
@override
|
||
String get moveDown => '下移';
|
||
|
||
@override
|
||
String get moveUp => '上移';
|
||
|
||
@override
|
||
String get multiAckMode => '多重 ACK 模式';
|
||
|
||
@override
|
||
String get multiDeviceWorkspaceManagement => '多设备工作区管理';
|
||
|
||
@override
|
||
String get myLocation => '我的位置';
|
||
|
||
@override
|
||
String get nameAndTelemetryShared => '名称和遥测数据已与其他设备共享。';
|
||
|
||
@override
|
||
String newVersionAvailable(String version) {
|
||
return '新版本:$version';
|
||
}
|
||
|
||
@override
|
||
String get newer => '较新';
|
||
|
||
@override
|
||
String get noNeighboursFound => '未找到邻近节点';
|
||
|
||
@override
|
||
String get noServersFound => '未找到服务器';
|
||
|
||
@override
|
||
String get notSet => '未设置';
|
||
|
||
@override
|
||
String get notifications => '通知';
|
||
|
||
@override
|
||
String get offZeroSeconds => '关闭 (0 秒)';
|
||
|
||
@override
|
||
String get offlineMaps => '离线地图';
|
||
|
||
@override
|
||
String get older => '较旧';
|
||
|
||
@override
|
||
String get oneByteMode0 => '1 字节(模式 0)';
|
||
|
||
@override
|
||
String get oneHour => '1 小时';
|
||
|
||
@override
|
||
String get oneMinute => '1 分钟';
|
||
|
||
@override
|
||
String get openPacketLogs => '打开数据包日志';
|
||
|
||
@override
|
||
String get packetTypeHelp => '数据包类型帮助';
|
||
|
||
@override
|
||
String get pasteShareLinkOrHexAdvert => '粘贴分享链接或 Hex 广播';
|
||
|
||
@override
|
||
String get pathHash => '路径哈希';
|
||
|
||
@override
|
||
String get pathSize => '路径大小';
|
||
|
||
@override
|
||
String get ping => 'Ping';
|
||
|
||
@override
|
||
String get polygon => '多边形';
|
||
|
||
@override
|
||
String get rawResponseCopied => '原始响应已复制';
|
||
|
||
@override
|
||
String get resendThroughNearestRepeaterOnFailure => '失败时通过最近的中继器重新发送';
|
||
|
||
@override
|
||
String get resolveContact => '解析联系人';
|
||
|
||
@override
|
||
String get routingRetriesAndDestinationLock => '路由、重试和目的地锁定';
|
||
|
||
@override
|
||
String get samples => '采样';
|
||
|
||
@override
|
||
String get satellites => '卫星';
|
||
|
||
@override
|
||
String get saving => '保存中…';
|
||
|
||
@override
|
||
String get search => '搜索';
|
||
|
||
@override
|
||
String get searchByNameOrToken => '按名称或令牌搜索';
|
||
|
||
@override
|
||
String get searchDiscoveredNodes => '搜索已发现的节点';
|
||
|
||
@override
|
||
String get searchInCurrentFilter => '在当前筛选中搜索';
|
||
|
||
@override
|
||
String get searchLogs => '搜索日志…';
|
||
|
||
@override
|
||
String get searchSensors => '搜索传感器';
|
||
|
||
@override
|
||
String get searchThisSection => '搜索此分区';
|
||
|
||
@override
|
||
String get selectedRelays => '已选中继器';
|
||
|
||
@override
|
||
String get sensor => '传感器';
|
||
|
||
@override
|
||
String serialError(String error) {
|
||
return '串口错误:$error';
|
||
}
|
||
|
||
@override
|
||
String setPathForContact(String name) {
|
||
return '为 $name 设置路径';
|
||
}
|
||
|
||
@override
|
||
String get shareLiveGps => '共享实时 GPS';
|
||
|
||
@override
|
||
String get shareMyTiles => '共享我的地图瓦片';
|
||
|
||
@override
|
||
String get sharingLocationFromPhone => '正在从手机共享此频道的位置。';
|
||
|
||
@override
|
||
String get sharingLocationFromRadio => '正在从无线电共享此频道的位置。';
|
||
|
||
@override
|
||
String signalDbm(String rssi) {
|
||
return '信号 $rssi dBm';
|
||
}
|
||
|
||
@override
|
||
String get sizeCompressionAndPreview => '大小、压缩和预览';
|
||
|
||
@override
|
||
String get simpleMode => '简单模式';
|
||
|
||
@override
|
||
String get simpleModeDescription => '仅与收藏联系人聊天和查看地图';
|
||
|
||
@override
|
||
String get simpleModeRequiresLockedDestination =>
|
||
'请先启用“锁定目的地”并选择一个频道,再使用简单模式';
|
||
|
||
@override
|
||
String get noFavouriteContacts => '暂无收藏联系人';
|
||
|
||
@override
|
||
String get skip => '跳过';
|
||
|
||
@override
|
||
String get smallerFileSize => '更小的文件大小';
|
||
|
||
@override
|
||
String get sort => '排序';
|
||
|
||
@override
|
||
String get stoppedSharingLocation => '已停止在此频道上共享位置。';
|
||
|
||
@override
|
||
String get suppressNotificationsWhileInForeground => '前台运行时抑制通知';
|
||
|
||
@override
|
||
String get tabsAndNavigation => '标签页与导航';
|
||
|
||
@override
|
||
String get templatesAndTutorials => '模板和教程';
|
||
|
||
@override
|
||
String get tenMinutes => '10 分钟';
|
||
|
||
@override
|
||
String get tenSeconds => '10 秒';
|
||
|
||
@override
|
||
String get testSendUpdate => '测试发送更新';
|
||
|
||
@override
|
||
String get themeLanguageAndDisplayPreferences => '主题、语言和显示偏好';
|
||
|
||
@override
|
||
String get thirtyMinutes => '30 分钟';
|
||
|
||
@override
|
||
String get thirtySeconds => '30 秒';
|
||
|
||
@override
|
||
String get threeBytesMode2 => '3 字节(模式 2)';
|
||
|
||
@override
|
||
String get trafficStatsMessageHistoryAndDeveloperTools => '流量统计、消息历史和开发者工具';
|
||
|
||
@override
|
||
String get twoBytesMode1 => '2 字节(模式 1)';
|
||
|
||
@override
|
||
String get twoMinutes => '2 分钟';
|
||
|
||
@override
|
||
String get undo => '撤销';
|
||
|
||
@override
|
||
String get updated => '已更新';
|
||
|
||
@override
|
||
String get useContactFlags => '使用联系人标志';
|
||
|
||
@override
|
||
String get useSavedCoordinates => '使用已保存的坐标';
|
||
|
||
@override
|
||
String get view => '查看';
|
||
|
||
@override
|
||
String get viewNeighbours => '查看邻近节点';
|
||
|
||
@override
|
||
String get viewPublicStats => '查看公开统计';
|
||
|
||
@override
|
||
String get setRegionScope => '设置区域范围';
|
||
|
||
@override
|
||
String get regionScope => '区域范围';
|
||
|
||
@override
|
||
String get regionScopeNone => '无(全局)';
|
||
|
||
@override
|
||
String get clearRegionScope => '清除范围';
|
||
|
||
@override
|
||
String get regionScopeWarning => '只有允许此区域的中继器会转发。';
|
||
|
||
@override
|
||
String get discoverRegions => '从中继器发现';
|
||
|
||
@override
|
||
String get discoveringRegions => '正在发现区域...';
|
||
|
||
@override
|
||
String get enterRegionName => '区域名称(例如 auckland)';
|
||
|
||
@override
|
||
String get noRegionsFound => '此中继器上未找到区域。';
|
||
|
||
@override
|
||
String regionScopeSet(String name) {
|
||
return '区域范围已设置为 $name';
|
||
}
|
||
|
||
@override
|
||
String get regionScopeCleared => '区域范围已清除';
|
||
|
||
@override
|
||
String get selectDestinationFirst => '请先选择频道、联系人或房间';
|
||
|
||
@override
|
||
String get recipientNoLongerAvailable => '收件人已不可用';
|
||
|
||
@override
|
||
String failedToSendMessage(String error) {
|
||
return '发送失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get tictactoeDirectOnly => '井字棋仅适用于私聊消息。请先选择联系人。';
|
||
|
||
@override
|
||
String get deviceKeyUnavailable => '设备密钥不可用';
|
||
|
||
@override
|
||
String get imageCompressionFailed => '图片压缩失败';
|
||
|
||
@override
|
||
String get imageFragmentationFailed => '图片分片失败';
|
||
|
||
@override
|
||
String get failedToAnnounceImage => '图片通告失败';
|
||
|
||
@override
|
||
String get noRecipientSelected => '未选择收件人';
|
||
|
||
@override
|
||
String get imageSendFailed => '图片发送失败';
|
||
|
||
@override
|
||
String get microphonePermissionRequiredForVoice => '语音消息需要麦克风权限';
|
||
|
||
@override
|
||
String get recordingDiscarded => '已丢弃录音';
|
||
|
||
@override
|
||
String publicChannelMediaWarning(String mediaType) {
|
||
return '您即将向公共频道发送$mediaType。不建议这样做,因为 mesh 网络中的所有人都可能收到。除非确有需要,请选择私有或带标签的频道。';
|
||
}
|
||
|
||
@override
|
||
String get selectPrivateChannelToShareLocation => '请选择私有频道来分享您的位置。';
|
||
|
||
@override
|
||
String get stopSharingMyLocation => '停止分享我的位置';
|
||
|
||
@override
|
||
String get shareMyLocation => '分享我的位置';
|
||
|
||
@override
|
||
String get stopRecording => '停止录音';
|
||
|
||
@override
|
||
String get recordVoice => '录制语音';
|
||
|
||
@override
|
||
String get moreActions => '更多操作';
|
||
|
||
@override
|
||
String get noMessagesInFilter => '此筛选条件下没有消息';
|
||
|
||
@override
|
||
String get noMatchesInFilter => '此筛选条件下没有匹配项';
|
||
|
||
@override
|
||
String syncFailed(String error) {
|
||
return '同步失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get invalidLink => '无效链接';
|
||
|
||
@override
|
||
String get cannotOpenLink => '无法打开链接';
|
||
|
||
@override
|
||
String get failedToOpenLink => '打开链接失败';
|
||
|
||
@override
|
||
String get failedToResendMessage => '重新发送消息失败';
|
||
|
||
@override
|
||
String retryFailed(String error) {
|
||
return '重试失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get deleteDrawingAndMessage => '删除绘图和消息';
|
||
|
||
@override
|
||
String get lastEchoRelay => '最后回声:中继';
|
||
|
||
@override
|
||
String get lastEchoPath => '最后回声:路径';
|
||
|
||
@override
|
||
String get lastEchoBytesReport => '最后回声:字节报告';
|
||
|
||
@override
|
||
String get noGpsCoordinatesAvailable => '没有可用的 GPS 坐标';
|
||
|
||
@override
|
||
String get notASarMarker => '不是搜救标记';
|
||
|
||
@override
|
||
String failedToSaveTemplate(String error) {
|
||
return '保存模板失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get drawingNotFound => '未找到绘图';
|
||
|
||
@override
|
||
String get unknownDrawingType => '未知绘图类型';
|
||
|
||
@override
|
||
String get customMapMarker => '自定义地图标记';
|
||
|
||
@override
|
||
String customMapPointLabel(String point) {
|
||
return '坐标点:$point';
|
||
}
|
||
|
||
@override
|
||
String mapIdLabel(String id) {
|
||
return '地图 ID:$id';
|
||
}
|
||
|
||
@override
|
||
String get cannotFetchVoice => '无法获取语音';
|
||
|
||
@override
|
||
String get senderContactUnknown => '发送者联系人未知。请先同步联系人。';
|
||
|
||
@override
|
||
String get senderRouteUnknown => '发送者路由未知。请先同步联系人/路径。';
|
||
|
||
@override
|
||
String messageTooFar(String hops, String maxHops) {
|
||
return '消息距离过远($hops 跳,最多 $maxHops 跳)。';
|
||
}
|
||
|
||
@override
|
||
String get senderRouteNoPathResponse => '发送者路由未响应路径检测。请同步联系人/路径后重试。';
|
||
|
||
@override
|
||
String get senderRouteNoRawResponse => '发送者路由在原始传输路径上未响应。';
|
||
|
||
@override
|
||
String voiceFetchOverHops(String hops) {
|
||
return '通过 $hops 跳获取语音可能需要一些时间。';
|
||
}
|
||
|
||
@override
|
||
String get voiceReceiveCanceled => '已取消接收语音';
|
||
|
||
@override
|
||
String get fetchingMissingVoiceFragments => '正在获取缺失的语音分片';
|
||
|
||
@override
|
||
String get receivingVoice => '正在接收语音';
|
||
|
||
@override
|
||
String get cannotFetchImage => '无法获取图片';
|
||
|
||
@override
|
||
String imageFetchOverHops(String hops) {
|
||
return '通过 $hops 跳获取图片可能需要一些时间。';
|
||
}
|
||
|
||
@override
|
||
String get imageAlreadyBeingReceived => '图片正在接收中';
|
||
|
||
@override
|
||
String get loadImage => '加载图片';
|
||
|
||
@override
|
||
String get imageFetchFailedToSendRequest => '图片获取请求发送失败';
|
||
|
||
@override
|
||
String get imageUnavailable => '图片暂时不可用';
|
||
|
||
@override
|
||
String get imageFetchTimedOut => '图片获取超时';
|
||
|
||
@override
|
||
String get imageReceiveCanceled => '已取消接收图片';
|
||
|
||
@override
|
||
String get closeImagePreview => '关闭图片预览';
|
||
|
||
@override
|
||
String get recordingReleaseToSend => '正在录音……松开发送';
|
||
|
||
@override
|
||
String get sendingVoice => '正在发送语音……';
|
||
|
||
@override
|
||
String get sendLongPressToRecordVoice => '发送(长按录制语音)';
|
||
|
||
@override
|
||
String get discardRecording => '丢弃录音';
|
||
|
||
@override
|
||
String hopCount(num count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count 跳',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String get channelsSectionDescription => '用于附近 mesh 通信的广播频道';
|
||
|
||
@override
|
||
String get roomsSectionDescription => '用于团队持续协调的共享空间';
|
||
|
||
@override
|
||
String get contactsSectionDescription => '可直接联系的人员和设备';
|
||
|
||
@override
|
||
String get noRecentChatters => '最近没有人发言';
|
||
|
||
@override
|
||
String get public => '公共';
|
||
|
||
@override
|
||
String get failedToSendTicTacToeMove => '井字棋走子发送失败';
|
||
|
||
@override
|
||
String get youWon => '您赢了';
|
||
|
||
@override
|
||
String get opponentWon => '对手赢了';
|
||
|
||
@override
|
||
String get gameDraw => '平局';
|
||
|
||
@override
|
||
String get yourTurn => '轮到您';
|
||
|
||
@override
|
||
String get opponentTurn => '轮到对手';
|
||
|
||
@override
|
||
String get pleaseEnterValidCoordinates => '请输入有效坐标';
|
||
|
||
@override
|
||
String get locationNotAvailable => '位置不可用';
|
||
|
||
@override
|
||
String get customCaveMapPoint => '自定义洞穴地图点';
|
||
|
||
@override
|
||
String get mapPoint => '地图点';
|
||
|
||
@override
|
||
String get fetchingMissingImageFragments => '正在获取缺失分片……';
|
||
|
||
@override
|
||
String get loadingImage => '加载中……';
|
||
|
||
@override
|
||
String get receivingImage => '接收中……';
|
||
|
||
@override
|
||
String get tapToLoad => '点按加载';
|
||
|
||
@override
|
||
String get connectDevice => '连接设备';
|
||
|
||
@override
|
||
String get chooseTransportSubtitle => '选择 Bluetooth、WiFi 或串口传输';
|
||
|
||
@override
|
||
String get ble => 'BLE';
|
||
|
||
@override
|
||
String get network => '网络';
|
||
|
||
@override
|
||
String get serial => '串口';
|
||
|
||
@override
|
||
String get scan => '扫描';
|
||
|
||
@override
|
||
String get pressScanToSearchForDevices => '点按扫描以搜索附近设备';
|
||
|
||
@override
|
||
String failedToConnectToDevice(String name) {
|
||
return '连接 $name 失败';
|
||
}
|
||
|
||
@override
|
||
String get unknownDevice => '未知设备';
|
||
|
||
@override
|
||
String get showingCachedResultsTapRefresh => '正在显示缓存结果。点按刷新以重新扫描。';
|
||
|
||
@override
|
||
String scanningLocalNetworkOnPort(int port) {
|
||
return '正在扫描本地网络中端口 $port 上的 MeshCore WiFi 设备';
|
||
}
|
||
|
||
@override
|
||
String get cancelScanAndAddServer => '取消扫描并添加服务器';
|
||
|
||
@override
|
||
String get addServer => '添加服务器';
|
||
|
||
@override
|
||
String scanningProgressIps(int scanned, String total) {
|
||
return '正在扫描……$scanned/$total 个 IP';
|
||
}
|
||
|
||
@override
|
||
String get cancelAndEnterManually => '取消并手动输入';
|
||
|
||
@override
|
||
String get noRecentOrDiscoveredServers => '暂无最近使用或发现的服务器';
|
||
|
||
@override
|
||
String get recentlyUsed => '最近使用';
|
||
|
||
@override
|
||
String get connecting => '正在连接……';
|
||
|
||
@override
|
||
String get discoveredOnThisNetwork => '在此网络中发现';
|
||
|
||
@override
|
||
String serverNoLongerAvailable(String host, int port) {
|
||
return '$host:$port 上的服务器已不可用。请重新扫描以查找活跃的服务器。';
|
||
}
|
||
|
||
@override
|
||
String failedToConnectToHost(String host, int port) {
|
||
return '连接 $host:$port 失败';
|
||
}
|
||
|
||
@override
|
||
String get enterValidIpAddress => '请输入有效的 IP 地址';
|
||
|
||
@override
|
||
String get enterValidTcpPort => '请输入有效的 TCP 端口';
|
||
|
||
@override
|
||
String get ipAddress => 'IP 地址';
|
||
|
||
@override
|
||
String get tcpPort => 'TCP 端口';
|
||
|
||
@override
|
||
String get customServerPort => '自定义服务器端口';
|
||
|
||
@override
|
||
String get chat => '聊天';
|
||
|
||
@override
|
||
String get restoringPreviousLink => '正在恢复先前的连接';
|
||
|
||
@override
|
||
String get noDeviceConnected => '未连接设备';
|
||
|
||
@override
|
||
String get sendAdvert => '发送我的联系人信息';
|
||
|
||
@override
|
||
String get advertMode => '发送我的联系人信息';
|
||
|
||
@override
|
||
String get advertModeSubtitle => '选择您的联系人信息应传播多远。';
|
||
|
||
@override
|
||
String get floodAdvertSent => '联系人信息已发送至整个 mesh 网络';
|
||
|
||
@override
|
||
String get directAdvertSent => '联系人信息已发送至附近设备';
|
||
}
|