const zh: Record<string, string> = {
  // Common
  'common.save': '保存',
  'common.cancel': '取消',
  'common.delete': '删除',
  'common.edit': '编辑',
  'common.add': '添加',
  'common.loading': '加载中...',
  'common.error': '错误',
  '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.name': '名称',
  'common.email': '邮箱',
  'common.password': '密码',
  'common.saving': '保存中...',
  '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.archive': '归档',
  '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.confirm.delete': '删除旅行「{title}」？所有地点和计划将被永久删除。',
  'dashboard.editTrip': '编辑旅行',
  'dashboard.createTrip': '创建新旅行',
  'dashboard.tripTitle': '标题',
  'dashboard.tripTitlePlaceholder': '如：日本夏日之旅',
  'dashboard.tripDescription': '描述',
  'dashboard.tripDescriptionPlaceholder': '这次旅行是关于什么的？',
  'dashboard.startDate': '开始日期',
  'dashboard.endDate': '结束日期',
  '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.map': '地图',
  'settings.mapTemplate': '地图模板',
  'settings.mapTemplatePlaceholder.select': '选择模板...',
  'settings.mapDefaultHint': '留空则使用 OpenStreetMap（默认）',
  'settings.mapTemplatePlaceholder': 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
  'settings.mapHint': '地图瓦片 URL 模板',
  '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.notifyVacayInvite': 'Vacay 融合邀请',
  'settings.notifyPhotosShared': '共享照片 (Immich)',
  'settings.notifyCollabMessage': '聊天消息 (Collab)',
  'settings.notifyPackingTagged': '行李清单：分配',
  'settings.notifyWebhook': 'Webhook 通知',
  'admin.smtp.title': '邮件与通知',
  'admin.smtp.hint': '用于邮件通知的 SMTP 配置。可选：Discord、Slack 等的 Webhook URL。',
  'admin.smtp.testButton': '发送测试邮件',
  '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.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.account': '账户',
  'settings.username': '用户名',
  'settings.email': '邮箱',
  'settings.role': '角色',
  'settings.roleAdmin': '管理员',
  'settings.oidcLinked': '已关联',
  'settings.changePassword': '修改密码',
  '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.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.oidc.tokenFailed': '认证失败。',
  'login.oidc.invalidState': '会话无效，请重试。',
  'login.demoFailed': '演示登录失败',
  'login.oidcSignIn': '通过 {name} 登录',
  'login.oidcOnly': '密码登录已关闭。请通过 SSO 提供商登录。',
  'login.demoHint': '试用演示——无需注册',

  // Register
  'register.passwordMismatch': '两次输入的密码不一致',
  'register.passwordTooShort': '密码至少需要 6 个字符',
  '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.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.bagTracking.title': '行李追踪',
  'admin.bagTracking.subtitle': '为打包物品启用重量和行李分配',
  'admin.tabs.config': '配置',
  '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': '管理所有用户的 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': '加载令牌失败',

  // 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.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.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.markVisited': '标记为已访问',
  'atlas.markVisitedHint': '将此国家添加到已访问列表',
  'atlas.addToBucket': '添加到心愿单',
  'atlas.addPoi': '添加地点',
  'atlas.bucketNamePlaceholder': '名称（国家、城市、地点…）',
  'atlas.month': '月份',
  'atlas.year': '年份',
  'atlas.addToBucketHint': '保存为想去的地方',
  'atlas.bucketWhen': '你计划什么时候去？',

  // Trip Planner
  'trip.tabs.plan': '计划',
  'trip.tabs.reservations': '预订',
  'trip.tabs.reservationsShort': '预订',
  'trip.tabs.packing': '行李清单',
  'trip.tabs.packingShort': '行李',
  'trip.tabs.budget': '预算',
  'trip.tabs.files': '文件',
  'trip.loading': '加载旅行中...',
  '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': '确定要删除这个地点吗？',

  // 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.importGpx': '导入 GPX',
  'places.gpxImported': '已从 GPX 导入 {count} 个地点',
  'places.gpxError': 'GPX 导入失败',
  'places.urlResolved': '已从 URL 导入地点',
  'places.assignToDay': '添加到哪一天？',
  'places.all': '全部',
  'places.unplanned': '未规划',
  '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.formNotesPlaceholder': '个人备注...',
  'places.formReservation': '预订',
  'places.reservationNotesPlaceholder': '预订备注、确认号...',
  'places.mapsSearchPlaceholder': '搜索地点...',
  'places.mapsSearchError': '地点搜索失败。',
  '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.addToDay': '添加到当天',
  'inspector.confirmedRes': '已确认预订',
  'inspector.pendingRes': '待确认预订',
  'inspector.google': '在 Google Maps 中打开',
  'inspector.website': '打开网站',
  'inspector.addRes': '预订',
  'inspector.editRes': '编辑预订',
  'inspector.participants': '参与者',

  // 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.meta.trainNumber': '车次',
  'reservations.meta.platform': '站台',
  'reservations.meta.seat': '座位',
  'reservations.meta.checkIn': '入住',
  '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': '无关联（独立）',

  // Budget
  'budget.title': '预算',
  '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.newEntry': '新建条目',
  'budget.defaultEntry': '新建条目',
  'budget.defaultCategory': '新分类',
  'budget.total': '合计',
  'budget.totalBudget': '总预算',
  'budget.byCategory': '按分类',
  'budget.editTooltip': '点击编辑',
  '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.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.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.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.assignUser': '分配用户',
  '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.allDays': '所有天',
  'photos.noPhotos': '暂无照片',
  'photos.uploadHint': '上传你的旅行照片',
  'photos.clickToSelect': '或点击选择',
  'photos.linkPlace': '关联地点',
  'photos.noPlace': '无地点',
  'photos.uploadN': '上传 {n} 张照片',

  // 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.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.checkOut': '退房',
  'day.confirmation': '确认号',
  'day.editAccommodation': '编辑住宿',
  'day.reservations': '预订',

  // Memories / Immich
  'memories.title': '照片',
  'memories.notConnected': 'Immich 未连接',
  'memories.notConnectedHint': '在设置中连接您的 Immich 实例以在此查看旅行照片。',
  'memories.noDates': '为旅行添加日期以加载照片。',
  'memories.noPhotos': '未找到照片',
  'memories.noPhotosHint': 'Immich 中未找到此旅行日期范围内的照片。',
  'memories.photosFound': '张照片',
  'memories.fromOthers': '来自他人',
  'memories.sharePhotos': '分享照片',
  'memories.sharing': '分享中',
  'memories.reviewTitle': '审查您的照片',
  'memories.reviewHint': '点击照片以将其从分享中排除。',
  'memories.shareCount': '分享 {count} 张照片',
  'memories.immichUrl': 'Immich 服务器地址',
  'memories.immichApiKey': 'API 密钥',
  'memories.testConnection': '测试连接',
  'memories.connected': '已连接',
  'memories.disconnected': '未连接',
  'memories.connectionSuccess': '已连接到 Immich',
  'memories.connectionError': '无法连接到 Immich',
  'memories.saved': 'Immich 设置已保存',
  'memories.oldest': '最早优先',
  'memories.newest': '最新优先',
  'memories.allLocations': '所有地点',
  'memories.addPhotos': '添加照片',
  'memories.selectPhotos': '从 Immich 选择照片',
  '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.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': '已关闭',
}

export default zh
