const zh: Record<string, string> = {
  // Common
  'common.save': '保存',
  'common.showMore': '显示更多',
  'common.showLess': '收起',
  'common.cancel': '取消',
  'common.clear': '清除',
  'common.delete': '删除',
  'common.edit': '编辑',
  'common.add': '添加',
  'common.loading': '加载中...',
  'common.import': '导入',
  'common.select': '选择',
  'common.selectAll': '全选',
  'common.deselectAll': '取消全选',
  'common.error': '错误',
  'common.unknownError': '未知错误',
  'common.tooManyAttempts': '尝试次数过多，请稍后再试。',
  'common.back': '返回',
  'common.all': '全部',
  'common.close': '关闭',
  'common.open': '打开',
  'common.upload': '上传',
  'common.search': '搜索',
  'common.confirm': '确认',
  'common.ok': '确定',
  'common.yes': '是',
  'common.no': '否',
  'common.or': '或',
  'common.none': '无',
  'common.date': '日期',
  'common.rename': '重命名',
  'common.discardChanges': '放弃更改',
  'common.discard': '放弃',
  'common.name': '名称',
  'common.email': '邮箱',
  'common.password': '密码',
  'common.saving': '保存中...',
  'common.saved': '已保存',
  'common.expand': '展开',
  'common.collapse': '折叠',
  'trips.memberRemoved': '{username} 已移除',
  'trips.memberRemoveError': '移除失败',
  'trips.memberAdded': '{username} 已添加',
  'trips.memberAddError': '添加失败',
  'trips.reminder': '提醒',
  'trips.reminderNone': '无',
  'trips.reminderDay': '天',
  'trips.reminderDays': '天',
  'trips.reminderCustom': '自定义',
  'trips.reminderDaysBefore': '天前提醒',
  'trips.reminderDisabledHint': '旅行提醒已禁用。请在管理 > 设置 > 通知中启用。',
  'common.update': '更新',
  'common.change': '修改',
  'common.uploading': '上传中…',
  'common.backToPlanning': '返回规划',
  'common.reset': '重置',

  // Navbar
  'nav.trip': '旅行',
  'nav.share': '分享',
  'nav.settings': '设置',
  'nav.admin': '管理',
  'nav.logout': '退出登录',
  'nav.lightMode': '浅色模式',
  'nav.darkMode': '深色模式',
  'nav.autoMode': '自动模式',
  'nav.administrator': '管理员',

  // Dashboard
  'dashboard.title': '我的旅行',
  'dashboard.subtitle.loading': '加载旅行中...',
  'dashboard.subtitle.trips': '{count} 次旅行（{archived} 已归档）',
  'dashboard.subtitle.empty': '开始你的第一次旅行',
  'dashboard.subtitle.activeOne': '{count} 个进行中的旅行',
  'dashboard.subtitle.activeMany': '{count} 个进行中的旅行',
  'dashboard.subtitle.archivedSuffix': ' · {count} 已归档',
  'dashboard.newTrip': '新建旅行',
  'dashboard.gridView': '网格视图',
  'dashboard.listView': '列表视图',
  'dashboard.currency': '货币',
  'dashboard.timezone': '时区',
  'dashboard.localTime': '本地',
  'dashboard.timezoneCustomTitle': '自定义时区',
  'dashboard.timezoneCustomLabelPlaceholder': '标签（可选）',
  'dashboard.timezoneCustomTzPlaceholder': '如 America/New_York',
  'dashboard.timezoneCustomAdd': '添加',
  'dashboard.timezoneCustomErrorEmpty': '请输入时区标识符',
  'dashboard.timezoneCustomErrorInvalid': '无效的时区。请使用 Europe/Berlin 这样的格式',
  'dashboard.timezoneCustomErrorDuplicate': '已添加',
  'dashboard.emptyTitle': '暂无旅行',
  'dashboard.emptyText': '创建你的第一次旅行，开始规划吧！',
  'dashboard.emptyButton': '创建第一次旅行',
  'dashboard.nextTrip': '下次旅行',
  'dashboard.shared': '共享',
  'dashboard.sharedBy': '由 {name} 分享',
  'dashboard.days': '天',
  'dashboard.places': '地点',
  'dashboard.members': '旅伴',
  'dashboard.archive': '归档',
  'dashboard.copyTrip': '复制',
  'dashboard.copySuffix': '副本',
  'dashboard.restore': '恢复',
  'dashboard.archived': '已归档',
  'dashboard.status.ongoing': '进行中',
  'dashboard.status.today': '今天',
  'dashboard.status.tomorrow': '明天',
  'dashboard.status.past': '已结束',
  'dashboard.status.daysLeft': '还剩 {count} 天',
  'dashboard.toast.loadError': '加载旅行失败',
  'dashboard.toast.created': '旅行创建成功！',
  'dashboard.toast.createError': '创建旅行失败',
  'dashboard.toast.updated': '旅行已更新！',
  'dashboard.toast.updateError': '更新旅行失败',
  'dashboard.toast.deleted': '旅行已删除',
  'dashboard.toast.deleteError': '删除旅行失败',
  'dashboard.toast.archived': '旅行已归档',
  'dashboard.toast.archiveError': '归档旅行失败',
  'dashboard.toast.restored': '旅行已恢复',
  'dashboard.toast.restoreError': '恢复旅行失败',
  'dashboard.toast.copied': '旅行已复制！',
  'dashboard.toast.copyError': '复制旅行失败',
  'dashboard.confirm.delete': '删除旅行「{title}」？所有地点和计划将被永久删除。',
  'dashboard.editTrip': '编辑旅行',
  'dashboard.createTrip': '创建新旅行',
  'dashboard.tripTitle': '标题',
  'dashboard.tripTitlePlaceholder': '如：日本夏日之旅',
  'dashboard.tripDescription': '描述',
  'dashboard.tripDescriptionPlaceholder': '这次旅行是关于什么的？',
  'dashboard.startDate': '开始日期',
  'dashboard.endDate': '结束日期',
  'dashboard.dayCount': '天数',
  'dashboard.dayCountHint': '未设置旅行日期时要规划的天数。',
  'dashboard.noDateHint': '未设置日期——将默认创建 7 天。你可以随时修改。',
  'dashboard.coverImage': '封面图片',
  'dashboard.addCoverImage': '添加封面图片',
  'dashboard.addMembers': '旅伴',
  'dashboard.addMember': '添加成员',
  'dashboard.coverSaved': '封面图片已保存',
  'dashboard.coverUploadError': '上传失败',
  'dashboard.coverRemoveError': '移除失败',
  'dashboard.titleRequired': '标题为必填项',
  'dashboard.endDateError': '结束日期必须晚于开始日期',

  // Settings
  'settings.title': '设置',
  'settings.subtitle': '配置你的个人设置',
  'settings.tabs.display': '显示',
  'settings.tabs.map': '地图',
  'settings.tabs.notifications': '通知',
  'settings.tabs.integrations': '集成',
  'settings.tabs.account': '账户',
  'settings.tabs.offline': 'Offline',
  'settings.tabs.about': '关于',
  'settings.map': '地图',
  'settings.mapTemplate': '地图模板',
  'settings.mapTemplatePlaceholder.select': '选择模板...',
  'settings.mapDefaultHint': '留空则使用 OpenStreetMap（默认）',
  'settings.mapTemplatePlaceholder': 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
  'settings.mapHint': '地图瓦片 URL 模板',
  'settings.mapProvider': '地图提供商',
  'settings.mapProviderHint': '影响行程规划和旅程地图。Atlas 始终使用 Leaflet。',
  'settings.mapLeafletSubtitle': '经典 2D，任何栅格瓦片',
  'settings.mapMapboxSubtitle': '矢量瓦片、3D 建筑和地形',
  'settings.mapExperimental': '实验性',
  'settings.mapMapboxToken': 'Mapbox 访问令牌',
  'settings.mapMapboxTokenHint': '公共令牌 (pk.*) 来自',
  'settings.mapMapboxTokenLink': 'mapbox.com → 访问令牌',
  'settings.mapStyle': '地图样式',
  'settings.mapStylePlaceholder': '选择 Mapbox 样式',
  'settings.mapStyleHint': '预设或您自己的 mapbox://styles/USER/ID URL',
  'settings.map3dBuildings': '3D 建筑和地形',
  'settings.map3dHint': '倾斜 + 真实 3D 建筑拉伸 — 适用于所有样式，包括卫星。',
  'settings.mapHighQuality': '高画质模式',
  'settings.mapHighQualityHint': '抗锯齿 + 地球投影，带来更清晰的边缘和更真实的世界视图。',
  'settings.mapHighQualityWarning': '可能影响低端设备的性能。',
  'settings.mapTipLabel': '提示：',
  'settings.mapTip': '右键点击并拖动以旋转/倾斜地图。中键点击添加地点（右键用于旋转）。',
  'settings.latitude': '纬度',
  'settings.longitude': '经度',
  'settings.saveMap': '保存地图',
  'settings.apiKeys': 'API 密钥',
  'settings.mapsKey': 'Google Maps API 密钥',
  'settings.mapsKeyHint': '用于地点搜索。需要 Places API (New)。在 console.cloud.google.com 获取',
  'settings.weatherKey': 'OpenWeatherMap API 密钥',
  'settings.weatherKeyHint': '用于天气数据。在 openweathermap.org/api 免费获取',
  'settings.keyPlaceholder': '输入密钥...',
  'settings.configured': '已配置',
  'settings.saveKeys': '保存密钥',
  'settings.display': '显示',
  'settings.colorMode': '颜色模式',
  'settings.light': '浅色',
  'settings.dark': '深色',
  'settings.auto': '自动',
  'settings.language': '语言',
  'settings.temperature': '温度单位',
  'settings.timeFormat': '时间格式',
  'settings.routeCalculation': '路线计算',
  'settings.blurBookingCodes': '模糊预订代码',
  'settings.notifications': '通知',
  'settings.notifyTripInvite': '旅行邀请',
  'settings.notifyBookingChange': '预订变更',
  'settings.notifyTripReminder': '旅行提醒',
  'settings.notifyTodoDue': '待办事项即将到期',
  'settings.notifyVacayInvite': 'Vacay 融合邀请',
  'settings.notifyPhotosShared': '共享照片 (Immich)',
  'settings.notifyCollabMessage': '聊天消息 (Collab)',
  'settings.notifyPackingTagged': '行李清单：分配',
  'settings.notifyWebhook': 'Webhook 通知',
  'settings.notificationsDisabled': '通知尚未配置。请联系管理员启用电子邮件或 Webhook 通知。',
  'settings.notificationsActive': '活跃频道',
  'settings.notificationsManagedByAdmin': '通知事件由管理员配置。',
  'admin.notifications.title': '通知',
  'admin.notifications.hint': '选择一个通知渠道。一次只能激活一个。',
  'admin.notifications.none': '已禁用',
  'admin.notifications.email': '电子邮件 (SMTP)',
  'admin.notifications.webhook': 'Webhook',
  'admin.notifications.save': '保存通知设置',
  'admin.notifications.saved': '通知设置已保存',
  'admin.notifications.testWebhook': '发送测试 Webhook',
  'admin.notifications.testWebhookSuccess': '测试 Webhook 发送成功',
  'admin.notifications.testWebhookFailed': '测试 Webhook 发送失败',
  'admin.smtp.title': '邮件与通知',
  'admin.smtp.hint': '用于发送电子邮件通知的 SMTP 配置。',
  'admin.smtp.testButton': '发送测试邮件',
  'admin.webhook.hint': '向外部 Webhook 发送通知（Discord、Slack 等）。',
  'admin.smtp.testSuccess': '测试邮件发送成功',
  'admin.smtp.testFailed': '测试邮件发送失败',
  'dayplan.icsTooltip': '导出日历 (ICS)',
  'share.linkTitle': '公开链接',
  'share.linkHint': '创建一个链接，任何人无需登录即可查看此旅行。仅可查看，无法编辑。',
  'share.createLink': '创建链接',
  'share.deleteLink': '删除链接',
  'share.createError': '无法创建链接',
  'common.copy': '复制',
  'common.copied': '已复制',
  'share.permMap': '地图与计划',
  'share.permBookings': '预订',
  'share.permPacking': '行李',
  'shared.expired': '链接已过期或无效',
  'shared.expiredHint': '此共享旅行链接已失效。',
  'shared.readOnly': '只读共享视图',
  'shared.tabPlan': '计划',
  'shared.tabBookings': '预订',
  'shared.tabPacking': '行李',
  'shared.tabBudget': '预算',
  'shared.tabChat': '聊天',
  'shared.days': '天',
  'shared.places': '个地点',
  'shared.other': '其他',
  'shared.totalBudget': '总预算',
  'shared.messages': '条消息',
  'shared.sharedVia': '通过以下分享',
  'shared.confirmed': '已确认',
  'shared.pending': '待确认',
  'share.permBudget': '预算',
  'share.permCollab': '聊天',
  'settings.on': '开',
  'settings.off': '关',
  'settings.mcp.title': 'MCP 配置',
  'settings.mcp.endpoint': 'MCP 端点',
  'settings.mcp.clientConfig': '客户端配置',
  'settings.mcp.clientConfigHint': '将 <your_token> 替换为下方列表中的 API 令牌。npx 的路径可能需要根据您的系统进行调整（例如 Windows 上为 C:\\PROGRA~1\\nodejs\\npx.cmd）。',
  'settings.mcp.clientConfigHintOAuth': '将 <your_client_id> 和 <your_client_secret> 替换为上方创建的 OAuth 2.1 客户端凭据。首次连接时，mcp-remote 将打开浏览器完成授权。npx 的路径可能需要根据您的系统进行调整（例如 Windows 上为 C:\\PROGRA~1\\nodejs\\npx.cmd）。',
  'settings.mcp.copy': '复制',
  'settings.mcp.copied': '已复制！',
  'settings.mcp.apiTokens': 'API 令牌',
  'settings.mcp.createToken': '创建新令牌',
  'settings.mcp.noTokens': '暂无令牌，请创建一个以连接 MCP 客户端。',
  'settings.mcp.tokenCreatedAt': '创建于',
  'settings.mcp.tokenUsedAt': '使用于',
  'settings.mcp.deleteTokenTitle': '删除令牌',
  'settings.mcp.deleteTokenMessage': '此令牌将立即失效，使用它的所有 MCP 客户端将失去访问权限。',
  'settings.mcp.modal.createTitle': '创建 API 令牌',
  'settings.mcp.modal.tokenName': '令牌名称',
  'settings.mcp.modal.tokenNamePlaceholder': '例如：Claude Desktop、工作电脑',
  'settings.mcp.modal.creating': '创建中…',
  'settings.mcp.modal.create': '创建令牌',
  'settings.mcp.modal.createdTitle': '令牌已创建',
  'settings.mcp.modal.createdWarning': '此令牌只会显示一次，请立即复制并妥善保存——无法找回。',
  'settings.mcp.modal.done': '完成',
  'settings.mcp.toast.created': '令牌已创建',
  'settings.mcp.toast.createError': '创建令牌失败',
  'settings.mcp.toast.deleted': '令牌已删除',
  'settings.mcp.toast.deleteError': '删除令牌失败',
  'settings.mcp.apiTokensDeprecated': 'API 令牌已弃用，将在未来版本中移除。请改用 OAuth 2.1 客户端。',
  'settings.oauth.clients': 'OAuth 2.1 客户端',
  'settings.oauth.clientsHint': '注册 OAuth 2.1 客户端，让第三方 MCP 应用程序（Claude Web、Cursor 等）无需静态令牌即可连接。',
  'settings.oauth.createClient': '新建客户端',
  'settings.oauth.noClients': '没有已注册的 OAuth 客户端。',
  'settings.oauth.clientId': '客户端 ID',
  'settings.oauth.clientSecret': '客户端密钥',
  'settings.oauth.deleteClient': '删除客户端',
  'settings.oauth.deleteClientMessage': '此客户端及所有活跃会话将被永久删除。使用此客户端的任何应用程序将立即失去访问权限。',
  'settings.oauth.rotateSecret': '轮换密钥',
  'settings.oauth.rotateSecretMessage': '将生成新的客户端密钥，所有现有会话将立即失效。在关闭此对话框之前，请更新您的应用程序。',
  'settings.oauth.rotateSecretConfirm': '轮换',
  'settings.oauth.rotateSecretConfirming': '轮换中…',
  'settings.oauth.rotateSecretDoneTitle': '已生成新密钥',
  'settings.oauth.rotateSecretDoneWarning': '此密钥仅显示一次。请立即复制并更新您的应用程序——所有之前的会话已失效。',
  'settings.oauth.activeSessions': '活跃的 OAuth 会话',
  'settings.oauth.sessionScopes': '权限范围',
  'settings.oauth.sessionExpires': '过期时间',
  'settings.oauth.revoke': '撤销',
  'settings.oauth.revokeSession': '撤销会话',
  'settings.oauth.revokeSessionMessage': '这将立即撤销此 OAuth 会话的访问权限。',
  'settings.oauth.modal.createTitle': '注册 OAuth 客户端',
  'settings.oauth.modal.presets': '快速预设',
  'settings.oauth.modal.clientName': '应用程序名称',
  'settings.oauth.modal.clientNamePlaceholder': '例如 Claude Web、我的 MCP 应用',
  'settings.oauth.modal.redirectUris': '重定向 URI',
  'settings.oauth.modal.redirectUrisPlaceholder': 'https://your-app.com/callback\nhttps://your-app.com/auth',
  'settings.oauth.modal.redirectUrisHint': '每行一个 URI。需要 HTTPS（localhost 除外）。要求精确匹配。',
  'settings.oauth.modal.scopes': '允许的权限范围',
  'settings.oauth.modal.scopesHint': 'list_trips 和 get_trip_summary 始终可用——无需权限范围。它们帮助 AI 发现所需的行程 ID。',
  'settings.oauth.modal.selectAll': '全选',
  'settings.oauth.modal.deselectAll': '取消全选',
  'settings.oauth.modal.creating': '注册中…',
  'settings.oauth.modal.create': '注册客户端',
  'settings.oauth.modal.createdTitle': '客户端已注册',
  'settings.oauth.modal.createdWarning': '客户端密钥仅显示一次。请立即复制——无法恢复。',
  'settings.oauth.toast.createError': '注册 OAuth 客户端失败',
  'settings.oauth.toast.deleted': 'OAuth 客户端已删除',
  'settings.oauth.toast.deleteError': '删除 OAuth 客户端失败',
  'settings.oauth.toast.revoked': '会话已撤销',
  'settings.oauth.toast.revokeError': '撤销会话失败',
  'settings.oauth.toast.rotateError': '轮换客户端密钥失败',
  'settings.account': '账户',
  'settings.about': '关于',
  'settings.about.reportBug': '报告错误',
  'settings.about.reportBugHint': '发现问题？告诉我们',
  'settings.about.featureRequest': '功能建议',
  'settings.about.featureRequestHint': '建议一个新功能',
  'settings.about.wikiHint': '文档和指南',
  'settings.about.supporters.badge': '月度支持者',
  'settings.about.supporters.title': '与 TREK 同行的伙伴',
  'settings.about.supporters.subtitle': '当你在规划下一段路线时，这些人也在一起规划 TREK 的未来。他们每月的支持直接用于开发与真实投入的时间——让 TREK 保持开源。',
  'settings.about.supporters.since': '{date} 起的支持者',
  'settings.about.supporters.tierEmpty': '成为第一个',
  'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket',
  'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP',
  'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer',
  'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller',
  'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate',
  'settings.about.description': 'TREK 是一个自托管的旅行规划工具，帮助你从最初的想法到最后的回忆，全程组织你的旅行。日程规划、预算、行李清单、照片等——一切尽在一处，在你自己的服务器上。',
  'settings.about.madeWith': '用',
  'settings.about.madeBy': '由 Maurice 和不断壮大的开源社区打造。',
  'settings.username': '用户名',
  'settings.email': '邮箱',
  'settings.role': '角色',
  'settings.roleAdmin': '管理员',
  'settings.oidcLinked': '已关联',
  'settings.changePassword': '修改密码',
  'settings.mustChangePassword': '您必须更改密码才能继续。请在下方设置新密码。',
  'settings.currentPassword': '当前密码',
  'settings.currentPasswordRequired': '请输入当前密码',
  'settings.newPassword': '新密码',
  'settings.confirmPassword': '确认新密码',
  'settings.updatePassword': '更新密码',
  'settings.passwordRequired': '请输入当前密码和新密码',
  'settings.passwordTooShort': '密码至少需要 8 个字符',
  'settings.passwordMismatch': '两次输入的密码不一致',
  'settings.passwordWeak': '密码必须包含大写字母、小写字母、数字和特殊字符',
  'settings.passwordChanged': '密码修改成功',
  'settings.deleteAccount': '删除账户',
  'settings.deleteAccountTitle': '确定删除账户？',
  'settings.deleteAccountWarning': '你的账户以及所有旅行、地点和文件将被永久删除。此操作无法撤销。',
  'settings.deleteAccountConfirm': '永久删除',
  'settings.deleteBlockedTitle': '无法删除',
  'settings.deleteBlockedMessage': '你是唯一的管理员。请先将其他用户提升为管理员，然后再删除账户。',
  'settings.roleUser': '用户',
  'settings.saveProfile': '保存资料',
  'settings.mfa.title': '双因素认证 (2FA)',
  'settings.mfa.description': '登录时添加第二步验证。使用身份验证器应用（Google Authenticator、Authy 等）。',
  'settings.mfa.requiredByPolicy': '管理员要求双因素身份验证。请先完成下方的身份验证器设置后再继续。',
  'settings.mfa.backupTitle': '备用代码',
  'settings.mfa.backupDescription': '如果你无法使用身份验证器应用，可使用这些一次性备用代码登录。',
  'settings.mfa.backupWarning': '请立即保存这些代码。每个代码只能使用一次。',
  'settings.mfa.backupCopy': '复制代码',
  'settings.mfa.backupDownload': '下载 TXT',
  'settings.mfa.backupPrint': '打印 / PDF',
  'settings.mfa.backupCopied': '备用代码已复制',
  'settings.mfa.enabled': '您的账户已启用 2FA。',
  'settings.mfa.disabled': '2FA 未启用。',
  'settings.mfa.setup': '设置身份验证器',
  'settings.mfa.scanQr': '使用应用扫描此二维码，或手动输入密钥。',
  'settings.mfa.secretLabel': '密钥（手动输入）',
  'settings.mfa.codePlaceholder': '6 位验证码',
  'settings.mfa.enable': '启用 2FA',
  'settings.mfa.cancelSetup': '取消',
  'settings.mfa.disableTitle': '停用 2FA',
  'settings.mfa.disableHint': '输入您的账户密码和身份验证器中的当前验证码。',
  'settings.mfa.disable': '停用 2FA',
  'settings.mfa.toastEnabled': '双因素认证已启用',
  'settings.mfa.toastDisabled': '双因素认证已停用',
  'settings.mfa.demoBlocked': '演示模式下不可用',
  'settings.toast.mapSaved': '地图设置已保存',
  'settings.toast.keysSaved': 'API 密钥已保存',
  'settings.toast.displaySaved': '显示设置已保存',
  'settings.toast.profileSaved': '资料已保存',
  'settings.uploadAvatar': '上传头像',
  'settings.removeAvatar': '移除头像',
  'settings.avatarUploaded': '头像已更新',
  'settings.avatarRemoved': '头像已移除',
  'settings.avatarError': '上传失败',

  // Login
  'login.error': '登录失败，请检查你的凭据。',
  'login.tagline': '你的旅行。\n你的计划。',
  'login.description': '通过互动地图、预算管理和实时同步，协同规划旅行。',
  'login.features.maps': '互动地图',
  'login.features.mapsDesc': 'Google Places、路线和聚类',
  'login.features.realtime': '实时同步',
  'login.features.realtimeDesc': '通过 WebSocket 协同规划',
  'login.features.budget': '预算跟踪',
  'login.features.budgetDesc': '分类、图表和人均费用',
  'login.features.collab': '协作',
  'login.features.collabDesc': '多用户共享旅行',
  'login.features.packing': '行李清单',
  'login.features.packingDesc': '分类、进度和建议',
  'login.features.bookings': '预订',
  'login.features.bookingsDesc': '航班、酒店、餐厅等',
  'login.features.files': '文档',
  'login.features.filesDesc': '上传和管理文档',
  'login.features.routes': '智能路线',
  'login.features.routesDesc': '自动优化和导出到 Google Maps',
  'login.selfHosted': '自托管 · 开源 · 数据由你掌控',
  'login.title': '登录',
  'login.subtitle': '欢迎回来',
  'login.signingIn': '登录中…',
  'login.signIn': '登录',
  'login.createAdmin': '创建管理员账户',
  'login.createAdminHint': '为 TREK 设置第一个管理员账户。',
  'login.setNewPassword': '设置新密码',
  'login.setNewPasswordHint': '您必须更改密码才能继续。',
  'login.createAccount': '创建账户',
  'login.createAccountHint': '注册新账户。',
  'login.creating': '创建中…',
  'login.noAccount': '还没有账户？',
  'login.hasAccount': '已有账户？',
  'login.register': '注册',
  'login.emailPlaceholder': 'your@email.com',
  'login.username': '用户名',
  'login.oidc.registrationDisabled': '注册已关闭。请联系管理员。',
  'login.oidc.noEmail': '未从提供商获取到邮箱。',
  'login.mfaTitle': '双因素认证',
  'login.mfaSubtitle': '请输入身份验证器应用中的 6 位验证码。',
  'login.mfaCodeLabel': '验证码',
  'login.mfaCodeRequired': '请输入身份验证器应用中的验证码。',
  'login.mfaHint': '打开 Google Authenticator、Authy 或其他 TOTP 应用。',
  'login.mfaBack': '← 返回登录',
  'login.mfaVerify': '验证',
  'login.invalidInviteLink': '邀请链接无效或已过期',
  'login.oidcFailed': 'OIDC 登录失败',
  'login.usernameRequired': '用户名为必填项',
  'login.passwordMinLength': '密码至少需要8个字符',
  'login.forgotPassword': '忘记密码？',
  'login.forgotPasswordTitle': '重置密码',
  'login.forgotPasswordBody': '输入您注册时使用的邮箱地址。若账户存在，我们将发送重置链接。',
  'login.forgotPasswordSubmit': '发送重置链接',
  'login.forgotPasswordSentTitle': '请查看邮箱',
  'login.forgotPasswordSentBody': '若该邮箱存在账户，重置链接正在发送中。链接将在 60 分钟后失效。',
  'login.forgotPasswordSmtpHintOff': '提示：管理员未配置 SMTP，重置链接将被写入服务器控制台，而不是通过电子邮件发送。',
  'login.backToLogin': '返回登录',
  'login.newPassword': '新密码',
  'login.confirmPassword': '确认新密码',
  'login.passwordsDontMatch': '两次输入的密码不一致',
  'login.mfaCode': '二步验证码',
  'login.resetPasswordTitle': '设置新密码',
  'login.resetPasswordBody': '请选择您在此处未使用过的强密码。至少 8 位。',
  'login.resetPasswordMfaBody': '输入您的二步验证码或备用代码以完成重置。',
  'login.resetPasswordSubmit': '重置密码',
  'login.resetPasswordVerify': '验证并重置',
  'login.resetPasswordSuccessTitle': '密码已更新',
  'login.resetPasswordSuccessBody': '您现在可以使用新密码登录了。',
  'login.resetPasswordInvalidLink': '无效的重置链接',
  'login.resetPasswordInvalidLinkBody': '此链接已丢失或损坏。请重新申请以继续。',
  'login.resetPasswordFailed': '重置失败。链接可能已过期。',
  'login.oidc.tokenFailed': '认证失败。',
  'login.oidc.invalidState': '会话无效，请重试。',
  'login.demoFailed': '演示登录失败',
  'login.oidcSignIn': '通过 {name} 登录',
  'login.oidcOnly': '密码登录已关闭。请通过 SSO 提供商登录。',
  'login.oidcLoggedOut': '您已退出登录。请重新通过 SSO 提供商登录。',
  'login.demoHint': '试用演示——无需注册',

  // Register
  'register.passwordMismatch': '两次输入的密码不一致',
  'register.passwordTooShort': '密码至少需要 8 个字符',
  'register.failed': '注册失败',
  'register.getStarted': '开始使用',
  'register.subtitle': '创建账户，开始规划你的梦想旅行。',
  'register.feature1': '无限旅行计划',
  'register.feature2': '互动地图视图',
  'register.feature3': '管理地点和分类',
  'register.feature4': '跟踪预订',
  'register.feature5': '创建行李清单',
  'register.feature6': '存储照片和文件',
  'register.createAccount': '创建账户',
  'register.startPlanning': '开始规划你的旅行',
  'register.minChars': '至少 6 个字符',
  'register.confirmPassword': '确认密码',
  'register.repeatPassword': '重复密码',
  'register.registering': '注册中...',
  'register.register': '注册',
  'register.hasAccount': '已有账户？',
  'register.signIn': '登录',

  // Admin
  'admin.title': '管理后台',
  'admin.subtitle': '用户管理和系统设置',
  'admin.tabs.users': '用户',
  'admin.tabs.categories': '分类',
  'admin.tabs.backup': '备份',
  'admin.tabs.audit': '审计',
  'admin.stats.users': '用户',
  'admin.stats.trips': '旅行',
  'admin.stats.places': '地点',
  'admin.stats.photos': '照片',
  'admin.stats.files': '文件',
  'admin.table.user': '用户',
  'admin.table.email': '邮箱',
  'admin.table.role': '角色',
  'admin.table.created': '创建时间',
  'admin.table.lastLogin': '最后登录',
  'admin.table.actions': '操作',
  'admin.you': '（你）',
  'admin.editUser': '编辑用户',
  'admin.newPassword': '新密码',
  'admin.newPasswordHint': '留空则保持当前密码',
  'admin.deleteUser': '删除用户「{name}」？所有旅行将被永久删除。',
  'admin.deleteUserTitle': '删除用户',
  'admin.newPasswordPlaceholder': '输入新密码…',
  'admin.toast.loadError': '加载管理数据失败',
  'admin.toast.userUpdated': '用户已更新',
  'admin.toast.updateError': '更新失败',
  'admin.toast.userDeleted': '用户已删除',
  'admin.toast.deleteError': '删除失败',
  'admin.toast.cannotDeleteSelf': '不能删除自己的账户',
  'admin.toast.userCreated': '用户已创建',
  'admin.toast.createError': '创建用户失败',
  'admin.toast.fieldsRequired': '用户名、邮箱和密码为必填项',
  'admin.createUser': '创建用户',
  'admin.invite.title': '邀请链接',
  'admin.invite.subtitle': '创建一次性注册链接',
  'admin.invite.create': '创建链接',
  'admin.invite.createAndCopy': '创建并复制',
  'admin.invite.empty': '尚未创建邀请链接',
  'admin.invite.maxUses': '最大使用次数',
  'admin.invite.expiry': '有效期',
  'admin.invite.uses': '已使用',
  'admin.invite.expiresAt': '过期时间',
  'admin.invite.createdBy': '由',
  'admin.invite.active': '有效',
  'admin.invite.expired': '已过期',
  'admin.invite.usedUp': '已用完',
  'admin.invite.copied': '邀请链接已复制',
  'admin.invite.copyLink': '复制链接',
  'admin.invite.deleted': '邀请链接已删除',
  'admin.invite.createError': '创建链接失败',
  'admin.invite.deleteError': '删除链接失败',
  'admin.tabs.settings': '设置',
  'admin.allowRegistration': '允许注册',
  'admin.allowRegistrationHint': '新用户可以自行注册',
  'admin.authMethods': 'Authentication Methods',
  'admin.passwordLogin': 'Password Login',
  'admin.passwordLoginHint': 'Allow users to sign in with email and password',
  'admin.passwordRegistration': 'Password Registration',
  'admin.passwordRegistrationHint': 'Allow new users to register with email and password',
  'admin.oidcLogin': 'SSO Login',
  'admin.oidcLoginHint': 'Allow users to sign in with SSO',
  'admin.oidcRegistration': 'SSO Auto-Provisioning',
  'admin.oidcRegistrationHint': 'Automatically create accounts for new SSO users',
  'admin.envOverrideHint': 'Password login settings are controlled by the OIDC_ONLY environment variable and cannot be changed here.',
  'admin.lockoutWarning': 'At least one login method must remain enabled',
  'admin.requireMfa': '要求双因素身份验证（2FA）',
  'admin.requireMfaHint': '未启用 2FA 的用户必须先完成设置中的配置才能使用应用。',
  'admin.apiKeys': 'API 密钥',
  'admin.apiKeysHint': '可选。启用地点的扩展数据，如照片和天气。',
  'admin.mapsKey': 'Google Maps API 密钥',
  'admin.mapsKeyHint': '用于地点搜索。在 console.cloud.google.com 获取',
  'admin.mapsKeyHintLong': '没有 API 密钥时，使用 OpenStreetMap 搜索地点。有了 Google API 密钥，还可以加载照片、评分和营业时间。在 console.cloud.google.com 获取。',
  'admin.recommended': '推荐',
  'admin.weatherKey': 'OpenWeatherMap API 密钥',
  'admin.weatherKeyHint': '用于天气数据。在 openweathermap.org 免费获取',
  'admin.validateKey': '测试',
  'admin.keyValid': '已连接',
  'admin.keyInvalid': '无效',
  'admin.keySaved': 'API 密钥已保存',
  'admin.oidcTitle': '单点登录 (OIDC)',
  'admin.oidcSubtitle': '允许通过 Google、Apple、Authentik 或 Keycloak 等外部提供商登录。',
  'admin.oidcDisplayName': '显示名称',
  'admin.oidcIssuer': '颁发者 URL',
  'admin.oidcIssuerHint': '提供商的 OpenID Connect 颁发者 URL。如 https://accounts.google.com',
  'admin.oidcSaved': 'OIDC 配置已保存',
  'admin.oidcOnlyMode': '禁用密码登录',
  'admin.oidcOnlyModeHint': '启用后，仅允许 SSO 登录。密码登录和注册将被禁用。',

  // File Types
  'admin.fileTypes': '允许的文件类型',
  'admin.fileTypesHint': '配置用户可以上传的文件类型。',
  'admin.fileTypesFormat': '以逗号分隔的扩展名（如 jpg,png,pdf,doc）。使用 * 允许所有类型。',
  'admin.fileTypesSaved': '文件类型设置已保存',

  'admin.placesPhotos.title': '地点照片',
  'admin.placesPhotos.subtitle': '从 Google Places API 获取照片。禁用可节省 API 配额。Wikimedia 照片不受影响。',
  'admin.placesAutocomplete.title': '地点自动补全',
  'admin.placesAutocomplete.subtitle': '使用 Google Places API 提供搜索建议。禁用可节省 API 配额。',
  'admin.placesDetails.title': '地点详情',
  'admin.placesDetails.subtitle': '从 Google Places API 获取地点详细信息（营业时间、评分、网站）。禁用可节省 API 配额。',
  'admin.bagTracking.title': '行李追踪',
  'admin.bagTracking.subtitle': '为打包物品启用重量和行李分配',
  'admin.collab.chat.title': '聊天',
  'admin.collab.chat.subtitle': '实时消息协作',
  'admin.collab.notes.title': '笔记',
  'admin.collab.notes.subtitle': '共享笔记和文档',
  'admin.collab.polls.title': '投票',
  'admin.collab.polls.subtitle': '群组投票和表决',
  'admin.collab.whatsnext.title': '下一步',
  'admin.collab.whatsnext.subtitle': '活动建议和后续步骤',
  'admin.tabs.config': '个性化',
  'admin.tabs.defaults': '用户默认设置',
  'admin.defaultSettings.title': '用户默认设置',
  'admin.defaultSettings.description': '设置实例范围的默认值。未更改设置的用户将看到这些值。用户自己的更改始终优先。',
  'admin.defaultSettings.saved': '默认值已保存',
  'admin.defaultSettings.reset': '重置为内置默认值',
  'admin.defaultSettings.resetToBuiltIn': '重置',
  'admin.tabs.templates': '打包模板',
  'admin.packingTemplates.title': '打包模板',
  'admin.packingTemplates.subtitle': '创建可复用的旅行打包清单',
  'admin.packingTemplates.create': '新建模板',
  'admin.packingTemplates.namePlaceholder': '模板名称（如：海滩度假）',
  'admin.packingTemplates.empty': '尚未创建模板',
  'admin.packingTemplates.items': '物品',
  'admin.packingTemplates.categories': '分类',
  'admin.packingTemplates.itemName': '物品名称',
  'admin.packingTemplates.itemCategory': '分类',
  'admin.packingTemplates.categoryName': '分类名称（如：衣物）',
  'admin.packingTemplates.addCategory': '添加分类',
  'admin.packingTemplates.created': '模板已创建',
  'admin.packingTemplates.deleted': '模板已删除',
  'admin.packingTemplates.loadError': '加载模板失败',
  'admin.packingTemplates.createError': '创建模板失败',
  'admin.packingTemplates.deleteError': '删除模板失败',
  'admin.packingTemplates.saveError': '保存失败',

  // Addons
  'admin.tabs.addons': '扩展',
  'admin.addons.title': '扩展',
  'admin.addons.subtitle': '启用或禁用功能以自定义你的 TREK 体验。',
  'admin.addons.catalog.memories.name': '照片 (Immich)',
  'admin.addons.catalog.memories.description': '通过 Immich 实例分享旅行照片',
  'admin.addons.catalog.mcp.name': 'MCP',
  'admin.addons.catalog.mcp.description': '用于 AI 助手集成的模型上下文协议',
  'admin.addons.catalog.packing.name': '列表',
  'admin.addons.catalog.packing.description': '行程打包清单与待办任务',
  'admin.addons.catalog.budget.name': '预算',
  'admin.addons.catalog.budget.description': '跟踪支出并规划旅行预算',
  'admin.addons.catalog.documents.name': '文档',
  'admin.addons.catalog.documents.description': '存储和管理旅行文档',
  'admin.addons.catalog.vacay.name': 'Vacay',
  'admin.addons.catalog.vacay.description': '带日历视图的个人假期规划器',
  'admin.addons.catalog.atlas.name': 'Atlas',
  'admin.addons.catalog.atlas.description': '标记已访问国家和旅行统计的世界地图',
  'admin.addons.catalog.collab.name': 'Collab',
  'admin.addons.catalog.collab.description': '旅行规划的实时笔记、投票和聊天',
  'admin.addons.subtitleBefore': '启用或禁用功能以自定义你的 ',
  'admin.addons.subtitleAfter': ' 体验。',
  'admin.addons.enabled': '已启用',
  'admin.addons.disabled': '已禁用',
  'admin.addons.type.trip': '旅行',
  'admin.addons.type.global': '全局',
  'admin.addons.type.integration': '集成',
  'admin.addons.tripHint': '在每次旅行中作为标签页显示',
  'admin.addons.globalHint': '在主导航中作为独立板块显示',
  'admin.addons.integrationHint': '后端服务和 API 集成，无专属页面',
  'admin.addons.toast.updated': '扩展已更新',
  'admin.addons.toast.error': '更新扩展失败',
  'admin.addons.noAddons': '暂无可用扩展',
  // Weather info
  'admin.weather.title': '天气数据',
  'admin.weather.badge': '自 2026 年 3 月 24 日起',
  'admin.weather.description': 'TREK 使用 Open-Meteo 作为天气数据源。Open-Meteo 是免费的开源天气服务——无需 API 密钥。',
  'admin.weather.forecast': '16 天天气预报',
  'admin.weather.forecastDesc': '之前为 5 天 (OpenWeatherMap)',
  'admin.weather.climate': '历史气候数据',
  'admin.weather.climateDesc': '16 天预报之外的日期使用过去 85 年的平均值',
  'admin.weather.requests': '每天 10,000 次请求',
  'admin.weather.requestsDesc': '免费，无需 API 密钥',
  'admin.weather.locationHint': '天气基于每天中第一个有坐标的地点。如果当天没有分配地点，则使用地点列表中的任意地点作为参考。',

  // MCP Tokens
  'admin.tabs.mcpTokens': 'MCP 访问',
  'admin.mcpTokens.title': 'MCP 访问',
  'admin.mcpTokens.subtitle': '管理所有用户的 OAuth 会话和 API 令牌',
  'admin.mcpTokens.sectionTitle': 'API 令牌',
  'admin.mcpTokens.owner': '所有者',
  'admin.mcpTokens.tokenName': '令牌名称',
  'admin.mcpTokens.created': '创建时间',
  'admin.mcpTokens.lastUsed': '最后使用',
  'admin.mcpTokens.never': '从未',
  'admin.mcpTokens.empty': '尚未创建任何 MCP 令牌',
  'admin.mcpTokens.deleteTitle': '删除令牌',
  'admin.mcpTokens.deleteMessage': '此令牌将立即被撤销。用户将失去通过此令牌的 MCP 访问权限。',
  'admin.mcpTokens.deleteSuccess': '令牌已删除',
  'admin.mcpTokens.deleteError': '删除令牌失败',
  'admin.mcpTokens.loadError': '加载令牌失败',
  'admin.oauthSessions.sectionTitle': 'OAuth 会话',
  'admin.oauthSessions.clientName': '客户端',
  'admin.oauthSessions.owner': '所有者',
  'admin.oauthSessions.scopes': '权限范围',
  'admin.oauthSessions.created': '创建时间',
  'admin.oauthSessions.empty': '暂无活跃的 OAuth 会话',
  'admin.oauthSessions.revokeTitle': '撤销会话',
  'admin.oauthSessions.revokeMessage': '此 OAuth 会话将立即被撤销。客户端将失去 MCP 访问权限。',
  'admin.oauthSessions.revokeSuccess': '会话已撤销',
  'admin.oauthSessions.revokeError': '撤销会话失败',
  'admin.oauthSessions.loadError': '加载 OAuth 会话失败',

  // GitHub
  'admin.tabs.github': 'GitHub',

  'admin.audit.subtitle': '安全与管理员操作记录（备份、用户、MFA、设置）。',
  'admin.audit.empty': '暂无审计记录。',
  'admin.audit.refresh': '刷新',
  'admin.audit.loadMore': '加载更多',
  'admin.audit.showing': '已加载 {count} 条 · 共 {total} 条',
  'admin.audit.col.time': '时间',
  'admin.audit.col.user': '用户',
  'admin.audit.col.action': '操作',
  'admin.audit.col.resource': '资源',
  'admin.audit.col.ip': 'IP',
  'admin.audit.col.details': '详情',

  'admin.github.title': '版本历史',
  'admin.github.subtitle': '{repo} 的最新更新',
  'admin.github.latest': '最新',
  'admin.github.prerelease': '预发布',
  'admin.github.showDetails': '显示详情',
  'admin.github.hideDetails': '隐藏详情',
  'admin.github.loadMore': '加载更多',
  'admin.github.loading': '加载中...',
  'admin.github.support': '帮助我继续开发 TREK',
  'admin.github.error': '加载版本失败',
  'admin.github.by': '作者',

  'admin.update.available': '有可用更新',
  'admin.update.text': 'TREK {version} 已发布。你当前使用的是 {current}。',
  'admin.update.button': '在 GitHub 查看',
  'admin.update.install': '安装更新',
  'admin.update.confirmTitle': '确定安装更新？',
  'admin.update.confirmText': 'TREK 将从 {current} 更新到 {version}。服务器将自动重启。',
  'admin.update.dataInfo': '你的所有数据（旅行、用户、API 密钥、上传文件、Vacay、Atlas、预算）将被保留。',
  'admin.update.warning': '重启期间应用将短暂不可用。',
  'admin.update.confirm': '立即更新',
  'admin.update.installing': '更新中…',
  'admin.update.success': '更新已安装！服务器正在重启…',
  'admin.update.failed': '更新失败',
  'admin.update.backupHint': '建议在更新前创建备份。',
  'admin.update.backupLink': '前往备份',
  'admin.update.howTo': '如何更新',
  'admin.update.dockerText': '你的 TREK 实例运行在 Docker 中。要更新到 {version}，请在服务器上执行以下命令：',
  'admin.update.reloadHint': '请在几秒后刷新页面。',

  // Vacay addon
  'vacay.subtitle': '规划和管理假期',
  'vacay.settings': '设置',
  'vacay.year': '年份',
  'vacay.addYear': '添加下一年',
  'vacay.addPrevYear': '添加上一年',
  'vacay.removeYear': '移除年份',
  'vacay.removeYearConfirm': '移除 {year}？',
  'vacay.removeYearHint': '该年度所有假期记录和公司假日将被永久删除。',
  'vacay.remove': '移除',
  'vacay.persons': '成员',
  'vacay.noPersons': '暂无成员',
  'vacay.addPerson': '添加成员',
  'vacay.editPerson': '编辑成员',
  'vacay.removePerson': '移除成员',
  'vacay.removePersonConfirm': '移除 {name}？',
  'vacay.removePersonHint': '该成员的所有假期记录将被永久删除。',
  'vacay.personName': '姓名',
  'vacay.personNamePlaceholder': '输入姓名',
  'vacay.color': '颜色',
  'vacay.add': '添加',
  'vacay.legend': '图例',
  'vacay.publicHoliday': '公共假日',
  'vacay.companyHoliday': '公司假日',
  'vacay.weekend': '周末',
  'vacay.modeVacation': '休假',
  'vacay.modeCompany': '公司假日',
  'vacay.entitlement': '年假额度',
  'vacay.entitlementDays': '天',
  'vacay.used': '已用',
  'vacay.remaining': '剩余',
  'vacay.carriedOver': '从 {year} 结转',
  'vacay.blockWeekends': '锁定周末',
  'vacay.blockWeekendsHint': '禁止在周六和周日安排假期',
  'vacay.weekendDays': '周末',
  'vacay.mon': '周一',
  'vacay.tue': '周二',
  'vacay.wed': '周三',
  'vacay.thu': '周四',
  'vacay.fri': '周五',
  'vacay.sat': '周六',
  'vacay.sun': '周日',
  'vacay.publicHolidays': '公共假日',
  'vacay.publicHolidaysHint': '在日历中标记公共假日',
  'vacay.selectCountry': '选择国家',
  'vacay.selectRegion': '选择地区（可选）',
  'vacay.companyHolidays': '公司假日',
  'vacay.companyHolidaysHint': '允许标记公司统一休假日',
  'vacay.companyHolidaysNoDeduct': '公司假日不计入年假天数。',
  'vacay.weekStart': '每周开始于',
  'vacay.weekStartHint': '选择日历周从周一还是周日开始',
  'vacay.carryOver': '结转',
  'vacay.carryOverHint': '自动将剩余年假天数结转到下一年',
  'vacay.sharing': '共享',
  'vacay.sharingHint': '与其他 TREK 用户共享你的假期计划',
  'vacay.owner': '所有者',
  'vacay.shareEmailPlaceholder': 'TREK 用户邮箱',
  'vacay.shareSuccess': '计划共享成功',
  'vacay.shareError': '无法共享计划',
  'vacay.dissolve': '解除合并',
  'vacay.dissolveHint': '重新分离日历。你的记录将被保留。',
  'vacay.dissolveAction': '解除',
  'vacay.dissolved': '日历已分离',
  'vacay.fusedWith': '已合并',
  'vacay.you': '你',
  'vacay.noData': '暂无数据',
  'vacay.changeColor': '更改颜色',
  'vacay.inviteUser': '邀请用户',
  'vacay.inviteHint': '邀请其他 TREK 用户共享合并的假期日历。',
  'vacay.selectUser': '选择用户',
  'vacay.sendInvite': '发送邀请',
  'vacay.inviteSent': '邀请已发送',
  'vacay.inviteError': '无法发送邀请',
  'vacay.pending': '待处理',
  'vacay.noUsersAvailable': '没有可用用户',
  'vacay.accept': '接受',
  'vacay.decline': '拒绝',
  'vacay.acceptFusion': '接受并合并',
  'vacay.inviteTitle': '合并请求',
  'vacay.inviteWantsToFuse': '想要与你共享假期日历。',
  'vacay.fuseInfo1': '你们双方将在一个共享日历中看到所有假期记录。',
  'vacay.fuseInfo2': '双方都可以为对方创建和编辑记录。',
  'vacay.fuseInfo3': '双方都可以删除记录和修改年假额度。',
  'vacay.fuseInfo4': '公共假日和公司假日等设置将共享。',
  'vacay.fuseInfo5': '任何一方都可以随时解除合并。你的记录将被保留。',
  'vacay.addCalendar': '添加日历',
  'vacay.calendarColor': '颜色',
  'vacay.calendarLabel': '标签',
  'vacay.noCalendars': '无日历',
  'nav.myTrips': '我的旅行',

  // Atlas addon
  'atlas.subtitle': '你的全球旅行足迹',
  'atlas.countries': '国家',
  'atlas.trips': '旅行',
  'atlas.places': '地点',
  'atlas.days': '天',
  'atlas.visitedCountries': '已访问国家',
  'atlas.cities': '城市',
  'atlas.noData': '暂无旅行数据',
  'atlas.noDataHint': '创建旅行并添加地点以查看世界地图',
  'atlas.lastTrip': '上次旅行',
  'atlas.nextTrip': '下次旅行',
  'atlas.daysLeft': '天后出发',
  'atlas.streak': '连续',
  'atlas.year': '年',
  'atlas.years': '年',
  'atlas.yearInRow': '年连续',
  'atlas.yearsInRow': '年连续',
  'atlas.tripIn': '次旅行在',
  'atlas.tripsIn': '次旅行在',
  'atlas.since': '自',
  'atlas.europe': '欧洲',
  'atlas.asia': '亚洲',
  'atlas.northAmerica': '北美洲',
  'atlas.southAmerica': '南美洲',
  'atlas.africa': '非洲',
  'atlas.oceania': '大洋洲',
  'atlas.other': '其他',
  'atlas.firstVisit': '首次旅行',
  'atlas.lastVisitLabel': '最近旅行',
  'atlas.tripSingular': '次旅行',
  'atlas.tripPlural': '次旅行',
  'atlas.placeVisited': '个地点已访问',
  'atlas.placesVisited': '个地点已访问',
  'atlas.statsTab': '统计',
  'atlas.bucketTab': '心愿单',
  'atlas.addBucket': '添加到心愿单',
  'atlas.bucketNamePlaceholder': '地点或目的地...',
  'atlas.bucketNotesPlaceholder': '备注（可选）',
  'atlas.bucketEmpty': '你的心愿单是空的',
  'atlas.bucketEmptyHint': '添加你梦想去的地方',
  'atlas.unmark': '移除',
  'atlas.confirmMark': '将此国家标记为已访问？',
  'atlas.confirmUnmark': '从已访问列表中移除此国家？',
  'atlas.confirmUnmarkRegion': '从已访问列表中移除此地区？',
  'atlas.markVisited': '标记为已访问',
  'atlas.markVisitedHint': '将此国家添加到已访问列表',
  'atlas.markRegionVisitedHint': '将此地区添加到已访问列表',
  'atlas.addToBucket': '添加到心愿单',
  'atlas.addPoi': '添加地点',
  'atlas.searchCountry': '搜索国家...',
  'atlas.month': '月份',
  'atlas.addToBucketHint': '保存为想去的地方',
  'atlas.bucketWhen': '你计划什么时候去？',

  // Trip Planner
  'trip.tabs.plan': '计划',
  'trip.tabs.transports': '交通',
  'trip.tabs.reservations': '预订',
  'trip.tabs.reservationsShort': '预订',
  'trip.tabs.packing': '行李清单',
  'trip.tabs.packingShort': '行李',
  'trip.tabs.lists': '列表',
  'trip.tabs.listsShort': '列表',
  'trip.tabs.budget': '预算',
  'trip.tabs.files': '文件',
  'trip.loading': '加载旅行中...',
  'trip.loadingPhotos': '正在加载地点照片...',
  'trip.mobilePlan': '计划',
  'trip.mobilePlaces': '地点',
  'trip.toast.placeUpdated': '地点已更新',
  'trip.toast.placeAdded': '地点已添加',
  'trip.toast.placeDeleted': '地点已删除',
  'trip.toast.selectDay': '请先选择一天',
  'trip.toast.assignedToDay': '地点已分配到当天',
  'trip.toast.reorderError': '排序失败',
  'trip.toast.reservationUpdated': '预订已更新',
  'trip.toast.reservationAdded': '预订已添加',
  'trip.toast.deleted': '已删除',
  'trip.confirm.deletePlace': '确定要删除这个地点吗？',
  'trip.confirm.deletePlaces': '删除 {count} 个地点？',
  'trip.toast.placesDeleted': '已删除 {count} 个地点',

  // Day Plan Sidebar
  'dayplan.emptyDay': '当天暂无计划',
  'dayplan.addNote': '添加备注',
  'dayplan.editNote': '编辑备注',
  'dayplan.noteAdd': '添加备注',
  'dayplan.noteEdit': '编辑备注',
  'dayplan.noteTitle': '备注',
  'dayplan.noteSubtitle': '每日备注',
  'dayplan.totalCost': '总费用',
  'dayplan.days': '天',
  'dayplan.dayN': '第 {n} 天',
  'dayplan.calculating': '计算中...',
  'dayplan.route': '路线',
  'dayplan.optimize': '优化',
  'dayplan.optimized': '路线已优化',
  'dayplan.routeError': '路线计算失败',
  'dayplan.toast.needTwoPlaces': '路线优化至少需要两个地点',
  'dayplan.toast.routeOptimized': '路线已优化',
  'dayplan.toast.noGeoPlaces': '未找到有坐标的地点用于路线计算',
  'dayplan.confirmed': '已确认',
  'dayplan.pendingRes': '待确认',
  'dayplan.pdf': 'PDF',
  'dayplan.pdfTooltip': '导出当天计划为 PDF',
  'dayplan.pdfError': 'PDF 导出失败',
  'dayplan.cannotReorderTransport': '有固定时间的预订无法重新排序',
  'dayplan.confirmRemoveTimeTitle': '移除时间？',
  'dayplan.confirmRemoveTimeBody': '此地点有固定时间（{time}）。移动后将移除时间并允许自由排序。',
  'dayplan.confirmRemoveTimeAction': '移除时间并移动',
  'dayplan.cannotDropOnTimed': '无法将项目放置在有固定时间的条目之间',
  'dayplan.cannotBreakChronology': '这将打乱已计划项目和预订的时间顺序',

  // Places Sidebar
  'places.addPlace': '添加地点/活动',
  'places.importFile': '导入文件',
  'places.sidebarDrop': '拖放以导入',
  'places.importFileHint': '从 Google My Maps、Google Earth 或 GPS 追踪器等工具导入 .gpx、.kml 或 .kmz 文件。',
  'places.importFileDropHere': '点击选择文件或拖放到此处',
  'places.importFileDropActive': '释放文件以选择',
  'places.importFileUnsupported': '不支持的文件类型，请使用 .gpx、.kml 或 .kmz。',
  'places.importFileTooLarge': '文件过大。最大上传大小为 {maxMb} MB。',
  'places.importFileError': '导入失败',
  'places.importAllSkipped': '所有地点已在行程中。',
  'places.gpxImported': '已从 GPX 导入 {count} 个地点',
  'places.gpxImportTypes': '要导入什么？',
  'places.gpxImportWaypoints': '路点',
  'places.gpxImportRoutes': '路线',
  'places.gpxImportTracks': '轨迹（含路径几何）',
  'places.gpxImportNoneSelected': '请至少选择一种导入类型。',
  'places.kmlImportTypes': '要导入什么？',
  'places.kmlImportPoints': '点（Placemarks）',
  'places.kmlImportPaths': '路径（LineStrings）',
  'places.kmlImportNoneSelected': '请至少选择一种类型。',
  'places.selectionCount': '已选 {count} 项',
  'places.deleteSelected': '删除所选',
  'places.kmlKmzImported': '已从 KMZ/KML 导入 {count} 个地点',
  'places.urlResolved': '已从 URL 导入地点',
  'places.importList': '列表导入',
  'places.kmlKmzSummaryValues': 'Placemarks：{total} • 已导入：{created} • 已跳过：{skipped}',
  'places.importGoogleList': 'Google 列表',
  'places.importNaverList': 'Naver 列表',
  'places.googleListHint': '粘贴共享的 Google Maps 列表链接以导入所有地点。',
  'places.googleListImported': '已从"{list}"导入 {count} 个地点',
  'places.googleListError': 'Google Maps 列表导入失败',
  'places.naverListHint': '粘贴共享的 Naver Maps 列表链接以导入所有地点。',
  'places.naverListImported': '已从"{list}"导入 {count} 个地点',
  'places.naverListError': 'Naver Maps 列表导入失败',
  'places.viewDetails': '查看详情',
  'places.assignToDay': '添加到哪一天？',
  'places.all': '全部',
  'places.unplanned': '未规划',
  'places.filterTracks': '路线',
  'places.search': '搜索地点...',
  'places.allCategories': '所有分类',
  'places.categoriesSelected': '个分类',
  'places.clearFilter': '清除筛选',
  'places.count': '{count} 个地点',
  'places.countSingular': '1 个地点',
  'places.allPlanned': '所有地点已规划',
  'places.noneFound': '未找到地点',
  'places.editPlace': '编辑地点',
  'places.formName': '名称',
  'places.formNamePlaceholder': '如：埃菲尔铁塔',
  'places.formDescription': '描述',
  'places.formDescriptionPlaceholder': '简短描述...',
  'places.formAddress': '地址',
  'places.formAddressPlaceholder': '街道、城市、国家',
  'places.formLat': '纬度（如 48.8566）',
  'places.formLng': '经度（如 2.3522）',
  'places.formCategory': '分类',
  'places.noCategory': '无分类',
  'places.categoryNamePlaceholder': '分类名称',
  'places.formTime': '时间',
  'places.startTime': '开始',
  'places.endTime': '结束',
  'places.endTimeBeforeStart': '结束时间早于开始时间',
  'places.timeCollision': '时间冲突：',
  'places.formWebsite': '网站',
  'places.formNotes': '备注',
  'places.formNotesPlaceholder': '个人备注...',
  'places.formReservation': '预订',
  'places.reservationNotesPlaceholder': '预订备注、确认号...',
  'places.mapsSearchPlaceholder': '搜索地点...',
  'places.mapsSearchError': '地点搜索失败。',
  'places.loadingDetails': '正在加载地点详情…',
  'places.osmHint': '使用 OpenStreetMap 搜索（无照片、营业时间或评分）。在设置中添加 Google API 密钥以获取完整信息。',
  'places.osmActive': '通过 OpenStreetMap 搜索（无照片、评分或营业时间）。在设置中添加 Google API 密钥以获取增强数据。',
  'places.categoryCreateError': '创建分类失败',
  'places.nameRequired': '请输入名称',
  'places.saveError': '保存失败',
  // Place Inspector
  'inspector.opened': '营业中',
  'inspector.closed': '已关闭',
  'inspector.openingHours': '营业时间',
  'inspector.showHours': '显示营业时间',
  'inspector.files': '文件',
  'inspector.filesCount': '{count} 个文件',
  'inspector.removeFromDay': '从当天移除',
  'inspector.remove': '删除',
  'inspector.addToDay': '添加到当天',
  'inspector.confirmedRes': '已确认预订',
  'inspector.pendingRes': '待确认预订',
  'inspector.google': '在 Google Maps 中打开',
  'inspector.website': '打开网站',
  'inspector.addRes': '预订',
  'inspector.editRes': '编辑预订',
  'inspector.participants': '参与者',
  'inspector.trackStats': '轨迹数据',

  // Reservations
  'reservations.title': '预订',
  'reservations.empty': '暂无预订',
  'reservations.emptyHint': '添加航班、酒店等预订信息',
  'reservations.add': '添加预订',
  'reservations.addManual': '手动添加',
  'reservations.placeHint': '提示：建议从地点直接创建预订，以便与日程计划关联。',
  'reservations.confirmed': '已确认',
  'reservations.pending': '待确认',
  'reservations.summary': '{confirmed} 已确认，{pending} 待确认',
  'reservations.fromPlan': '来自计划',
  'reservations.showFiles': '查看文件',
  'reservations.editTitle': '编辑预订',
  'reservations.status': '状态',
  'reservations.datetime': '日期和时间',
  'reservations.startTime': '开始时间',
  'reservations.endTime': '结束时间',
  'reservations.date': '日期',
  'reservations.time': '时间',
  'reservations.timeAlt': '时间（备选，如 19:30）',
  'reservations.notes': '备注',
  'reservations.notesPlaceholder': '其他备注...',
  'reservations.meta.airline': '航空公司',
  'reservations.meta.flightNumber': '航班号',
  'reservations.meta.from': '出发',
  'reservations.meta.to': '到达',
  'reservations.needsReview': '待确认',
  'reservations.needsReviewHint': '无法自动匹配机场 — 请确认位置。',
  'reservations.searchLocation': '搜索车站、港口、地址...',
  'airport.searchPlaceholder': '机场代码或城市（如 FRA）',
  'map.connections': '连接',
  'map.showConnections': '显示预订路线',
  'map.hideConnections': '隐藏预订路线',
  'settings.bookingLabels': '预订路线标签',
  'settings.bookingLabelsHint': '在地图上显示车站 / 机场名称。关闭时仅显示图标。',
  'reservations.meta.trainNumber': '车次',
  'reservations.meta.platform': '站台',
  'reservations.meta.seat': '座位',
  'reservations.meta.checkIn': '入住',
  'reservations.meta.checkInUntil': '入住截止',
  'reservations.meta.checkOut': '退房',
  'reservations.meta.linkAccommodation': '住宿',
  'reservations.meta.pickAccommodation': '关联住宿',
  'reservations.meta.noAccommodation': '无',
  'reservations.meta.hotelPlace': '住宿',
  'reservations.meta.pickHotel': '选择住宿',
  'reservations.meta.fromDay': '从',
  'reservations.meta.toDay': '到',
  'reservations.meta.selectDay': '选择日期',
  'reservations.type.flight': '航班',
  'reservations.type.hotel': '住宿',
  'reservations.type.restaurant': '餐厅',
  'reservations.type.train': '火车',
  'reservations.type.car': '汽车',
  'reservations.type.cruise': '邮轮',
  'reservations.type.event': '活动',
  'reservations.type.tour': '旅游团',
  'reservations.type.other': '其他',
  'reservations.confirm.delete': '确定要删除预订「{name}」吗？',
  'reservations.confirm.deleteTitle': '删除预订？',
  'reservations.confirm.deleteBody': '"{name}" 将被永久删除。',
  'reservations.toast.updated': '预订已更新',
  'reservations.toast.removed': '预订已删除',
  'reservations.toast.fileUploaded': '文件已上传',
  'reservations.toast.uploadError': '上传失败',
  'reservations.newTitle': '新建预订',
  'reservations.bookingType': '预订类型',
  'reservations.titleLabel': '标题',
  'reservations.titlePlaceholder': '如：汉莎 LH123、阿德隆酒店...',
  'reservations.locationAddress': '地点 / 地址',
  'reservations.locationPlaceholder': '地址、机场、酒店...',
  'reservations.confirmationCode': '预订码',
  'reservations.confirmationPlaceholder': '如：ABC12345',
  'reservations.day': '日期',
  'reservations.noDay': '无日期',
  'reservations.place': '地点',
  'reservations.noPlace': '无地点',
  'reservations.pendingSave': '将被保存…',
  'reservations.uploading': '上传中...',
  'reservations.attachFile': '附加文件',
  'reservations.linkExisting': '关联已有文件',
  'reservations.toast.saveError': '保存失败',
  'reservations.toast.updateError': '更新失败',
  'reservations.toast.deleteError': '删除失败',
  'reservations.confirm.remove': '移除「{name}」的预订？',
  'reservations.linkAssignment': '关联日程分配',
  'reservations.pickAssignment': '从计划中选择一个分配...',
  'reservations.noAssignment': '无关联（独立）',
  'reservations.price': '价格',
  'reservations.budgetCategory': '预算类别',
  'reservations.budgetCategoryPlaceholder': '例：交通、住宿',
  'reservations.budgetCategoryAuto': '自动（按预订类型）',
  'reservations.budgetHint': '保存时将自动创建预算条目。',
  'reservations.departureDate': '出发',
  'reservations.arrivalDate': '到达',
  'reservations.departureTime': '出发时间',
  'reservations.arrivalTime': '到达时间',
  'reservations.pickupDate': '取车',
  'reservations.returnDate': '还车',
  'reservations.pickupTime': '取车时间',
  'reservations.returnTime': '还车时间',
  'reservations.endDate': '结束日期',
  'reservations.meta.departureTimezone': '出发时区',
  'reservations.meta.arrivalTimezone': '到达时区',
  'reservations.span.departure': '出发',
  'reservations.span.arrival': '到达',
  'reservations.span.inTransit': '途中',
  'reservations.span.pickup': '取车',
  'reservations.span.return': '还车',
  'reservations.span.active': '使用中',
  'reservations.span.start': '开始',
  'reservations.span.end': '结束',
  'reservations.span.ongoing': '进行中',
  'reservations.validation.endBeforeStart': '结束日期/时间必须晚于开始日期/时间',
  'reservations.addBooking': '添加预订',

  // Budget
  'budget.title': '预算',
  'budget.exportCsv': '导出 CSV',
  'budget.emptyTitle': '尚未创建预算',
  'budget.emptyText': '创建分类和条目来规划旅行预算',
  'budget.emptyPlaceholder': '输入分类名称...',
  'budget.createCategory': '创建分类',
  'budget.category': '分类',
  'budget.categoryName': '分类名称',
  'budget.table.name': '名称',
  'budget.table.total': '合计',
  'budget.table.persons': '人数',
  'budget.table.days': '天数',
  'budget.table.perPerson': '人均',
  'budget.table.perDay': '日均',
  'budget.table.perPersonDay': '人日均',
  'budget.table.note': '备注',
  'budget.table.date': '日期',
  'budget.newEntry': '新建条目',
  'budget.defaultEntry': '新建条目',
  'budget.defaultCategory': '新分类',
  'budget.total': '合计',
  'budget.totalBudget': '总预算',
  'budget.byCategory': '按分类',
  'budget.editTooltip': '点击编辑',
  'budget.linkedToReservation': '已关联到预订——请在那里编辑名称',
  'budget.confirm.deleteCategory': '确定删除分类「{name}」及其 {count} 个条目？',
  'budget.deleteCategory': '删除分类',
  'budget.perPerson': '人均',
  'budget.paid': '已支付',
  'budget.open': '未支付',
  'budget.noMembers': '未分配成员',
  'budget.settlement': '结算',
  'budget.settlementInfo': '点击预算项目上的成员头像将其标记为绿色——表示该成员已付款。结算会显示谁欠谁多少。',
  'budget.netBalances': '净余额',

  // Files
  'files.title': '文件',
  'files.pageTitle': '文件与文档',
  'files.subtitle': '{trip} 的 {count} 个文件',
  'files.download': '下载',
  'files.openError': '无法打开文件',
  'files.downloadPdf': '下载 PDF',
  'files.count': '{count} 个文件',
  'files.countSingular': '1 个文件',
  'files.uploaded': '已上传 {count} 个',
  'files.uploadError': '上传失败',
  'files.dropzone': '将文件拖放到此处',
  'files.dropzoneHint': '或点击浏览',
  'files.allowedTypes': '图片、PDF、DOC、DOCX、XLS、XLSX、TXT、CSV · 最大 50 MB',
  'files.uploading': '上传中...',
  'files.filterAll': '全部',
  'files.filterPdf': 'PDF',
  'files.filterImages': '图片',
  'files.filterDocs': '文档',
  'files.filterCollab': '协作笔记',
  'files.sourceCollab': '来自协作笔记',
  'files.empty': '暂无文件',
  'files.emptyHint': '上传文件以附加到旅行中',
  'files.openTab': '在新标签页中打开',
  'files.confirm.delete': '确定要删除此文件吗？',
  'files.toast.deleted': '文件已删除',
  'files.toast.deleteError': '删除文件失败',
  'files.sourcePlan': '日程计划',
  'files.sourceBooking': '预订',
  'files.sourceTransport': '交通',
  'files.attach': '附加',
  'files.pasteHint': '也可以从剪贴板粘贴图片 (Ctrl+V)',
  'files.trash': '回收站',
  'files.trashEmpty': '回收站为空',
  'files.emptyTrash': '清空回收站',
  'files.restore': '恢复',
  'files.star': '收藏',
  'files.unstar': '取消收藏',
  'files.assign': '分配',
  'files.assignTitle': '分配文件',
  'files.assignPlace': '地点',
  'files.assignBooking': '预订',
  'files.assignTransport': '交通',
  'files.unassigned': '未分配',
  'files.unlink': '移除关联',
  'files.toast.trashed': '已移至回收站',
  'files.toast.restored': '文件已恢复',
  'files.toast.trashEmptied': '回收站已清空',
  'files.toast.assigned': '文件已分配',
  'files.toast.assignError': '分配失败',
  'files.toast.restoreError': '恢复失败',
  'files.confirm.permanentDelete': '永久删除此文件？此操作无法撤销。',
  'files.confirm.emptyTrash': '永久删除回收站中的所有文件？此操作无法撤销。',
  'files.noteLabel': '备注',
  'files.notePlaceholder': '添加备注...',

  // Packing
  'packing.title': '行李清单',
  'packing.empty': '行李清单为空',
  'packing.import': '导入',
  'packing.importTitle': '导入装箱清单',
  'packing.importHint': '每行一个物品。可选用逗号、分号或制表符分隔类别和数量：名称, 类别, 数量',
  'packing.importPlaceholder': '牙刷\n防晒霜, 卫生\nT恤, 衣物, 5\n护照, 证件',
  'packing.importCsv': '加载 CSV/TXT',
  'packing.importAction': '导入 {count}',
  'packing.importSuccess': '已导入 {count} 项',
  'packing.importError': '导入失败',
  'packing.importEmpty': '没有可导入的项目',
  'packing.progress': '已打包 {packed}/{total}（{percent}%）',
  'packing.clearChecked': '移除 {count} 个已勾选',
  'packing.clearCheckedShort': '移除 {count} 个',
  'packing.suggestions': '建议',
  'packing.suggestionsTitle': '添加建议',
  'packing.allSuggested': '所有建议已添加',
  'packing.allPacked': '全部打包完成！',
  'packing.addPlaceholder': '添加新物品...',
  'packing.categoryPlaceholder': '分类...',
  'packing.filterAll': '全部',
  'packing.filterOpen': '未完成',
  'packing.filterDone': '已完成',
  'packing.emptyTitle': '行李清单为空',
  'packing.emptyHint': '添加物品或使用建议',
  'packing.emptyFiltered': '没有匹配的物品',
  'packing.menuRename': '重命名',
  'packing.menuCheckAll': '全部勾选',
  'packing.menuUncheckAll': '取消全部勾选',
  'packing.menuDeleteCat': '删除分类',
  'packing.addItem': '添加物品',
  'packing.addItemPlaceholder': '物品名称...',
  'packing.addCategory': '添加分类',
  'packing.newCategoryPlaceholder': '分类名称（如：衣物）',
  'packing.applyTemplate': '应用模板',
  'packing.template': '模板',
  'packing.templateApplied': '已从模板添加 {count} 个物品',
  'packing.templateError': '应用模板失败',
  'packing.saveAsTemplate': '保存为模板',
  'packing.templateName': '模板名称',
  'packing.templateSaved': '行李清单已保存为模板',
  'packing.noMembers': '无成员',
  'packing.bags': '行李',
  'packing.noBag': '未分配',
  'packing.totalWeight': '总重量',
  'packing.bagName': '名称...',
  'packing.addBag': '添加行李',
  'packing.changeCategory': '更改分类',
  'packing.confirm.clearChecked': '确定移除 {count} 个已勾选的物品？',
  'packing.confirm.deleteCat': '确定删除分类「{name}」及其 {count} 个物品？',
  'packing.defaultCategory': '其他',
  'packing.toast.saveError': '保存失败',
  'packing.toast.deleteError': '删除失败',
  'packing.toast.renameError': '重命名失败',
  'packing.toast.addError': '添加失败',

  // Packing suggestions
  'packing.suggestions.items': [
    { name: '护照', category: '证件' },
    { name: '身份证', category: '证件' },
    { name: '旅行保险', category: '证件' },
    { name: '机票', category: '证件' },
    { name: '信用卡', category: '财务' },
    { name: '现金', category: '财务' },
    { name: '签证', category: '证件' },
    { name: 'T恤', category: '衣物' },
    { name: '裤子', category: '衣物' },
    { name: '内衣', category: '衣物' },
    { name: '袜子', category: '衣物' },
    { name: '外套', category: '衣物' },
    { name: '睡衣', category: '衣物' },
    { name: '泳衣', category: '衣物' },
    { name: '雨衣', category: '衣物' },
    { name: '舒适的鞋子', category: '衣物' },
    { name: '牙刷', category: '洗漱用品' },
    { name: '牙膏', category: '洗漱用品' },
    { name: '洗发水', category: '洗漱用品' },
    { name: '除臭剂', category: '洗漱用品' },
    { name: '防晒霜', category: '洗漱用品' },
    { name: '剃须刀', category: '洗漱用品' },
    { name: '充电器', category: '电子产品' },
    { name: '充电宝', category: '电子产品' },
    { name: '耳机', category: '电子产品' },
    { name: '旅行转换插头', category: '电子产品' },
    { name: '相机', category: '电子产品' },
    { name: '止痛药', category: '健康' },
    { name: '创可贴', category: '健康' },
    { name: '消毒液', category: '健康' },
  ],

  // Members / Sharing
  'members.shareTrip': '分享旅行',
  'members.inviteUser': '邀请用户',
  'members.selectUser': '选择用户…',
  'members.invite': '邀请',
  'members.allHaveAccess': '所有用户均已拥有访问权限。',
  'members.access': '访问权限',
  'members.person': '人',
  'members.persons': '人',
  'members.you': '你',
  'members.owner': '所有者',
  'members.leaveTrip': '退出旅行',
  'members.removeAccess': '移除访问权限',
  'members.confirmLeave': '退出旅行？你将失去访问权限。',
  'members.confirmRemove': '移除该用户的访问权限？',
  'members.loadError': '加载成员失败',
  'members.added': '已添加',
  'members.addError': '添加失败',
  'members.removed': '成员已移除',
  'members.removeError': '移除失败',

  // Categories (Admin)
  'categories.title': '分类',
  'categories.subtitle': '管理地点分类',
  'categories.new': '新建分类',
  'categories.empty': '暂无分类',
  'categories.namePlaceholder': '分类名称',
  'categories.icon': '图标',
  'categories.color': '颜色',
  'categories.customColor': '选择自定义颜色',
  'categories.preview': '预览',
  'categories.defaultName': '分类',
  'categories.update': '更新',
  'categories.create': '创建',
  'categories.confirm.delete': '删除分类？该分类下的地点不会被删除。',
  'categories.toast.loadError': '加载分类失败',
  'categories.toast.nameRequired': '请输入名称',
  'categories.toast.updated': '分类已更新',
  'categories.toast.created': '分类已创建',
  'categories.toast.saveError': '保存失败',
  'categories.toast.deleted': '分类已删除',
  'categories.toast.deleteError': '删除失败',

  // Backup (Admin)
  'backup.title': '数据备份',
  'backup.subtitle': '数据库和所有上传文件',
  'backup.refresh': '刷新',
  'backup.upload': '上传备份',
  'backup.uploading': '上传中…',
  'backup.create': '创建备份',
  'backup.creating': '创建中…',
  'backup.empty': '暂无备份',
  'backup.createFirst': '创建第一个备份',
  'backup.download': '下载',
  'backup.restore': '恢复',
  'backup.confirm.restore': '恢复备份「{name}」？\n\n所有当前数据将被备份数据替换。',
  'backup.confirm.uploadRestore': '上传并恢复备份文件「{name}」？\n\n所有当前数据将被覆盖。',
  'backup.confirm.delete': '删除备份「{name}」？',
  'backup.toast.loadError': '加载备份失败',
  'backup.toast.created': '备份创建成功',
  'backup.toast.createError': '创建备份失败',
  'backup.toast.restored': '备份已恢复。页面即将刷新…',
  'backup.toast.restoreError': '恢复失败',
  'backup.toast.uploadError': '上传失败',
  'backup.toast.deleted': '备份已删除',
  'backup.toast.deleteError': '删除失败',
  'backup.toast.downloadError': '下载失败',
  'backup.toast.settingsSaved': '自动备份设置已保存',
  'backup.toast.settingsError': '保存设置失败',
  'backup.auto.title': '自动备份',
  'backup.auto.subtitle': '按计划自动备份',
  'backup.auto.enable': '启用自动备份',
  'backup.auto.enableHint': '将按所选计划自动创建备份',
  'backup.auto.interval': '间隔',
  'backup.auto.hour': '执行时间',
  'backup.auto.hourHint': '服务器本地时间（{format} 格式）',
  'backup.auto.dayOfWeek': '星期几',
  'backup.auto.dayOfMonth': '每月几号',
  'backup.auto.dayOfMonthHint': '限 1–28 以兼容所有月份',
  'backup.auto.scheduleSummary': '计划',
  'backup.auto.summaryDaily': '每天 {hour}:00',
  'backup.auto.summaryWeekly': '每{day} {hour}:00',
  'backup.auto.summaryMonthly': '每月 {day} 号 {hour}:00',
  'backup.auto.envLocked': 'Docker',
  'backup.auto.envLockedHint': '自动备份通过 Docker 环境变量配置。要更改设置，请更新 docker-compose.yml 并重启容器。',
  'backup.auto.copyEnv': '复制 Docker 环境变量',
  'backup.auto.envCopied': 'Docker 环境变量已复制到剪贴板',
  'backup.auto.keepLabel': '自动删除旧备份',
  'backup.dow.sunday': '周日',
  'backup.dow.monday': '周一',
  'backup.dow.tuesday': '周二',
  'backup.dow.wednesday': '周三',
  'backup.dow.thursday': '周四',
  'backup.dow.friday': '周五',
  'backup.dow.saturday': '周六',
  'backup.interval.hourly': '每小时',
  'backup.interval.daily': '每天',
  'backup.interval.weekly': '每周',
  'backup.interval.monthly': '每月',
  'backup.keep.1day': '1 天',
  'backup.keep.3days': '3 天',
  'backup.keep.7days': '7 天',
  'backup.keep.14days': '14 天',
  'backup.keep.30days': '30 天',
  'backup.keep.forever': '永久保留',

  // Photos
  'photos.title': '照片',
  'photos.subtitle': '{trip} 的 {count} 张照片',
  'photos.dropHere': '将照片拖放至此...',
  'photos.dropHereActive': '将照片拖放至此',
  'photos.captionForAll': '标题（所有）',
  'photos.captionPlaceholder': '可选标题...',
  'photos.addCaption': '添加标题...',
  'photos.allDays': '所有天',
  'photos.noPhotos': '暂无照片',
  'photos.uploadHint': '上传你的旅行照片',
  'photos.clickToSelect': '或点击选择',
  'photos.linkPlace': '关联地点',
  'photos.noPlace': '无地点',
  'photos.uploadN': '上传 {n} 张照片',
  'photos.linkDay': '关联天数',
  'photos.noDay': '无天数',
  'photos.dayLabel': '第 {number} 天',
  'photos.photoSelected': '张照片已选择',
  'photos.photosSelected': '张照片已选择',
  'photos.fileTypeHint': 'JPG, PNG, WebP · 最大 10 MB · 最多 30 张照片',

  // Backup restore modal
  'backup.restoreConfirmTitle': '恢复备份？',
  'backup.restoreWarning': '所有当前数据（旅行、地点、用户、上传文件）将被备份数据永久替换。此操作无法撤销。',
  'backup.restoreTip': '提示：恢复前建议先备份当前状态。',
  'backup.restoreConfirm': '确认恢复',

  // PDF
  'pdf.travelPlan': '旅行计划',
  'pdf.planned': '已规划',
  'pdf.costLabel': '费用 EUR',
  'pdf.preview': 'PDF 预览',
  'pdf.saveAsPdf': '保存为 PDF',

  // Planner
  'planner.places': '地点',
  'planner.bookings': '预订',
  'planner.packingList': '行李清单',
  'planner.documents': '文档',
  'planner.dayPlan': '日程计划',
  'planner.reservations': '预订',
  'planner.minTwoPlaces': '至少需要 2 个有坐标的地点',
  'planner.noGeoPlaces': '没有有坐标的地点',
  'planner.routeCalculated': '路线已计算',
  'planner.routeCalcFailed': '无法计算路线',
  'planner.routeError': '路线计算错误',
  'planner.icsExportFailed': 'ICS 导出失败',
  'planner.routeOptimized': '路线已优化',
  'planner.reservationUpdated': '预订已更新',
  'planner.reservationAdded': '预订已添加',
  'planner.confirmDeleteReservation': '删除预订？',
  'planner.reservationDeleted': '预订已删除',
  'planner.days': '天',
  'planner.allPlaces': '所有地点',
  'planner.totalPlaces': '共 {n} 个地点',
  'planner.noDaysPlanned': '尚未规划天数',
  'planner.editTrip': '编辑旅行 \u2192',
  'planner.placeOne': '1 个地点',
  'planner.placeN': '{n} 个地点',
  'planner.addNote': '添加备注',
  'planner.noEntries': '当天无条目',
  'planner.addPlace': '添加地点/活动',
  'planner.addPlaceShort': '+ 添加地点/活动',
  'planner.resPending': '预订待确认 · ',
  'planner.resConfirmed': '预订已确认 · ',
  'planner.notePlaceholder': '备注…',
  'planner.noteTimePlaceholder': '时间（可选）',
  'planner.noteExamplePlaceholder': '如：14:30 从中央车站乘 S3，7 号码头渡轮，午餐休息…',
  'planner.totalCost': '总费用',
  'planner.searchPlaces': '搜索地点…',
  'planner.allCategories': '所有分类',
  'planner.noPlacesFound': '未找到地点',
  'planner.addFirstPlace': '添加第一个地点',
  'planner.noReservations': '暂无预订',
  'planner.addFirstReservation': '添加第一个预订',
  'planner.new': '新建',
  'planner.addToDay': '+ 天',
  'planner.calculating': '计算中…',
  'planner.route': '路线',
  'planner.optimize': '优化',
  'planner.openGoogleMaps': '在 Google Maps 中打开',
  'planner.selectDayHint': '从左侧列表选择一天以查看日程计划',
  'planner.noPlacesForDay': '当天暂无地点',
  'planner.addPlacesLink': '添加地点 \u2192',
  'planner.minTotal': '分钟 合计',
  'planner.noReservation': '无预订',
  'planner.removeFromDay': '从当天移除',
  'planner.addToThisDay': '添加到当天',
  'planner.overview': '概览',
  'planner.noDays': '暂无天数',
  'planner.editTripToAddDays': '编辑旅行以添加天数',
  'planner.dayCount': '{n} 天',
  'planner.clickToUnlock': '点击解锁',
  'planner.keepPosition': '路线优化时保持位置',
  'planner.dayDetails': '日程详情',
  'planner.dayN': '第 {n} 天',

  // Dashboard Stats
  'stats.countries': '国家',
  'stats.cities': '城市',
  'stats.trips': '旅行',
  'stats.places': '地点',
  'stats.worldProgress': '全球进度',
  'stats.visited': '已访问',
  'stats.remaining': '未访问',
  'stats.visitedCountries': '已访问国家',

  // Day Detail Panel
  'day.precipProb': '降水概率',
  'day.precipitation': '降水量',
  'day.wind': '风速',
  'day.sunrise': '日出',
  'day.sunset': '日落',
  'day.hourlyForecast': '逐小时预报',
  'day.climateHint': '历史平均值——实际预报在该日期前 16 天内可用。',
  'day.noWeather': '无天气数据。请添加有坐标的地点。',
  'day.overview': '每日概览',
  'day.accommodation': '住宿',
  'day.addAccommodation': '添加住宿',
  'day.hotelDayRange': '应用到天数',
  'day.noPlacesForHotel': '请先在旅行中添加地点',
  'day.allDays': '全部',
  'day.checkIn': '入住',
  'day.checkInUntil': '截止',
  'day.checkOut': '退房',
  'day.confirmation': '确认号',
  'day.editAccommodation': '编辑住宿',
  'day.reservations': '预订',

  // Memories / Immich
  'memories.title': '照片',
  'memories.notConnected': 'Immich 未连接',
  'memories.notConnectedHint': '在设置中连接您的 Immich 实例以在此查看旅行照片。',
  'memories.notConnectedMultipleHint': '请在设置中连接以下任一照片提供商：{provider_names}，以便向此行程添加照片。',
  'memories.noDates': '为旅行添加日期以加载照片。',
  'memories.noPhotos': '未找到照片',
  'memories.noPhotosHint': 'Immich 中未找到此旅行日期范围内的照片。',
  'memories.photosFound': '张照片',
  'memories.fromOthers': '来自他人',
  'memories.sharePhotos': '分享照片',
  'memories.sharing': '分享中',
  'memories.reviewTitle': '审查您的照片',
  'memories.reviewHint': '点击照片以将其从分享中排除。',
  'memories.shareCount': '分享 {count} 张照片',
  'memories.providerUrl': '服务器 URL',
  'memories.providerApiKey': 'API 密钥',
  'memories.providerUsername': '用户名',
  'memories.providerPassword': '密码',
  'memories.providerOTP': 'MFA 验证码（如已启用）',
  'memories.skipSSLVerification': '跳过 SSL 证书验证',
  'memories.immichAutoUpload': '上传 Journey 照片时同步到 Immich',
  'memories.providerUrlHintSynology': '在 URL 中包含照片应用路径，例如 https://nas:5001/photo',
  'memories.testConnection': '测试连接',
  'memories.testShort': '测试',
  'memories.testFirst': '请先测试连接',
  'memories.connected': '已连接',
  'memories.disconnected': '未连接',
  'memories.connectionSuccess': '已连接到 Immich',
  'memories.connectionError': '无法连接到 Immich',
  'memories.saved': '{provider_name} 设置已保存',
  'memories.providerDisconnectedBanner': '您与 {provider_name} 的连接已断开。请在设置中重新连接以查看照片。',
  'memories.saveError': '无法保存 {provider_name} 设置',
  'memories.oldest': '最早优先',
  'memories.newest': '最新优先',
  'memories.allLocations': '所有地点',
  'memories.addPhotos': '添加照片',
  'memories.linkAlbum': '关联相册',
  'memories.selectAlbum': '选择 Immich 相册',
  'memories.selectAlbumMultiple': '选择相册',
  'memories.noAlbums': '未找到相册',
  'memories.syncAlbum': '同步相册',
  'memories.unlinkAlbum': '取消关联',
  'memories.photos': '张照片',
  'memories.selectPhotos': '从 Immich 选择照片',
  'memories.selectPhotosMultiple': '选择照片',
  'memories.selectHint': '点击照片以选择。',
  'memories.selected': '已选择',
  'memories.addSelected': '添加 {count} 张照片',
  'memories.alreadyAdded': '已添加',
  'memories.private': '私密',
  'memories.stopSharing': '停止分享',
  'memories.tripDates': '旅行日期',
  'memories.allPhotos': '所有照片',
  'memories.confirmShareTitle': '与旅行成员分享？',
  'memories.confirmShareHint': '{count} 张照片将对本次旅行的所有成员可见。你可以稍后将单张照片设为私密。',
  'memories.confirmShareButton': '分享照片',

  // Collab Addon
  'collab.tabs.chat': '聊天',
  'collab.tabs.notes': '笔记',
  'collab.tabs.polls': '投票',
  'collab.whatsNext.title': '接下来',
  'collab.whatsNext.today': '今天',
  'collab.whatsNext.tomorrow': '明天',
  'collab.whatsNext.empty': '暂无活动',
  'collab.whatsNext.until': '至',
  'collab.whatsNext.emptyHint': '有时间安排的活动将显示在此',
  'collab.chat.send': '发送',
  'collab.chat.placeholder': '输入消息...',
  'collab.chat.empty': '开始对话',
  'collab.chat.emptyHint': '消息对所有旅行成员可见',
  'collab.chat.emptyDesc': '与旅伴分享想法、计划和动态',
  'collab.chat.today': '今天',
  'collab.chat.yesterday': '昨天',
  'collab.chat.deletedMessage': '删除了一条消息',
  'collab.chat.reply': '回复',
  'collab.chat.loadMore': '加载更早的消息',
  'collab.chat.justNow': '刚刚',
  'collab.chat.minutesAgo': '{n} 分钟前',
  'collab.chat.hoursAgo': '{n} 小时前',
  'collab.notes.title': '笔记',
  'collab.notes.new': '新建笔记',
  'collab.notes.empty': '暂无笔记',
  'collab.notes.emptyHint': '开始记录想法和计划',
  'collab.notes.all': '全部',
  'collab.notes.titlePlaceholder': '笔记标题',
  'collab.notes.contentPlaceholder': '写点什么...',
  'collab.notes.categoryPlaceholder': '分类',
  'collab.notes.newCategory': '新建分类...',
  'collab.notes.category': '分类',
  'collab.notes.noCategory': '无分类',
  'collab.notes.color': '颜色',
  'collab.notes.save': '保存',
  'collab.notes.cancel': '取消',
  'collab.notes.edit': '编辑',
  'collab.notes.delete': '删除',
  'collab.notes.pin': '置顶',
  'collab.notes.unpin': '取消置顶',
  'collab.notes.daysAgo': '{n} 天前',
  'collab.notes.categorySettings': '管理分类',
  'collab.notes.create': '创建',
  'collab.notes.website': '网站',
  'collab.notes.websitePlaceholder': 'https://...',
  'collab.notes.attachFiles': '附加文件',
  'collab.notes.noCategoriesYet': '暂无分类',
  'collab.notes.emptyDesc': '创建一个笔记开始吧',
  'collab.polls.title': '投票',
  'collab.polls.new': '新建投票',
  'collab.polls.empty': '暂无投票',
  'collab.polls.emptyHint': '向团队提问并一起投票',
  'collab.polls.question': '问题',
  'collab.polls.questionPlaceholder': '我们应该做什么？',
  'collab.polls.addOption': '+ 添加选项',
  'collab.polls.optionPlaceholder': '选项 {n}',
  'collab.polls.create': '创建投票',
  'collab.polls.close': '关闭',
  'collab.polls.closed': '已关闭',
  'collab.polls.votes': '{n} 票',
  'collab.polls.vote': '{n} 票',
  'collab.polls.multipleChoice': '多选',
  'collab.polls.multiChoice': '多选',
  'collab.polls.deadline': '截止时间',
  'collab.polls.option': '选项',
  'collab.polls.options': '选项',
  'collab.polls.delete': '删除',
  'collab.polls.closedSection': '已关闭',

  // Permissions
  'admin.tabs.permissions': '权限',
  'perm.title': '权限设置',
  'perm.subtitle': '控制谁可以在应用中执行操作',
  'perm.saved': '权限设置已保存',
  'perm.resetDefaults': '恢复默认',
  'perm.customized': '已自定义',
  'perm.level.admin': '仅管理员',
  'perm.level.tripOwner': '旅行所有者',
  'perm.level.tripMember': '旅行成员',
  'perm.level.everybody': '所有人',
  'perm.cat.trip': '旅行管理',
  'perm.cat.members': '成员管理',
  'perm.cat.files': '文件',
  'perm.cat.content': '内容与日程',
  'perm.cat.extras': '预算、行李与协作',
  'perm.action.trip_create': '创建旅行',
  'perm.action.trip_edit': '编辑旅行详情',
  'perm.action.trip_delete': '删除旅行',
  'perm.action.trip_archive': '归档 / 取消归档旅行',
  'perm.action.trip_cover_upload': '上传封面图片',
  'perm.action.member_manage': '添加 / 移除成员',
  'perm.action.file_upload': '上传文件',
  'perm.action.file_edit': '编辑文件元数据',
  'perm.action.file_delete': '删除文件',
  'perm.action.place_edit': '添加 / 编辑 / 删除地点',
  'perm.action.day_edit': '编辑日程、备注与分配',
  'perm.action.reservation_edit': '管理预订',
  'perm.action.budget_edit': '管理预算',
  'perm.action.packing_edit': '管理行李清单',
  'perm.action.collab_edit': '协作（笔记、投票、聊天）',
  'perm.action.share_manage': '管理分享链接',
  'perm.actionHint.trip_create': '谁可以创建新旅行',
  'perm.actionHint.trip_edit': '谁可以更改旅行名称、日期、描述和货币',
  'perm.actionHint.trip_delete': '谁可以永久删除旅行',
  'perm.actionHint.trip_archive': '谁可以归档或取消归档旅行',
  'perm.actionHint.trip_cover_upload': '谁可以上传或更改封面图片',
  'perm.actionHint.member_manage': '谁可以邀请或移除旅行成员',
  'perm.actionHint.file_upload': '谁可以向旅行上传文件',
  'perm.actionHint.file_edit': '谁可以编辑文件描述和链接',
  'perm.actionHint.file_delete': '谁可以将文件移至回收站或永久删除',
  'perm.actionHint.place_edit': '谁可以添加、编辑或删除地点',
  'perm.actionHint.day_edit': '谁可以编辑日程、日程备注和地点分配',
  'perm.actionHint.reservation_edit': '谁可以创建、编辑或删除预订',
  'perm.actionHint.budget_edit': '谁可以创建、编辑或删除预算项目',
  'perm.actionHint.packing_edit': '谁可以管理行李物品和包袋',
  'perm.actionHint.collab_edit': '谁可以创建笔记、投票和发送消息',
  'perm.actionHint.share_manage': '谁可以创建或删除公开分享链接',
  // Undo
  'undo.button': '撤销',
  'undo.tooltip': '撤销：{action}',
  'undo.assignPlace': '地点已分配至某天',
  'undo.removeAssignment': '地点已从某天移除',
  'undo.reorder': '地点已重新排序',
  'undo.optimize': '路线已优化',
  'undo.deletePlace': '地点已删除',
  'undo.deletePlaces': '地点已删除',
  'undo.moveDay': '地点已移至另一天',
  'undo.lock': '地点锁定已切换',
  'undo.importGpx': 'GPX 导入',
  'undo.importKeyholeMarkup': 'KMZ/KML 导入',
  'undo.importGoogleList': 'Google 地图导入',
  'undo.importNaverList': 'Naver 地图导入',

  // Notifications
  'notifications.title': '通知',
  'notifications.markAllRead': '全部标为已读',
  'notifications.deleteAll': '全部删除',
  'notifications.showAll': '查看所有通知',
  'notifications.empty': '暂无通知',
  'notifications.emptyDescription': '您已全部查阅！',
  'notifications.all': '全部',
  'notifications.unreadOnly': '未读',
  'notifications.markRead': '标为已读',
  'notifications.markUnread': '标为未读',
  'notifications.delete': '删除',
  'notifications.system': '系统',
  'notifications.synologySessionCleared.title': 'Synology Photos 已断开连接',
  'notifications.synologySessionCleared.text': '您的服务器或账户已更改 — 请前往设置重新测试您的连接。',
  'memories.error.loadAlbums': '加载相册失败',
  'memories.error.linkAlbum': '关联相册失败',
  'memories.error.unlinkAlbum': '取消关联相册失败',
  'memories.error.syncAlbum': '同步相册失败',
  'memories.error.loadPhotos': '加载照片失败',
  'memories.error.addPhotos': '添加照片失败',
  'memories.error.removePhoto': '删除照片失败',
  'memories.error.toggleSharing': '更新共享设置失败',
  'undo.addPlace': '地点已添加',
  'undo.done': '已撤销：{action}',
  'notifications.test.title': '来自 {actor} 的测试通知',
  'notifications.test.text': '这是一条简单的测试通知。',
  'notifications.test.booleanTitle': '{actor} 请求您的审批',
  'notifications.test.booleanText': '测试布尔通知。',
  'notifications.test.accept': '批准',
  'notifications.test.decline': '拒绝',
  'notifications.test.navigateTitle': '查看详情',
  'notifications.test.navigateText': '测试跳转通知。',
  'notifications.test.goThere': '前往',
  'notifications.test.adminTitle': '管理员广播',
  'notifications.test.adminText': '{actor} 向所有管理员发送了测试通知。',
  'notifications.test.tripTitle': '{actor} 在您的行程中发帖',
  'notifications.test.tripText': '行程"{trip}"的测试通知。',

  // Todo
  'todo.subtab.packing': '行李清单',
  'todo.subtab.todo': '待办事项',
  'todo.completed': '已完成',
  'todo.filter.all': '全部',
  'todo.filter.open': '进行中',
  'todo.filter.done': '已完成',
  'todo.uncategorized': '未分类',
  'todo.namePlaceholder': '任务名称',
  'todo.descriptionPlaceholder': '描述（可选）',
  'todo.unassigned': '未分配',
  'todo.noCategory': '无分类',
  'todo.hasDescription': '有描述',
  'todo.addItem': '新建任务',
  'todo.sidebar.sortBy': '排序方式',
  'todo.priority': '优先级',
  'todo.newCategoryLabel': '新建',
  'budget.categoriesLabel': '类别',
  'todo.newCategory': '分类名称',
  'todo.addCategory': '添加分类',
  'todo.newItem': '新任务',
  'todo.empty': '暂无任务，添加一个任务开始吧！',
  'todo.filter.my': '我的任务',
  'todo.filter.overdue': '已逾期',
  'todo.sidebar.tasks': '任务',
  'todo.sidebar.categories': '分类',
  'todo.detail.title': '任务',
  'todo.detail.description': '描述',
  'todo.detail.category': '分类',
  'todo.detail.dueDate': '截止日期',
  'todo.detail.assignedTo': '分配给',
  'todo.detail.delete': '删除',
  'todo.detail.save': '保存更改',
  'todo.detail.create': '创建任务',
  'todo.detail.priority': '优先级',
  'todo.detail.noPriority': '无',
  'todo.sortByPrio': '优先级',

  // Notification system (added from feat/notification-system)
  'settings.notifyVersionAvailable': '有新版本可用',
  'settings.notificationPreferences.noChannels': '未配置通知渠道。请联系管理员设置电子邮件或 Webhook 通知。',
  'settings.webhookUrl.label': 'Webhook URL',
  'settings.webhookUrl.placeholder': 'https://discord.com/api/webhooks/...',
  'settings.webhookUrl.hint': '输入您的 Discord、Slack 或自定义 Webhook URL 以接收通知。',
  'settings.webhookUrl.saved': 'Webhook URL 已保存',
  'settings.webhookUrl.test': '测试',
  'settings.webhookUrl.testSuccess': '测试 Webhook 发送成功',
  'settings.webhookUrl.testFailed': '测试 Webhook 失败',
  'settings.ntfyUrl.topicLabel': 'Ntfy 主题',
  'settings.ntfyUrl.topicPlaceholder': 'my-trek-alerts',
  'settings.ntfyUrl.serverLabel': 'Ntfy 服务器 URL（可选）',
  'settings.ntfyUrl.serverPlaceholder': 'https://ntfy.sh',
  'settings.ntfyUrl.hint': '输入您的 Ntfy 主题以接收推送通知。将服务器留空以使用管理员配置的默认值。',
  'settings.ntfyUrl.tokenLabel': '访问令牌（可选）',
  'settings.ntfyUrl.tokenHint': '受密码保护的主题需要此项。',
  'settings.ntfyUrl.saved': 'Ntfy 设置已保存',
  'settings.ntfyUrl.test': '测试',
  'settings.ntfyUrl.testSuccess': '测试 Ntfy 通知发送成功',
  'settings.ntfyUrl.testFailed': '测试 Ntfy 通知失败',
  'settings.ntfyUrl.tokenCleared': '访问令牌已清除',
  'settings.notificationPreferences.inapp': 'In-App',
  'settings.notificationPreferences.webhook': 'Webhook',
  'settings.notificationPreferences.email': 'Email',
  'settings.notificationPreferences.ntfy': 'Ntfy',
  'admin.notifications.emailPanel.title': 'Email (SMTP)',
  'admin.notifications.webhookPanel.title': 'Webhook',
  'admin.notifications.inappPanel.title': 'In-App',
  'admin.notifications.inappPanel.hint': '应用内通知始终处于活跃状态，无法全局禁用。',
  'admin.notifications.adminWebhookPanel.title': '管理员 Webhook',
  'admin.notifications.adminWebhookPanel.hint': '此 Webhook 专用于管理员通知（如版本更新提醒）。它与用户 Webhook 相互独立，配置 URL 后自动触发。',
  'admin.notifications.adminWebhookPanel.saved': '管理员 Webhook URL 已保存',
  'admin.notifications.adminWebhookPanel.testSuccess': '测试 Webhook 发送成功',
  'admin.notifications.adminWebhookPanel.testFailed': '测试 Webhook 失败',
  'admin.notifications.adminWebhookPanel.alwaysOnHint': '配置 URL 后管理员 Webhook 自动触发',
  'admin.notifications.ntfy': 'Ntfy',
  'admin.ntfy.hint': '允许用户配置自己的 ntfy 主题以接收推送通知。在下方设置默认服务器以预填充用户设置。',
  'admin.notifications.testNtfy': '发送测试 Ntfy',
  'admin.notifications.testNtfySuccess': '测试 Ntfy 发送成功',
  'admin.notifications.testNtfyFailed': '测试 Ntfy 失败',
  'admin.notifications.adminNtfyPanel.title': '管理员 Ntfy',
  'admin.notifications.adminNtfyPanel.hint': '此 Ntfy 主题专用于管理员通知（如版本更新提醒）。它与每用户主题相互独立，配置后始终触发。',
  'admin.notifications.adminNtfyPanel.serverLabel': 'Ntfy 服务器 URL',
  'admin.notifications.adminNtfyPanel.serverHint': '同时用作用户 ntfy 通知的默认服务器。留空则默认使用 ntfy.sh。用户可在其自己的设置中覆盖此项。',
  'admin.notifications.adminNtfyPanel.serverPlaceholder': 'https://ntfy.sh',
  'admin.notifications.adminNtfyPanel.topicLabel': '管理员主题',
  'admin.notifications.adminNtfyPanel.topicPlaceholder': 'trek-admin-alerts',
  'admin.notifications.adminNtfyPanel.tokenLabel': '访问令牌（可选）',
  'admin.notifications.adminNtfyPanel.tokenCleared': '管理员访问令牌已清除',
  'admin.notifications.adminNtfyPanel.saved': '管理员 Ntfy 设置已保存',
  'admin.notifications.adminNtfyPanel.test': '发送测试 Ntfy',
  'admin.notifications.adminNtfyPanel.testSuccess': '测试 Ntfy 发送成功',
  'admin.notifications.adminNtfyPanel.testFailed': '测试 Ntfy 失败',
  'admin.notifications.adminNtfyPanel.alwaysOnHint': '配置主题后管理员 Ntfy 始终触发',
  'admin.notifications.adminNotificationsHint': '配置哪些渠道发送管理员通知（如版本更新提醒）。设置管理员 Webhook URL 后，Webhook 将自动触发。',
  'admin.notifications.tripReminders.title': '行程提醒',
  'admin.notifications.tripReminders.hint': '在行程开始前发送提醒通知（需要在行程中设置提醒天数）。',
  'admin.notifications.tripReminders.enabled': '行程提醒已启用',
  'admin.notifications.tripReminders.disabled': '行程提醒已禁用',
  'admin.tabs.notifications': '通知',
  'notifications.versionAvailable.title': '有可用更新',
  'notifications.versionAvailable.text': 'TREK {version} 现已可用。',
  'notifications.versionAvailable.button': '查看详情',
  'notif.test.title': '[测试] 通知',
  'notif.test.simple.text': '这是一条简单的测试通知。',
  'notif.test.boolean.text': '您是否接受此测试通知？',
  'notif.test.navigate.text': '点击下方前往控制台。',

  // Notifications
  'notif.trip_invite.title': '旅行邀请',
  'notif.trip_invite.text': '{actor} 邀请您加入 {trip}',
  'notif.booking_change.title': '预订已更新',
  'notif.booking_change.text': '{actor} 更新了 {trip} 中的预订',
  'notif.trip_reminder.title': '旅行提醒',
  'notif.trip_reminder.text': '您的旅行 {trip} 即将开始！',
  'notif.todo_due.title': '待办事项即将到期',
  'notif.todo_due.text': '{trip} 中的 {todo} 将于 {due} 到期',
  'notif.vacay_invite.title': 'Vacay 融合邀请',
  'notif.vacay_invite.text': '{actor} 邀请您合并假期计划',
  'notif.photos_shared.title': '照片已分享',
  'notif.photos_shared.text': '{actor} 在 {trip} 中分享了 {count} 张照片',
  'notif.collab_message.title': '新消息',
  'notif.collab_message.text': '{actor} 在 {trip} 中发送了消息',
  'notif.packing_tagged.title': '行李分配',
  'notif.packing_tagged.text': '{actor} 将您分配到 {trip} 中的 {category}',
  'notif.version_available.title': '新版本可用',
  'notif.version_available.text': 'TREK {version} 现已可用',
  'notif.action.view_trip': '查看旅行',
  'notif.action.view_collab': '查看消息',
  'notif.action.view_packing': '查看行李',
  'notif.action.view_photos': '查看照片',
  'notif.action.view_vacay': '查看 Vacay',
  'notif.action.view_admin': '前往管理',
  'notif.action.view': '查看',
  'notif.action.accept': '接受',
  'notif.action.decline': '拒绝',
  'notif.generic.title': '通知',
  'notif.generic.text': '您有一条新通知',
  'notif.dev.unknown_event.title': '[DEV] 未知事件',
  'notif.dev.unknown_event.text': '事件类型 "{event}" 未在 EVENT_NOTIFICATION_CONFIG 中注册',

  // Journey, Dashboard, Nav, DayPlan
  'common.justNow': '刚刚',
  'common.hoursAgo': '{count}小时前',
  'common.daysAgo': '{count}天前',
  'memories.saveRouteNotConfigured': '此提供商未配置保存路由',
  'memories.testRouteNotConfigured': '此提供商未配置测试路由',
  'memories.fillRequiredFields': '请填写所有必填字段',
  'journey.search.placeholder': '搜索旅程…',
  'journey.search.noResults': '没有与"{query}"匹配的旅程',
  'journey.title': '旅程',
  'journey.subtitle': '实时记录你的旅行',
  'journey.new': '新建旅程',
  'journey.create': '创建',
  'journey.titlePlaceholder': '你要去哪里？',
  'journey.empty': '还没有旅程',
  'journey.emptyHint': '开始记录你的下一次旅行',
  'journey.deleted': '旅程已删除',
  'journey.createError': '无法创建旅程',
  'journey.deleteError': '无法删除旅程',
  'journey.deleteConfirmTitle': '删除',
  'journey.deleteConfirmMessage': '删除"{title}"？此操作无法撤销。',
  'journey.deleteConfirmGeneric': '确定要删除吗？',
  'journey.notFound': '未找到旅程',
  'journey.photos': '照片',
  'journey.timelineEmpty': '还没有行程',
  'journey.timelineEmptyHint': '添加一个签到或写一篇日志开始记录',
  'journey.status.draft': '草稿',
  'journey.status.active': '进行中',
  'journey.status.completed': '已完成',
  'journey.status.upcoming': '即将开始',
  'journey.status.archived': '已归档',
  'journey.checkin.add': '签到',
  'journey.checkin.namePlaceholder': '地点名称',
  'journey.checkin.notesPlaceholder': '备注（可选）',
  'journey.checkin.save': '保存',
  'journey.checkin.error': '无法保存签到',
  'journey.entry.add': '日志',
  'journey.entry.edit': '编辑条目',
  'journey.entry.titlePlaceholder': '标题（可选）',
  'journey.entry.bodyPlaceholder': '今天发生了什么？',
  'journey.entry.save': '保存',
  'journey.entry.error': '无法保存条目',
  'journey.photo.add': '照片',
  'journey.photo.uploadError': '上传失败',
  'journey.share.share': '分享',
  'journey.share.public': '公开',
  'journey.share.linkCopied': '公开链接已复制',
  'journey.share.disabled': '已关闭公开分享',
  'journey.editor.titlePlaceholder': '给这个瞬间起个名字...',
  'journey.editor.bodyPlaceholder': '讲述这一天的故事...',
  'journey.editor.placePlaceholder': '地点（可选）',
  'journey.editor.tagsPlaceholder': '标签：隐藏宝藏、最佳美食、值得再去...',
  'journey.visibility.private': '私密',
  'journey.visibility.shared': '共享',
  'journey.visibility.public': '公开',
  'journey.emptyState.title': '你的故事从这里开始',
  'journey.emptyState.subtitle': '在某个地方签到或写下你的第一篇日志',
  'journey.frontpage.subtitle': '将旅行变成永远不会忘记的故事',
  'journey.frontpage.createJourney': '创建旅程',
  'journey.frontpage.activeJourney': '进行中的旅程',
  'journey.frontpage.allJourneys': '所有旅程',
  'journey.frontpage.journeys': '个旅程',
  'journey.frontpage.createNew': '创建新旅程',
  'journey.frontpage.createNewSub': '选择旅行、写故事、分享你的冒险',
  'journey.frontpage.live': '实时',
  'journey.frontpage.synced': '已同步',
  'journey.frontpage.continueWriting': '继续写作',
  'journey.frontpage.updated': '更新于 {time}',
  'journey.frontpage.suggestionLabel': '旅行刚结束',
  'journey.frontpage.suggestionText': '将 <strong>{title}</strong> 变成一段旅程',
  'journey.frontpage.dismiss': '忽略',
  'journey.frontpage.journeyName': '旅程名称',
  'journey.frontpage.namePlaceholder': '例如 东南亚 2026',
  'journey.frontpage.selectTrips': '选择旅行',
  'journey.frontpage.tripsSelected': '个旅行已选择',
  'journey.frontpage.trips': '个旅行',
  'journey.frontpage.placesImported': '个地点将被导入',
  'journey.frontpage.places': '个地点',
  'journey.detail.backToJourney': '返回旅程',
  'journey.detail.syncedWithTrips': '已与旅行同步',
  'journey.detail.addEntry': '添加条目',
  'journey.detail.newEntry': '新建条目',
  'journey.detail.editEntry': '编辑条目',
  'journey.detail.noEntries': '还没有条目',
  'journey.detail.noEntriesHint': '添加一个旅行以生成骨架条目',
  'journey.detail.noPhotos': '还没有照片',
  'journey.detail.noPhotosHint': '上传照片到条目或浏览你的 Immich/Synology 相册',
  'journey.detail.journeyStats': '旅程统计',
  'journey.detail.syncedTrips': '已同步的旅行',
  'journey.detail.noTripsLinked': '尚未关联旅行',
  'journey.detail.contributors': '贡献者',
  'journey.detail.readMore': '阅读更多',
  'journey.detail.prosCons': '优缺点',
  'journey.detail.photos': '照片',
  'journey.detail.day': '第{number}天',
  'journey.detail.places': '个地点',
  'journey.stats.days': '天',
  'journey.stats.cities': '城市',
  'journey.stats.entries': '条目',
  'journey.stats.photos': '照片',
  'journey.stats.places': '地点',
  'journey.skeletons.show': '显示建议',
  'journey.skeletons.hide': '隐藏建议',
  'journey.verdict.lovedIt': '非常喜欢',
  'journey.verdict.couldBeBetter': '有待改进',
  'journey.synced.places': '个地点',
  'journey.synced.synced': '已同步',
  'journey.editor.discardChangesConfirm': '您有未保存的更改。要放弃吗？',
  'journey.editor.uploadPhotos': '上传照片',
  'journey.editor.uploading': '上传中...',
  'journey.editor.fromGallery': '从相册',
  'journey.editor.allPhotosAdded': '所有照片已添加',
  'journey.editor.writeStory': '写下你的故事...',
  'journey.editor.prosCons': '优缺点',
  'journey.editor.pros': '优点',
  'journey.editor.cons': '缺点',
  'journey.editor.proPlaceholder': '好的方面...',
  'journey.editor.conPlaceholder': '不好的方面...',
  'journey.editor.addAnother': '再添加一个',
  'journey.editor.date': '日期',
  'journey.editor.location': '地点',
  'journey.editor.searchLocation': '搜索地点...',
  'journey.editor.mood': '心情',
  'journey.editor.weather': '天气',
  'journey.editor.photoFirst': '第1张',
  'journey.editor.makeFirst': '设为第1张',
  'journey.editor.searching': '搜索中...',
  'journey.mood.amazing': '太棒了',
  'journey.mood.good': '不错',
  'journey.mood.neutral': '一般',
  'journey.mood.rough': '糟糕',
  'journey.weather.sunny': '晴天',
  'journey.weather.partly': '多云',
  'journey.weather.cloudy': '阴天',
  'journey.weather.rainy': '雨天',
  'journey.weather.stormy': '暴风雨',
  'journey.weather.cold': '雪天',
  'journey.trips.linkTrip': '关联旅行',
  'journey.trips.searchTrip': '搜索旅行',
  'journey.trips.searchPlaceholder': '旅行名称或目的地...',
  'journey.trips.noTripsAvailable': '没有可用的旅行',
  'journey.trips.link': '关联',
  'journey.trips.tripLinked': '旅行已关联',
  'journey.trips.linkFailed': '关联旅行失败',
  'journey.trips.addTrip': '添加旅行',
  'journey.trips.unlinkTrip': '取消关联旅行',
  'journey.trips.unlinkMessage': '取消关联"{title}"？此旅行中所有已同步的条目和照片将被永久删除。此操作无法撤销。',
  'journey.trips.unlink': '取消关联',
  'journey.trips.tripUnlinked': '旅行已取消关联',
  'journey.trips.unlinkFailed': '取消关联失败',
  'journey.trips.noTripsLinkedSettings': '未关联旅行',
  'journey.contributors.invite': '邀请贡献者',
  'journey.contributors.searchUser': '搜索用户',
  'journey.contributors.searchPlaceholder': '用户名或邮箱...',
  'journey.contributors.noUsers': '未找到用户',
  'journey.contributors.role': '角色',
  'journey.contributors.added': '贡献者已添加',
  'journey.contributors.addFailed': '添加贡献者失败',
  'journey.share.publicShare': '公开分享',
  'journey.share.createLink': '创建分享链接',
  'journey.share.linkCreated': '分享链接已创建',
  'journey.share.createFailed': '创建链接失败',
  'journey.share.copy': '复制',
  'journey.share.copied': '已复制！',
  'journey.share.timeline': '时间线',
  'journey.share.gallery': '图库',
  'journey.share.map': '地图',
  'journey.share.removeLink': '移除分享链接',
  'journey.share.linkDeleted': '分享链接已删除',
  'journey.share.deleteFailed': '删除失败',
  'journey.share.updateFailed': '更新失败',

  // Journey — Invite
  'journey.invite.role': '角色',
  'journey.invite.viewer': '查看者',
  'journey.invite.editor': '编辑者',
  'journey.invite.invite': '邀请',
  'journey.invite.inviting': '邀请中...',
  'journey.settings.title': '旅程设置',
  'journey.settings.coverImage': '封面图片',
  'journey.settings.changeCover': '更换封面',
  'journey.settings.addCover': '添加封面图片',
  'journey.settings.name': '名称',
  'journey.settings.subtitle': '副标题',
  'journey.settings.subtitlePlaceholder': '例如 泰国、越南和柬埔寨',
  'journey.settings.endJourney': '归档旅程',
  'journey.settings.reopenJourney': '恢复旅程',
  'journey.settings.archived': '旅程已归档',
  'journey.settings.reopened': '旅程已重新开启',
  'journey.settings.endDescription': '隐藏直播标记。您可以随时重新开启。',
  'journey.settings.delete': '删除',
  'journey.settings.deleteJourney': '删除旅程',
  'journey.settings.deleteMessage': '删除"{title}"？所有条目和照片将丢失。',
  'journey.settings.saved': '设置已保存',
  'journey.settings.saveFailed': '保存失败',
  'journey.settings.coverUpdated': '封面已更新',
  'journey.settings.coverFailed': '上传失败',
  'journey.settings.failedToDelete': '删除失败',
  'journey.entries.deleteTitle': '删除条目',
  'journey.photosUploaded': '{count} 张照片已上传',
  'journey.photosAdded': '{count} 张照片已添加',
  'journey.public.notFound': '未找到',
  'journey.public.notFoundMessage': '此旅程不存在或链接已过期。',
  'journey.public.readOnly': '只读 · 公开旅程',
  'journey.public.tagline': '旅行资源与探索工具包',
  'journey.public.sharedVia': '分享自',
  'journey.public.madeWith': '由',
  'journey.pdf.journeyBook': '旅程手册',
  'journey.pdf.madeWith': '由 TREK 制作',
  'journey.pdf.day': '第',
  'journey.pdf.theEnd': '终',
  'journey.pdf.saveAsPdf': '保存为 PDF',
  'journey.pdf.pages': '页',
  'journey.picker.tripPeriod': '旅行时间段',
  'journey.picker.dateRange': '日期范围',
  'journey.picker.allPhotos': '所有照片',
  'journey.picker.albums': '相册',
  'journey.picker.selected': '已选择',
  'journey.picker.addTo': '添加到',
  'journey.picker.newGallery': '新相册',
  'journey.picker.selectAll': '全选',
  'journey.picker.deselectAll': '取消全选',
  'journey.picker.noAlbums': '未找到相册',
  'journey.picker.selectDate': '选择日期',
  'journey.picker.search': '搜索',
  'dashboard.greeting.morning': '早上好，',
  'dashboard.greeting.afternoon': '下午好，',
  'dashboard.greeting.evening': '晚上好，',
  'dashboard.mobile.liveNow': '进行中',
  'dashboard.mobile.tripProgress': '旅行进度',
  'dashboard.mobile.daysLeft': '还剩 {count} 天',
  'dashboard.mobile.places': '地点',
  'dashboard.mobile.buddies': '旅伴',
  'dashboard.mobile.newTrip': '新建旅行',
  'dashboard.mobile.currency': '货币',
  'dashboard.mobile.timezone': '时区',
  'dashboard.mobile.upcomingTrips': '即将到来的旅行',
  'dashboard.mobile.yourTrips': '我的旅行',
  'dashboard.mobile.trips': '个旅行',
  'dashboard.mobile.starts': '出发',
  'dashboard.mobile.duration': '时长',
  'dashboard.mobile.day': '天',
  'dashboard.mobile.days': '天',
  'dashboard.mobile.ongoing': '进行中',
  'dashboard.mobile.startsToday': '今天出发',
  'dashboard.mobile.tomorrow': '明天',
  'dashboard.mobile.inDays': '{count} 天后',
  'dashboard.mobile.inMonths': '{count} 个月后',
  'dashboard.mobile.completed': '已完成',
  'dashboard.mobile.currencyConverter': '汇率转换',
  'nav.profile': '个人资料',
  'nav.bottomSettings': '设置',
  'nav.bottomAdmin': '管理设置',
  'nav.bottomLogout': '退出登录',
  'nav.bottomAdminBadge': '管理员',
  'dayplan.mobile.addPlace': '添加地点',
  'dayplan.mobile.searchPlaces': '搜索地点...',
  'dayplan.mobile.allAssigned': '所有地点已分配',
  'dayplan.mobile.noMatch': '无匹配',
  'dayplan.mobile.createNew': '创建新地点',
  'admin.addons.catalog.journey.name': '旅程',
  'admin.addons.catalog.journey.description': '旅行追踪与旅行日志，包含签到、照片和每日故事',
  // OAuth scope groups
  'oauth.scope.group.trips': '行程',
  'oauth.scope.group.places': '地点',
  'oauth.scope.group.atlas': 'Atlas',
  'oauth.scope.group.packing': '行李',
  'oauth.scope.group.todos': '待办事项',
  'oauth.scope.group.budget': '预算',
  'oauth.scope.group.reservations': '预订',
  'oauth.scope.group.collab': '协作',
  'oauth.scope.group.notifications': '通知',
  'oauth.scope.group.vacay': '假期',
  'oauth.scope.group.geo': 'Geo',
  'oauth.scope.group.weather': '天气',
  'oauth.scope.group.journey': '旅程',

  // OAuth scope labels & descriptions
  'oauth.scope.trips:read.label': '查看行程和行程计划',
  'oauth.scope.trips:read.description': '读取行程、天数、每日笔记和成员',
  'oauth.scope.trips:write.label': '编辑行程和行程计划',
  'oauth.scope.trips:write.description': '创建和更新行程、天数、笔记并管理成员',
  'oauth.scope.trips:delete.label': '删除行程',
  'oauth.scope.trips:delete.description': '永久删除整个行程——此操作不可撤销',
  'oauth.scope.trips:share.label': '管理分享链接',
  'oauth.scope.trips:share.description': '创建、更新和撤销行程的公开分享链接',
  'oauth.scope.places:read.label': '查看地点和地图数据',
  'oauth.scope.places:read.description': '读取地点、每日分配、标签和分类',
  'oauth.scope.places:write.label': '管理地点',
  'oauth.scope.places:write.description': '创建、更新和删除地点、分配和标签',
  'oauth.scope.atlas:read.label': '查看 Atlas',
  'oauth.scope.atlas:read.description': '读取已访问国家、地区和心愿清单',
  'oauth.scope.atlas:write.label': '管理 Atlas',
  'oauth.scope.atlas:write.description': '标记已访问国家和地区，管理心愿清单',
  'oauth.scope.packing:read.label': '查看行李清单',
  'oauth.scope.packing:read.description': '读取行李物品、包袋和分类负责人',
  'oauth.scope.packing:write.label': '管理行李清单',
  'oauth.scope.packing:write.description': '添加、更新、删除、勾选和重新排列行李物品和包袋',
  'oauth.scope.todos:read.label': '查看待办清单',
  'oauth.scope.todos:read.description': '读取行程待办事项和分类负责人',
  'oauth.scope.todos:write.label': '管理待办清单',
  'oauth.scope.todos:write.description': '创建、更新、勾选、删除和重新排列待办事项',
  'oauth.scope.budget:read.label': '查看预算',
  'oauth.scope.budget:read.description': '读取预算条目和费用明细',
  'oauth.scope.budget:write.label': '管理预算',
  'oauth.scope.budget:write.description': '创建、更新和删除预算条目',
  'oauth.scope.reservations:read.label': '查看预订',
  'oauth.scope.reservations:read.description': '读取预订和住宿详情',
  'oauth.scope.reservations:write.label': '管理预订',
  'oauth.scope.reservations:write.description': '创建、更新、删除和重新排列预订',
  'oauth.scope.collab:read.label': '查看协作',
  'oauth.scope.collab:read.description': '读取协作笔记、投票和消息',
  'oauth.scope.collab:write.label': '管理协作',
  'oauth.scope.collab:write.description': '创建、更新和删除协作笔记、投票和消息',
  'oauth.scope.notifications:read.label': '查看通知',
  'oauth.scope.notifications:read.description': '读取应用内通知和未读数量',
  'oauth.scope.notifications:write.label': '管理通知',
  'oauth.scope.notifications:write.description': '将通知标记为已读并回复',
  'oauth.scope.vacay:read.label': '查看假期计划',
  'oauth.scope.vacay:read.description': '读取假期计划数据、条目和统计',
  'oauth.scope.vacay:write.label': '管理假期计划',
  'oauth.scope.vacay:write.description': '创建和管理假期条目、节假日和团队计划',
  'oauth.scope.geo:read.label': '地图和地理编码',
  'oauth.scope.geo:read.description': '搜索位置、解析地图 URL 和反向地理编码坐标',
  'oauth.scope.weather:read.label': '天气预报',
  'oauth.scope.weather:read.description': '获取行程地点和日期的天气预报',
  'oauth.scope.journey:read.label': '查看旅程',
  'oauth.scope.journey:read.description': '读取旅程、条目和贡献者列表',
  'oauth.scope.journey:write.label': '管理旅程',
  'oauth.scope.journey:write.description': '创建、更新和删除旅程及其条目',
  'oauth.scope.journey:share.label': '管理旅程链接',
  'oauth.scope.journey:share.description': '创建、更新和撤销旅程的公开分享链接',

  // System notices
  'system_notice.welcome_v1.title': '欢迎使用 TREK',
  'system_notice.welcome_v1.body': '您的全能旅行规划器。制定行程、与朋友分享旅行，随时保持井然有序——在线或离线均可。',
  'system_notice.welcome_v1.cta_label': '规划行程',
  'system_notice.welcome_v1.hero_alt': '风景优美的旅游目的地与 TREK 界面',
  'system_notice.welcome_v1.highlight_plan': '逐日行程规划',
  'system_notice.welcome_v1.highlight_share': '与旅行伙伴协作',
  'system_notice.welcome_v1.highlight_offline': '移动端支持离线使用',
  'system_notice.dev_test_modal.title': '[Dev] Test notice',
  'system_notice.dev_test_modal.body': 'This is a dev-only test notice.',
  'system_notice.pager.prev': '上一条通知',
  'system_notice.pager.next': '下一条通知',
  'system_notice.pager.counter': '{current} / {total}',
  'system_notice.pager.goto': '转到通知 {n}',
  'system_notice.pager.position': '通知 {current}/{total}',
  // System notices — 3.0.0 upgrade
  'system_notice.v3_photos.title': '3.0 版照片已迁移',
  'system_notice.v3_photos.body': '行程规划器中的​**照片**标签已被移除。您的照片安全无虑 — TREK 从未修改您的 Immich 或 Synology 相册。\n\n照片现在位于 **Journey** 插件中。Journey 是可选的 — 如果尚未启用，请联系管理员在 Admin → 插件 中开启。',
  'system_notice.v3_journey.title': '认识 Journey — 旅行日记',
  'system_notice.v3_journey.body': '将您的旅程记录为展示时间线、照片画廊和互动地图的丰富旅行故事。',
  'system_notice.v3_journey.cta_label': '打开 Journey',
  'system_notice.v3_journey.highlight_timeline': '每日时间线与画廊',
  'system_notice.v3_journey.highlight_photos': '从 Immich 或 Synology 导入',
  'system_notice.v3_journey.highlight_share': '公开分享 — 无需登录',
  'system_notice.v3_journey.highlight_export': '导出为 PDF 相册书',
  'system_notice.v3_features.title': '3.0 版更多亮点',
  'system_notice.v3_features.body': '此版本还有一些其他值得了解的新功能。',
  'system_notice.v3_features.highlight_dashboard': '移动优先仪表板重设计',
  'system_notice.v3_features.highlight_offline': '作为 PWA 的完整离线模式',
  'system_notice.v3_features.highlight_search': '地点搜索实时自动补全',
  'system_notice.v3_features.highlight_import': '从 KMZ/KML 文件导入地点',

  // System notices — MCP OAuth 2.1 upgrade
  'system_notice.v3_mcp.title': 'MCP：OAuth 2.1 升级',
  'system_notice.v3_mcp.body': 'MCP 集成已全面重构。OAuth 2.1 现为推荐的身份验证方式。静态令牌（trek_…）已弃用，将在未来版本中移除。',
  'system_notice.v3_mcp.highlight_oauth':      'OAuth 2.1 推荐（mcp-remote）',
  'system_notice.v3_mcp.highlight_scopes':     '24 个细粒度权限范围',
  'system_notice.v3_mcp.highlight_deprecated': '静态 trek_ 令牌已弃用',
  'system_notice.v3_mcp.highlight_tools':      '扩展工具集与提示词',

  // System notices — personal thank you
  'system_notice.v3_thankyou.title': '来自我的一封私人信',
  'system_notice.v3_thankyou.body': '在你继续之前——我想停下来说几句。\n\nTREK 最初只是我为自己的旅行而做的一个业余项目。我从未想过它会成长为 4,000 人信赖的冒险规划工具。每一颗星标、每一个 issue、每一个功能请求——我都会读，它们在全职工作和大学学业之间的深夜里支撑着我继续前行。\n\n我想让你们知道：TREK 将永远开源，永远可自托管，永远属于你们。没有追踪，没有订阅，没有任何附加条件。只是一个热爱旅行的人为同样热爱旅行的你们打造的工具。\n\n特别感谢 [jubnl](https://github.com/jubnl)——你已经成为一位不可思议的合作者。3.0 版本中许多精彩之处都留下了你的印记。感谢你在这个项目还很粗糙的时候就选择了相信它。\n\n也感谢你们每一位——报告了 bug、翻译了文本、向朋友分享了 TREK，或者只是用它规划了一次旅行——**谢谢你们**。你们是这一切存在的原因。\n\n愿我们一起踏上更多的冒险旅程。\n\n— Maurice\n\n---\n\n[加入 Discord 社区](https://discord.gg/7Q6M6jDwzf)\n\n如果 TREK 让你的旅行更美好，一杯[小小的咖啡](https://ko-fi.com/mauriceboe)能让这盏灯一直亮着。',
  // System notices — 3.0.14
  'system_notice.v3014_whitespace_collision.title': '需要操作：用户账户冲突',
  'system_notice.v3014_whitespace_collision.body': '3.0.14 版本升级检测到一个或多个由存储账户中首尾空白字符引发的用户名或邮箱冲突。受影响的账户已自动重命名。请检查服务器日志中以 **[migration] WHITESPACE COLLISION** 开头的行，以确认哪些账户需要审查。',
  'transport.addTransport': '添加交通',
  'transport.modalTitle.create': '添加交通',
  'transport.modalTitle.edit': '编辑交通',
  'transport.title': '交通',
  'transport.addManual': '手动添加交通',
}

export default zh

