// 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_deleteAll => '删除全部';

  @override
  String get common_close => '关闭';

  @override
  String get common_done => 'Done';

  @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_undo => '撤销';

  @override
  String get messageStatus_sent => '发送';

  @override
  String get messageStatus_delivered => '已送达';

  @override
  String get messageStatus_pending => '发送';

  @override
  String get messageStatus_failed => '发送失败';

  @override
  String get messageStatus_repeated => '多次听到';

  @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 common_autoRefresh => '自动刷新';

  @override
  String get common_interval => '间隔';

  @override
  String get scanner_title => '连接设备';

  @override
  String get connectionChoiceUsbLabel => 'USB';

  @override
  String get connectionChoiceBluetoothLabel => '蓝牙';

  @override
  String get connectionChoiceTcpLabel => 'TCP';

  @override
  String get tcpScreenTitle => '通过 TCP 连接';

  @override
  String get tcpHostLabel => 'IP地址';

  @override
  String get tcpHostHint => '192.168.40.10';

  @override
  String get tcpPortLabel => '端口';

  @override
  String get tcpPortHint => '5000';

  @override
  String get tcpStatus_notConnected => '输入目标地址，然后连接';

  @override
  String tcpStatus_connectingTo(String endpoint) {
    return '连接到 $endpoint...';
  }

  @override
  String get tcpErrorHostRequired => '需要提供IP地址。';

  @override
  String get tcpErrorPortInvalid => '端口号必须在 1 到 65535 之间。';

  @override
  String get tcpErrorUnsupported => '此平台不支持 TCP 传输。';

  @override
  String get tcpErrorTimedOut => 'TCP 连接超时。';

  @override
  String tcpConnectionFailed(String error) {
    return 'TCP 连接失败：$error';
  }

  @override
  String get usbScreenTitle => '通过USB连接';

  @override
  String get usbScreenSubtitle => '选择已检测到的串行设备，并直接连接到您的 MeshCore 节点。';

  @override
  String get usbScreenStatus => '选择一个 USB 设备';

  @override
  String get usbScreenNote => 'USB 串行接口在支持的 Android 设备和桌面平台上处于活动状态。';

  @override
  String get usbScreenEmptyState => '未找到任何 USB 设备。请插入一个，然后刷新。';

  @override
  String get usbErrorPermissionDenied => '拒绝了USB权限。';

  @override
  String get usbErrorDeviceMissing => '所选的USB设备已不再可用。';

  @override
  String get usbErrorInvalidPort => '选择一个有效的USB设备。';

  @override
  String get usbErrorBusy => '还有一个 USB 连接请求正在进行中。';

  @override
  String get usbErrorNotConnected => '没有连接任何USB设备。';

  @override
  String get usbErrorOpenFailed => '未能打开所选的USB设备。';

  @override
  String get usbErrorConnectFailed => '未能连接到所选的USB设备。';

  @override
  String get usbErrorUnsupported => '此平台不支持USB串行通信。';

  @override
  String get usbErrorAlreadyActive => 'USB 连接已建立。';

  @override
  String get usbErrorNoDeviceSelected => '未选择任何 USB 设备。';

  @override
  String get usbErrorPortClosed => 'USB 连接未建立。';

  @override
  String get usbErrorConnectTimedOut => '连接超时。请确保设备已安装 USB 伴侣固件。';

  @override
  String get usbFallbackDeviceName => 'Web 串流设备';

  @override
  String get usbStatus_notConnected => '选择一个 USB 设备';

  @override
  String get usbStatus_connecting => '连接USB设备...';

  @override
  String get usbStatus_searching => '正在搜索 USB 设备...';

  @override
  String usbConnectionFailed(String error) {
    return 'USB 连接失败：$error';
  }

  @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 '连接失败：$error';
  }

  @override
  String get scanner_stop => '停止';

  @override
  String get scanner_scan => '扫描';

  @override
  String get scanner_bluetoothOff => '蓝牙已关闭';

  @override
  String get scanner_bluetoothOffMessage => '请开启蓝牙以搜索设备';

  @override
  String get scanner_chromeRequired => '需要 Chrome 浏览器';

  @override
  String get scanner_chromeRequiredMessage =>
      '此 Web 应用程序需要 Google Chrome 或基于 Chromium 的浏览器以支持蓝牙。';

  @override
  String get scanner_enableBluetooth => '启用蓝牙';

  @override
  String get scanner_bluetoothWebUnsupported => '浏览器不支持蓝牙，请改用 USB 连接。';

  @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_regionSettings => '地区';

  @override
  String get settings_regionSettingsSubtitle => '管理已存储的区域';

  @override
  String get settings_regionManagement_screenTitle => '区域管理';

  @override
  String get settings_regionNameHint => '区域名称';

  @override
  String get settings_regionAddRegion => '增加地区';

  @override
  String get settings_regionFetchRegions => '从中继器获取区域';

  @override
  String get settings_regionFetchRegionsFail => '未发现任何地区';

  @override
  String get settings_regionFetchRegionsAlreadyExists => '该地区已被添加';

  @override
  String get settings_regionName => '地区名称';

  @override
  String get settings_regionDeleted => '区域已删除';

  @override
  String get settings_deleteRegion => '删除区域';

  @override
  String settings_deleteRegionConfirm(String region) {
    return '从 $region 列表中删除？';
  }

  @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_contactSettings => '联系人设置';

  @override
  String get settings_contactSettingsSubtitle => '添加联系人的设置';

  @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_privacy => '隐私设置';

  @override
  String get settings_privacySubtitle => '控制要共享的信息。';

  @override
  String get settings_privacySettingsDescription => '选择您的设备与他人共享的信息。';

  @override
  String get settings_denyAll => '拒绝所有';

  @override
  String get settings_allowByContact => '按联系人标志允许';

  @override
  String get settings_allowAll => '允许全部';

  @override
  String get settings_telemetryBaseMode => '遥测基础模式';

  @override
  String get settings_telemetryLocationMode => '遥测位置模式';

  @override
  String get settings_telemetryEnvironmentMode => '遥测环境模式';

  @override
  String get settings_advertLocation => '广告位置';

  @override
  String get settings_advertLocationSubtitle => '在广告中包含位置';

  @override
  String get settings_autoZeroHopAdvertOnGpsUpdate => 'GPS 更新时自动发送零跳广告';

  @override
  String get settings_autoZeroHopAdvertOnGpsUpdateSubtitle =>
      '当 GPS 位置变化时，发送零跳广告（需要在广告中包含位置）。';

  @override
  String get settings_multiAck => '多重ACK';

  @override
  String get settings_telemetryModeUpdated => '遥测模式已更新';

  @override
  String get settings_actions => '操作';

  @override
  String get settings_deleteAllPaths => 'Delete All Paths';

  @override
  String get settings_deleteAllPathsSubtitle =>
      'Clear all path data from contacts.';

  @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_companionDebugLog => '调试日志';

  @override
  String get settings_companionDebugLogSubtitle => 'BLE/TCP/USB 协议、响应和原始数据';

  @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_aboutOpenMeteoAttribution =>
      'LOS 高程数据:Open-Meteo (CC BY 4.0)';

  @override
  String get settings_infoName => '名称';

  @override
  String get settings_infoId => 'MAC 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_infoHardware => '硬件';

  @override
  String get settings_infoFirmware => '固件';

  @override
  String get settings_presets => '预设';

  @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_clientRepeat => '离网重复';

  @override
  String get settings_clientRepeatSubtitle => '允许此设备重复发送网状数据包给其他设备';

  @override
  String get settings_clientRepeatFreqWarning =>
      '离网重复通信需要使用 433、869 或 918 兆赫兹的频率。';

  @override
  String settings_error(String message) {
    return '错误：$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 repeater_pathHashModeOption0 => '0 - 1 字节';

  @override
  String get repeater_pathHashModeOption1 => '1 - 2 字节';

  @override
  String get repeater_pathHashModeOption2 => '2 - 3 字节';

  @override
  String get repeater_pathHashModeOption3 => '3 - 4 字节';

  @override
  String get appSettings_enableMessageTracing => '启用消息追踪';

  @override
  String get appSettings_enableMessageTracingSubtitle => '显示消息的详细路由和时间元数据';

  @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_maxRouteWeight => '最大路径重量';

  @override
  String get appSettings_maxRouteWeightSubtitle => '一条路径可以累积的最大重量，取决于成功交付的数量。';

  @override
  String get appSettings_initialRouteWeight => '初始路线权重';

  @override
  String get appSettings_initialRouteWeightSubtitle => '新发现路径的初始重量';

  @override
  String get appSettings_routeWeightSuccessIncrement => '成功权重增加';

  @override
  String get appSettings_routeWeightSuccessIncrementSubtitle =>
      '在成功交付后，将重量添加到路径中';

  @override
  String get appSettings_routeWeightFailureDecrement => '失败权重降低';

  @override
  String get appSettings_routeWeightFailureDecrementSubtitle =>
      '从一条路径上移除的货物，由于无法成功交付而移除。';

  @override
  String get appSettings_maxMessageRetries => '最大消息重试次数';

  @override
  String get appSettings_maxMessageRetriesSubtitle => '在将消息标记为失败之前，允许尝试的次数';

  @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_batteryLipoHv => '锂多压电源（3.0-4.35伏）';

  @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 '显示过去 $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_rasterTileSource => '栅格瓦片源';

  @override
  String get appSettings_stadiaEndpoint => 'Stadia 端点';

  @override
  String get appSettings_stadiaApiKey => 'Stadia API 密钥';

  @override
  String get appSettings_stadiaApiKeyRequired => '使用 Stadia Maps 时必需';

  @override
  String appSettings_stadiaApiKeyConfigured(String maskedKey) {
    return '已配置：$maskedKey';
  }

  @override
  String get appSettings_stadiaApiKeyDialogDescription =>
      '请输入你的 Stadia Maps API 密钥。该应用会使用它来请求栅格瓦片。';

  @override
  String get appSettings_offlineMapCache => '离线地图缓存';

  @override
  String get appSettings_unitsTitle => '单位';

  @override
  String get appSettings_unitsMetric => '公制（米/公里）';

  @override
  String get appSettings_unitsImperial => '英制 (ft / mi)';

  @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_unread => '未读';

  @override
  String get contacts_searchContactsNoNumber => '搜索联系人...';

  @override
  String contacts_searchContacts(int number, String str) {
    return '搜索联系人...';
  }

  @override
  String contacts_searchFavorites(int number, String str) {
    return '搜索 $number$str 收藏...';
  }

  @override
  String contacts_searchUsers(int number, String str) {
    return '搜索 $number$str 位用户...';
  }

  @override
  String contacts_searchRepeaters(int number, String str) {
    return '搜索 $number$str 重复器...';
  }

  @override
  String contacts_searchRoomServers(int number, String str) {
    return '搜索 $number$str 房间服务器...';
  }

  @override
  String get contacts_noUnreadContacts => '没有未读内容';

  @override
  String get contacts_noContactsFound => '未找到任何联系人或群聊';

  @override
  String get contacts_deleteContact => '删除联系人';

  @override
  String contacts_removeConfirm(String contactName) {
    return '从联系人中移除 $contactName？';
  }

  @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_moreOptions => '更多选择';

  @override
  String get contacts_searchOpen => '搜索联系人';

  @override
  String get contacts_searchClose => '高级搜索';

  @override
  String get contacts_groupName => '群聊名称';

  @override
  String get contacts_groupNameRequired => '请输入群聊名称';

  @override
  String get contacts_groupNameReserved => '该群组名称已被保留';

  @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 '最后在线 $minutes 分钟前';
  }

  @override
  String get contacts_lastSeenHourAgo => '最后在线 1小时前';

  @override
  String contacts_lastSeenHoursAgo(int hours) {
    return '最后在线 $hours 小时前';
  }

  @override
  String get contacts_lastSeenDayAgo => '最后在线 1天前';

  @override
  String contacts_lastSeenDaysAgo(int days) {
    return '最后在线 $days 天前';
  }

  @override
  String get contact_info => '联系信息';

  @override
  String get contact_settings => '联系人设置';

  @override
  String get contact_telemetry => '遥测数据';

  @override
  String get contact_lastSeen => '最近出现';

  @override
  String get contact_clearChat => '清除聊天记录';

  @override
  String get contact_teleBase => '遥测基站';

  @override
  String get contact_teleBaseSubtitle => '允许共享电池电量和基本遥测数据';

  @override
  String get contact_teleLoc => '遥测位置';

  @override
  String get contact_teleLocSubtitle => '允许共享位置数据';

  @override
  String get contact_teleEnv => '遥测环境';

  @override
  String get contact_teleEnvSubtitle => '允许共享环境传感器数据';

  @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_public => '公共';

  @override
  String channels_via(String path) {
    return 'via $path';
  }

  @override
  String get channels_private => '私有';

  @override
  String get channels_editChannel => '编辑频道';

  @override
  String get channels_muteChannel => '静音频道';

  @override
  String get channels_unmuteChannel => '取消静音频道';

  @override
  String get channels_deleteChannel => '删除频道';

  @override
  String channels_deleteChannelConfirm(String name) {
    return '删除频道 \"$name\"？此操作不可撤销。';
  }

  @override
  String channels_channelDeleteFailed(String name) {
    return '无法删除频道 \"$name\"';
  }

  @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 get channels_cyr2latCompression => 'Cyr2Lat 压缩';

  @override
  String get channels_cyr2latCompressionDscr => '发送时将一些西里尔字符替换为拉丁字符。';

  @override
  String get channels_cyr2latSettingsHeading => 'Cyr2Lat 設定';

  @override
  String get channels_cyr2latSettingsSubheading => '替換清單';

  @override
  String get channels_cyr2latSettingsDscr => '編輯 JSON 字元替換設定檔';

  @override
  String get channels_cyr2latSettingsDialogHint => 'JSON 替換映射表';

  @override
  String channels_cyr2latSettingsDialogWrongJSON(Object error) {
    return 'JSON 格式錯誤：$error';
  }

  @override
  String channels_channelUpdated(String name) {
    return '频道 \"$name\" 已更新';
  }

  @override
  String get settings_cyr2latProfileAdd => '新增 Cyr2Lat 設定檔';

  @override
  String get settings_cyr2latProfileName => '設定檔名稱';

  @override
  String get settings_cyr2latProfileNameEmpty => '設定檔名稱不能為空';

  @override
  String get settings_cyr2latProfileAdded => '設定檔已成功新增';

  @override
  String get settings_cyr2latProfileUpdated => '設定檔已成功更新';

  @override
  String get settings_cyr2latProfileEdit => '編輯 Cyr2Lat 設定檔';

  @override
  String get settings_cyr2latProfileDelete => '刪除 Cyr2Lat 設定檔';

  @override
  String get settings_cyr2latProfileDeleted => '設定檔已成功刪除';

  @override
  String settings_cyr2latProfileDeleteDscr(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 channels_regionSetTo(String region) {
    return '地区：$region';
  }

  @override
  String get channels_regionNotSet => '地区：无';

  @override
  String get channels_regionSelect_Title => '选择一个地区';

  @override
  String get channels_clearRegion => '无碍区域';

  @override
  String get chat_noMessages => '暂无消息';

  @override
  String get chat_sendMessage => '发送消息';

  @override
  String chat_sendMessageTo(String contactName) {
    return '发送消息给 $contactName';
  }

  @override
  String get chat_sendMessageToStart => '发送消息开始对话';

  @override
  String get chat_originalMessageNotFound => '找不到原始消息';

  @override
  String chat_replyingTo(String name) {
    return '正在回复 $name';
  }

  @override
  String chat_replyTo(String name) {
    return '回复 $name';
  }

  @override
  String get chat_location => '位置';

  @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 '重试 $current/$max';
  }

  @override
  String get chat_sendGif => '发送 GIF';

  @override
  String get chat_sendImage => '发送图片';

  @override
  String get chat_imagePickFailed => '无法打开该图片';

  @override
  String get chat_receivedGif => '收到一个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';
  }

  @override
  String debugFrame_flags(String value) {
    return '- 标志：0x$value';
  }

  @override
  String debugFrame_textType(int type, String label) {
    return '- 文本类型：$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 chat_hopsCount(int count) {
    return '$count 跳';
  }

  @override
  String get chat_removePath => '移除路径';

  @override
  String get chat_noPathHistoryYet => '暂无路径历史。\n发送消息以探索路径。';

  @override
  String get chat_pathCleared => '路径已清除。下一条消息将重新路由。';

  @override
  String get chat_fullPath => '完整路径';

  @override
  String get routing_title => '路由';

  @override
  String get routing_modeAuto => '汽车';

  @override
  String get routing_modeFlood => '洪水';

  @override
  String get routing_modeManual => '手册';

  @override
  String get routing_modeAutoHint => '自动选择已知最佳路径，当没有已知路径时，则进行“洪水”搜索。';

  @override
  String get routing_modeFloodHint => '通过所有中继站进行广播。 这种方式最可靠，但占用更多的时间。';

  @override
  String get routing_modeManualHint => '总是按照您设置的路径进行导航。';

  @override
  String get routing_currentRoute => '当前路线';

  @override
  String get routing_directNoHops => '直接连接— 无中继跳';

  @override
  String get routing_noPathYet => '目前还没有找到路径。直到找到路径，才会收到后续消息。';

  @override
  String get routing_floodBroadcast => '通过所有中继器进行广播';

  @override
  String get routing_editPath => '编辑路径';

  @override
  String get routing_forgetPath => '忘记原路';

  @override
  String get routing_knownPaths => '已知的路径';

  @override
  String get routing_knownPathsHint => '点击该路径以切换到它。';

  @override
  String get routing_inUse => '使用中';

  @override
  String get routing_qualityStrong => '强劲的初始阶段';

  @override
  String get routing_qualityGood => '不错的开端';

  @override
  String get routing_qualityFair => '第一次尝试，结果良好';

  @override
  String get routing_qualityWorked => '已完成';

  @override
  String get routing_qualityFlood => '通过新闻报道';

  @override
  String get routing_qualityUntested => '未经测试';

  @override
  String routing_lastWorked(String when) {
    return '工作于 $when';
  }

  @override
  String get routing_neverWorked => '从未得到证实';

  @override
  String routing_deliveryCounts(int successes, int failures) {
    return '$successes delivered, $failures failed';
  }

  @override
  String get routing_floodDelivery => '洪水配送';

  @override
  String get pathEditor_title => '构建路径';

  @override
  String pathEditor_hopCounter(int count) {
    return '$count of 64 hops';
  }

  @override
  String get pathEditor_noHops =>
      '目前还没有添加任何啤酒花。点击下面的“添加”按钮，按顺序添加，或者直接保存，不添加任何啤酒花。';

  @override
  String get pathEditor_addHops => '按照顺序添加啤酒花';

  @override
  String get pathEditor_searchRepeaters => '重复搜索';

  @override
  String get pathEditor_advancedHex => '高级：原始十六进制路径';

  @override
  String get pathEditor_hexLabel => '十六进制前缀';

  @override
  String get pathEditor_hexHelper => '每次跳跃，使用两个十六进制字符，用逗号分隔。';

  @override
  String pathEditor_invalidTokens(String tokens) {
    return '无效：$tokens';
  }

  @override
  String get pathEditor_tooManyHops => '最多 64 个跳跃';

  @override
  String get pathEditor_usePath => '请使用此路径';

  @override
  String get pathEditor_removeHop => '去除啤酒花';

  @override
  String get pathEditor_unknownHop => '未知的重复器';

  @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 '未读：$count';
  }

  @override
  String get chat_markAsUnread => '标记为未读';

  @override
  String get chat_newMessages => '新的消息';

  @override
  String get chat_openLink => '打开链接？';

  @override
  String get chat_openLinkConfirmation => '是否使用浏览器打开此链接？';

  @override
  String get chat_open => '打开';

  @override
  String chat_couldNotOpenLink(String url) {
    return '无法打开链接：$url';
  }

  @override
  String get chat_invalidLink => '无效的链接格式';

  @override
  String get map_title => '节点地图';

  @override
  String get map_searchHint => '搜索节点名称或ID';

  @override
  String get map_activity => '活动';

  @override
  String get map_online => '在线';

  @override
  String get map_recent => '最近';

  @override
  String get map_stale => '过时';

  @override
  String get map_visible => '可见';

  @override
  String get map_hidden => '已隐藏';

  @override
  String get map_centerOnNode => '以节点为中心';

  @override
  String get map_details => '详细信息';

  @override
  String get map_noGps => '无 GPS';

  @override
  String get map_noResults => '未找到匹配的节点';

  @override
  String get map_lineOfSight => '视线';

  @override
  String get map_losScreenTitle => '视线';

  @override
  String get map_noNodesWithLocation => '没有包含位置信息的节点';

  @override
  String get map_nodesNeedGps => '节点需要共享 GPS 坐标才能在地图上显示';

  @override
  String map_nodesCount(int count) {
    return '节点：$count';
  }

  @override
  String map_pinsCount(int count) {
    return '标记：$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 => '标记（私信）';

  @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_type => 'Type';

  @override
  String get map_path => 'Path';

  @override
  String get map_location => 'Location';

  @override
  String get map_estLocation => 'Est. Location';

  @override
  String get map_publicKey => 'Public Key';

  @override
  String get map_publicKeyPrefixHint => 'e.g. ab12';

  @override
  String get map_shareMarkerHere => '在此分享标记';

  @override
  String get map_setAsMyLocation => '设置为我的位置';

  @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 上分享一个位置。此频道是公开的，任何拥有 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_showOverlaps => '重复键重叠';

  @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_showGuessedLocations => '显示猜测的节点位置';

  @override
  String get map_showDiscoveryContacts => '显示发现联系人';

  @override
  String get map_guessedLocation => '猜测的位置';

  @override
  String get map_lastSeenTime => '最后在线时间';

  @override
  String get map_sharedPin => '共享标记';

  @override
  String get map_sharedAt => '已分享';

  @override
  String get map_joinRoom => '加入房间';

  @override
  String get map_manageRepeater => '管理转发节点';

  @override
  String get map_tapToAdd => '点击节点以添加到路径';

  @override
  String get map_runTrace => '运行路径追踪';

  @override
  String get map_runTraceWithReturnPath => '沿着相同的路径返回';

  @override
  String get map_removeLast => '移除最后一个';

  @override
  String get map_pathTraceCancelled => '路径追踪已取消';

  @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 个瓦片';
  }

  @override
  String get mapCache_downloadAction => '下载';

  @override
  String mapCache_cachedTiles(int count) {
    return '已缓存 $count 个瓦片';
  }

  @override
  String mapCache_cachedTilesWithFailed(int downloaded, int failed) {
    return '已缓存 $downloaded 个瓦片（$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 '估计瓦片数：$count';
  }

  @override
  String mapCache_downloadedTiles(int completed, int total) {
    return '已下载 $completed/$total';
  }

  @override
  String get mapCache_downloadTilesButton => '下载瓦片';

  @override
  String get mapCache_clearCacheButton => '清除缓存';

  @override
  String mapCache_failedDownloads(int count) {
    return '下载失败：$count';
  }

  @override
  String get mapCache_cachedTilesLabel => 'Cached tiles';

  @override
  String get mapCache_cachedTileSummaryLabel => 'Cached tile summary';

  @override
  String mapCache_bulkDownloadDisabledForSource(String source) {
    return 'Offline bulk downloads are disabled for $source.';
  }

  @override
  String mapCache_bulkDownloadDisabledInConfig(String source) {
    return 'Offline bulk downloads are disabled for $source in this app configuration.';
  }

  @override
  String mapCache_summarySource(String source) {
    return 'Source: $source';
  }

  @override
  String mapCache_summaryCachedTilesForSource(int count) {
    return 'Cached tiles for source: $count';
  }

  @override
  String mapCache_summaryCachedInSelection(int count) {
    return 'Cached in selected area/zoom: $count';
  }

  @override
  String mapCache_summaryApproxCacheSize(String size) {
    return 'Approx cache size: $size';
  }

  @override
  String mapCache_boundsLabel(
    String north,
    String south,
    String east,
    String west,
  ) {
    return '北 $north, 南 $south, 东 $east, 西 $west';
  }

  @override
  String get time_justNow => '刚才';

  @override
  String time_minutesAgo(int minutes) {
    return '$minutes分钟前';
  }

  @override
  String time_hoursAgo(int hours) {
    return '$hours小时前';
  }

  @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 '尝试 $current/$max';
  }

  @override
  String login_failed(String error) {
    return '登录失败：$error';
  }

  @override
  String get login_failedMessage => '登录失败。可能是密码错误或无法连接到服务器。';

  @override
  String get common_reload => '重新加载';

  @override
  String get common_clear => '清除';

  @override
  String get path_currentPathLabel => '当前路径';

  @override
  String get path_noRepeatersFound => '未找到任何转发节点或房间服务器。';

  @override
  String get repeater_management => '转发节点管理';

  @override
  String get room_management => '房间服务器管理';

  @override
  String get repeater_guest => '重复器信息';

  @override
  String get room_guest => '服务器信息';

  @override
  String get repeater_managementTools => '管理工具';

  @override
  String get repeater_guestTools => '访客工具';

  @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_neighbors => '邻居';

  @override
  String get repeater_neighborsSubtitle => '查看邻居节点（零跳）';

  @override
  String get repeater_settings => '设置';

  @override
  String get repeater_settingsSubtitle => '配置转发节点参数';

  @override
  String get repeater_clockSyncAfterLogin => '登录后，自动同步时钟';

  @override
  String get repeater_clockSyncAfterLoginSubtitle => '在成功登录后，自动发送“时钟同步”指令。';

  @override
  String get repeater_statusTitle => '转发节点状态';

  @override
  String get repeater_routingMode => '路由模式';

  @override
  String get repeater_refresh => '刷新';

  @override
  String get repeater_statusRequestTimeout => '状态请求超时';

  @override
  String repeater_errorLoadingStatus(String error) {
    return '加载状态时出错：$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 => '上次 SNR';

  @override
  String get repeater_noiseFloor => '底噪';

  @override
  String get repeater_txAirtime => '发送空中时间';

  @override
  String get repeater_rxAirtime => '接收空中时间';

  @override
  String get repeater_chanUtil => '频道利用率';

  @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，泛洪：$flood，直连：$direct';
  }

  @override
  String repeater_packetRxTotal(int total, String flood, String direct) {
    return '总计：$total，泛洪：$flood，直连：$direct';
  }

  @override
  String repeater_duplicatesFloodDirect(String flood, String direct) {
    return '泛洪：$flood，直连：$direct';
  }

  @override
  String repeater_duplicatesTotal(int total) {
    return '总计：$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 分钟';
  }

  @override
  String get repeater_floodAdvertInterval => '泛洪广播间隔';

  @override
  String repeater_floodAdvertIntervalHours(int hours) {
    return '$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 => '擦除功能仅可通过串行控制台使用。';

  @override
  String repeater_commandSent(String command) {
    return '命令已发送：$command';
  }

  @override
  String repeater_errorSendingCommand(String error) {
    return '发送命令时出错：$error';
  }

  @override
  String get repeater_confirm => '确认';

  @override
  String get repeater_settingsSaved => '设置保存成功';

  @override
  String get repeater_rxGain => '增强的 RX 增益';

  @override
  String get repeater_rxGainHelper => '更高的灵敏度，更大的电流消耗（仅适用于 SX1262/SX1268）';

  @override
  String get repeater_refreshRxGain => '重新启动增强型 RX 功能';

  @override
  String get repeater_multiAcks => '多重确认';

  @override
  String get repeater_multiAcksSubtitle => '通过多个路径确认消息，以提高传递效率。';

  @override
  String get repeater_refreshMultiAcks => '刷新多个确认';

  @override
  String get repeater_networkHealth => '网络健康';

  @override
  String get repeater_loopDetect => '循环检测';

  @override
  String get repeater_loopDetectHelper => '创建看起来像路由环的“洪水包”';

  @override
  String get repeater_loopDetectOff => '离开';

  @override
  String get repeater_loopDetectMinimal => '最少';

  @override
  String get repeater_loopDetectModerate => '适度的';

  @override
  String get repeater_loopDetectStrict => '严格';

  @override
  String get repeater_dutyCycle => '工作周期';

  @override
  String get repeater_dutyCycleHelper => '最大可使用的空闲时间百分比';

  @override
  String repeater_dutyCyclePercent(int percent) {
    return '$percent%';
  }

  @override
  String get repeater_ownerInfo => '运营商信息';

  @override
  String get repeater_ownerInfoHelper => '此复播器的公共元数据';

  @override
  String get repeater_refreshOwnerInfo => '刷新操作员信息';

  @override
  String get repeater_floodMax => '最大跳跃次数';

  @override
  String get repeater_floodMaxHelper => '一个洪水包中，最大可以传输的跳数 (0-64)';

  @override
  String get repeater_advancedSettings => '高级';

  @override
  String get repeater_advancedSettingsSubtitle => '高级操作员使用的调节旋钮';

  @override
  String get repeater_pathHashMode => '路径哈希模式';

  @override
  String get repeater_pathHashModeHelper =>
      '用于在洪泛路径/环路检测标签中编码此中继器 ID 的字节数。0=1 字节（256 个 ID，最多 64 跳），1=2 字节（65K 个 ID，最多 32 跳），2=3 字节（16M 个 ID，最多 21 跳）。v1.14 之前的固件始终使用 1 字节路径；v1.14 及更新版本可配置为 2 或 3 字节路径。';

  @override
  String get repeater_keySettings => '更改身份密钥';

  @override
  String get repeater_keySettingsSubtitle => '更换公钥/私钥对';

  @override
  String get repeater_prvKey => '私钥';

  @override
  String get repeater_prvKeyHelper => '中继器的新私钥，为一个128位的十六进制字符串。';

  @override
  String get repeater_generatePrvKey => '生成一个随机的密钥对';

  @override
  String get repeater_stopGeneratingPrvKey => '中断密钥对搜索';

  @override
  String get repeater_pubKey => '公钥';

  @override
  String get repeater_pubKeyHelper => '这是与生成的私钥配对的公钥。您不能直接设置此内容。';

  @override
  String get repeater_pubKeyPrefix => '期望的前缀';

  @override
  String repeater_pubKeyPrefixHelper(int tries) {
    return '找到一组以这些十六进制数字开头的公钥。预计尝试次数：$tries';
  }

  @override
  String get repeater_txDelay => '洪水（德克萨斯州）延误';

  @override
  String get repeater_txDelayHelper =>
      '对于洪水流量，重新传输间隔应设置为包的传输时间（0-2，默认值为0.5）的倍数。 较高的值意味着更少的冲突，但传输速度会变慢。';

  @override
  String get repeater_directTxDelay => '直接的 TX 延迟';

  @override
  String get repeater_directTxDelayHelper =>
      '对于直接（非广播）流量，重新传输间隔应设置为包的传输时间（0-2，默认值为0.3）的倍数。';

  @override
  String get repeater_intThresh => '干扰阈值';

  @override
  String get repeater_intThreshHelper =>
      '将阈值传递给射频信号的噪声水平校准，使其能够拒绝高于该水平的干扰。 0 表示禁用——只有在您在嘈杂频段中看到 RX 错误时才启用。';

  @override
  String get repeater_agcResetInterval => 'AGC 恢复间隔';

  @override
  String get repeater_agcResetIntervalHelper =>
      '为了从失控的增益状态中恢复，应该多久重置收音机的自动增益控制？设置为“秒”，每次重置间隔为4秒。将此选项设置为“0”将禁用周期性重置。';

  @override
  String get repeater_actionsTitle => '行动';

  @override
  String get repeater_sendAdvert => '发布防洪广告';

  @override
  String get repeater_sendAdvertSubtitle => '通过网络播放防洪广告';

  @override
  String get repeater_sendAdvertZeroHop => '发送零跳广告';

  @override
  String get repeater_sendAdvertZeroHopSubtitle => '进行单跳广告广播（不使用中继）';

  @override
  String get repeater_clockSync => '现在同步时钟';

  @override
  String get repeater_clockSyncSubtitle => '将手机的时间设置为与中继器同步';

  @override
  String repeater_actionSucceeded(String action) {
    return '$action 成功';
  }

  @override
  String repeater_actionFailed(String action, String error) {
    return '$action 失败：$error';
  }

  @override
  String get repeater_settingsSavedRebootNeeded => '设置已保存 — 重启发射器以应用';

  @override
  String repeater_settingsPartialFailure(String failures) {
    return '部分设置失败：$failures';
  }

  @override
  String repeater_errorSavingSettings(String error) {
    return '保存设置时出错：$error';
  }

  @override
  String get repeater_refreshBasicSettings => '刷新基本设置';

  @override
  String get repeater_refreshRadioSettings => '刷新无线电设置';

  @override
  String get repeater_refreshTxPower => '刷新 TX 功率';

  @override
  String get repeater_refreshPacketForwarding => '刷新包转发';

  @override
  String get repeater_refreshGuestAccess => '刷新访客权限';

  @override
  String get repeater_refreshPrivacyMode => '刷新隐私模式';

  @override
  String repeater_refreshed(String label) {
    return '$label 已刷新';
  }

  @override
  String repeater_errorRefreshing(String label) {
    return '刷新 $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';
  }

  @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_cliQuickClockSync => '同步时钟';

  @override
  String get repeater_cliQuickDiscovery => '发现邻居';

  @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 => '设置 AGC 重置间隔（秒），设为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 => '（实验性）设置接收延迟基数，设为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，权限位：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 => '显示零跳广播收到的其他转发节点列表';

  @override
  String get repeater_cliHelpNeighborRemove => '从邻居列表删除第一个匹配项（通过公钥前缀）';

  @override
  String get repeater_cliHelpRegion => '（仅串口）列出所有定义区域及当前泛洪权限';

  @override
  String get repeater_cliHelpRegionLoad => '特殊多命令调用，以空行结束';

  @override
  String get repeater_cliHelpRegionGet => '搜索指定前缀的区域';

  @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 状态';

  @override
  String get repeater_cliHelpGpsOnOff => '切换 GPS 电源';

  @override
  String get repeater_cliHelpGpsSync => '将节点时间与 GPS 同步';

  @override
  String get repeater_cliHelpGpsSetLoc => '将节点坐标设为 GPS 坐标并保存';

  @override
  String get repeater_cliHelpGpsAdvert => '设置位置广播配置：none/share/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 repeater_getCategory => '获取值';

  @override
  String get repeater_powerMgmt => '电源管理';

  @override
  String get repeater_sensors => '传感器';

  @override
  String get repeater_cliHelpPowerOff => '关闭设备。（不应有任何响应）';

  @override
  String get repeater_cliHelpClkReboot => '将时钟重置为已知的时间点，并重启设备。';

  @override
  String get repeater_cliHelpAdvertZeroHop => '发送无中继广告（仅限于邻居）。';

  @override
  String get repeater_cliHelpStartOta => '在支持的板上启动通过空中进行固件更新。';

  @override
  String get repeater_cliHelpTime => '将设备时钟设置为给定的 Unix 纪元秒。时钟不能倒退。';

  @override
  String get repeater_cliHelpBoard => '显示制造商/硬件标识。';

  @override
  String get repeater_cliHelpDiscoverNeighbors => '向附近的邻居发送节点发现请求。（仅限中继器）';

  @override
  String get repeater_cliHelpPowersaving => '显示节能模式是否已开启或已关闭。';

  @override
  String get repeater_cliHelpPowersavingOnOff => '启用或禁用节能模式（如果支持）。';

  @override
  String get repeater_cliHelpErase => '（仅适用于序列模式）格式化设备的文件系统。清除所有设置和联系人。';

  @override
  String get repeater_cliHelpSetDutyCycle =>
      '设定允许的最大传输时段百分比（1-100）。内部调整空闲时间因子。';

  @override
  String get repeater_cliHelpSetPrvKey =>
      '（仅适用于序列号）替换设备身份私钥。需要重启才能应用。生成一个新的公钥。';

  @override
  String get repeater_cliHelpSetRadioRxGain =>
      '（仅适用于 SX126x 芯片） 启用增强型 RX 增益，以在较高电流下提高灵敏度。';

  @override
  String get repeater_cliHelpSetOwnerInfo => '设置广告中包含的联系人信息字符串。使用 \'|\' 作为换行符。';

  @override
  String get repeater_cliHelpSetPathHashMode =>
      '设置路径哈希模式。 0 = 传统模式，1 = 标准模式，2 = 严格模式。 影响路由路径的匹配方式。';

  @override
  String get repeater_cliHelpSetLoopDetect => '设置路由环检测的灵敏度：关闭、低、中、或高。';

  @override
  String get repeater_cliHelpSetFreq =>
      '（仅限串行模式）快速设置频率。需要重启。 建议使用“设置收音机参数”功能，以便设置完整的收音机参数。';

  @override
  String get repeater_cliHelpSetBridgeChannel =>
      '（仅适用于 ESPNow 桥）设置桥使用的 WiFi 频道（1-14）。';

  @override
  String get repeater_cliHelpGetName => '显示配置的节点名称。';

  @override
  String get repeater_cliHelpGetRole => '显示固件的功能（如：中继器、房间服务器等）。';

  @override
  String get repeater_cliHelpGetPublicKey => '显示设备的公钥。';

  @override
  String get repeater_cliHelpGetPrvKey => '（仅适用于序列号）显示设备的私钥。请将其视为机密信息。';

  @override
  String get repeater_cliHelpGetRepeat => '显示数据包转发（作为中继器）是否已启用或已禁用。';

  @override
  String get repeater_cliHelpGetTx => '显示当前的发射功率（以dBm为单位）。';

  @override
  String get repeater_cliHelpGetFreq => '显示配置的射频频率（以兆赫兹为单位）。';

  @override
  String get repeater_cliHelpGetRadio => '显示完整的无线电参数：频率、带宽、扩频因子、编码速率。';

  @override
  String get repeater_cliHelpGetRadioRxGain => '（仅适用于 SX126x 模块）显示 RX 放大器的状态。';

  @override
  String get repeater_cliHelpGetAf => '显示当前的空闲时间系数。';

  @override
  String get repeater_cliHelpGetDutyCycle => '显示当前允许的占空比（以百分比表示）。';

  @override
  String get repeater_cliHelpGetIntThresh => '显示信道干扰阈值（以dB为单位）。';

  @override
  String get repeater_cliHelpGetAgcResetInterval => '显示 AGC 重置的间隔时间（以秒为单位）。';

  @override
  String get repeater_cliHelpGetMultiAcks => '显示双重确认模式是否已启用（1）或已禁用（0）。';

  @override
  String get repeater_cliHelpGetAllowReadOnly => '显示是否允许访客仅限查看权限。';

  @override
  String get repeater_cliHelpGetAdvertInterval => '显示本地广告的时间间隔，单位为分钟。';

  @override
  String get repeater_cliHelpGetFloodAdvertInterval => '显示洪水广告的播放时间间隔，以小时为单位。';

  @override
  String get repeater_cliHelpGetGuestPassword => '显示已配置的访客密码。';

  @override
  String get repeater_cliHelpGetLat => '显示已配置的纬度。';

  @override
  String get repeater_cliHelpGetLon => '显示已配置的经度。';

  @override
  String get repeater_cliHelpGetRxDelay => '显示 rxdelay 的基本值。';

  @override
  String get repeater_cliHelpGetTxDelay => '显示洪水模式下的传输延迟系数。';

  @override
  String get repeater_cliHelpGetDirectTxDelay => '显示直接模式下的时延系数。';

  @override
  String get repeater_cliHelpGetFloodMax => '显示最大洪水传播次数。';

  @override
  String get repeater_cliHelpGetOwnerInfo => '显示所有者的联系信息。';

  @override
  String get repeater_cliHelpGetPathHashMode => '显示哈希模式（0/1/2）。';

  @override
  String get repeater_cliHelpGetLoopDetect => '显示循环检测的灵敏度。';

  @override
  String get repeater_cliHelpGetAcl => '（仅适用于序列号）列出复用器上的访问控制条目。';

  @override
  String get repeater_cliHelpGetBridgeEnabled => '显示桥是否已启用。';

  @override
  String get repeater_cliHelpGetBridgeDelay => '显示桥梁延迟的时间，单位为毫秒。';

  @override
  String get repeater_cliHelpGetBridgeSource => '显示桥接设备是否接收或发送 RX 或 TX 类型的数据包。';

  @override
  String get repeater_cliHelpGetBridgeBaud => '（仅限 RS232 桥）显示桥的波特率。';

  @override
  String get repeater_cliHelpGetBridgeChannel => '（仅适用于 ESPNow 桥）显示桥的 WiFi 通道。';

  @override
  String get repeater_cliHelpGetBridgeSecret => '（仅适用于 ESPNow 桥）显示桥的共享密钥。';

  @override
  String get repeater_cliHelpGetBootloaderVer => '（仅适用于NRF52）显示引导程序版本。';

  @override
  String get repeater_cliHelpGetAdcMultiplier => '显示 ADC 乘数（电池电压缩放）。';

  @override
  String get repeater_cliHelpGetPwrMgtSupport => '报告董事会是否支持电源管理功能。';

  @override
  String get repeater_cliHelpGetPwrMgtSource => '显示当前的电源：外部电源或电池。';

  @override
  String get repeater_cliHelpGetPwrMgtBootReason => '显示最近的重置和关闭原因。';

  @override
  String get repeater_cliHelpGetPwrMgtBootMv => '显示启动时的电池电压，单位为毫伏 (mV)。';

  @override
  String get repeater_cliHelpSensorGet => '通过按键读取自定义传感器设置。';

  @override
  String get repeater_cliHelpSensorSet => '编写自定义传感器设置。';

  @override
  String get repeater_cliHelpSensorList => '列出所有自定义传感器设置，并按可选的起始索引进行分页显示。';

  @override
  String get repeater_cliHelpRegionDefault => '显示当前默认的区域范围。';

  @override
  String get repeater_cliHelpRegionDefaultSet =>
      '设置默认的区域范围。使用 \"<null>\" 可以清除。';

  @override
  String get repeater_cliHelpRegionListAllowed => '列出允许洪水交通的区域。';

  @override
  String get repeater_cliHelpRegionListDenied => '列出禁止洪水交通的区域。';

  @override
  String get repeater_cliHelpStatsPackets => '（仅显示序列信息）显示数据包级别的统计信息。';

  @override
  String get repeater_cliHelpStatsRadio => '（仅显示序列信息）显示收音机相关统计数据。';

  @override
  String get repeater_cliHelpStatsCore => '（仅显示序列号）显示核心固件统计信息。';

  @override
  String get telemetry_receivedData => '接收到的遥测数据';

  @override
  String get telemetry_requestTimeout => '遥测请求超时';

  @override
  String telemetry_errorLoading(String error) {
    return '加载遥测数据时出错：$error';
  }

  @override
  String get telemetry_noData => '暂无遥测数据';

  @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伏';
  }

  @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 telemetry_digitalInputLabel => '数字输入';

  @override
  String get telemetry_digitalOutputLabel => '数字输出';

  @override
  String get telemetry_analogInputLabel => '模拟输入';

  @override
  String get telemetry_analogOutputLabel => '模拟输出';

  @override
  String get telemetry_genericLabel => '通用传感器';

  @override
  String get telemetry_luminosityLabel => '照度';

  @override
  String get telemetry_presenceLabel => '存在检测';

  @override
  String get telemetry_humidityLabel => '湿度';

  @override
  String get telemetry_accelerometerLabel => '加速度计';

  @override
  String get telemetry_pressureLabel => '气压';

  @override
  String get telemetry_altitudeLabel => '高度';

  @override
  String get telemetry_frequencyLabel => '频率';

  @override
  String get telemetry_percentageLabel => '百分比';

  @override
  String get telemetry_concentrationLabel => '浓度';

  @override
  String get telemetry_powerLabel => '功率';

  @override
  String get telemetry_distanceLabel => '距离';

  @override
  String get telemetry_energyLabel => '能量';

  @override
  String get telemetry_directionLabel => '方向';

  @override
  String get telemetry_timeLabel => '时间';

  @override
  String get telemetry_gyrometerLabel => '陀螺仪';

  @override
  String get telemetry_colourLabel => '颜色';

  @override
  String get telemetry_gpsLabel => 'GPS';

  @override
  String get telemetry_switchLabel => '开关';

  @override
  String get telemetry_polylineLabel => '折线';

  @override
  String telemetry_altitudeValue(String meters) {
    return '$meters m';
  }

  @override
  String telemetry_frequencyValue(String hertz) {
    return '$hertz Hz';
  }

  @override
  String telemetry_pressureValue(String hpa) {
    return '$hpa hPa';
  }

  @override
  String telemetry_luminosityValue(String lux) {
    return '$lux lx';
  }

  @override
  String telemetry_powerValue(String watts) {
    return '$watts W';
  }

  @override
  String telemetry_distanceValue(String meters) {
    return '$meters m';
  }

  @override
  String telemetry_energyValue(String kilowattHours) {
    return '$kilowattHours kWh';
  }

  @override
  String telemetry_directionValue(String degrees) {
    return '$degrees°';
  }

  @override
  String telemetry_concentrationValue(String ppm) {
    return '$ppm ppm';
  }

  @override
  String telemetry_percentageValue(String percent) {
    return '$percent%';
  }

  @override
  String telemetry_analogValue(String value) {
    return '$value';
  }

  @override
  String get telemetry_autoFetchQuantity => '请求次数';

  @override
  String get telemetry_error => '无法获取数据';

  @override
  String get neighbors_receivedData => '已接收邻居信息';

  @override
  String get neighbors_requestTimedOut => '邻居请求超时';

  @override
  String neighbors_errorLoading(String error) {
    return '加载邻居时出错：$error';
  }

  @override
  String get neighbors_repeatersNeighbors => '转发节点的邻居';

  @override
  String get neighbors_noData => '暂无邻居信息';

  @override
  String neighbors_unknownContact(String pubkey) {
    return '未知 $pubkey';
  }

  @override
  String neighbors_heardAgo(String time) {
    return '听到：$time前';
  }

  @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 '观察到的路径 $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 / $total 跳';
  }

  @override
  String channelPath_observedSomeOf(int observed, int total) {
    return '$observed / $total 跳';
  }

  @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 '是否加入社区 \"$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 '社区 \"$name\" 已创建';
  }

  @override
  String community_joined(String name) {
    return '已加入社区 \"$name\"';
  }

  @override
  String get community_qrTitle => '分享社区';

  @override
  String community_qrInstructions(String name) {
    return '扫描此二维码加入 \"$name\"';
  }

  @override
  String get community_hashtagPrivacyHint => '仅社区成员可加入社区标签频道。';

  @override
  String get community_invalidQrCode => '无效的社区二维码';

  @override
  String get community_alreadyMember => '已是成员';

  @override
  String community_alreadyMemberMessage(String name) {
    return '您已是 \"$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 '已退出社区 \"$name\"';
  }

  @override
  String get community_regenerateSecret => '重新生成密钥';

  @override
  String community_regenerateSecretConfirm(String name) {
    return '是否为 \"$name\" 重新生成密钥？所有成员需扫描新的二维码才能继续通信。';
  }

  @override
  String get community_regenerate => '重新生成';

  @override
  String community_secretRegenerated(String name) {
    return '已为 \"$name\" 重新生成密钥';
  }

  @override
  String get community_updateSecret => '更新密钥';

  @override
  String community_secretUpdated(String name) {
    return '“$name”的密钥已更新';
  }

  @override
  String community_scanToUpdateSecret(String name) {
    return '扫描新二维码以更新 \"$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 '为 $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_favorites => '收藏';

  @override
  String get listFilter_addToFavorites => '添加到收藏';

  @override
  String get listFilter_removeFromFavorites => '从收藏中移除';

  @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 pathTrace_clearTooltip => '清除路径';

  @override
  String get losSelectStartEnd => '选择 LOS 的起始节点和结束节点。';

  @override
  String losRunFailed(String error) {
    return '视线检查失败：$error';
  }

  @override
  String get losClearAllPoints => '清除所有点';

  @override
  String get losRunToViewElevationProfile => '运行 LOS 查看高程剖面';

  @override
  String get losMenuTitle => '服务水平菜单';

  @override
  String get losMenuSubtitle => '点击节点或长按地图以获取自定义点';

  @override
  String get losShowDisplayNodes => '显示显示节点';

  @override
  String get losCustomPoints => '自定义积分';

  @override
  String losCustomPointLabel(int index) {
    return '自定义 $index';
  }

  @override
  String get losPointA => 'A点';

  @override
  String get losPointB => 'B点';

  @override
  String losAntennaA(String value, String unit) {
    return '天线 A： $value $unit';
  }

  @override
  String losAntennaB(String value, String unit) {
    return '天线 B：$value $unit';
  }

  @override
  String get losRun => '运行视距';

  @override
  String get losNoElevationData => '无海拔数据';

  @override
  String losProfileClear(
    String distance,
    String distanceUnit,
    String clearance,
    String heightUnit,
  ) {
    return '$distance $distanceUnit，清除 LOS，最小间隙 $clearance $heightUnit';
  }

  @override
  String losProfileBlocked(
    String distance,
    String distanceUnit,
    String obstruction,
    String heightUnit,
  ) {
    return '$distance $distanceUnit，被 $obstruction $heightUnit 阻止';
  }

  @override
  String get losStatusChecking => '洛斯：正在检查...';

  @override
  String get losStatusNoData => 'LOS：无数据';

  @override
  String losStatusSummary(int clear, int total, int blocked, int unknown) {
    return 'LOS：$clear/$total 清除，$blocked 阻塞，$unknown 未知';
  }

  @override
  String get losErrorElevationUnavailable => '一个或多个样本的海拔数据不可用。';

  @override
  String get losErrorInvalidInput => '用于 LOS 计算的点/高程数据无效。';

  @override
  String get losRenameCustomPoint => '重命名自定义点';

  @override
  String get losPointName => '点名称';

  @override
  String get losShowPanelTooltip => '显示 LOS 面板';

  @override
  String get losHidePanelTooltip => '隐藏 LOS 面板';

  @override
  String get losElevationAttribution => '高程数据：Open-Meteo (CC BY 4.0)';

  @override
  String get losLegendRadioHorizon => '无线电地平线';

  @override
  String get losLegendLosBeam => '视距波束';

  @override
  String get losLegendTerrain => '地形';

  @override
  String get losBlockedSpotsTitle => '被占用区域';

  @override
  String get losBlockedSpotsHint => '点击地图上的某个被遮盖的区域，以突出显示该区域。';

  @override
  String losBlockedSpotChip(
    String distance,
    String distanceUnit,
    String obstruction,
    String heightUnit,
  ) {
    return '$distance $distanceUnit • $obstruction $heightUnit';
  }

  @override
  String get losSelectedObstructionTitle => '选择性阻碍';

  @override
  String losSelectedObstructionDetails(
    String obstruction,
    String heightUnit,
    String distanceFromA,
    String distanceUnit,
    String distanceFromB,
  ) {
    return 'Blocked by $obstruction $heightUnit, $distanceFromA from A and $distanceFromB from B ($distanceUnit).';
  }

  @override
  String get losFrequencyLabel => '频率';

  @override
  String get losFrequencyInfoTooltip => '查看计算详情';

  @override
  String get losFrequencyDialogTitle => '无线电地平线计算';

  @override
  String losFrequencyDialogDescription(
    double baselineK,
    double baselineFreq,
    double frequencyMHz,
    double kFactor,
  ) {
    return '从 $baselineFreq MHz 处的 k=$baselineK 开始，计算调整当前 $frequencyMHz MHz 频段的 k 因子，该因子定义了弯曲的无线电范围上限。';
  }

  @override
  String get contacts_pathTrace => '路径追踪';

  @override
  String get contacts_ping => '乒';

  @override
  String get contacts_repeaterPathTrace => 'Trace 转发节点';

  @override
  String get contacts_repeaterPing => 'Ping 转发节点';

  @override
  String get contacts_roomPathTrace => 'Trace 房间服务器';

  @override
  String get contacts_roomPing => 'Ping 房间服务器';

  @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 地图数据导出';

  @override
  String get snrIndicator_nearByRepeaters => '附近的重复器';

  @override
  String get snrIndicator_lastSeen => '最近访问';

  @override
  String get contactsSettings_title => '联系人设置';

  @override
  String get contactsSettings_autoAddTitle => '自动发现';

  @override
  String get contactsSettings_otherTitle => '其他联系人相关设置';

  @override
  String get contactsSettings_autoAddUsersTitle => '自动添加用户';

  @override
  String get contactsSettings_autoAddUsersSubtitle => '允许伴侣自动添加发现的用户';

  @override
  String get contactsSettings_autoAddRepeatersTitle => '自动添加重复器';

  @override
  String get contactsSettings_autoAddRepeatersSubtitle => '允许伴侣自动添加发现的重复器';

  @override
  String get contactsSettings_autoAddRoomServersTitle => '自动添加房间服务器';

  @override
  String get contactsSettings_autoAddRoomServersSubtitle => '允许伴侣自动添加发现的房间服务器';

  @override
  String get contactsSettings_autoAddSensorsTitle => '自动添加传感器';

  @override
  String get contactsSettings_autoAddSensorsSubtitle => '允许伴侣自动添加发现的传感器';

  @override
  String get contactsSettings_overwriteOldestTitle => '覆盖最旧的';

  @override
  String get contactsSettings_overwriteOldestSubtitle =>
      '当联系人列表已满时，将替换最老的非收藏联系人。';

  @override
  String get discoveredContacts_Title => '已发现的联系人';

  @override
  String get discoveredContacts_noMatching => '没有匹配的联系人';

  @override
  String get discoveredContacts_searchHint => '搜索已发现的联系人';

  @override
  String get discoveredContacts_contactAdded => '联系人已添加';

  @override
  String get discoveredContacts_addContact => '添加联系人';

  @override
  String get discoveredContacts_copyContact => '复制联系人到剪贴板';

  @override
  String get discoveredContacts_deleteContact => '删除联系人';

  @override
  String get discoveredContacts_deleteContactAll => '删除所有发现的联系人';

  @override
  String get discoveredContacts_deleteContactAllContent => '您确定要删除所有发现的联系人吗？';

  @override
  String get chat_sendCooldown => '请稍等片刻后再尝试发送。';

  @override
  String get appSettings_jumpToOldestUnread => '跳转到最旧、未读的文章';

  @override
  String get appSettings_jumpToOldestUnreadSubtitle =>
      '在打开包含未读消息的聊天时，请滚动到第一个未读消息，而不是最新的消息。';

  @override
  String get appSettings_languageHu => '匈牙利';

  @override
  String get appSettings_languageJa => '日语';

  @override
  String get appSettings_languageKo => '韩语';

  @override
  String get radioStats_tooltip => '无线电和网状结构统计数据';

  @override
  String get radioStats_screenTitle => '广播统计数据';

  @override
  String get radioStats_notConnected => '连接到设备以查看收音机统计信息。';

  @override
  String get radioStats_firmwareTooOld => '使用无线电统计功能需要配合使用 v8 或更高版本的固件。';

  @override
  String get radioStats_waiting => '正在等待数据…';

  @override
  String radioStats_noiseFloor(int noiseDbm) {
    return '噪声水平：$noiseDbm dBm';
  }

  @override
  String radioStats_lastRssi(int rssiDbm) {
    return '上次 RSSI 值：$rssiDbm dBm';
  }

  @override
  String radioStats_lastSnr(String snr) {
    return '上次 SNR：$snr dB';
  }

  @override
  String radioStats_txAir(int seconds) {
    return 'TX 频道播出时间（总时长）：$seconds 秒';
  }

  @override
  String radioStats_rxAir(int seconds) {
    return 'RX 使用时长（总时长）：$seconds 秒';
  }

  @override
  String get radioStats_chartCaption => '近期的噪声水平（dBm）。';

  @override
  String radioStats_stripNoise(int noiseDbm) {
    return '噪声水平：$noiseDbm dBm';
  }

  @override
  String get radioStats_stripWaiting => '正在获取收音机数据…';

  @override
  String get radioStats_settingsTile => '广播统计数据';

  @override
  String get radioStats_settingsSubtitle => '噪声水平、RSSI、信噪比和空中时间';

  @override
  String get translation_title => '翻译';

  @override
  String get imageMessages_enableTitle => '启用图片消息';

  @override
  String get imageMessages_enableSubtitle => '通过网格发送图像。需要一次性下载图像模型。';

  @override
  String get imageMessages_modelSectionTitle => '图像模型';

  @override
  String get imageMessages_downloadModel => '下载';

  @override
  String get imageMessages_cancelDownload => '取消';

  @override
  String get imageMessages_removeModel => '移除模型';

  @override
  String get imageMessages_modelReady => '准备就绪';

  @override
  String get imageMessages_modelNotPublished => '尚未发布——此版本无法下载该内容。';

  @override
  String get imageMessages_downloadFailed => '图像模型无法下载。';

  @override
  String get imageMessages_autoProcessTitle => '自动处理图像';

  @override
  String get imageMessages_autoProcessSubtitle =>
      '每次图像到达后立即重建，每次需要约2GB的内存；若想关闭重建功能，可通过点击取消开启。';

  @override
  String get translation_enableTitle => '启用翻译功能';

  @override
  String get translation_enableSubtitle => '翻译收到的消息，并允许在发送前进行翻译。';

  @override
  String get translation_composerTitle => '在发送之前进行翻译';

  @override
  String get translation_composerSubtitle => '控制作曲家翻译图标的默认状态。';

  @override
  String get translation_autoIncomingTitle => '自动翻译消息';

  @override
  String get translation_autoIncomingSubtitle => '自动为通知以及聊天或频道翻译消息。';

  @override
  String get translation_translateMessage => '翻译消息';

  @override
  String get translation_targetLanguage => '目标语言';

  @override
  String get translation_useAppLanguage => '使用应用程序语言';

  @override
  String get translation_downloadedModelLabel => '下载的模型';

  @override
  String get translation_presetModelLabel => '预设的 Hugging Face 模型';

  @override
  String get translation_manualUrlLabel => '手动模型网址';

  @override
  String get translation_downloadModel => '下载模型';

  @override
  String get translation_downloading => '正在下载...';

  @override
  String get translation_working => '工作中...';

  @override
  String get translation_stop => '停止';

  @override
  String get translation_mergingChunks => '将下载的片段合并成最终文件...';

  @override
  String get translation_downloadedModels => '下载的模型';

  @override
  String get translation_deleteModel => '删除模型';

  @override
  String get translation_modelDownloaded => '翻译模型已下载。';

  @override
  String get translation_downloadStopped => '下载已停止。';

  @override
  String translation_downloadFailed(String error) {
    return '下载失败：$error';
  }

  @override
  String get translation_enterUrlFirst => '首先，请输入模型的 URL。';

  @override
  String get scanner_linuxPairingShowPin => '显示PIN码';

  @override
  String get scanner_linuxPairingHidePin => '隐藏 PIN';

  @override
  String get scanner_linuxPairingPinTitle => '蓝牙配对 PIN';

  @override
  String scanner_linuxPairingPinPrompt(String deviceName) {
    return '输入 $deviceName 的 PIN 码（如果为空，则留空）。';
  }

  @override
  String get translation_messageTranslation => '消息翻译';

  @override
  String get translation_translateBeforeSending => '在发送前进行翻译';

  @override
  String get translation_composerEnabledHint => '消息将在发送前进行翻译。';

  @override
  String get translation_composerDisabledHint => '使用原始的打字方式发送消息。';

  @override
  String translation_translateTo(String language) {
    return '翻译成 $language';
  }

  @override
  String get translation_translationOptions => '翻译选项';

  @override
  String get translation_systemLanguage => '系统语言';

  @override
  String get background_serviceTitle => 'MeshCore running';

  @override
  String get background_serviceText => 'Keeping BLE connected';

  @override
  String appSettings_translationModelDeleted(String name) {
    return 'Deleted $name';
  }

  @override
  String appSettings_translationModelDeleteFailed(String error) {
    return 'Failed to delete: $error';
  }

  @override
  String channels_channelUpdateFailed(String error) {
    return 'Failed to update channel: $error';
  }

  @override
  String get contact_typeChat => 'Chat';

  @override
  String get contact_typeRepeater => 'Repeater';

  @override
  String get contact_typeRoom => 'Room';

  @override
  String get contact_typeSensor => 'Sensor';

  @override
  String get contact_typeUnknown => 'Unknown';

  @override
  String get map_zoomIn => '放大';

  @override
  String get map_zoomOut => '放大';

  @override
  String get map_centerMap => '中心地图';

  @override
  String get chrome_bluetoothRequiresChromium =>
      'Web Bluetooth 需要 Chromium 浏览器';

  @override
  String channels_communityShortId(String id) {
    return 'ID：$id...';
  }

  @override
  String get pathTrace_legendGpsConfirmed => '通过GPS确认';

  @override
  String get pathTrace_legendInferred => '推测的位置';

  @override
  String get pathMap_viewSingle => '单条';

  @override
  String get pathMap_viewCombined => '综合';

  @override
  String get pathMap_play => '播放';

  @override
  String get pathMap_pause => '暂停';

  @override
  String get pathMap_replay => '重播';

  @override
  String get pathMap_stepBack => '上一跳';

  @override
  String get pathMap_stepForward => '下一跳';

  @override
  String get pathMap_animationOn => '显示数据包动画';

  @override
  String get pathMap_animationOff => '隐藏数据包动画';

  @override
  String pathMap_hopOf(int current, int total) {
    return '第 $current 跳，共 $total 跳';
  }

  @override
  String pathMap_observedPaths(int count) {
    return '观测到的路径：$count';
  }

  @override
  String get pathMap_primary => '主路径';

  @override
  String pathMap_alternate(int index) {
    return '备用 $index';
  }

  @override
  String pathMap_hopCount(int count) {
    String _temp0 = intl.Intl.pluralLogic(
      count,
      locale: localeName,
      other: '$count 跳',
      one: '1 跳',
    );
    return '$_temp0';
  }

  @override
  String pathMap_gpsCount(int confirmed, int total) {
    return '$confirmed/$total GPS';
  }

  @override
  String get pathMap_legendShared => '共享路段';

  @override
  String get pathMap_legendEstimated => '估算路段';

  @override
  String pathMap_sharedNodeCount(int count) {
    return '已被 $count 条路径使用';
  }

  @override
  String pathMap_partialAnimation(int count) {
    String _temp0 = intl.Intl.pluralLogic(
      count,
      locale: localeName,
      other: '$count 跳无位置信息 — 显示的路径不完整',
      one: '1 跳无位置信息 — 显示的路径不完整',
    );
    return '$_temp0';
  }

  @override
  String get pathMap_showAllPaths => '显示全部';

  @override
  String get pathMap_hidePath => '隐藏路径';

  @override
  String get pathMap_showPath => '显示路径';

  @override
  String get pathMap_collapsePanel => '收起面板';

  @override
  String get pathMap_expandPanel => '展开面板';

  @override
  String get pathMap_noLocation => '无位置';

  @override
  String get pathMap_followPacket => '锁定视图跟随数据包';

  @override
  String get pathMap_unfollowPacket => '解锁视图跟随';

  @override
  String get imageSend_title => '发送图片';

  @override
  String get imageSend_cropNote => '调整大小至512 × 512 · 宽高比未保留';

  @override
  String get imageSend_originalSize => '原文';

  @override
  String get imageSend_onAirSize => '直播中';

  @override
  String get imageSend_quality => '质量';

  @override
  String get imageSend_qualityStandard => '标准';

  @override
  String get imageSend_qualityHigh => '高';

  @override
  String get imageSend_packetsLabel => '数据包';

  @override
  String get imageSend_airtimeLabel => '播出时间';

  @override
  String get imageSend_sizeLabel => '有效载荷';

  @override
  String imageSend_packetsCount(int count) {
    String _temp0 = intl.Intl.pluralLogic(
      count,
      locale: localeName,
      other: '个数据包',
      one: '个数据包',
    );
    return '$count $_temp0';
  }

  @override
  String imageSend_range(String min, String max) {
    return '$min–$max';
  }

  @override
  String get imageSend_unknownValue => '—';

  @override
  String get imageSend_radioUnknownTitle => '无线电设置未知';

  @override
  String get imageSend_radioUnknownBody => '连接设备以计算播出时间。';

  @override
  String get imageSend_longSendTitle => '长距离传输';

  @override
  String imageSend_longSendBody(String duration) {
    return '这将维持频道大约 $duration 时间。';
  }

  @override
  String get imageSend_floodNote => '洪水路由：每个中继站都会转发每个数据包，因此信道比这段时间更长地处于繁忙状态。';

  @override
  String get imageSend_parityTitle => '恢复包';

  @override
  String get imageSend_paritySubtitle =>
      '多一个数据包。群发消息不被确认，因此如果某个数据包丢失，接收方可以重新构建图像。';

  @override
  String get imageSend_send => '发送';

  @override
  String get imageSend_cancel => '取消';

  @override
  String get imageSend_encodeFailed => '此图像无法编码。';

  @override
  String get imageSend_codecDownloading => '图像模型仍在下载中。';

  @override
  String get imageSend_codecUnavailable => '此设备无法发送图片。';

  @override
  String get imageSend_codecDisabled => '图片消息在设置中已关闭。';

  @override
  String get imageSend_deviceUnsupported =>
      '此无线电无法发送图像数据包。请连接运行伴侣固件13或更高版本的设备。';

  @override
  String get imageSend_directMessagesUnsupported =>
      '图片作为群组数据传输，因此只能发送到频道，而不能直接发送给个人。';

  @override
  String get imageSend_tooLarge => '该图像编码的数据包数量超过了网格格式所允许的范围。';

  @override
  String imageSend_sentConfirmation(int count) {
    String _temp0 = intl.Intl.pluralLogic(
      count,
      locale: localeName,
      other: '个数据包',
      one: '个数据包',
    );
    return '图像已作为 $count $_temp0 发送。';
  }

  @override
  String imageSend_sendFailed(String error) {
    return '无法发送图片：$error';
  }

  @override
  String imageSend_sendingProgress(int sent, int total) {
    return '发送图像 — 已发送 $sent 包含 $total';
  }

  @override
  String receivedImage_senderPrefix(String prefix) {
    return '节点 $prefix';
  }

  @override
  String receivedImage_incoming(int received, int total) {
    return '已收到的 $received 个包含在 $total 个包裹中';
  }

  @override
  String get receivedImage_queued => '等待解码';

  @override
  String get receivedImage_tapToDecode => '点击解锁';

  @override
  String get receivedImage_decoding => '重建……大约1秒';

  @override
  String receivedImage_incomplete(int received, int total) {
    return '图片不完整 — $received 已收到 $total 个数据包';
  }

  @override
  String get receivedImage_corrupt => '图像无法重建';

  @override
  String get receivedImage_decoderMissing => '收到图片 — 图像解码失败';

  @override
  String get receivedImage_evicted => '图片已不再存储';

  @override
  String get receivedImage_retry => '再试一次';

  @override
  String get receivedImage_decodeAgain => '重新解码';

  @override
  String get receivedImage_openSettings => '建立';

  @override
  String get receivedImage_tapToProcess => '点击处理';

  @override
  String receivedImage_awaiting(int bytes, int packets) {
    String _temp0 = intl.Intl.pluralLogic(
      packets,
      locale: localeName,
      other: '个数据包',
      one: '个数据包',
    );
    return '$bytes 字节 · $packets $_temp0';
  }

  @override
  String imageSend_secondsValue(String seconds) {
    return '$seconds 秒';
  }

  @override
  String imageSend_minutesSecondsValue(String minutes, String seconds) {
    return '$minutes 分 $seconds 秒';
  }
}
