From 13c350d87625821a065120a9a65ad989dd06a27c Mon Sep 17 00:00:00 2001 From: YiZixuan Date: Sat, 7 Jun 2025 12:03:39 +0800 Subject: [PATCH] feat(translations): Add Simplified Chinese translation - Added Simplified Chinese translation files covering translation content for various modules - Added zhcn language option in translations/index.ts --- application/src/translations/index.ts | 4 +- application/src/translations/zhcn/about.ts | 18 +++ application/src/translations/zhcn/common.ts | 29 +++++ application/src/translations/zhcn/incident.ts | 55 +++++++++ application/src/translations/zhcn/index.ts | 25 ++++ application/src/translations/zhcn/login.ts | 23 ++++ .../src/translations/zhcn/maintenance.ts | 68 +++++++++++ application/src/translations/zhcn/menu.ts | 21 ++++ application/src/translations/zhcn/services.ts | 12 ++ application/src/translations/zhcn/settings.ts | 52 +++++++++ application/src/translations/zhcn/ssl.ts | 107 ++++++++++++++++++ 11 files changed, 413 insertions(+), 1 deletion(-) create mode 100644 application/src/translations/zhcn/about.ts create mode 100644 application/src/translations/zhcn/common.ts create mode 100644 application/src/translations/zhcn/incident.ts create mode 100644 application/src/translations/zhcn/index.ts create mode 100644 application/src/translations/zhcn/login.ts create mode 100644 application/src/translations/zhcn/maintenance.ts create mode 100644 application/src/translations/zhcn/menu.ts create mode 100644 application/src/translations/zhcn/services.ts create mode 100644 application/src/translations/zhcn/settings.ts create mode 100644 application/src/translations/zhcn/ssl.ts diff --git a/application/src/translations/index.ts b/application/src/translations/index.ts index e087b36..e9f2500 100644 --- a/application/src/translations/index.ts +++ b/application/src/translations/index.ts @@ -1,13 +1,15 @@ import enTranslations from './en'; import kmTranslations from './km'; import deTranslations from './de'; +import zhcnTranslations from './zhcn'; -export type Language = "en" | "km" | "de"; +export type Language = "en" | "km" | "de" | "zhcn"; export const translations = { en: enTranslations, km: kmTranslations, de: deTranslations, + zhcn: zhcnTranslations, }; // Type for accessing translations by module and key diff --git a/application/src/translations/zhcn/about.ts b/application/src/translations/zhcn/about.ts new file mode 100644 index 0000000..2fcc81e --- /dev/null +++ b/application/src/translations/zhcn/about.ts @@ -0,0 +1,18 @@ + +import { AboutTranslations } from '../types/about'; + +export const aboutTranslations: AboutTranslations = { + aboutCheckcle: "关于 Checkcle", + systemDescription: "Checkcle 是一个开源监控堆栈,可实时洞察服务器和服务健康状况,提供事件管理与操作透明度。采用 MIT 许可证发布。", + systemVersion: "系统版本", + license: "许可证", + mitLicense: "MIT 许可证", + links: "链接", + viewOnGithub: "在 GitHub 上查看", + viewDocumentation: "查看文档", + followOnX: "在 X 上关注", + joinDiscord: "加入 Discord", + quickActions: "快速操作", + quickActionsDescription: "快速访问常用监控操作和功能。请从以下操作中选择一项开始。", + quickTips: "快速提示", +}; diff --git a/application/src/translations/zhcn/common.ts b/application/src/translations/zhcn/common.ts new file mode 100644 index 0000000..5be23ad --- /dev/null +++ b/application/src/translations/zhcn/common.ts @@ -0,0 +1,29 @@ + +import { CommonTranslations } from '../types/common'; + +export const commonTranslations: CommonTranslations = { + welcome: "欢迎", + logout: "登出", + language: "语言", + english: "English", + khmer: "Khmer", + german: "Deutsch", + goodMorning: "早上好", + goodAfternoon: "下午好", + goodEvening: "晚上好", + profile: "个人资料", + settings: "文档", + documentation: "文档", + notifications: "通知", + close: "关闭", + cancel: "取消", + view: "查看", + edit: "编辑", + delete: "删除", + status: "状态", + time: "时间", + title: "标题", + description: "描述", + success: "成功", + error: "错误", +}; diff --git a/application/src/translations/zhcn/incident.ts b/application/src/translations/zhcn/incident.ts new file mode 100644 index 0000000..461babd --- /dev/null +++ b/application/src/translations/zhcn/incident.ts @@ -0,0 +1,55 @@ + +import { IncidentTranslations } from '../types/incident'; + +export const incidentTranslations: IncidentTranslations = { + incidentManagement: 'Incident Management', + incidentsManagementDesc: 'Track and manage service incidents and their resolutions', + unresolvedIncidents: 'Unresolved', + resolvedIncidents: 'Resolved', + activeIncidents: 'Active Incidents', + criticalIssues: 'Critical Issues', + avgResolutionTime: 'Avg. Resolution Time', + noIncidents: 'No Active Incidents', + createIncident: 'Create Incident', + investigating: 'Investigating', + identified: 'Identified', + monitoring: 'Monitoring', + resolved: 'Resolved', + scheduleIncidentManagement: 'Schedule & Incident Management', + incidentName: 'Incident Name', + incidentStatus: 'Incident Status', + highPriority: 'High Priority', + configurationSettings: 'Configuration Settings', + incidentCreatedSuccess: 'Incident created successfully', + basicInfo: 'Basic Information', + serviceId: 'Service ID', + assignedTo: 'Assigned To', + unassigned: 'Unassigned', + timeline: 'Timeline', + incidentTime: 'Incident Time', + resolutionTime: 'Resolution Time', + systems: 'Systems', + noSystems: 'No systems affected', + impactAnalysis: 'Impact Analysis', + rootCause: 'Root Cause', + resolutionSteps: 'Resolution Steps', + lessonsLearned: 'Lessons Learned', + resolutionDetails: 'Resolution Details', + assignment: 'Assignment', + download: 'Download', + downloadPdf: 'Download PDF', + print: 'Print', + confidentialNote: 'This document is confidential and intended for internal use only.', + generatedOn: 'Generated on', + enterResolutionSteps: 'Enter steps taken to resolve the incident', + enterLessonsLearned: 'Enter lessons learned from this incident', + editIncident: 'Edit Incident', + editIncidentDesc: 'Update details for this incident', + updating: 'Updating...', + update: 'Update', + create: 'Create', + creating: 'Creating...', + configuration: 'Configuration', + failedToUpdateStatus: 'Failed to update status', + inProgress: 'In Progress', +}; diff --git a/application/src/translations/zhcn/index.ts b/application/src/translations/zhcn/index.ts new file mode 100644 index 0000000..e282607 --- /dev/null +++ b/application/src/translations/zhcn/index.ts @@ -0,0 +1,25 @@ + +import { Translations } from '../types'; +import { commonTranslations } from './common'; +import { menuTranslations } from './menu'; +import { loginTranslations } from './login'; +import { aboutTranslations } from './about'; +import { servicesTranslations } from './services'; +import { maintenanceTranslations } from './maintenance'; +import { incidentTranslations } from './incident'; +import { sslTranslations } from './ssl'; +import { settingsTranslations } from './settings'; + +const enTranslations: Translations = { + common: commonTranslations, + menu: menuTranslations, + login: loginTranslations, + about: aboutTranslations, + services: servicesTranslations, + maintenance: maintenanceTranslations, + incident: incidentTranslations, + ssl: sslTranslations, + settings: settingsTranslations +}; + +export default enTranslations; \ No newline at end of file diff --git a/application/src/translations/zhcn/login.ts b/application/src/translations/zhcn/login.ts new file mode 100644 index 0000000..0853f0c --- /dev/null +++ b/application/src/translations/zhcn/login.ts @@ -0,0 +1,23 @@ + +import { LoginTranslations } from '../types/login'; + +export const loginTranslations: LoginTranslations = { + signInToYourAccount: "登录您的账户", + dontHaveAccount: "没有账号?", + createOne: "创建一个", + signInWithGoogle: "使用 Google 登录", + orContinueWith: "或", + email: "电子邮件", + password: "密码", + forgot: "忘记密码?", + signIn: "登录", + signingIn: "登录中...", + loginSuccessful: "登录成功", + loginSuccessMessage: "您已成功登录。", + loginFailed: "登录失败", + authenticationFailed: "认证失败", + bySigningIn: "登录即表示您同意我们的", + termsAndConditions: "条款与条件", + and: "和", + privacyPolicy: "隐私政策", +}; diff --git a/application/src/translations/zhcn/maintenance.ts b/application/src/translations/zhcn/maintenance.ts new file mode 100644 index 0000000..b3213de --- /dev/null +++ b/application/src/translations/zhcn/maintenance.ts @@ -0,0 +1,68 @@ + +import { MaintenanceTranslations } from '../types/maintenance'; + +export const maintenanceTranslations: MaintenanceTranslations = { + scheduledMaintenance: '计划维护', + scheduledMaintenanceDesc: '查看并管理系统和服务的计划维护窗口', + upcomingMaintenance: '即将上线', + ongoingMaintenance: '进行中', + completedMaintenance: '已完成', + createMaintenanceWindow: '创建维护', + totalScheduledHours: '计划总工时', + maintenanceName: '维护名称', + maintenanceStatus: '状态', + scheduledStart: '计划开始', + scheduledEnd: '计划结束', + affectedServices: '受影响的服务', + impact: '影响', + minor: '轻微', + major: '严重', + critical: '关键', + none: '无', + actions: '行动', + scheduled: '已安排', + inprogress: '进行中', + completed: '已完成', + cancelled: '已取消', + markAsInProgress: '标记为进行中', + markAsCompleted: '标记为已完成', + markAsCancelled: '标记为已取消', + confirmDelete: '确认删除', + deleteMaintenanceConfirmation: '您确定要删除此维护窗口吗?', + thisActionCannotBeUndone: '此操作无法撤销。', + maintenanceDeleted: '维护已删除', + maintenanceDeletedDesc: '维护窗口已成功删除。', + errorDeletingMaintenance: '删除维护窗口时出错。', + statusUpdated: '状态已更新', + maintenanceStatusUpdated: '维护状态已成功更新。', + errorUpdatingMaintenanceStatus: '更新维护状态时出错。', + createMaintenance: '创建维护', + createMaintenanceDesc: '为您的服务安排新的维护窗口', + enterTitle: '输入维护标题', + enterDescription: '输入维护的详细描述', + startTime: '开始时间', + endTime: '结束时间', + selectDate: '选择一个日期', + enterAffectedServices: '受影响的服务', + separateServicesWithComma: '用 , 分隔多个服务', + priority: '优先级', + selectPriority: '选择优先级', + selectStatus: '选择状态', + selectImpact: '选择影响', + notifySubscribers: '通知订阅者', + notifySubscribersDesc: '当此次维护开始时,向所有订阅者发送通知', + maintenanceCreated: '维护已创建', + maintenanceCreatedDesc: '维护窗口已成功安排。', + errorCreatingMaintenance: '创建维护窗口时出错。', + errorFetchingMaintenanceData: '获取维护数据时出错。', + low: '低', + medium: '中', + high: '高', + created: '已创建', + lastUpdated: '最后更新', + subscribersWillBeNotified: '维护开始时将通知订阅用户', + noNotifications: '不会发送任何通知', + noScheduledMaintenance: '无计划维护', + noMaintenanceWindows: '在此期间没有维护窗口。点击“创建维护”按钮创建一个。', + maintenanceCreatedSuccess: '维护窗口已成功创建', +}; diff --git a/application/src/translations/zhcn/menu.ts b/application/src/translations/zhcn/menu.ts new file mode 100644 index 0000000..9962c73 --- /dev/null +++ b/application/src/translations/zhcn/menu.ts @@ -0,0 +1,21 @@ + +import { MenuTranslations } from '../types/menu'; + +export const menuTranslations: MenuTranslations = { + uptimeMonitoring: "可用时间监控", + instanceMonitoring: "实例监控", + sslDomain: "SSL和域名", + scheduleIncident: "计划与事件", + operationalPage: "操作页面", + reports: "报告", + apiDocumentation: "API 文档", + settingPanel: "设置面板", + generalSettings: "常规设置", + userManagement: "用户管理", + notificationSettings: "通知设置", + alertsTemplates: "警报模板", + rolesManagement: "角色管理", + dataRetention: "数据保留", + backupSettings: "备份设置", + aboutSystem: "关于系统", +}; diff --git a/application/src/translations/zhcn/services.ts b/application/src/translations/zhcn/services.ts new file mode 100644 index 0000000..f235022 --- /dev/null +++ b/application/src/translations/zhcn/services.ts @@ -0,0 +1,12 @@ + +import { ServicesTranslations } from '../types/services'; + +export const servicesTranslations: ServicesTranslations = { + serviceName: "服务名称", + serviceType: "服务类型", + serviceStatus: "服务状态", + responseTime: "响应时间", + uptime: "可用时间", + lastChecked: "上次检查", + noServices: "没有服务符合您的筛选条件。", +}; diff --git a/application/src/translations/zhcn/settings.ts b/application/src/translations/zhcn/settings.ts new file mode 100644 index 0000000..23c21a2 --- /dev/null +++ b/application/src/translations/zhcn/settings.ts @@ -0,0 +1,52 @@ + +import { SettingsTranslations } from '../types/settings'; + +export const settingsTranslations: SettingsTranslations = { + // Tabs + systemSettings: "系统设置", + mailSettings: "邮件设置", + + // System Settings + appName: "应用名称", + appURL: "应用 URL", + senderName: "发件人名称", + senderEmail: "发件人邮箱地址", + hideControls: "隐藏控件", + + // Mail Settings + smtpSettings: "SMTP 配置", + smtpEnabled: "启用 SMTP", + smtpHost: "SMTP 主机", + smtpPort: "SMTP 端口", + smtpUsername: "SMTP 用户名", + smtpPassword: "SMTP 密码", + smtpAuthMethod: "认证方法", + enableTLS: "启用 TLS", + localName: "本地名称", + + // Test Email + testEmail: "测试邮件", + sendTestEmail: "发送测试邮件", + emailTemplate: "电子邮件模板", + verification: "验证", + passwordReset: "密码重置", + confirmEmailChange: "确认邮箱更改", + otp: "OTP", + loginAlert: "登录提醒", + authCollection: "认证集合", + selectCollection: "选择集合", + toEmailAddress: "收件人邮箱地址", + enterEmailAddress: "输入电子邮件地址", + sending: "发送中...", + + // Actions and status + save: "保存更改", + saving: "保存中...", + settingsUpdated: "设置已成功更新", + errorSavingSettings: "保存设置时出错", + errorFetchingSettings: "加载设置时出错", + testConnection: "测试连接", + testingConnection: "测试连接中...", + connectionSuccess: "连接成功", + connectionFailed: "连接失败" +}; diff --git a/application/src/translations/zhcn/ssl.ts b/application/src/translations/zhcn/ssl.ts new file mode 100644 index 0000000..03c560e --- /dev/null +++ b/application/src/translations/zhcn/ssl.ts @@ -0,0 +1,107 @@ + +import { SSLTranslations } from '../types/ssl'; + +export const sslTranslations: SSLTranslations = { + // Page and section titles + sslDomainManagement: "SSL 与域名管理", + monitorSSLCertificates: "监控并管理您域名的 SSL 证书", + addSSLCertificate: "添加 SSL 证书", + editSSLCertificate: "编辑 SSL 证书", + deleteSSLCertificate: "删除 SSL 证书", + sslCertificateDetails: "SSL 证书详情", + detailedInfo: "详细信息", + + // Status related + valid: "有效", + expiringSoon: "即将到期", + expired: "已过期", + pending: "待处理", + + // Statistics and cards + validCertificates: "有效证书", + expiringSoonCertificates: "即将到期", + expiredCertificates: "过期证书", + + // Form fields + domain: "域", + domainName: "域名", + domainCannotChange: "创建后无法更改域名", + warningThreshold: "警告阈值", + warningThresholdDays: "警告阈值(天数)", + expiryThreshold: "过期阈值", + expiryThresholdDays: "过期阈值(天数)", + notificationChannel: "通知渠道", + chooseChannel: "选择一个通知渠道", + whereToSend: "通知发送至何处", + daysBeforeExpiration: "到期前几天收到警告", + daysBeforeCritical: "到期前接收关键警报的天数", + getNotifiedExpiration: "证书即将过期时获取通知", + getNotifiedCritical: "证书即将严重过期时获取通知", + + // Table headers and fields + issuer: "发行机构", + expirationDate: "有效期", + daysLeft: "剩余天数", + status: "状态", + lastNotified: "最后通知时间", + actions: "活动", + validFrom: "有效期自", + validUntil: "有效期至", + validityDays: "有效期天数", + organization: "组织", + commonName: "通用名称", + serialNumber: "序列号", + algorithm: "算法", + subjectAltNames: "主题别名", + + // Buttons and actions + addDomain: "添加域名", + refreshAll: "刷新全部", + cancel: "取消", + addCertificate: "添加证书", + check: "检查", + view: "查看", + edit: "编辑", + delete: "删除", + close: "关闭", + saveChanges: "保存更改", + updating: "更新中", + + // Sections in detail view + basicInformation: "基本信息", + validity: "有效性", + issuerInfo: "发行机构信息", + technicalDetails: "技术细节", + monitoringConfig: "监控配置", + recordInfo: "记录信息", + + // Notifications and messages + sslCertificateAdded: "SSL 证书已成功添加", + sslCertificateUpdated: "SSL 证书更新成功", + sslCertificateDeleted: "SSL 证书已成功删除", + sslCertificateRefreshed: "{domain} 的 SSL 证书已成功更新", + allCertificatesRefreshed: "所有 {count} 张证书已成功刷新", + someCertificatesFailed: "{success} 证书已刷新,{failed} 失败", + failedToAddCertificate: "无法添加 SSL 证书", + failedToLoadCertificates: "无法加载 SSL 证书", + failedToUpdateCertificate: "无法更新 SSL 证书", + failedToDeleteCertificate: "无法删除 SSL 证书", + failedToCheckCertificate: "无法检查 SSL 证书", + noCertificatesToRefresh: "没有需要更新的证书", + startingRefreshAll: "开始刷新 {count} 个证书", + checkingSSLCertificate: "检查 SSL 证书...", + deleteConfirmation: "您确定要删除该证书吗", + deleteWarning: "此操作无法撤销。证书将被永久删除。", + + // Misc + unknown: "未知", + never: "绝不", + none: "无", + loadingChannels: "正在加载渠道...", + noChannelsFound: "未找到通知渠道", + noSSLCertificates: "未找到 SSL 证书", + created: "已创建", + lastUpdated: "最后更新", + lastNotification: "上次通知", + collectionId: "集合 ID" +};