mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-11 16:30:28 +00:00
2262 lines
51 KiB
Dart
2262 lines
51 KiB
Dart
// ignore: unused_import
|
||
import 'package:intl/intl.dart' as intl;
|
||
import 'app_localizations.dart';
|
||
|
||
// ignore_for_file: type=lint
|
||
|
||
/// 简体中文翻译 (`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 => '启动后台跟踪失败。请检查权限和蓝牙连接。';
|
||
|
||
@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 个绘图$plural';
|
||
}
|
||
|
||
@override
|
||
String removeAllDrawings(int count, String plural) {
|
||
return '移除所有 $count 个绘图$plural';
|
||
}
|
||
|
||
@override
|
||
String deleteAllDrawingsConfirm(int count, String plural) {
|
||
return '从地图上删除所有 $count 个绘图$plural?';
|
||
}
|
||
|
||
@override
|
||
String get drawing => '绘图';
|
||
|
||
@override
|
||
String shareDrawingsCount(int count, String plural) {
|
||
return '分享 $count 个绘图$plural';
|
||
}
|
||
|
||
@override
|
||
String sentDrawingsToRoom(int count, String plural, String roomName) {
|
||
return '已将 $count 个地图绘图$plural 发送到 $roomName';
|
||
}
|
||
|
||
@override
|
||
String sharedDrawingsToRoom(
|
||
int success,
|
||
int total,
|
||
String plural,
|
||
String roomName,
|
||
) {
|
||
return '已将 $success/$total 个绘图$plural 分享到 $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 个地图绘图$plural 发送到公共频道';
|
||
}
|
||
|
||
@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该房间可能尚未广播。\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}毫秒)';
|
||
}
|
||
|
||
@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 => '蓝牙名称';
|
||
|
||
@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 => 'A队正在向2号区域移动';
|
||
|
||
@override
|
||
String get sampleMsgRadioCheck => '无线电检查 - 所有电台回应';
|
||
|
||
@override
|
||
String get sampleMsgWaterSupply => '3号检查点有水源';
|
||
|
||
@override
|
||
String get sampleMsgTeamBravo => 'B队报告:1号区域已搜索完毕';
|
||
|
||
@override
|
||
String get sampleMsgEtaRallyPoint => '预计到达集合点时间:15分钟';
|
||
|
||
@override
|
||
String get sampleMsgSupplyDrop => '物资空投已确认于14:00进行';
|
||
|
||
@override
|
||
String get sampleMsgDroneSurvey => '无人机勘察完成 - 无发现';
|
||
|
||
@override
|
||
String get sampleMsgTeamCharlie => 'C队请求支援';
|
||
|
||
@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 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 个新绘图$plural';
|
||
}
|
||
|
||
@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 => 'Kras 火灾区域';
|
||
|
||
@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 => '哈希频道(#team):密钥根据名称自动生成。相同的名称 = 跨设备相同的频道。\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 => '正在请求语音';
|
||
} |