meshcore-open/lib/l10n/app_localizations_zh.dart
Ryan Malloy daca42701c
Notification rate limiting (#110)
* Add notification rate limiting with privacy-safe debug logging

- Add batching system to prevent notification storms (3s rate limit, 5s batch window)
- Queue rapid notifications and show batch summaries
- Debug logs show device names for adverts, sender/channel for messages (no content leaks)
- Remove unused _maxBatchSize constant

Context: Added after getting notification-flooded while evaluating RF flood management. The irony.

* Update notification_service.dart

I made a mistake and removed this

* Add l10n support for notification strings

Addresses PR #110 review feedback to use the translations system:
- Add notification strings to app_en.arb (plurals for batch summary)
- Update NotificationService to use lookupAppLocalizations()
- Wire locale from MaterialApp to NotificationService
- Regenerate localization files

New strings added (English only, translations needed):
- notification_activityTitle: "MeshCore Activity"
- notification_messagesCount: "{count} message(s)"
- notification_channelMessagesCount: "{count} channel message(s)"
- notification_newNodesCount: "{count} new node(s)"
- notification_newTypeDiscovered: "New {type} discovered"
- notification_receivedNewMessage: "Received new message"

* Add notification string translations for all supported languages

Translated notification_activityTitle, notification_messagesCount,
notification_channelMessagesCount, notification_newNodesCount,
notification_newTypeDiscovered, and notification_receivedNewMessage
to: bg, de, es, fr, it, nl, pl, pt, ru, sk, sl, sv, uk, zh

Includes proper ICU plural forms for Slavic languages (few/many/other)
and Slovenian dual form.

* Apply dart format to notification_service.dart

---------

Co-authored-by: Winston Lowe <wel97459@gmail.com>
2026-02-08 18:42:15 -08:00

2698 lines
68 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Chinese (`zh`).
class AppLocalizationsZh extends AppLocalizations {
AppLocalizationsZh([String locale = 'zh']) : super(locale);
@override
String get appTitle => 'MeshCore Open';
@override
String get nav_contacts => '联系方式';
@override
String get nav_channels => '频道';
@override
String get nav_map => '地图';
@override
String get common_cancel => '取消';
@override
String get common_ok => '好的';
@override
String get common_connect => '连接';
@override
String get common_unknownDevice => '未知设备';
@override
String get common_save => '保存';
@override
String get common_delete => '删除';
@override
String get common_close => '关闭';
@override
String get common_edit => '编辑';
@override
String get common_add => '添加';
@override
String get common_settings => '设置';
@override
String get common_disconnect => '断开';
@override
String get common_connected => '连接';
@override
String get common_disconnected => '断开';
@override
String get common_create => '创造';
@override
String get common_continue => '继续';
@override
String get common_share => '分享';
@override
String get common_copy => '复制';
@override
String get common_retry => '重试';
@override
String get common_hide => '隐藏';
@override
String get common_remove => '移除';
@override
String get common_enable => '启用';
@override
String get common_disable => '禁用';
@override
String get common_reboot => '重新启动';
@override
String get common_loading => '正在加载...';
@override
String get common_notAvailable => '';
@override
String common_voltageValue(String volts) {
return '$volts V';
}
@override
String common_percentValue(int percent) {
return '$percent%';
}
@override
String get scanner_title => 'MeshCore 开放';
@override
String get scanner_scanning => '正在搜索设备...';
@override
String get scanner_connecting => '正在连接...';
@override
String get scanner_disconnecting => '断开连接...';
@override
String get scanner_notConnected => '未连接';
@override
String scanner_connectedTo(String deviceName) {
return '已连接到 $deviceName';
}
@override
String get scanner_searchingDevices => '正在搜索 MeshCore 设备...';
@override
String get scanner_tapToScan => '点击“扫描”功能,以查找 MeshCore 设备。';
@override
String scanner_connectionFailed(String error) {
return 'Connection failed: $error';
}
@override
String get scanner_stop => '停止';
@override
String get scanner_scan => '扫描';
@override
String get device_quickSwitch => '快速切换';
@override
String get device_meshcore => '网格核心';
@override
String get settings_title => '设置';
@override
String get settings_deviceInfo => '设备信息';
@override
String get settings_appSettings => '应用设置';
@override
String get settings_appSettingsSubtitle => '通知、消息和地图偏好';
@override
String get settings_nodeSettings => '节点设置';
@override
String get settings_nodeName => '节点名称';
@override
String get settings_nodeNameNotSet => '未设置';
@override
String get settings_nodeNameHint => '请输入节点名称';
@override
String get settings_nodeNameUpdated => '姓名已更新';
@override
String get settings_radioSettings => '收音机设置';
@override
String get settings_radioSettingsSubtitle => '频率、功率、扩频因子';
@override
String get settings_radioSettingsUpdated => '收音机设置已更新';
@override
String get settings_location => '地点';
@override
String get settings_locationSubtitle => 'GPS 坐标';
@override
String get settings_locationUpdated => '位置和 GPS 设置已更新';
@override
String get settings_locationBothRequired => '请输入经度和纬度。';
@override
String get settings_locationInvalid => '无效的经度和纬度。';
@override
String get settings_locationGPSEnable => '开启 GPS 功能';
@override
String get settings_locationGPSEnableSubtitle => '使 GPS 能够自动更新位置。';
@override
String get settings_locationIntervalSec => 'GPS 间隔时间(秒)';
@override
String get settings_locationIntervalInvalid => '间隔时间必须至少为 60 秒,但不超过 86400 秒。';
@override
String get settings_latitude => '纬度';
@override
String get settings_longitude => '经度';
@override
String get settings_privacyMode => '隐私模式';
@override
String get settings_privacyModeSubtitle => '在广告中隐藏姓名/位置';
@override
String get settings_privacyModeToggle => '切换隐私模式,以隐藏您的姓名和位置,从而在广告中保护您的个人信息。';
@override
String get settings_privacyModeEnabled => '隐私模式已启用';
@override
String get settings_privacyModeDisabled => '隐私模式已关闭';
@override
String get settings_actions => '行动';
@override
String get settings_sendAdvertisement => '发布广告';
@override
String get settings_sendAdvertisementSubtitle => '现已开始进行广播节目';
@override
String get settings_advertisementSent => '已发送广告';
@override
String get settings_syncTime => '同步时间';
@override
String get settings_syncTimeSubtitle => '将设备时钟设置为与手机时间一致';
@override
String get settings_timeSynchronized => '时间同步';
@override
String get settings_refreshContacts => '刷新联系人';
@override
String get settings_refreshContactsSubtitle => '从设备中重新加载联系人列表';
@override
String get settings_rebootDevice => '重启设备';
@override
String get settings_rebootDeviceSubtitle => '重新启动 MeshCore 设备';
@override
String get settings_rebootDeviceConfirm => '您确定要重启设备吗?这将导致您与设备断开连接。';
@override
String get settings_debug => '调试';
@override
String get settings_bleDebugLog => 'BLE 调试日志';
@override
String get settings_bleDebugLogSubtitle => 'BLE 命令、响应和原始数据';
@override
String get settings_appDebugLog => '应用程序调试日志';
@override
String get settings_appDebugLogSubtitle => '应用程序调试消息';
@override
String get settings_about => '关于';
@override
String settings_aboutVersion(String version) {
return 'MeshCore Open v$version';
}
@override
String get settings_aboutLegalese => '2026 MeshCore 开源项目';
@override
String get settings_aboutDescription =>
'一个开源的 Flutter 客户端,用于 MeshCore LoRa 无线网络设备。';
@override
String get settings_infoName => '姓名';
@override
String get settings_infoId => 'ID';
@override
String get settings_infoStatus => '状态';
@override
String get settings_infoBattery => '电池';
@override
String get settings_infoPublicKey => '公钥';
@override
String get settings_infoContactsCount => '联系人数量';
@override
String get settings_infoChannelCount => '通道数量';
@override
String get settings_presets => '预设';
@override
String get settings_preset915Mhz => '915 兆赫';
@override
String get settings_preset868Mhz => '868 兆赫';
@override
String get settings_preset433Mhz => '433 兆赫';
@override
String get settings_frequency => '频率 (MHz)';
@override
String get settings_frequencyHelper => '300.0 - 2500.0';
@override
String get settings_frequencyInvalid => '无效频率300-2500 MHz';
@override
String get settings_bandwidth => '带宽';
@override
String get settings_spreadingFactor => '传播系数';
@override
String get settings_codingRate => '编码速率';
@override
String get settings_txPower => 'TX 功率dBm';
@override
String get settings_txPowerHelper => '0 - 22';
@override
String get settings_txPowerInvalid => '无效的发射功率0-22 dBm';
@override
String get settings_longRange => '远距离';
@override
String get settings_fastSpeed => '高速';
@override
String settings_error(String message) {
return '[保存:$message]\n错误:$message';
}
@override
String get appSettings_title => '应用设置';
@override
String get appSettings_appearance => '外观';
@override
String get appSettings_theme => '主题';
@override
String get appSettings_themeSystem => '系统默认设置';
@override
String get appSettings_themeLight => '';
@override
String get appSettings_themeDark => '黑暗';
@override
String get appSettings_language => '语言';
@override
String get appSettings_languageSystem => '系统默认设置';
@override
String get appSettings_languageEn => '英语';
@override
String get appSettings_languageFr => '法语';
@override
String get appSettings_languageEs => '西班牙语';
@override
String get appSettings_languageDe => '德语';
@override
String get appSettings_languagePl => '波兰语';
@override
String get appSettings_languageSl => '斯洛文语';
@override
String get appSettings_languagePt => '葡萄牙语';
@override
String get appSettings_languageIt => '意大利语';
@override
String get appSettings_languageZh => '中文';
@override
String get appSettings_languageSv => '瑞典语';
@override
String get appSettings_languageNl => '荷兰语';
@override
String get appSettings_languageSk => '斯洛伐克语';
@override
String get appSettings_languageBg => '保加利亚';
@override
String get appSettings_languageRu => '俄语';
@override
String get appSettings_languageUk => '乌克兰';
@override
String get appSettings_notifications => '通知';
@override
String get appSettings_enableNotifications => '启用通知';
@override
String get appSettings_enableNotificationsSubtitle => '接收消息和广告的通知';
@override
String get appSettings_notificationPermissionDenied => '权限被拒绝';
@override
String get appSettings_notificationsEnabled => '通知已启用';
@override
String get appSettings_notificationsDisabled => '通知已关闭';
@override
String get appSettings_messageNotifications => '消息通知';
@override
String get appSettings_messageNotificationsSubtitle => '在收到新消息时显示通知';
@override
String get appSettings_channelMessageNotifications => '频道消息通知';
@override
String get appSettings_channelMessageNotificationsSubtitle =>
'在收到频道消息时,显示通知。';
@override
String get appSettings_advertisementNotifications => '广告通知';
@override
String get appSettings_advertisementNotificationsSubtitle => '在发现新的节点时,显示通知。';
@override
String get appSettings_messaging => '信息传递';
@override
String get appSettings_clearPathOnMaxRetry => '关于“最大重试”的清晰说明';
@override
String get appSettings_clearPathOnMaxRetrySubtitle => '在尝试发送失败后 5 次,重置联系路径。';
@override
String get appSettings_pathsWillBeCleared => '如果尝试 5 次后仍然失败,则将重新规划路径。';
@override
String get appSettings_pathsWillNotBeCleared => '路径不会自动清除。';
@override
String get appSettings_autoRouteRotation => '自动路径轮换';
@override
String get appSettings_autoRouteRotationSubtitle => '在最佳路径和防洪模式之间切换';
@override
String get appSettings_autoRouteRotationEnabled => '自动路径轮换已启用';
@override
String get appSettings_autoRouteRotationDisabled => '自动路径轮换已禁用';
@override
String get appSettings_battery => '电池';
@override
String get appSettings_batteryChemistry => '电池化学';
@override
String appSettings_batteryChemistryPerDevice(String deviceName) {
return '为每个设备设置 ($deviceName)';
}
@override
String get appSettings_batteryChemistryConnectFirst => '连接到设备以进行选择';
@override
String get appSettings_batteryNmc => '18650 型号NMC 电池3.0-4.2V';
@override
String get appSettings_batteryLifepo4 => '磷酸铁锂 (2.6-3.65V)';
@override
String get appSettings_batteryLipo => '锂离子电池 (3.0-4.2V)';
@override
String get appSettings_mapDisplay => '地图展示';
@override
String get appSettings_showRepeaters => '显示重复';
@override
String get appSettings_showRepeatersSubtitle => '在地图上显示重复节点';
@override
String get appSettings_showChatNodes => '显示聊天节点';
@override
String get appSettings_showChatNodesSubtitle => '在地图上显示聊天节点';
@override
String get appSettings_showOtherNodes => '显示其他节点';
@override
String get appSettings_showOtherNodesSubtitle => '在地图上显示其他节点类型';
@override
String get appSettings_timeFilter => '时间过滤器';
@override
String get appSettings_timeFilterShowAll => '显示所有节点';
@override
String appSettings_timeFilterShowLast(int hours) {
return 'Show nodes from last $hours hours';
}
@override
String get appSettings_mapTimeFilter => '地图时间筛选';
@override
String get appSettings_showNodesDiscoveredWithin => '显示在以下范围内发现的节点:';
@override
String get appSettings_allTime => '所有时间';
@override
String get appSettings_lastHour => '过去一小时';
@override
String get appSettings_last6Hours => '过去6小时';
@override
String get appSettings_last24Hours => '过去24小时';
@override
String get appSettings_lastWeek => '上周';
@override
String get appSettings_offlineMapCache => '离线地图缓存';
@override
String get appSettings_noAreaSelected => '未选择任何区域';
@override
String appSettings_areaSelectedZoom(int minZoom, int maxZoom) {
return '已选择区域(缩放至 $minZoom - $maxZoom';
}
@override
String get appSettings_debugCard => '调试';
@override
String get appSettings_appDebugLogging => '应用程序调试日志';
@override
String get appSettings_appDebugLoggingSubtitle => '用于故障排除的日志应用程序调试消息';
@override
String get appSettings_appDebugLoggingEnabled => '调试日志已启用';
@override
String get appSettings_appDebugLoggingDisabled => '应用程序调试日志已禁用';
@override
String get contacts_title => '联系方式';
@override
String get contacts_noContacts => '目前还没有联系人';
@override
String get contacts_contactsWillAppear => '当设备发布广告时,联系方式会显示。';
@override
String get contacts_searchContacts => '搜索联系人...';
@override
String get contacts_noUnreadContacts => '没有未读通讯';
@override
String get contacts_noContactsFound => '未找到任何联系人或群组';
@override
String get contacts_deleteContact => '删除联系人';
@override
String contacts_removeConfirm(String contactName) {
return 'Remove $contactName from contacts?';
}
@override
String get contacts_manageRepeater => '管理重复器';
@override
String get contacts_manageRoom => '管理房间服务器';
@override
String get contacts_roomLogin => '服务器登录';
@override
String get contacts_openChat => '开放聊天';
@override
String get contacts_editGroup => '编辑小组';
@override
String get contacts_deleteGroup => '删除群组';
@override
String contacts_deleteGroupConfirm(String groupName) {
return '删除\"$groupName\"';
}
@override
String get contacts_newGroup => '新的团体';
@override
String get contacts_groupName => '团体名称';
@override
String get contacts_groupNameRequired => '需要提供组名称';
@override
String contacts_groupAlreadyExists(String name) {
return '名为\"$name\"的组已经存在';
}
@override
String get contacts_filterContacts => '筛选联系人...';
@override
String get contacts_noContactsMatchFilter => '未找到符合您筛选条件的联系人';
@override
String get contacts_noMembers => '没有会员';
@override
String get contacts_lastSeenNow => '最后一次被看到的时间';
@override
String contacts_lastSeenMinsAgo(int minutes) {
return 'Last seen $minutes mins ago';
}
@override
String get contacts_lastSeenHourAgo => '最后一次被看到的时间1小时前';
@override
String contacts_lastSeenHoursAgo(int hours) {
return 'Last seen $hours hours ago';
}
@override
String get contacts_lastSeenDayAgo => '最后一次被看到的时间是1天前';
@override
String contacts_lastSeenDaysAgo(int days) {
return 'Last seen $days days ago';
}
@override
String get channels_title => '频道';
@override
String get channels_noChannelsConfigured => '未配置任何频道';
@override
String get channels_addPublicChannel => '添加公共频道';
@override
String get channels_searchChannels => '搜索频道...';
@override
String get channels_noChannelsFound => '未找到任何频道';
@override
String channels_channelIndex(int index) {
return '频道 $index';
}
@override
String get channels_hashtagChannel => '话题标签频道';
@override
String get channels_public => '公众';
@override
String get channels_private => '私人';
@override
String get channels_publicChannel => '公共频道';
@override
String get channels_privateChannel => '私密频道';
@override
String get channels_editChannel => '编辑频道';
@override
String get channels_deleteChannel => '删除频道';
@override
String channels_deleteChannelConfirm(String name) {
return 'Delete \"$name\"? This cannot be undone.';
}
@override
String channels_channelDeleted(String name) {
return '删除频道 \"$name\"';
}
@override
String get channels_addChannel => '添加频道';
@override
String get channels_channelIndexLabel => '频道索引';
@override
String get channels_channelName => '频道名称';
@override
String get channels_usePublicChannel => '使用公共频道';
@override
String get channels_standardPublicPsk => '标准公共PSK';
@override
String get channels_pskHex => 'PSK (十六进制)';
@override
String get channels_generateRandomPsk => '生成随机的PSK正交相移键控';
@override
String get channels_enterChannelName => '请在此处输入频道名称';
@override
String get channels_pskMustBe32Hex => 'PSK 必须包含 32 个十六进制字符。';
@override
String channels_channelAdded(String name) {
return '添加频道 \"$name\"';
}
@override
String channels_editChannelTitle(int index) {
return '编辑频道 $index';
}
@override
String get channels_smazCompression => 'SMAZ 压缩';
@override
String channels_channelUpdated(String name) {
return '频道 \"$name\" 已更新';
}
@override
String get channels_publicChannelAdded => '已添加公共频道';
@override
String get channels_sortBy => '按排序';
@override
String get channels_sortManual => '手册';
@override
String get channels_sortAZ => 'A 到 Z';
@override
String get channels_sortLatestMessages => '最新消息';
@override
String get channels_sortUnread => '未读';
@override
String get channels_createPrivateChannel => '创建私密频道';
@override
String get channels_createPrivateChannelDesc => '使用秘密密钥进行保护。';
@override
String get channels_joinPrivateChannel => '加入私密频道';
@override
String get channels_joinPrivateChannelDesc => '手动输入密钥。';
@override
String get channels_joinPublicChannel => '加入公共频道';
@override
String get channels_joinPublicChannelDesc => '任何人都可以加入这个频道。';
@override
String get channels_joinHashtagChannel => '加入一个带有特定标签的频道';
@override
String get channels_joinHashtagChannelDesc => '任何人都可以加入带有特定标签的频道。';
@override
String get channels_scanQrCode => '扫描二维码';
@override
String get channels_scanQrCodeComingSoon => '即将发布';
@override
String get channels_enterHashtag => '输入标签';
@override
String get channels_hashtagHint => '例如:#团队';
@override
String get chat_noMessages => '目前还没有收到任何消息。';
@override
String get chat_sendMessageToStart => '发送消息以开始';
@override
String get chat_originalMessageNotFound => '无法找到原始消息';
@override
String chat_replyingTo(String name) {
return 'Replying to $name';
}
@override
String chat_replyTo(String name) {
return 'Reply to $name';
}
@override
String get chat_location => '地点';
@override
String chat_sendMessageTo(String contactName) {
return 'Send a message to $contactName';
}
@override
String get chat_typeMessage => '输入消息...';
@override
String chat_messageTooLong(int maxBytes) {
return '消息内容过长(最大 $maxBytes 字节)。';
}
@override
String get chat_messageCopied => '消息已复制';
@override
String get chat_messageDeleted => '消息已删除';
@override
String get chat_retryingMessage => '重试消息';
@override
String chat_retryCount(int current, int max) {
return 'Retry $current/$max';
}
@override
String get chat_sendGif => '发送 GIF 动画';
@override
String get chat_reply => '回复';
@override
String get chat_addReaction => '添加评论';
@override
String get chat_me => '';
@override
String get emojiCategorySmileys => '表情符号';
@override
String get emojiCategoryGestures => '手势';
@override
String get emojiCategoryHearts => '心脏';
@override
String get emojiCategoryObjects => '物体';
@override
String get gifPicker_title => '选择一个 GIF 动画';
@override
String get gifPicker_searchHint => '搜索 GIF 动画...';
@override
String get gifPicker_poweredBy => '由 GIPHY 提供支持';
@override
String get gifPicker_noGifsFound => '未找到 GIF 动画';
@override
String get gifPicker_failedLoad => '无法加载 GIF 动画';
@override
String get gifPicker_failedSearch => '未能搜索 GIF 动画';
@override
String get gifPicker_noInternet => '没有互联网连接';
@override
String get debugLog_appTitle => '应用程序调试日志';
@override
String get debugLog_bleTitle => 'BLE 调试日志';
@override
String get debugLog_copyLog => '复制日志';
@override
String get debugLog_clearLog => '清晰的日志';
@override
String get debugLog_copied => '调试日志已复制';
@override
String get debugLog_bleCopied => 'BLE 日志已复制';
@override
String get debugLog_noEntries => '目前还没有调试日志';
@override
String get debugLog_enableInSettings => '在设置中启用应用程序调试日志功能。';
@override
String get debugLog_frames => '框架';
@override
String get debugLog_rawLogRx => '原始日志-RX';
@override
String get debugLog_noBleActivity => '目前尚未有蓝牙低功耗BLE活动。';
@override
String debugFrame_length(int count) {
return '帧长度:$count 字节';
}
@override
String debugFrame_command(String value) {
return '命令0x$value';
}
@override
String get debugFrame_textMessageHeader => '短信模板:';
@override
String debugFrame_destinationPubKey(String pubKey) {
return '- 目标公钥:$pubKey';
}
@override
String debugFrame_timestamp(int timestamp) {
return '- Timestamp: $timestamp';
}
@override
String debugFrame_flags(String value) {
return '- 标志0x$value';
}
@override
String debugFrame_textType(int type, String label) {
return '- Text Type: $type ($label)';
}
@override
String get debugFrame_textTypeCli => '命令行界面';
@override
String get debugFrame_textTypePlain => '简单';
@override
String debugFrame_text(String text) {
return '- 文本:“$text';
}
@override
String get debugFrame_hexDump => '十六进制数据:';
@override
String get chat_pathManagement => '路径管理';
@override
String get chat_routingMode => '路由模式';
@override
String get chat_autoUseSavedPath => '自动(使用已保存的路径)';
@override
String get chat_forceFloodMode => '强制洪水模式';
@override
String get chat_recentAckPaths => '最近使用的 ACK 路径(点击使用):';
@override
String get chat_pathHistoryFull => '路径历史已满。删除条目以添加新的条目。';
@override
String get chat_hopSingular => '跳跃';
@override
String get chat_hopPlural => '啤酒花';
@override
String chat_hopsCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'hops',
one: 'hop',
);
return '$count $_temp0';
}
@override
String get chat_successes => '成功';
@override
String get chat_removePath => '删除路径';
@override
String get chat_noPathHistoryYet => '目前还没有历史记录。\n发送消息以查找路径。';
@override
String get chat_pathActions => '路径操作:';
@override
String get chat_setCustomPath => '设置自定义路径';
@override
String get chat_setCustomPathSubtitle => '手动指定路由路径';
@override
String get chat_clearPath => '明确的道路';
@override
String get chat_clearPathSubtitle => '在下一次发送时,重新尝试。';
@override
String get chat_pathCleared => '路径已清理。下一条消息将重新确定路线。';
@override
String get chat_floodModeSubtitle => '使用应用程序栏中的路由切换功能';
@override
String get chat_floodModeEnabled => '防洪模式已启用。通过应用程序栏中的路由图标进行切换。';
@override
String get chat_fullPath => '完整路径';
@override
String get chat_pathDetailsNotAvailable => '路径信息尚未提供。请尝试发送消息以刷新。';
@override
String chat_pathSetHops(int hopCount, String status) {
String _temp0 = intl.Intl.pluralLogic(
hopCount,
locale: localeName,
other: 'hops',
one: 'hop',
);
return 'Path set: $hopCount $_temp0 - $status';
}
@override
String get chat_pathSavedLocally => '已本地保存。连接以进行同步。';
@override
String get chat_pathDeviceConfirmed => '设备已确认。';
@override
String get chat_pathDeviceNotConfirmed => '该设备尚未得到确认。';
@override
String get chat_type => '类型';
@override
String get chat_path => '路径';
@override
String get chat_publicKey => '公钥';
@override
String get chat_compressOutgoingMessages => '压缩发送的消息';
@override
String get chat_floodForced => '洪水(被迫)';
@override
String get chat_directForced => '直接(强制性的)';
@override
String chat_hopsForced(int count) {
return '$count 根啤酒花(人工种植)';
}
@override
String get chat_floodAuto => '自动洪水';
@override
String get chat_direct => '直接';
@override
String get chat_poiShared => '共享位置';
@override
String chat_unread(int count) {
return 'Unread: $count';
}
@override
String get chat_openLink => '打开链接?';
@override
String get chat_openLinkConfirmation => '您想用浏览器打开这个链接吗?';
@override
String get chat_open => '开放';
@override
String chat_couldNotOpenLink(String url) {
return '[保存:$url]\n无法打开链接:$url';
}
@override
String get chat_invalidLink => '无效的链接格式';
@override
String get map_title => '节点图';
@override
String get map_noNodesWithLocation => '没有包含位置信息的节点';
@override
String get map_nodesNeedGps => '节点需要共享其 GPS 坐标,以便在地图上显示';
@override
String map_nodesCount(int count) {
return 'Nodes: $count';
}
@override
String map_pinsCount(int count) {
return 'Pins: $count';
}
@override
String get map_chat => '聊天';
@override
String get map_repeater => '重复器';
@override
String get map_room => '房间';
@override
String get map_sensor => '传感器';
@override
String get map_pinDm => 'PIN (直接消息)';
@override
String get map_pinPrivate => '私密';
@override
String get map_pinPublic => '公开';
@override
String get map_lastSeen => '最后一次被看到';
@override
String get map_disconnectConfirm => '您确定要断开与此设备的连接吗?';
@override
String get map_from => '';
@override
String get map_source => '来源';
@override
String get map_flags => '旗帜';
@override
String get map_shareMarkerHere => '在此分享标记';
@override
String get map_pinLabel => '标签';
@override
String get map_label => '标签';
@override
String get map_pointOfInterest => '值得参观的地方';
@override
String get map_sendToContact => '发送给联系';
@override
String get map_sendToChannel => '发送到频道';
@override
String get map_noChannelsAvailable => '没有可用的频道';
@override
String get map_publicLocationShare => '公共场所共享';
@override
String map_publicLocationShareConfirm(String channelLabel) {
return '[保存:$channelLabel]\n您即将分享一个位置,该位置位于 $channelLabel。 此频道是公开的,任何拥有 PSK 的人都可以看到它。';
}
@override
String get map_connectToShareMarkers => '连接设备以共享标记';
@override
String get map_filterNodes => '过滤节点';
@override
String get map_nodeTypes => '节点类型';
@override
String get map_chatNodes => '聊天节点';
@override
String get map_repeaters => '重复器';
@override
String get map_otherNodes => '其他节点';
@override
String get map_keyPrefix => '关键前缀';
@override
String get map_filterByKeyPrefix => '按关键前缀筛选';
@override
String get map_publicKeyPrefix => '公钥前缀';
@override
String get map_markers => '标记';
@override
String get map_showSharedMarkers => '显示共享标记';
@override
String get map_lastSeenTime => '最后一次被看到的时间';
@override
String get map_sharedPin => '共享密码';
@override
String get map_joinRoom => '加入房间';
@override
String get map_manageRepeater => '管理重复器';
@override
String get mapCache_title => '离线地图缓存';
@override
String get mapCache_selectAreaFirst => '选择一个用于缓存的区域';
@override
String get mapCache_noTilesToDownload => '此区域没有可下载的瓦片。';
@override
String get mapCache_downloadTilesTitle => '下载瓷砖';
@override
String mapCache_downloadTilesPrompt(int count) {
return '[保存:$count]\n下载 $count 个图片用于离线使用?';
}
@override
String get mapCache_downloadAction => '下载';
@override
String mapCache_cachedTiles(int count) {
return '缓存 $count 个瓦片';
}
@override
String mapCache_cachedTilesWithFailed(int downloaded, int failed) {
return 'Cached $downloaded tiles ($failed failed)';
}
@override
String get mapCache_clearOfflineCacheTitle => '清除离线缓存';
@override
String get mapCache_clearOfflineCachePrompt => '清除所有缓存的地图瓦片';
@override
String get mapCache_offlineCacheCleared => '离线缓存已清除';
@override
String get mapCache_noAreaSelected => '未选择任何区域';
@override
String get mapCache_cacheArea => '缓存区域';
@override
String get mapCache_useCurrentView => '使用当前视图';
@override
String get mapCache_zoomRange => '变焦范围';
@override
String mapCache_estimatedTiles(int count) {
return 'Estimated tiles: $count';
}
@override
String mapCache_downloadedTiles(int completed, int total) {
return 'Downloaded $completed / $total';
}
@override
String get mapCache_downloadTilesButton => '下载瓷砖';
@override
String get mapCache_clearCacheButton => '清除缓存';
@override
String mapCache_failedDownloads(int count) {
return 'Failed downloads: $count';
}
@override
String mapCache_boundsLabel(
String north,
String south,
String east,
String west,
) {
return 'N $north, S $south, E $east, W $west';
}
@override
String get time_justNow => '刚才';
@override
String time_minutesAgo(int minutes) {
return '${minutes}m ago';
}
@override
String time_hoursAgo(int hours) {
return '${hours}h ago';
}
@override
String time_daysAgo(int days) {
return '$days天前';
}
@override
String get time_hour => '小时';
@override
String get time_hours => '小时';
@override
String get time_day => '一天';
@override
String get time_days => '';
@override
String get time_week => '一周';
@override
String get time_weeks => '';
@override
String get time_month => '月份';
@override
String get time_months => '月份';
@override
String get time_minutes => '分钟';
@override
String get time_allTime => '所有时间';
@override
String get dialog_disconnect => '断开';
@override
String get dialog_disconnectConfirm => '您确定要断开与此设备的连接吗?';
@override
String get login_repeaterLogin => '重复登录';
@override
String get login_roomLogin => '服务器登录';
@override
String get login_password => '密码';
@override
String get login_enterPassword => '请输入密码';
@override
String get login_savePassword => '保存密码';
@override
String get login_savePasswordSubtitle => '密码将安全地存储在 данном设备上';
@override
String get login_repeaterDescription => '输入重复器密码,即可访问设置和状态。';
@override
String get login_roomDescription => '输入密码进入房间,即可访问设置和状态。';
@override
String get login_routing => '路由';
@override
String get login_routingMode => '路由模式';
@override
String get login_autoUseSavedPath => '自动(使用已保存的路径)';
@override
String get login_forceFloodMode => '强制洪水模式';
@override
String get login_managePaths => '管理路径';
@override
String get login_login => '登录';
@override
String login_attempt(int current, int max) {
return 'Attempt $current/$max';
}
@override
String login_failed(String error) {
return 'Login failed: $error';
}
@override
String get login_failedMessage => '登录失败。可能是密码错误,也可能是无法连接到服务器。';
@override
String get common_reload => '重新加载';
@override
String get common_clear => '清晰';
@override
String path_currentPath(String path) {
return 'Current path: $path';
}
@override
String path_usingHopsPath(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'hops',
one: 'hop',
);
return '使用 $count $_temp0 条路径';
}
@override
String get path_enterCustomPath => '输入自定义路径';
@override
String get path_currentPathLabel => '当前路径';
@override
String get path_hexPrefixInstructions => '请输入每个跳跃步骤的 2 个字符的十六进制前缀,用逗号分隔。';
@override
String get path_hexPrefixExample => '例如A1, F2, 3C (每个节点使用其公钥的第一字节)';
@override
String get path_labelHexPrefixes => '路径(十六进制前缀)';
@override
String get path_helperMaxHops => '最大 64 个“hop”跳跃。每个前缀由 2 个十六进制字符1 字节)组成。';
@override
String get path_selectFromContacts => '或者从联系人列表中选择:';
@override
String get path_noRepeatersFound => '未找到任何重复设备或房间服务器。';
@override
String get path_customPathsRequire => '自定义路径需要中间节点,这些节点可以转发消息。';
@override
String path_invalidHexPrefixes(String prefixes) {
return 'Invalid hex prefixes: $prefixes';
}
@override
String get path_tooLong => '路径太长。允许的最大跳跃次数为 64 次。';
@override
String get path_setPath => '设置路径';
@override
String get repeater_management => '重复器管理';
@override
String get room_management => '服务器管理';
@override
String get repeater_managementTools => '管理工具';
@override
String get repeater_status => '状态';
@override
String get repeater_statusSubtitle => '查看重复器状态、统计信息和邻居';
@override
String get repeater_telemetry => '远程监控';
@override
String get repeater_telemetrySubtitle => '查看传感器和系统状态的数据。';
@override
String get repeater_cli => '命令行界面';
@override
String get repeater_cliSubtitle => '向复用器发送指令';
@override
String get repeater_neighbours => '邻居';
@override
String get repeater_neighboursSubtitle => '查看邻居节点(无需中间节点)。';
@override
String get repeater_settings => '设置';
@override
String get repeater_settingsSubtitle => '配置重复器参数';
@override
String get repeater_statusTitle => '重复器状态';
@override
String get repeater_routingMode => '路由模式';
@override
String get repeater_autoUseSavedPath => '自动(使用已保存的路径)';
@override
String get repeater_forceFloodMode => '强制洪水模式';
@override
String get repeater_pathManagement => '路径管理';
@override
String get repeater_refresh => '更新';
@override
String get repeater_statusRequestTimeout => '状态请求超时。';
@override
String repeater_errorLoadingStatus(String error) {
return 'Error loading status: $error';
}
@override
String get repeater_systemInformation => '系统信息';
@override
String get repeater_battery => '电池';
@override
String get repeater_clockAtLogin => '登录时的时间';
@override
String get repeater_uptime => '正常运行时间';
@override
String get repeater_queueLength => '排队长度';
@override
String get repeater_debugFlags => '调试标志';
@override
String get repeater_radioStatistics => '广播统计';
@override
String get repeater_lastRssi => '上次的 RSSI 值';
@override
String get repeater_lastSnr => '最后一次信噪比';
@override
String get repeater_noiseFloor => '噪声水平';
@override
String get repeater_txAirtime => 'TX 频道预留时间';
@override
String get repeater_rxAirtime => 'RX 空时';
@override
String get repeater_packetStatistics => '数据包统计';
@override
String get repeater_sent => '发送';
@override
String get repeater_received => '已收到';
@override
String get repeater_duplicates => '重复';
@override
String repeater_daysHoursMinsSecs(
int days,
int hours,
int minutes,
int seconds,
) {
return '$days天 $hours小时 $minutes分 $seconds秒';
}
@override
String repeater_packetTxTotal(int total, String flood, String direct) {
return 'Total: $total, Flood: $flood, Direct: $direct';
}
@override
String repeater_packetRxTotal(int total, String flood, String direct) {
return 'Total: $total, Flood: $flood, Direct: $direct';
}
@override
String repeater_duplicatesFloodDirect(String flood, String direct) {
return 'Flood: $flood, Direct: $direct';
}
@override
String repeater_duplicatesTotal(int total) {
return 'Total: $total';
}
@override
String get repeater_settingsTitle => '重复器设置';
@override
String get repeater_basicSettings => '基本设置';
@override
String get repeater_repeaterName => '重复器名称';
@override
String get repeater_repeaterNameHelper => '此复播器的显示名称';
@override
String get repeater_adminPassword => '管理员密码';
@override
String get repeater_adminPasswordHelper => '完整访问密码';
@override
String get repeater_guestPassword => '访客密码';
@override
String get repeater_guestPasswordHelper => '只读访问密码';
@override
String get repeater_radioSettings => '收音机设置';
@override
String get repeater_frequencyMhz => '频率 (MHz)';
@override
String get repeater_frequencyHelper => '300-2500 兆赫';
@override
String get repeater_txPower => 'TX 功率';
@override
String get repeater_txPowerHelper => '1-30 dBm';
@override
String get repeater_bandwidth => '带宽';
@override
String get repeater_spreadingFactor => '传播系数';
@override
String get repeater_codingRate => '编码速率';
@override
String get repeater_locationSettings => '位置设置';
@override
String get repeater_latitude => '纬度';
@override
String get repeater_latitudeHelper => '十进制度例如37.7749';
@override
String get repeater_longitude => '经度';
@override
String get repeater_longitudeHelper => '十进制度(例如:-122.4194';
@override
String get repeater_features => '特点';
@override
String get repeater_packetForwarding => '数据包转发';
@override
String get repeater_packetForwardingSubtitle => '启用重复器,使其能够转发数据包';
@override
String get repeater_guestAccess => '访客访问';
@override
String get repeater_guestAccessSubtitle => '允许访客仅限读取权限';
@override
String get repeater_privacyMode => '隐私模式';
@override
String get repeater_privacyModeSubtitle => '在广告中隐藏姓名/位置';
@override
String get repeater_advertisementSettings => '广告设置';
@override
String get repeater_localAdvertInterval => '本地广告投放时间段';
@override
String repeater_localAdvertIntervalMinutes(int minutes) {
return '$minutes minutes';
}
@override
String get repeater_floodAdvertInterval => '洪水广告播放间隔';
@override
String repeater_floodAdvertIntervalHours(int hours) {
return '$hours hours';
}
@override
String get repeater_encryptedAdvertInterval => '加密的广告投放时间段';
@override
String get repeater_dangerZone => '危险区域';
@override
String get repeater_rebootRepeater => '重启重复器';
@override
String get repeater_rebootRepeaterSubtitle => '重新启动重复器设备';
@override
String get repeater_rebootRepeaterConfirm => '您确定要重新启动这个中继器吗?';
@override
String get repeater_regenerateIdentityKey => '重新生成身份密钥';
@override
String get repeater_regenerateIdentityKeySubtitle => '生成新的公钥/私钥对';
@override
String get repeater_regenerateIdentityKeyConfirm => '这将为复用器生成一个新的身份。继续吗?';
@override
String get repeater_eraseFileSystem => '删除文件系统';
@override
String get repeater_eraseFileSystemSubtitle => '格式化重复文件系统';
@override
String get repeater_eraseFileSystemConfirm => '警告:此操作将清除复用器上的所有数据。 无法恢复!';
@override
String get repeater_eraseSerialOnly => '“Erase”功能仅可通过串行控制台使用。';
@override
String repeater_commandSent(String command) {
return 'Command sent: $command';
}
@override
String repeater_errorSendingCommand(String error) {
return 'Error sending command: $error';
}
@override
String get repeater_confirm => '确认';
@override
String get repeater_settingsSaved => '设置已成功保存';
@override
String repeater_errorSavingSettings(String error) {
return 'Error saving settings: $error';
}
@override
String get repeater_refreshBasicSettings => '重置基本设置';
@override
String get repeater_refreshRadioSettings => '重置收音机设置';
@override
String get repeater_refreshTxPower => '重置 TX 电源';
@override
String get repeater_refreshLocationSettings => '重置位置设置';
@override
String get repeater_refreshPacketForwarding => '刷新包转发';
@override
String get repeater_refreshGuestAccess => '重新获取访客访问权限';
@override
String get repeater_refreshPrivacyMode => '重置隐私模式';
@override
String get repeater_refreshAdvertisementSettings => '重置广告设置';
@override
String repeater_refreshed(String label) {
return '$label refreshed';
}
@override
String repeater_errorRefreshing(String label) {
return '[保存:$label]\n刷新 $label 时出错';
}
@override
String get repeater_cliTitle => '重复器命令行界面';
@override
String get repeater_debugNextCommand => '调试下一条命令';
@override
String get repeater_commandHelp => '帮助';
@override
String get repeater_clearHistory => '清晰的历史';
@override
String get repeater_noCommandsSent => '尚未发送任何指令';
@override
String get repeater_typeCommandOrUseQuick => '在下方输入命令,或使用快捷命令。';
@override
String get repeater_enterCommandHint => '输入命令...';
@override
String get repeater_previousCommand => '之前的命令';
@override
String get repeater_nextCommand => '下一个指令';
@override
String get repeater_enterCommandFirst => '首先输入一个命令';
@override
String get repeater_cliCommandFrameTitle => 'CLI 命令框架';
@override
String repeater_cliCommandError(String error) {
return 'Error: $error';
}
@override
String get repeater_cliQuickGetName => '获取姓名';
@override
String get repeater_cliQuickGetRadio => '收听广播';
@override
String get repeater_cliQuickGetTx => '获取 TX';
@override
String get repeater_cliQuickNeighbors => '邻居';
@override
String get repeater_cliQuickVersion => '版本';
@override
String get repeater_cliQuickAdvertise => '发布广告';
@override
String get repeater_cliQuickClock => '时钟';
@override
String get repeater_cliHelpAdvert => '发送广告资料包';
@override
String get repeater_cliHelpReboot => '重置设备。 (请注意,您可能会收到“超时”错误,这是正常的现象)';
@override
String get repeater_cliHelpClock => '显示每个设备的当前时间。';
@override
String get repeater_cliHelpPassword => '为设备设置新的管理员密码。';
@override
String get repeater_cliHelpVersion => '显示设备版本和固件构建日期。';
@override
String get repeater_cliHelpClearStats => '重置各种统计指标,将其设置为零。';
@override
String get repeater_cliHelpSetAf => '设置时间因素。';
@override
String get repeater_cliHelpSetTx =>
'设置 LoRa 传输功率,单位为 dBm (相对于参考值)。 (重启以应用更改)';
@override
String get repeater_cliHelpSetRepeat => '启用或禁用此节点的重复器功能。';
@override
String get repeater_cliHelpSetAllowReadOnly =>
'(房间服务器)如果设置为“开启”,则允许使用空密码登录,但无法向房间发送消息(只能进行读取)。';
@override
String get repeater_cliHelpSetFloodMax => '设置最大传入数据包的跳数(如果大于或等于最大值,则不进行转发)。';
@override
String get repeater_cliHelpSetIntThresh =>
'设置干扰阈值以dB为单位。默认值为14。将设置为0以禁用频道干扰检测。';
@override
String get repeater_cliHelpSetAgcResetInterval =>
'设置间隔时间,用于重置自动增益控制器。设置为 0 以禁用。';
@override
String get repeater_cliHelpSetMultiAcks => '启用或禁用“双重确认”功能。';
@override
String get repeater_cliHelpSetAdvertInterval =>
'设置定时器间隔,单位为分钟,用于发送本地(无中继)的广告数据包。 将设置为 0 以禁用。';
@override
String get repeater_cliHelpSetFloodAdvertInterval =>
'设置定时器间隔时间为小时,以便发送广告信息包。将设置为 0 以禁用。';
@override
String get repeater_cliHelpSetGuestPassword =>
'设置/更新访客密码。 (对于访客,登录请求可以发送“获取统计”请求)';
@override
String get repeater_cliHelpSetName => '设置广告名称。';
@override
String get repeater_cliHelpSetLat => '设置广告地图的纬度。(以十进制表示)';
@override
String get repeater_cliHelpSetLon => '设置广告地图的经度。 (十进制度)';
@override
String get repeater_cliHelpSetRadio => '完全重新设置无线电参数,并保存到偏好设置。需要执行“重启”命令才能生效。';
@override
String get repeater_cliHelpSetRxDelay =>
'设置实验性设置一个基础值必须大于1才能生效用于对接收到的数据包进行轻微延迟处理该延迟值基于信号强度/评分。将该值设置为0以禁用。';
@override
String get repeater_cliHelpSetTxDelay =>
'通过将一个因子与“浮动模式”数据包的时间在空中停留时间相乘,并结合随机的“时隙”系统,来延迟其转发,从而降低数据包冲突的概率。';
@override
String get repeater_cliHelpSetDirectTxDelay =>
'与txdelay相同但用于对直接模式数据包的转发进行随机延迟。';
@override
String get repeater_cliHelpSetBridgeEnabled => '启用/禁用桥接。';
@override
String get repeater_cliHelpSetBridgeDelay => '在重新发送数据包之前,设置延迟时间。';
@override
String get repeater_cliHelpSetBridgeSource => '选择桥接器是否会转发收到的数据包,还是转发发送的数据包。';
@override
String get repeater_cliHelpSetBridgeBaud => '为 RS232 桥接设置串行链路的波特率。';
@override
String get repeater_cliHelpSetBridgeSecret => '设置 ESPNOW 桥的秘密。';
@override
String get repeater_cliHelpSetAdcMultiplier =>
'设置自定义因子,用于调整报告的电池电压(仅在特定板上支持)。';
@override
String get repeater_cliHelpTempRadio =>
'设置临时收音机参数,持续指定分钟数,之后恢复到原始收音机参数。(不保存到偏好设置)。';
@override
String get repeater_cliHelpSetPerm =>
'修改 ACL。如果 \"permissions\" 的值为 0则删除与 pubkey 相关的条目。如果 pubkey-hex 完整且当前不在 ACL 中,则添加新的条目。通过匹配 pubkey 相关的前缀来更新条目。不同固件角色的权限位有所不同,但低 2 位分别对应0 (访客)、1 (只读)、2 (读写)、3 (管理员)。';
@override
String get repeater_cliHelpGetBridgeType => '支持桥接模式、RS232、ESPNOW。';
@override
String get repeater_cliHelpLogStart => '开始将数据包记录到文件系统。';
@override
String get repeater_cliHelpLogStop => '停止将数据包记录写入文件系统。';
@override
String get repeater_cliHelpLogErase => '从文件系统中删除所有已记录的包信息。';
@override
String get repeater_cliHelpNeighbors =>
'显示了通过零跳广告收到的其他复用节点列表。 每行包含id-前缀-十六进制时间戳信噪比4次';
@override
String get repeater_cliHelpNeighborRemove =>
'从邻居列表中删除第一个匹配项(通过十六进制的 pubkey 前缀)。';
@override
String get repeater_cliHelpRegion => '(仅限序列)列出所有已定义的区域以及当前的防洪许可。';
@override
String get repeater_cliHelpRegionLoad =>
'请注意:这是一个特殊的、包含多个命令的调用方式。 之后的每个命令都是一个区域名称(使用空格进行缩进,以表示父级关系,至少需要一个空格)。 结束方式是通过发送一个空行/命令。';
@override
String get repeater_cliHelpRegionGet =>
'搜索具有指定名称前缀的区域(或使用“*”表示全局范围)。 返回结果为“-> region-name (parent-name) \'F\'';
@override
String get repeater_cliHelpRegionPut => '添加或更新一个区域定义,并指定其名称。';
@override
String get repeater_cliHelpRegionRemove =>
'删除具有指定名称的区域定义。 (必须与指定名称完全匹配,且不能有子区域)';
@override
String get repeater_cliHelpRegionAllowf => '为指定区域设置“洪水”权限。(“*”表示全局/旧版本范围)';
@override
String get repeater_cliHelpRegionDenyf =>
'移除指定区域的“洪水”权限。(请注意:目前不建议在全局/旧版本中使用此功能!!)';
@override
String get repeater_cliHelpRegionHome => '回复当前“主区域”。(此功能尚未应用,仅供未来使用)';
@override
String get repeater_cliHelpRegionHomeSet => '设置“主”区域。';
@override
String get repeater_cliHelpRegionSave => '将区域列表/地图保存到存储中。';
@override
String get repeater_cliHelpGps =>
'显示 GPS 状态。当 GPS 处于关闭状态时,它只会显示“关闭”;当 GPS 处于开启状态时,它会显示“开启”、“状态”、“定位”、“卫星数量”等信息。';
@override
String get repeater_cliHelpGpsOnOff => '切换 GPS 设备的电源状态。';
@override
String get repeater_cliHelpGpsSync => '将节点时间与 GPS 钟同步。';
@override
String get repeater_cliHelpGpsSetLoc => '将节点的坐标设置为 GPS 坐标,并保存设置。';
@override
String get repeater_cliHelpGpsAdvert =>
'设置节点的位置广告配置:\n- none不将位置信息包含在广告中\n- share共享 GPS 位置(从 SensorManager 获取)\n- prefs在偏好设置中展示的位置';
@override
String get repeater_cliHelpGpsAdvertSet => '设置广告的位置配置。';
@override
String get repeater_commandsListTitle => '命令列表';
@override
String get repeater_commandsListNote => '请注意对于各种“set ...”命令也存在“get ...”命令。';
@override
String get repeater_general => '通用';
@override
String get repeater_settingsCategory => '设置';
@override
String get repeater_bridge => '';
@override
String get repeater_logging => '记录';
@override
String get repeater_neighborsRepeaterOnly => '邻居(仅限重复功能)';
@override
String get repeater_regionManagementRepeaterOnly => '区域管理(仅限重复站点)';
@override
String get repeater_regionNote => '区域命令已引入,用于管理区域定义和权限。';
@override
String get repeater_gpsManagement => 'GPS 管理';
@override
String get repeater_gpsNote => '已引入 GPS 命令,用于管理与位置相关的任务。';
@override
String get telemetry_receivedData => '接收到的遥测数据';
@override
String get telemetry_requestTimeout => '遥测请求超时。';
@override
String telemetry_errorLoading(String error) {
return 'Error loading telemetry: $error';
}
@override
String get telemetry_noData => '没有可用的 telemetry 数据。';
@override
String telemetry_channelTitle(int channel) {
return '频道 $channel';
}
@override
String get telemetry_batteryLabel => '电池';
@override
String get telemetry_voltageLabel => '电压';
@override
String get telemetry_mcuTemperatureLabel => 'MCU 的温度';
@override
String get telemetry_temperatureLabel => '温度';
@override
String get telemetry_currentLabel => '当前';
@override
String telemetry_batteryValue(int percent, String volts) {
return '$percent% / ${volts}V';
}
@override
String telemetry_voltageValue(String volts) {
return '${volts}V';
}
@override
String telemetry_currentValue(String amps) {
return '${amps}A';
}
@override
String telemetry_temperatureValue(String celsius, String fahrenheit) {
return '$celsius°C / $fahrenheit°F';
}
@override
String get neighbors_receivedData => '已收到邻居信息';
@override
String get neighbors_requestTimedOut => '邻居要求停止干扰。';
@override
String neighbors_errorLoading(String error) {
return 'Error loading neighbors: $error';
}
@override
String get neighbors_repeatersNeighbours => '重复使用的邻居';
@override
String get neighbors_noData => '没有可用的邻居信息。';
@override
String neighbors_unknownContact(String pubkey) {
return 'Unknown $pubkey';
}
@override
String neighbors_heardAgo(String time) {
return 'Heard: $time ago';
}
@override
String get channelPath_title => '数据包路径';
@override
String get channelPath_viewMap => '查看地图';
@override
String get channelPath_otherObservedPaths => '其他观察到的路径';
@override
String get channelPath_repeaterHops => '复用跳跃';
@override
String get channelPath_noHopDetails => '对于此包,未提供详细信息。';
@override
String get channelPath_messageDetails => '消息详情';
@override
String get channelPath_senderLabel => '发件人';
@override
String get channelPath_timeLabel => '时间';
@override
String get channelPath_repeatsLabel => '重复';
@override
String channelPath_pathLabel(int index) {
return '路径 $index';
}
@override
String get channelPath_observedLabel => '观察到的';
@override
String channelPath_observedPathTitle(int index, String hops) {
return 'Observed path $index$hops';
}
@override
String get channelPath_noLocationData => '没有位置信息';
@override
String channelPath_timeWithDate(int day, int month, String time) {
return '$day/$month $time';
}
@override
String channelPath_timeOnly(String time) {
return '$time';
}
@override
String get channelPath_unknownPath => '未知';
@override
String get channelPath_floodPath => '洪水';
@override
String get channelPath_directPath => '直接';
@override
String channelPath_observedZeroOf(int total) {
return '0 of $total hops';
}
@override
String channelPath_observedSomeOf(int observed, int total) {
return '$observed of $total hops';
}
@override
String get channelPath_mapTitle => '路线图';
@override
String get channelPath_noRepeaterLocations => '这条路径上没有可用的中继器位置。';
@override
String channelPath_primaryPath(int index) {
return '路径 $index (主要路径)';
}
@override
String get channelPath_pathLabelTitle => '路径';
@override
String get channelPath_observedPathHeader => '观察路径';
@override
String channelPath_selectedPathLabel(String label, String prefixes) {
return '$label$prefixes';
}
@override
String get channelPath_noHopDetailsAvailable => '对于此包裹,尚无详细信息。';
@override
String get channelPath_unknownRepeater => '未知的重复设备';
@override
String get community_title => '社区';
@override
String get community_create => '建立社区';
@override
String get community_createDesc => '创建一个新的社群,并通过二维码进行分享。';
@override
String get community_join => '加入';
@override
String get community_joinTitle => '加入社区';
@override
String community_joinConfirmation(String name) {
return 'Do you want to join the community \"$name\"?';
}
@override
String get community_scanQr => '扫描社区二维码';
@override
String get community_scanInstructions => '将相机对准社区的二维码。';
@override
String get community_showQr => '显示二维码';
@override
String get community_publicChannel => '社区公共';
@override
String get community_hashtagChannel => '社区标签';
@override
String get community_name => '社区名称';
@override
String get community_enterName => '请输入社区名称';
@override
String community_created(String name) {
return 'Community \"$name\" created';
}
@override
String community_joined(String name) {
return 'Joined community \"$name\"';
}
@override
String get community_qrTitle => '分享社区';
@override
String community_qrInstructions(String name) {
return 'Scan this QR code to join \"$name\"';
}
@override
String get community_hashtagPrivacyHint => '仅社区成员才能加入社区话题标签的频道。';
@override
String get community_invalidQrCode => '无效的社区二维码';
@override
String get community_alreadyMember => '已经是会员';
@override
String community_alreadyMemberMessage(String name) {
return 'You are already a member of \"$name\".';
}
@override
String get community_addPublicChannel => '添加公共频道';
@override
String get community_addPublicChannelHint => '自动添加该社区的公共频道';
@override
String get community_noCommunities => '目前还没有任何社区加入。';
@override
String get community_scanOrCreate => '扫描二维码或创建社群,即可开始。';
@override
String get community_manageCommunities => '管理社区';
@override
String get community_delete => '退出社区';
@override
String community_deleteConfirm(String name) {
return '是否要删除\"$name\"';
}
@override
String community_deleteChannelsWarning(int count) {
return '这将同时删除 $count 个频道及其所有消息。';
}
@override
String community_deleted(String name) {
return 'Left community \"$name\"';
}
@override
String get community_regenerateSecret => '恢复秘密';
@override
String community_regenerateSecretConfirm(String name) {
return '[保存:$name]\n是否需要重新生成\"$name\"的密钥?所有成员都需要扫描新的二维码才能继续进行通信。';
}
@override
String get community_regenerate => '再生';
@override
String community_secretRegenerated(String name) {
return '[保护对象:$name]\n秘密已恢复至\"$name\"';
}
@override
String get community_updateSecret => '更新秘密';
@override
String community_secretUpdated(String name) {
return '$name”的秘密已更新';
}
@override
String community_scanToUpdateSecret(String name) {
return 'Scan the new QR code to update the secret for \"$name\"';
}
@override
String get community_addHashtagChannel => '添加社区标签';
@override
String get community_addHashtagChannelDesc => '为这个社区创建一个带有话题标签的频道';
@override
String get community_selectCommunity => '选择社区';
@override
String get community_regularHashtag => '常用标签';
@override
String get community_regularHashtagDesc => '公共话题标签(任何人都可以参与)';
@override
String get community_communityHashtag => '社区标签';
@override
String get community_communityHashtagDesc => '仅限社区成员';
@override
String community_forCommunity(String name) {
return 'For $name';
}
@override
String get listFilter_tooltip => '筛选和排序';
@override
String get listFilter_sortBy => '按排序';
@override
String get listFilter_latestMessages => '最新消息';
@override
String get listFilter_heardRecently => '最近听到的';
@override
String get listFilter_az => 'A 到 Z';
@override
String get listFilter_filters => '过滤器';
@override
String get listFilter_all => '全部';
@override
String get listFilter_users => '用户';
@override
String get listFilter_repeaters => '重复器';
@override
String get listFilter_roomServers => '房间服务器';
@override
String get listFilter_unreadOnly => '仅显示未读消息';
@override
String get listFilter_newGroup => '新的团体';
@override
String get pathTrace_you => '';
@override
String get pathTrace_failed => '路径追踪失败。';
@override
String get pathTrace_notAvailable => '无法获取路径信息。';
@override
String get pathTrace_refreshTooltip => '重新绘制路径。';
@override
String get pathTrace_someHopsNoLocation => '其中一个或多个啤酒花缺少位置!';
@override
String get contacts_pathTrace => '路径追踪';
@override
String get contacts_ping => '';
@override
String get contacts_repeaterPathTrace => '追踪路径至中继器';
@override
String get contacts_repeaterPing => '中继器';
@override
String get contacts_roomPathTrace => '追踪到房间服务器';
@override
String get contacts_roomPing => '会议室服务器';
@override
String get contacts_chatTraceRoute => '路径跟踪路线';
@override
String contacts_pathTraceTo(String name) {
return '追踪路径至 $name';
}
@override
String get contacts_clipboardEmpty => '剪贴板为空。';
@override
String get contacts_invalidAdvertFormat => '无效的联系信息';
@override
String get contacts_contactImported => '已建立联系。';
@override
String get contacts_contactImportFailed => '未能导入联系人。';
@override
String get contacts_zeroHopAdvert => '零跳广告';
@override
String get contacts_floodAdvert => '防洪广告';
@override
String get contacts_copyAdvertToClipboard => '复制广告到剪贴板';
@override
String get contacts_addContactFromClipboard => '从剪贴板添加联系人';
@override
String get contacts_ShareContact => '复制联系方式到剪贴板';
@override
String get contacts_ShareContactZeroHop => '通过广告分享联系方式';
@override
String get contacts_zeroHopContactAdvertSent => '通过广告获取联系方式。';
@override
String get contacts_zeroHopContactAdvertFailed => '发送联系方式失败。';
@override
String get contacts_contactAdvertCopied => '广告内容已复制到剪贴板。';
@override
String get contacts_contactAdvertCopyFailed => '将广告复制到剪贴板操作失败。';
@override
String get notification_activityTitle => 'MeshCore 活动';
@override
String notification_messagesCount(int count) {
return '$count 条消息';
}
@override
String notification_channelMessagesCount(int count) {
return '$count 条频道消息';
}
@override
String notification_newNodesCount(int count) {
return '$count 个新节点';
}
@override
String notification_newTypeDiscovered(String contactType) {
return '发现新 $contactType';
}
@override
String get notification_receivedNewMessage => '收到新消息';
@override
String get settings_gpxExportRepeaters => '导出重复器/房间服务器到GPX';
@override
String get settings_gpxExportRepeatersSubtitle => '导出带有位置的重复器/房间服务器到GPX文件。';
@override
String get settings_gpxExportContacts => '导出伴侣到GPX';
@override
String get settings_gpxExportContactsSubtitle => '导出带有位置的伙伴到GPX文件。';
@override
String get settings_gpxExportAll => '导出所有联系人到GPX';
@override
String get settings_gpxExportAllSubtitle => '导出所有带有位置的联系人到GPX文件。';
@override
String get settings_gpxExportSuccess => '成功导出GPX文件';
@override
String get settings_gpxExportNoContacts => '没有联系人可导出';
@override
String get settings_gpxExportNotAvailable => '您的设备/操作系统不支持';
@override
String get settings_gpxExportError => '导出时发生错误';
@override
String get settings_gpxExportRepeatersRoom => '重复器和房间服务器位置';
@override
String get settings_gpxExportChat => '伴侣位置';
@override
String get settings_gpxExportAllContacts => '所有联系人位置';
@override
String get settings_gpxExportShareText => '来自meshcore-open的导出地图数据';
@override
String get settings_gpxExportShareSubject => 'meshcore-open GPX 地图数据导出';
}