mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-21 22:31:46 +00:00
126f2df21b
* chore: move i18n to shared package * chore: move server translations to shared package and apply linter and prettier on entire shared package
331 lines
18 KiB
TypeScript
331 lines
18 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
||
|
||
const admin: TranslationStrings = {
|
||
'admin.notifications.title': '通知',
|
||
'admin.notifications.hint': '选择一个通知渠道。一次只能激活一个。',
|
||
'admin.notifications.none': '已禁用',
|
||
'admin.notifications.email': '电子邮件 (SMTP)',
|
||
'admin.notifications.webhook': 'Webhook',
|
||
'admin.notifications.save': '保存通知设置',
|
||
'admin.notifications.saved': '通知设置已保存',
|
||
'admin.notifications.testWebhook': '发送测试 Webhook',
|
||
'admin.notifications.testWebhookSuccess': '测试 Webhook 发送成功',
|
||
'admin.notifications.testWebhookFailed': '测试 Webhook 发送失败',
|
||
'admin.smtp.title': '邮件与通知',
|
||
'admin.smtp.hint': '用于发送电子邮件通知的 SMTP 配置。',
|
||
'admin.smtp.testButton': '发送测试邮件',
|
||
'admin.webhook.hint': '向外部 Webhook 发送通知(Discord、Slack 等)。',
|
||
'admin.smtp.testSuccess': '测试邮件发送成功',
|
||
'admin.smtp.testFailed': '测试邮件发送失败',
|
||
'admin.title': '管理后台',
|
||
'admin.subtitle': '用户管理和系统设置',
|
||
'admin.tabs.users': '用户',
|
||
'admin.tabs.categories': '分类',
|
||
'admin.tabs.backup': '备份',
|
||
'admin.tabs.audit': '审计',
|
||
'admin.stats.users': '用户',
|
||
'admin.stats.trips': '旅行',
|
||
'admin.stats.places': '地点',
|
||
'admin.stats.photos': '照片',
|
||
'admin.stats.files': '文件',
|
||
'admin.table.user': '用户',
|
||
'admin.table.email': '邮箱',
|
||
'admin.table.role': '角色',
|
||
'admin.table.created': '创建时间',
|
||
'admin.table.lastLogin': '最后登录',
|
||
'admin.table.actions': '操作',
|
||
'admin.you': '(你)',
|
||
'admin.editUser': '编辑用户',
|
||
'admin.newPassword': '新密码',
|
||
'admin.newPasswordHint': '留空则保持当前密码',
|
||
'admin.deleteUser': '删除用户「{name}」?所有旅行将被永久删除。',
|
||
'admin.deleteUserTitle': '删除用户',
|
||
'admin.newPasswordPlaceholder': '输入新密码…',
|
||
'admin.toast.loadError': '加载管理数据失败',
|
||
'admin.toast.userUpdated': '用户已更新',
|
||
'admin.toast.updateError': '更新失败',
|
||
'admin.toast.userDeleted': '用户已删除',
|
||
'admin.toast.deleteError': '删除失败',
|
||
'admin.toast.cannotDeleteSelf': '不能删除自己的账户',
|
||
'admin.toast.userCreated': '用户已创建',
|
||
'admin.toast.createError': '创建用户失败',
|
||
'admin.toast.fieldsRequired': '用户名、邮箱和密码为必填项',
|
||
'admin.createUser': '创建用户',
|
||
'admin.invite.title': '邀请链接',
|
||
'admin.invite.subtitle': '创建一次性注册链接',
|
||
'admin.invite.create': '创建链接',
|
||
'admin.invite.createAndCopy': '创建并复制',
|
||
'admin.invite.empty': '尚未创建邀请链接',
|
||
'admin.invite.maxUses': '最大使用次数',
|
||
'admin.invite.expiry': '有效期',
|
||
'admin.invite.uses': '已使用',
|
||
'admin.invite.expiresAt': '过期时间',
|
||
'admin.invite.createdBy': '由',
|
||
'admin.invite.active': '有效',
|
||
'admin.invite.expired': '已过期',
|
||
'admin.invite.usedUp': '已用完',
|
||
'admin.invite.copied': '邀请链接已复制',
|
||
'admin.invite.copyLink': '复制链接',
|
||
'admin.invite.deleted': '邀请链接已删除',
|
||
'admin.invite.createError': '创建链接失败',
|
||
'admin.invite.deleteError': '删除链接失败',
|
||
'admin.tabs.settings': '设置',
|
||
'admin.allowRegistration': '允许注册',
|
||
'admin.allowRegistrationHint': '新用户可以自行注册',
|
||
'admin.authMethods': 'Authentication Methods',
|
||
'admin.passwordLogin': 'Password Login',
|
||
'admin.passwordLoginHint': 'Allow users to sign in with email and password',
|
||
'admin.passwordRegistration': 'Password Registration',
|
||
'admin.passwordRegistrationHint':
|
||
'Allow new users to register with email and password',
|
||
'admin.oidcLogin': 'SSO Login',
|
||
'admin.oidcLoginHint': 'Allow users to sign in with SSO',
|
||
'admin.oidcRegistration': 'SSO Auto-Provisioning',
|
||
'admin.oidcRegistrationHint':
|
||
'Automatically create accounts for new SSO users',
|
||
'admin.envOverrideHint':
|
||
'Password login settings are controlled by the OIDC_ONLY environment variable and cannot be changed here.',
|
||
'admin.lockoutWarning': 'At least one login method must remain enabled',
|
||
'admin.requireMfa': '要求双因素身份验证(2FA)',
|
||
'admin.requireMfaHint':
|
||
'未启用 2FA 的用户必须先完成设置中的配置才能使用应用。',
|
||
'admin.apiKeys': 'API 密钥',
|
||
'admin.apiKeysHint': '可选。启用地点的扩展数据,如照片和天气。',
|
||
'admin.mapsKey': 'Google Maps API 密钥',
|
||
'admin.mapsKeyHint': '用于地点搜索。在 console.cloud.google.com 获取',
|
||
'admin.mapsKeyHintLong':
|
||
'没有 API 密钥时,使用 OpenStreetMap 搜索地点。有了 Google API 密钥,还可以加载照片、评分和营业时间。在 console.cloud.google.com 获取。',
|
||
'admin.recommended': '推荐',
|
||
'admin.weatherKey': 'OpenWeatherMap API 密钥',
|
||
'admin.weatherKeyHint': '用于天气数据。在 openweathermap.org 免费获取',
|
||
'admin.validateKey': '测试',
|
||
'admin.keyValid': '已连接',
|
||
'admin.keyInvalid': '无效',
|
||
'admin.keySaved': 'API 密钥已保存',
|
||
'admin.oidcTitle': '单点登录 (OIDC)',
|
||
'admin.oidcSubtitle':
|
||
'允许通过 Google、Apple、Authentik 或 Keycloak 等外部提供商登录。',
|
||
'admin.oidcDisplayName': '显示名称',
|
||
'admin.oidcIssuer': '颁发者 URL',
|
||
'admin.oidcIssuerHint':
|
||
'提供商的 OpenID Connect 颁发者 URL。如 https://accounts.google.com',
|
||
'admin.oidcSaved': 'OIDC 配置已保存',
|
||
'admin.oidcOnlyMode': '禁用密码登录',
|
||
'admin.oidcOnlyModeHint': '启用后,仅允许 SSO 登录。密码登录和注册将被禁用。',
|
||
'admin.fileTypes': '允许的文件类型',
|
||
'admin.fileTypesHint': '配置用户可以上传的文件类型。',
|
||
'admin.fileTypesFormat':
|
||
'以逗号分隔的扩展名(如 jpg,png,pdf,doc)。使用 * 允许所有类型。',
|
||
'admin.fileTypesSaved': '文件类型设置已保存',
|
||
'admin.placesPhotos.title': '地点照片',
|
||
'admin.placesPhotos.subtitle':
|
||
'从 Google Places API 获取照片。禁用可节省 API 配额。Wikimedia 照片不受影响。',
|
||
'admin.placesAutocomplete.title': '地点自动补全',
|
||
'admin.placesAutocomplete.subtitle':
|
||
'使用 Google Places API 提供搜索建议。禁用可节省 API 配额。',
|
||
'admin.placesDetails.title': '地点详情',
|
||
'admin.placesDetails.subtitle':
|
||
'从 Google Places API 获取地点详细信息(营业时间、评分、网站)。禁用可节省 API 配额。',
|
||
'admin.bagTracking.title': '行李追踪',
|
||
'admin.bagTracking.subtitle': '为打包物品启用重量和行李分配',
|
||
'admin.collab.chat.title': '聊天',
|
||
'admin.collab.chat.subtitle': '实时消息协作',
|
||
'admin.collab.notes.title': '笔记',
|
||
'admin.collab.notes.subtitle': '共享笔记和文档',
|
||
'admin.collab.polls.title': '投票',
|
||
'admin.collab.polls.subtitle': '群组投票和表决',
|
||
'admin.collab.whatsnext.title': '下一步',
|
||
'admin.collab.whatsnext.subtitle': '活动建议和后续步骤',
|
||
'admin.tabs.config': '个性化',
|
||
'admin.tabs.defaults': '用户默认设置',
|
||
'admin.defaultSettings.title': '用户默认设置',
|
||
'admin.defaultSettings.description':
|
||
'设置实例范围的默认值。未更改设置的用户将看到这些值。用户自己的更改始终优先。',
|
||
'admin.defaultSettings.saved': '默认值已保存',
|
||
'admin.defaultSettings.reset': '重置为内置默认值',
|
||
'admin.defaultSettings.resetToBuiltIn': '重置',
|
||
'admin.tabs.templates': '打包模板',
|
||
'admin.packingTemplates.title': '打包模板',
|
||
'admin.packingTemplates.subtitle': '创建可复用的旅行打包清单',
|
||
'admin.packingTemplates.create': '新建模板',
|
||
'admin.packingTemplates.namePlaceholder': '模板名称(如:海滩度假)',
|
||
'admin.packingTemplates.empty': '尚未创建模板',
|
||
'admin.packingTemplates.items': '物品',
|
||
'admin.packingTemplates.categories': '分类',
|
||
'admin.packingTemplates.itemName': '物品名称',
|
||
'admin.packingTemplates.itemCategory': '分类',
|
||
'admin.packingTemplates.categoryName': '分类名称(如:衣物)',
|
||
'admin.packingTemplates.addCategory': '添加分类',
|
||
'admin.packingTemplates.created': '模板已创建',
|
||
'admin.packingTemplates.deleted': '模板已删除',
|
||
'admin.packingTemplates.loadError': '加载模板失败',
|
||
'admin.packingTemplates.createError': '创建模板失败',
|
||
'admin.packingTemplates.deleteError': '删除模板失败',
|
||
'admin.packingTemplates.saveError': '保存失败',
|
||
'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': '暂无可用扩展',
|
||
'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':
|
||
'天气基于每天中第一个有坐标的地点。如果当天没有分配地点,则使用地点列表中的任意地点作为参考。',
|
||
'admin.tabs.mcpTokens': 'MCP 访问',
|
||
'admin.mcpTokens.title': 'MCP 访问',
|
||
'admin.mcpTokens.subtitle': '管理所有用户的 OAuth 会话和 API 令牌',
|
||
'admin.mcpTokens.sectionTitle': 'API 令牌',
|
||
'admin.mcpTokens.owner': '所有者',
|
||
'admin.mcpTokens.tokenName': '令牌名称',
|
||
'admin.mcpTokens.created': '创建时间',
|
||
'admin.mcpTokens.lastUsed': '最后使用',
|
||
'admin.mcpTokens.never': '从未',
|
||
'admin.mcpTokens.empty': '尚未创建任何 MCP 令牌',
|
||
'admin.mcpTokens.deleteTitle': '删除令牌',
|
||
'admin.mcpTokens.deleteMessage':
|
||
'此令牌将立即被撤销。用户将失去通过此令牌的 MCP 访问权限。',
|
||
'admin.mcpTokens.deleteSuccess': '令牌已删除',
|
||
'admin.mcpTokens.deleteError': '删除令牌失败',
|
||
'admin.mcpTokens.loadError': '加载令牌失败',
|
||
'admin.oauthSessions.sectionTitle': 'OAuth 会话',
|
||
'admin.oauthSessions.clientName': '客户端',
|
||
'admin.oauthSessions.owner': '所有者',
|
||
'admin.oauthSessions.scopes': '权限范围',
|
||
'admin.oauthSessions.created': '创建时间',
|
||
'admin.oauthSessions.empty': '暂无活跃的 OAuth 会话',
|
||
'admin.oauthSessions.revokeTitle': '撤销会话',
|
||
'admin.oauthSessions.revokeMessage':
|
||
'此 OAuth 会话将立即被撤销。客户端将失去 MCP 访问权限。',
|
||
'admin.oauthSessions.revokeSuccess': '会话已撤销',
|
||
'admin.oauthSessions.revokeError': '撤销会话失败',
|
||
'admin.oauthSessions.loadError': '加载 OAuth 会话失败',
|
||
'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': '请在几秒后刷新页面。',
|
||
'admin.tabs.permissions': '权限',
|
||
'admin.notifications.emailPanel.title': 'Email (SMTP)',
|
||
'admin.notifications.webhookPanel.title': 'Webhook',
|
||
'admin.notifications.inappPanel.title': 'In-App',
|
||
'admin.notifications.inappPanel.hint':
|
||
'应用内通知始终处于活跃状态,无法全局禁用。',
|
||
'admin.notifications.adminWebhookPanel.title': '管理员 Webhook',
|
||
'admin.notifications.adminWebhookPanel.hint':
|
||
'此 Webhook 专用于管理员通知(如版本更新提醒)。它与用户 Webhook 相互独立,配置 URL 后自动触发。',
|
||
'admin.notifications.adminWebhookPanel.saved': '管理员 Webhook URL 已保存',
|
||
'admin.notifications.adminWebhookPanel.testSuccess': '测试 Webhook 发送成功',
|
||
'admin.notifications.adminWebhookPanel.testFailed': '测试 Webhook 失败',
|
||
'admin.notifications.adminWebhookPanel.alwaysOnHint':
|
||
'配置 URL 后管理员 Webhook 自动触发',
|
||
'admin.notifications.ntfy': 'Ntfy',
|
||
'admin.ntfy.hint':
|
||
'允许用户配置自己的 ntfy 主题以接收推送通知。在下方设置默认服务器以预填充用户设置。',
|
||
'admin.notifications.testNtfy': '发送测试 Ntfy',
|
||
'admin.notifications.testNtfySuccess': '测试 Ntfy 发送成功',
|
||
'admin.notifications.testNtfyFailed': '测试 Ntfy 失败',
|
||
'admin.notifications.adminNtfyPanel.title': '管理员 Ntfy',
|
||
'admin.notifications.adminNtfyPanel.hint':
|
||
'此 Ntfy 主题专用于管理员通知(如版本更新提醒)。它与每用户主题相互独立,配置后始终触发。',
|
||
'admin.notifications.adminNtfyPanel.serverLabel': 'Ntfy 服务器 URL',
|
||
'admin.notifications.adminNtfyPanel.serverHint':
|
||
'同时用作用户 ntfy 通知的默认服务器。留空则默认使用 ntfy.sh。用户可在其自己的设置中覆盖此项。',
|
||
'admin.notifications.adminNtfyPanel.serverPlaceholder': 'https://ntfy.sh',
|
||
'admin.notifications.adminNtfyPanel.topicLabel': '管理员主题',
|
||
'admin.notifications.adminNtfyPanel.topicPlaceholder': 'trek-admin-alerts',
|
||
'admin.notifications.adminNtfyPanel.tokenLabel': '访问令牌(可选)',
|
||
'admin.notifications.adminNtfyPanel.tokenCleared': '管理员访问令牌已清除',
|
||
'admin.notifications.adminNtfyPanel.saved': '管理员 Ntfy 设置已保存',
|
||
'admin.notifications.adminNtfyPanel.test': '发送测试 Ntfy',
|
||
'admin.notifications.adminNtfyPanel.testSuccess': '测试 Ntfy 发送成功',
|
||
'admin.notifications.adminNtfyPanel.testFailed': '测试 Ntfy 失败',
|
||
'admin.notifications.adminNtfyPanel.alwaysOnHint':
|
||
'配置主题后管理员 Ntfy 始终触发',
|
||
'admin.notifications.adminNotificationsHint':
|
||
'配置哪些渠道发送管理员通知(如版本更新提醒)。设置管理员 Webhook URL 后,Webhook 将自动触发。',
|
||
'admin.notifications.tripReminders.title': '行程提醒',
|
||
'admin.notifications.tripReminders.hint':
|
||
'在行程开始前发送提醒通知(需要在行程中设置提醒天数)。',
|
||
'admin.notifications.tripReminders.enabled': '行程提醒已启用',
|
||
'admin.notifications.tripReminders.disabled': '行程提醒已禁用',
|
||
'admin.tabs.notifications': '通知',
|
||
'admin.addons.catalog.journey.name': '旅程',
|
||
'admin.addons.catalog.journey.description':
|
||
'旅行追踪与旅行日志,包含签到、照片和每日故事',
|
||
};
|
||
export default admin;
|