mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-11 16:30:28 +00:00
2272 lines
51 KiB
Dart
2272 lines
51 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 scanningForDevices => '正在扫描设备...';
|
||
|
||
@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 advertisedAtLocation(String latitude, String longitude) {
|
||
return '已在 $latitude, $longitude 广播位置';
|
||
}
|
||
|
||
@override
|
||
String failedToAdvertise(String error) {
|
||
return '广播失败: $error';
|
||
}
|
||
|
||
@override
|
||
String reconnecting(int attempt, int max) {
|
||
return '正在重新连接... ($attempt/$max)';
|
||
}
|
||
|
||
@override
|
||
String get cancelReconnection => '取消重新连接';
|
||
|
||
@override
|
||
String get mapManagement => '地图管理';
|
||
|
||
@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 simpleMode => '简洁模式';
|
||
|
||
@override
|
||
String get simpleModeDescription => '在消息和联系人中隐藏非必要信息';
|
||
|
||
@override
|
||
String get disableMap => '禁用地图';
|
||
|
||
@override
|
||
String get disableMapDescription => '隐藏地图标签页以减少电池使用量';
|
||
|
||
@override
|
||
String get language => '语言';
|
||
|
||
@override
|
||
String get chooseLanguage => '选择语言';
|
||
|
||
@override
|
||
String get english => '英语';
|
||
|
||
@override
|
||
String get slovenian => '斯洛文尼亚语';
|
||
|
||
@override
|
||
String get croatian => '克罗地亚语';
|
||
|
||
@override
|
||
String get german => '德语';
|
||
|
||
@override
|
||
String get spanish => '西班牙语';
|
||
|
||
@override
|
||
String get french => '法语';
|
||
|
||
@override
|
||
String get italian => '意大利语';
|
||
|
||
@override
|
||
String get locationBroadcasting => '位置广播';
|
||
|
||
@override
|
||
String get autoLocationTracking => '自动位置跟踪';
|
||
|
||
@override
|
||
String get automaticallyBroadcastPosition => '自动广播位置更新';
|
||
|
||
@override
|
||
String get configureTracking => '配置跟踪';
|
||
|
||
@override
|
||
String get distanceAndTimeThresholds => '距离和时间阈值';
|
||
|
||
@override
|
||
String get locationTrackingConfiguration => '位置跟踪配置';
|
||
|
||
@override
|
||
String get configureWhenLocationBroadcasts => '配置何时向网格网络发送位置广播';
|
||
|
||
@override
|
||
String get minimumDistance => '最小距离';
|
||
|
||
@override
|
||
String broadcastAfterMoving(String distance) {
|
||
return '仅移动 $distance 米后广播';
|
||
}
|
||
|
||
@override
|
||
String get maximumDistance => '最大距离';
|
||
|
||
@override
|
||
String alwaysBroadcastAfterMoving(String distance) {
|
||
return '移动 $distance 米后始终广播';
|
||
}
|
||
|
||
@override
|
||
String get minimumTimeInterval => '最小时间间隔';
|
||
|
||
@override
|
||
String alwaysBroadcastEvery(String duration) {
|
||
return '每 $duration 始终广播一次';
|
||
}
|
||
|
||
@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 网状网络\n• 支持多种图层选项的离线地图\n• 实时团队成员跟踪\n• 搜救战术标记(发现人员、火情、集结点)\n• 联系人管理和消息传递\n• 带指南针方向的 GPS 跟踪\n• 用于离线使用的地图瓦片缓存';
|
||
|
||
@override
|
||
String get technologiesUsed => '使用的技术:';
|
||
|
||
@override
|
||
String get technologiesList =>
|
||
'• 用于跨平台开发的 Flutter\n• 用于网状网络的 BLE(低功耗蓝牙)\n• 用于地图的 OpenStreetMap\n• 用于状态管理的 Provider\n• 用于本地存储的 SharedPreferences';
|
||
|
||
@override
|
||
String get moreInfo => '更多信息';
|
||
|
||
@override
|
||
String get learnMoreAbout => '了解更多关于 MeshCore 搜救的信息';
|
||
|
||
@override
|
||
String get developer => '开发者';
|
||
|
||
@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 sendDirectMessage => '发送';
|
||
|
||
@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 sentDrawingsToRoom(int count, String plural, String roomName) {
|
||
return '已将 $count 个地图绘图发送到 $roomName';
|
||
}
|
||
|
||
@override
|
||
String sharedDrawingsToRoom(
|
||
int success,
|
||
int total,
|
||
String plural,
|
||
String roomName,
|
||
) {
|
||
return '已将 $success/$total 个绘图共享到 $roomName';
|
||
}
|
||
|
||
@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 noLocalDrawings => '没有可共享的本地绘图';
|
||
|
||
@override
|
||
String get publicChannel => '公共频道';
|
||
|
||
@override
|
||
String get broadcastToAll => '广播到所有附近节点(临时)';
|
||
|
||
@override
|
||
String get storedPermanently => '永久存储在房间中';
|
||
|
||
@override
|
||
String drawingsSentToPublicChannel(int count, String plural) {
|
||
return '已将 $count 个地图绘图发送到公共频道';
|
||
}
|
||
|
||
@override
|
||
String drawingsSharedToPublicChannel(int success, int total) {
|
||
return '已将 $success/$total 个绘图共享到公共频道';
|
||
}
|
||
|
||
@override
|
||
String get notConnectedToDevice => '未连接到设备';
|
||
|
||
@override
|
||
String get directMessage => '直连消息';
|
||
|
||
@override
|
||
String directMessageSentTo(String contactName) {
|
||
return '已向 $contactName 发送直连消息';
|
||
}
|
||
|
||
@override
|
||
String failedToSend(String error) {
|
||
return '发送失败:$error';
|
||
}
|
||
|
||
@override
|
||
String directMessageInfo(String contactName) {
|
||
return '此消息将直接发送给 $contactName。它也会出现在主消息列表中。';
|
||
}
|
||
|
||
@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 myLocation => '我的位置';
|
||
|
||
@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该房间可能尚未广播。请等待房间广播。';
|
||
}
|
||
|
||
@override
|
||
String get direct => '直连';
|
||
|
||
@override
|
||
String get flood => '泛洪';
|
||
|
||
@override
|
||
String get admin => '管理员';
|
||
|
||
@override
|
||
String get loggedIn => '已登录';
|
||
|
||
@override
|
||
String get noGpsData => '无 GPS 数据';
|
||
|
||
@override
|
||
String get distance => '距离';
|
||
|
||
@override
|
||
String pingingDirect(String name) {
|
||
return '正在 ping $name (通过路径直连)...';
|
||
}
|
||
|
||
@override
|
||
String pingingFlood(String name) {
|
||
return '正在 ping $name (泛洪 - 无路径)...';
|
||
}
|
||
|
||
@override
|
||
String directPingTimeout(String name) {
|
||
return '直连 ping 超时 - 正在使用泛洪重试 $name...';
|
||
}
|
||
|
||
@override
|
||
String pingSuccessful(String name, String fallback) {
|
||
return '成功 ping 到 $name$fallback';
|
||
}
|
||
|
||
@override
|
||
String get viaFloodingFallback => ' (通过泛洪回退)';
|
||
|
||
@override
|
||
String pingFailed(String name) {
|
||
return 'ping $name 失败 - 未收到响应';
|
||
}
|
||
|
||
@override
|
||
String deleteContactConfirmation(String name) {
|
||
return '确定要删除“$name”吗?\n\n这将从应用和配套的无线电设备中移除该联系人。';
|
||
}
|
||
|
||
@override
|
||
String removingContact(String name) {
|
||
return '正在移除 $name...';
|
||
}
|
||
|
||
@override
|
||
String contactRemoved(String name) {
|
||
return '联系人“$name”已移除';
|
||
}
|
||
|
||
@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 requestingTelemetry(String name) {
|
||
return '正在向 $name 请求遥测数据...';
|
||
}
|
||
|
||
@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 nearbyContacts => '附近联系人';
|
||
|
||
@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 cacheStatistics => '缓存统计';
|
||
|
||
@override
|
||
String get totalTiles => '瓦片总数';
|
||
|
||
@override
|
||
String get cacheSize => '缓存大小';
|
||
|
||
@override
|
||
String get storeName => '存储名称';
|
||
|
||
@override
|
||
String get noCacheStatistics => '无可用缓存统计';
|
||
|
||
@override
|
||
String get downloadRegion => '下载区域';
|
||
|
||
@override
|
||
String get mapLayer => '地图图层';
|
||
|
||
@override
|
||
String get regionBounds => '区域边界';
|
||
|
||
@override
|
||
String get north => '北';
|
||
|
||
@override
|
||
String get south => '南';
|
||
|
||
@override
|
||
String get east => '东';
|
||
|
||
@override
|
||
String get west => '西';
|
||
|
||
@override
|
||
String get zoomLevels => '缩放级别';
|
||
|
||
@override
|
||
String minZoom(int zoom) {
|
||
return '最小:$zoom';
|
||
}
|
||
|
||
@override
|
||
String maxZoom(int zoom) {
|
||
return '最大:$zoom';
|
||
}
|
||
|
||
@override
|
||
String get downloadingDots => '正在下载...';
|
||
|
||
@override
|
||
String get cancelDownload => '取消下载';
|
||
|
||
@override
|
||
String get downloadRegionButton => '下载区域';
|
||
|
||
@override
|
||
String get downloadNote => '注意:大区域或高缩放级别可能需要大量时间和存储空间。';
|
||
|
||
@override
|
||
String get cacheManagement => '缓存管理';
|
||
|
||
@override
|
||
String get clearAllMaps => '清除所有地图';
|
||
|
||
@override
|
||
String get clearMapsConfirmTitle => '清除所有地图';
|
||
|
||
@override
|
||
String get clearMapsConfirmMessage => '确定要删除所有已下载的地图吗?此操作无法撤销。';
|
||
|
||
@override
|
||
String get mapDownloadCompleted => '地图下载完成!';
|
||
|
||
@override
|
||
String get cacheClearedSuccessfully => '缓存清除成功!';
|
||
|
||
@override
|
||
String get downloadCancelled => '下载已取消';
|
||
|
||
@override
|
||
String get startingDownload => '正在开始下载...';
|
||
|
||
@override
|
||
String get downloadingMapTiles => '正在下载地图瓦片...';
|
||
|
||
@override
|
||
String get downloadCompletedSuccessfully => '下载成功完成!';
|
||
|
||
@override
|
||
String get cancellingDownload => '正在取消下载...';
|
||
|
||
@override
|
||
String errorLoadingStats(String error) {
|
||
return '加载统计信息时出错:$error';
|
||
}
|
||
|
||
@override
|
||
String downloadFailed(String error) {
|
||
return '下载失败:$error';
|
||
}
|
||
|
||
@override
|
||
String cancelFailed(String error) {
|
||
return '取消失败:$error';
|
||
}
|
||
|
||
@override
|
||
String clearCacheFailed(String error) {
|
||
return '清除缓存失败:$error';
|
||
}
|
||
|
||
@override
|
||
String minZoomError(String error) {
|
||
return '最小缩放:$error';
|
||
}
|
||
|
||
@override
|
||
String maxZoomError(String error) {
|
||
return '最大缩放:$error';
|
||
}
|
||
|
||
@override
|
||
String get minZoomGreaterThanMax => '最小缩放必须小于或等于最大缩放';
|
||
|
||
@override
|
||
String get selectMapLayer => '选择地图图层';
|
||
|
||
@override
|
||
String get mapOptions => '地图选项';
|
||
|
||
@override
|
||
String get showLegend => '显示图例';
|
||
|
||
@override
|
||
String get displayMarkerTypeCounts => '显示标记类型计数';
|
||
|
||
@override
|
||
String get rotateMapWithHeading => '随航向旋转地图';
|
||
|
||
@override
|
||
String get mapFollowsDirection => '移动时地图跟随您的方向';
|
||
|
||
@override
|
||
String get resetMapRotation => '重置旋转';
|
||
|
||
@override
|
||
String get resetMapRotationTooltip => '将地图重置为北向上';
|
||
|
||
@override
|
||
String get showMapDebugInfo => '显示地图调试信息';
|
||
|
||
@override
|
||
String get displayZoomLevelBounds => '显示缩放级别和边界';
|
||
|
||
@override
|
||
String get fullscreenMode => '全屏模式';
|
||
|
||
@override
|
||
String get hideUiFullMapView => '隐藏所有 UI 控件以获得完整地图视图';
|
||
|
||
@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 downloadVisibleArea => '下载可见区域';
|
||
|
||
@override
|
||
String get initializingMap => '正在初始化地图...';
|
||
|
||
@override
|
||
String get dragToPosition => '拖动以定位';
|
||
|
||
@override
|
||
String get createSarMarker => '创建搜救标记';
|
||
|
||
@override
|
||
String get compass => '指南针';
|
||
|
||
@override
|
||
String get navigationAndContacts => '导航与联系人';
|
||
|
||
@override
|
||
String get sarAlert => '搜救警报';
|
||
|
||
@override
|
||
String get messageSentToPublicChannel => '消息已发送到公共频道';
|
||
|
||
@override
|
||
String get pleaseSelectRoomToSendSar => '请选择一个房间以发送搜救标记';
|
||
|
||
@override
|
||
String failedToSendSarMarker(String error) {
|
||
return '发送搜救标记失败:$error';
|
||
}
|
||
|
||
@override
|
||
String sarMarkerSentTo(String roomName) {
|
||
return '搜救标记已发送到 $roomName';
|
||
}
|
||
|
||
@override
|
||
String get notConnectedCannotSync => '未连接 - 无法同步消息';
|
||
|
||
@override
|
||
String syncedMessageCount(int count) {
|
||
return '已同步 $count 条消息';
|
||
}
|
||
|
||
@override
|
||
String get noNewMessages => '没有新消息';
|
||
|
||
@override
|
||
String syncFailed(String error) {
|
||
return '同步失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get failedToResendMessage => '重新发送消息失败';
|
||
|
||
@override
|
||
String get retryingMessage => '正在重试消息...';
|
||
|
||
@override
|
||
String retryFailed(String error) {
|
||
return '重试失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get textCopiedToClipboard => '文本已复制到剪贴板';
|
||
|
||
@override
|
||
String get cannotReplySenderMissing => '无法回复:缺少发件人信息';
|
||
|
||
@override
|
||
String get cannotReplyContactNotFound => '无法回复:找不到联系人';
|
||
|
||
@override
|
||
String get messageDeleted => '消息已删除';
|
||
|
||
@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 locationShared => '位置已共享';
|
||
|
||
@override
|
||
String get refreshedContacts => '联系人已刷新';
|
||
|
||
@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}ms)';
|
||
}
|
||
|
||
@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 get offlineVectorMaps => '离线矢量地图';
|
||
|
||
@override
|
||
String get offlineVectorMapsDescription =>
|
||
'导入和管理离线矢量地图瓦片(MBTiles 格式),以便在没有互联网连接时使用';
|
||
|
||
@override
|
||
String get importMbtiles => '导入 MBTiles 文件';
|
||
|
||
@override
|
||
String get importMbtilesNote =>
|
||
'支持带有矢量瓦片(PBF/MVT 格式)的 MBTiles 文件。Geofabrik 提取文件效果很好!';
|
||
|
||
@override
|
||
String get noMbtilesFiles => '未找到离线矢量地图';
|
||
|
||
@override
|
||
String get mbtilesImportedSuccessfully => 'MBTiles 文件导入成功';
|
||
|
||
@override
|
||
String get failedToImportMbtiles => '导入 MBTiles 文件失败';
|
||
|
||
@override
|
||
String get deleteMbtilesConfirmTitle => '删除离线地图';
|
||
|
||
@override
|
||
String deleteMbtilesConfirmMessage(String name) {
|
||
return '确定要删除“$name”吗?这将永久移除该离线地图。';
|
||
}
|
||
|
||
@override
|
||
String get mbtilesDeletedSuccessfully => '离线地图删除成功';
|
||
|
||
@override
|
||
String get failedToDeleteMbtiles => '删除离线地图失败';
|
||
|
||
@override
|
||
String get importExportCachedTiles => '导入/导出缓存的瓦片';
|
||
|
||
@override
|
||
String get importExportDescription => '在设备之间备份、共享和恢复已下载的地图瓦片';
|
||
|
||
@override
|
||
String get exportTilesToFile => '导出瓦片到文件';
|
||
|
||
@override
|
||
String get importTilesFromFile => '从文件导入瓦片';
|
||
|
||
@override
|
||
String get selectExportLocation => '选择导出位置';
|
||
|
||
@override
|
||
String get selectImportFile => '选择瓦片存档';
|
||
|
||
@override
|
||
String get exportingTiles => '正在导出瓦片...';
|
||
|
||
@override
|
||
String get importingTiles => '正在导入瓦片...';
|
||
|
||
@override
|
||
String exportSuccess(int count) {
|
||
return '成功导出 $count 个瓦片';
|
||
}
|
||
|
||
@override
|
||
String importSuccess(int count) {
|
||
return '成功导入 $count 个存储';
|
||
}
|
||
|
||
@override
|
||
String exportFailed(String error) {
|
||
return '导出失败:$error';
|
||
}
|
||
|
||
@override
|
||
String importFailed(String error) {
|
||
return '导入失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get exportNote => '创建一个压缩存档 (.fmtc) 文件,可以共享并在其他设备上导入。';
|
||
|
||
@override
|
||
String get importNote => '从先前导出的存档文件导入地图瓦片。瓦片将与现有缓存合并。';
|
||
|
||
@override
|
||
String get noTilesToExport => '没有可导出的瓦片';
|
||
|
||
@override
|
||
String archiveContainsStores(int count) {
|
||
return '存档包含 $count 个存储';
|
||
}
|
||
|
||
@override
|
||
String get vectorTiles => '矢量瓦片';
|
||
|
||
@override
|
||
String get schema => '模式';
|
||
|
||
@override
|
||
String get unknown => '未知';
|
||
|
||
@override
|
||
String get bounds => '边界';
|
||
|
||
@override
|
||
String get onlineLayers => '在线图层';
|
||
|
||
@override
|
||
String get offlineLayers => '离线图层';
|
||
|
||
@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 exportTrailToGpx => '将轨迹导出为 GPX';
|
||
|
||
@override
|
||
String get importTrailFromGpx => '从 GPX 导入轨迹';
|
||
|
||
@override
|
||
String get trailExportedSuccessfully => '轨迹导出成功!';
|
||
|
||
@override
|
||
String get failedToExportTrail => '导出轨迹失败';
|
||
|
||
@override
|
||
String failedToImportTrail(String error) {
|
||
return '导入轨迹失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get importTrail => '导入轨迹';
|
||
|
||
@override
|
||
String importTrailQuestion(int pointCount) {
|
||
return '导入包含 $pointCount 个点的轨迹?\n\n您可以替换当前轨迹或将其与当前轨迹并排查看。';
|
||
}
|
||
|
||
@override
|
||
String get viewAlongside => '并排查看';
|
||
|
||
@override
|
||
String get replaceCurrent => '替换当前';
|
||
|
||
@override
|
||
String trailImported(int pointCount) {
|
||
return '轨迹已导入!($pointCount 个点)';
|
||
}
|
||
|
||
@override
|
||
String trailReplaced(int pointCount) {
|
||
return '轨迹已替换!($pointCount 个点)';
|
||
}
|
||
|
||
@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 => '网格名称';
|
||
|
||
@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 => '网格网络名称';
|
||
|
||
@override
|
||
String get nameBroadcastInMesh => '在网格广播中通告的名称';
|
||
|
||
@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) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '已导入 $count 个模板',
|
||
one: '已导入 1 个模板',
|
||
zero: '没有导入模板',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String templatesExported(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '已导出 $count 个模板到剪贴板',
|
||
one: '已导出 1 个模板到剪贴板',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@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 noContactsOrRoomsAvailable => '没有可用的联系人或房间';
|
||
|
||
@override
|
||
String get noRecipientsAvailable => '没有可用的收件人';
|
||
|
||
@override
|
||
String get noChannelsFound => '未找到频道';
|
||
|
||
@override
|
||
String get messagesWillBeSentToPublicChannel => '消息将被发送到公共频道';
|
||
|
||
@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 => '队伍正在向第二区移动';
|
||
|
||
@override
|
||
String get sampleMsgRadioCheck => '无线电检查 - 所有电台回应';
|
||
|
||
@override
|
||
String get sampleMsgWaterSupply => '3 号检查点有水源';
|
||
|
||
@override
|
||
String get sampleMsgTeamBravo => '队伍报告:第一区已搜索完毕';
|
||
|
||
@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 => '紧急:第四区需要医疗援助';
|
||
|
||
@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 coordinatesCopiedToClipboard => '坐标已复制到剪贴板';
|
||
|
||
@override
|
||
String get manualCoordinates => '手动输入坐标';
|
||
|
||
@override
|
||
String get enterCoordinatesManually => '手动输入坐标';
|
||
|
||
@override
|
||
String get latitudeLabel => '纬度';
|
||
|
||
@override
|
||
String get longitudeLabel => '经度';
|
||
|
||
@override
|
||
String get invalidLatitude => '无效的纬度(-90 到 90)';
|
||
|
||
@override
|
||
String get invalidLongitude => '无效的经度(-180 到 180)';
|
||
|
||
@override
|
||
String get exampleCoordinates => '例如:46.0569, 14.5058';
|
||
|
||
@override
|
||
String get drawingShared => '地图绘图';
|
||
|
||
@override
|
||
String get drawingHidden => '绘图已从地图上隐藏';
|
||
|
||
@override
|
||
String alreadyShared(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count 个已共享',
|
||
one: '1 个已共享',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String newDrawingsShared(int count, String plural) {
|
||
return '已共享 $count 个新绘图';
|
||
}
|
||
|
||
@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 showCadastralParcels => '显示地籍宗地';
|
||
|
||
@override
|
||
String get showForestRoads => '显示森林道路';
|
||
|
||
@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 allChannelSlotsInUse => '所有频道槽位已满(最多 39 个自定义频道)';
|
||
|
||
@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 =>
|
||
'一个强大的离网通信工具,专为搜索和救援行动设计。当传统网络不可用时,使用网状无线电技术与您的团队连接。';
|
||
|
||
@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 wizardSimpleModeTitle => '简洁模式';
|
||
|
||
@override
|
||
String get wizardSimpleModeDescription => '刚接触网状网络?启用简洁模式以获得仅包含基本功能的简化界面。';
|
||
|
||
@override
|
||
String get wizardSimpleModeFeature1 => '初学者友好的界面,包含核心功能';
|
||
|
||
@override
|
||
String get wizardSimpleModeFeature2 => '随时在设置中切换到高级模式';
|
||
|
||
@override
|
||
String get wizardChannelTitle => '频道';
|
||
|
||
@override
|
||
String get wizardChannelDescription => '向频道上的所有人广播消息,非常适合团队范围内的公告和协调。';
|
||
|
||
@override
|
||
String get wizardChannelFeature1 => '用于一般团队沟通的公共频道';
|
||
|
||
@override
|
||
String get wizardChannelFeature2 => '为特定群组创建自定义频道';
|
||
|
||
@override
|
||
String get wizardChannelFeature3 => '消息由网格自动转发';
|
||
|
||
@override
|
||
String get wizardContactsTitle => '联系人';
|
||
|
||
@override
|
||
String get wizardContactsDescription =>
|
||
'您的团队成员在加入网格网络时会自动出现。向他们发送直连消息或查看他们的位置。';
|
||
|
||
@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 => '预期确认标签';
|
||
|
||
@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 => '正在请求语音';
|
||
}
|