1257 lines
55 KiB
TypeScript
1257 lines
55 KiB
TypeScript
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.on': '开',
|
||
'settings.off': '关',
|
||
'settings.mcp.title': 'MCP 配置',
|
||
'settings.mcp.endpoint': 'MCP 端点',
|
||
'settings.mcp.clientConfig': '客户端配置',
|
||
'settings.mcp.clientConfigHint': '将 <your_token> 替换为下方列表中的 API 令牌。',
|
||
'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.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.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.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.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.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.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 导出失败',
|
||
|
||
// Places Sidebar
|
||
'places.addPlace': '添加地点/活动',
|
||
'places.assignToDay': '添加到哪一天?',
|
||
'places.all': '全部',
|
||
'places.unplanned': '未规划',
|
||
'places.search': '搜索地点...',
|
||
'places.allCategories': '所有分类',
|
||
'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.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': '未分配成员',
|
||
|
||
// 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.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.keepLabel': '自动删除旧备份',
|
||
'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': '所有地点',
|
||
|
||
// 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
|