diff --git a/application/src/components/dashboard/Header.tsx b/application/src/components/dashboard/Header.tsx index ed5b542..d0db992 100644 --- a/application/src/components/dashboard/Header.tsx +++ b/application/src/components/dashboard/Header.tsx @@ -116,6 +116,9 @@ export const Header = ({ setLanguage("de")} className={language === "de" ? "bg-accent" : ""}> {t("Deutsch")} + setLanguage("ko")} className={language === "ko" ? "bg-accent" : ""}> + {t("korean")} + setLanguage("ja")} className={language === "ja" ? "bg-accent" : ""}> {t("japanese")} diff --git a/application/src/translations/de/common.ts b/application/src/translations/de/common.ts index 5d439c2..0b2f409 100644 --- a/application/src/translations/de/common.ts +++ b/application/src/translations/de/common.ts @@ -8,6 +8,7 @@ export const commonTranslations: CommonTranslations = { english: "Englisch", khmer: "ភាសាខ្មែរ", german: "Deutsch", + korean: "한국어", japanese: "日本語", simplifiedChinese: "简体中文", goodMorning: "Guten Morgen", diff --git a/application/src/translations/en/common.ts b/application/src/translations/en/common.ts index 7033ff1..abda24b 100644 --- a/application/src/translations/en/common.ts +++ b/application/src/translations/en/common.ts @@ -8,6 +8,7 @@ export const commonTranslations: CommonTranslations = { english: "Englisch", khmer: "ភាសាខ្មែរ", german: "Deutsch", + korean: "한국어", japanese: "日本語", simplifiedChinese: "简体中文", goodMorning: "Good morning", diff --git a/application/src/translations/index.ts b/application/src/translations/index.ts index fdd550e..8dd3223 100644 --- a/application/src/translations/index.ts +++ b/application/src/translations/index.ts @@ -1,15 +1,17 @@ import enTranslations from './en'; import kmTranslations from './km'; import deTranslations from './de'; +import koTranslations from './ko'; import jaTranslations from './ja'; import zhcnTranslations from './zhcn'; -export type Language = "en" | "km" | "de" | "ja" | "zhcn"; +export type Language = "en" | "km" | "de" | "ko" | "ja" | "zhcn"; export const translations = { en: enTranslations, km: kmTranslations, de: deTranslations, + ko: koTranslations, ja: jaTranslations, zhcn: zhcnTranslations, }; diff --git a/application/src/translations/ja/common.ts b/application/src/translations/ja/common.ts index f53f178..e59de9b 100644 --- a/application/src/translations/ja/common.ts +++ b/application/src/translations/ja/common.ts @@ -7,6 +7,7 @@ export const commonTranslations: CommonTranslations = { english: "Englisch", khmer: "ភាសាខ្មែរ", german: "Deutsch", + korean: "한국어", japanese: "日本語", simplifiedChinese: "简体中文", goodMorning: "おはようございます", diff --git a/application/src/translations/km/common.ts b/application/src/translations/km/common.ts index 1215cfa..fe1a1f9 100644 --- a/application/src/translations/km/common.ts +++ b/application/src/translations/km/common.ts @@ -8,6 +8,7 @@ export const commonTranslations: CommonTranslations = { english: "Englisch", khmer: "ភាសាខ្មែរ", german: "Deutsch", + korean: "한국어", japanese: "日本語", simplifiedChinese: "简体中文", goodMorning: "អរុណសួស្តី", diff --git a/application/src/translations/ko/about.ts b/application/src/translations/ko/about.ts new file mode 100644 index 0000000..e0d6ad6 --- /dev/null +++ b/application/src/translations/ko/about.ts @@ -0,0 +1,18 @@ +import { AboutTranslations } from '../types/about'; + +export const aboutTranslations: AboutTranslations = { + aboutCheckCle: "About Checkcle", + systemDescription: "Checkcle는 서버 및 서비스 상태, 사고 관리, 운영 투명성에 대한 실시간 인사이트를 제공하는 오픈소스 모니터링 스택입니다. MIT 라이선스로 공개됨.", + systemVersion: "시스템 버전", + license: "라이선스", + mitLicense: "MIT 라이선스", + links: "링크", + viewOnGithub: "GitHub에서 보기", + viewDocumentation: "문서 보기", + followOnX: "X에서 팔로우", + joinDiscord: "Discord 참여", + quickActions: "빠른 작업", + quickActionsDescription: "자주 사용하는 모니터링 작업과 기능에 빠르게 접근하세요. 아래에서 작업을 선택하여 시작할 수 있습니다.", + quickTips: "빠른 팁", + releasedOn: "출시일", +}; diff --git a/application/src/translations/ko/common.ts b/application/src/translations/ko/common.ts new file mode 100644 index 0000000..fd08a0c --- /dev/null +++ b/application/src/translations/ko/common.ts @@ -0,0 +1,31 @@ +import { CommonTranslations } from '../types/common'; + +export const commonTranslations: CommonTranslations = { + welcome: "환영합니다", + logout: "로그아웃", + language: "언어", + english: "Englisch", + khmer: "ភាសាខ្មែរ", + german: "Deutsch", + korean: "한국어", + japanese: "日本語", + simplifiedChinese: "简体中文", + goodMorning: "좋은 아침입니다", + goodAfternoon: "좋은 오후입니다", + goodEvening: "좋은 저녁입니다", + profile: "프로필", + settings: "설정", + documentation: "문서", + notifications: "알림", + close: "닫기", + cancel: "취소", + view: "보기", + edit: "편집", + delete: "삭제", + status: "상태", + time: "시간", + title: "제목", + description: "설명", + success: "성공", + error: "오류", +}; diff --git a/application/src/translations/ko/incident.ts b/application/src/translations/ko/incident.ts new file mode 100644 index 0000000..e43ffaf --- /dev/null +++ b/application/src/translations/ko/incident.ts @@ -0,0 +1,64 @@ + +import { IncidentTranslations } from '../types/incident'; + +export const incidentTranslations: IncidentTranslations = { + incidentManagement: '인시던트 관리', + incidentsManagementDesc: '서비스 인시던트 및 해결 과정을 추적하고 관리합니다', + unresolvedIncidents: '미해결', + resolvedIncidents: '해결됨', + activeIncidents: '활성 인시던트', + criticalIssues: '중대한 문제', + avgResolutionTime: '평균 해결 시간', + noIncidents: '활성 인시던트 없음', + createIncident: '인시던트 생성', + investigating: '조사 중', + identified: '확인됨', + monitoring: '모니터링 중', + resolved: '해결됨', + scheduleIncidentManagement: '일정 및 인시던트 관리', + incidentName: '인시던트 이름', + incidentStatus: '인시던트 상태', + highPriority: '높은 우선순위', + configurationSettings: '구성 설정', + incidentCreatedSuccess: '인시던트가 성공적으로 생성되었습니다', + basicInfo: '기본 정보', + serviceId: '서비스 ID', + assignedTo: '담당자', + unassigned: '미할당', + timeline: '타임라인', + incidentTime: '인시던트 발생 시간', + resolutionTime: '해결 시간', + systems: '시스템', + noSystems: '영향을 받은 시스템 없음', + impactAnalysis: '영향 분석', + rootCause: '근본 원인', + resolutionSteps: '해결 단계', + lessonsLearned: '교훈', + resolutionDetails: '해결 상세', + assignment: '할당', + download: '다운로드', + downloadPdf: 'PDF 다운로드', + print: '인쇄', + confidentialNote: '이 문서는 기밀이며 내부 용도로만 사용됩니다.', + generatedOn: '생성일', + enterResolutionSteps: '인시던트 해결 단계 입력', + enterLessonsLearned: '인시던트 교훈 입력', + editIncident: '인시던트 편집', + editIncidentDesc: '인시던트 세부 정보 업데이트', + updating: '업데이트 중...', + update: '업데이트', + create: '생성', + creating: '생성 중...', + configuration: '구성', + failedToUpdateStatus: '상태 업데이트 실패', + inProgress: '진행 중', + enterRootCause: '근본 원인 입력', + enterIncidentTitle: '인시던트 제목 입력', + enterIncidentDescription: '인시던트 설명 입력', + enterServiceId: '서비스 ID를 콤마로 구분하여 입력', + selectAssignedUser: '담당자 선택', + noAssignedUser: '현재 인시던트에 할당된 사용자가 없습니다', + affectedSystems: '영향을 받은 시스템', + enterAffectedSystems: '영향을 받은 시스템 입력', + separateSystemsWithComma: '영향 시스템을 콤마로 구분하여 입력', +}; diff --git a/application/src/translations/ko/index.ts b/application/src/translations/ko/index.ts new file mode 100644 index 0000000..e282607 --- /dev/null +++ b/application/src/translations/ko/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/ko/login.ts b/application/src/translations/ko/login.ts new file mode 100644 index 0000000..530787b --- /dev/null +++ b/application/src/translations/ko/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/ko/maintenance.ts b/application/src/translations/ko/maintenance.ts new file mode 100644 index 0000000..9b4eb4c --- /dev/null +++ b/application/src/translations/ko/maintenance.ts @@ -0,0 +1,81 @@ + +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: '유지보수 일정이 성공적으로 생성되었습니다', + editMaintenanceWindow: '유지보수 편집', + editMaintenanceDesc: '유지보수 세부정보 편집', + priorityDescription: '유지보수 우선순위 선택', + statusDescription: '유지보수 상태 선택', + impactLevel: '영향 수준', + impactLevelDescription: '영향 수준 선택', + selectAssignedUsers: '담당 사용자 선택', + assignedPersonnelDescription: '현재 할당된 사용자', + mutedNotifications: '알림 비활성화됨', + notificationsAreMuted: '현재 유지보수 알림이 비활성화되어 있습니다', + selectNotificationChannel: '알림 채널 추가', + enableNotificationsFirst: '채널을 선택하려면 먼저 알림을 활성화하세요', + updateMaintenance: '유지보수 업데이트', +}; diff --git a/application/src/translations/ko/menu.ts b/application/src/translations/ko/menu.ts new file mode 100644 index 0000000..a29c5b0 --- /dev/null +++ b/application/src/translations/ko/menu.ts @@ -0,0 +1,21 @@ + +import { MenuTranslations } from '../types/menu'; + +export const menuTranslations: MenuTranslations = { + uptimeMonitoring: "가동 시간 모니터링", + instanceMonitoring: "인스턴스 모니터링", + sslDomain: "SSL & 도메인", + scheduleIncident: "일정 및 인시던트", + operationalPage: "운영 페이지", + reports: "리포트", + regionalMonitoring: "지역 모니터링", + settingPanel: "설정 패널", + generalSettings: "일반 설정", + userManagement: "사용자 관리", + notificationSettings: "알림 설정", + alertsTemplates: "알림 템플릿", + rolesManagement: "권한 관리", + dataRetention: "데이터 보존", + backupSettings: "백업 설정", + aboutSystem: "시스템 정보", +}; diff --git a/application/src/translations/ko/services.ts b/application/src/translations/ko/services.ts new file mode 100644 index 0000000..a9b3fa7 --- /dev/null +++ b/application/src/translations/ko/services.ts @@ -0,0 +1,89 @@ + +import { ServicesTranslations } from '../types/services'; + +export const servicesTranslations: ServicesTranslations = { + serviceStatus: "서비스 상태", + responseTime: "응답 시간", + uptime: "가동 시간", + lastChecked: "마지막 확인", + noServices: "필터 조건에 맞는 서비스가 없습니다.", + currentlyMonitoring: "현재 모니터링 중", + retry: "재시도", + overview: "개요", + newService: "새 서비스", + rowsPerPage: "페이지당 행", + search: "검색", + allTypes: "모든 유형", + createNewService: "새 서비스 생성", + createNewServiceDesc: "모니터링할 새 서비스의 세부 정보를 입력하세요.", + + serviceName: "서비스 이름", + serviceNameDesc: "서비스에 대한 설명적인 이름을 입력하세요", + + checkInterval: "체크 간격", + seconds: "초", + minute: "분", + minutes: "분", + hour: "시간", + hours: "시간", + custom: "사용자 정의", + checkIntervalPlaceholder: "초 단위로 간격 입력", + backToPresets: "기본값으로 돌아가기", + checkIntervalDesc: "서비스 상태를 확인하는 간격", + checkIntervalDescCustom: "사용자 정의 간격 입력 (최소 10초)", + retryAttempts: "재시도 횟수", + attempt: "회", + attempts: "회", + retryAttemptsDesc: "서비스 다운으로 표시되기 전 재시도 횟수", + + updateService: "서비스 업데이트", + createService: "서비스 생성", + + enableNotifications: "알림 활성화", + enableNotificationsDesc: "서비스 알림을 활성화하거나 비활성화합니다", + notificationChannels: "알림 채널", + notificationChannelsEnabledDesc: "서비스 알림 채널 선택", + notificationChannelsDesc: "채널을 선택하려면 먼저 알림을 활성화하세요", + notificationChannelsPlaceholder: "알림 채널 추가", + alertTemplate: "알림 템플릿", + alertTemplateLoading: "템플릿 로딩 중...", + alertTemplatePlaceholder: "알림 템플릿 선택", + alertTemplateEnabledDesc: "알림 메시지용 템플릿 선택", + alertTemplateDesc: "템플릿 선택 전 알림을 활성화하세요", + + serviceType: "서비스 유형", + serviceTypeHTTPDesc: "HTTP/HTTPS 프로토콜로 웹사이트 및 REST API 모니터링", + serviceTypePINGDesc: "PING 프로토콜로 호스트 가용성 모니터링", + serviceTypeTCPDesc: "TCP 프로토콜로 TCP 포트 연결 상태 모니터링", + serviceTypeDNSDesc: "DNS 해석 모니터링", + + regionalMonitoring: "지역 모니터링", + regionalMonitoringDesc: "이 서비스를 지역 모니터링 에이전트에 할당하여 분산 모니터링", + regionalAgents: "지역 에이전트", + regionalAgentsLoading: "에이전트 로딩 중...", + regionalAgentsAvailablePlaceholder: "추가 지역 에이전트 선택...", + regionalAgentsAllSelected: "모든 사용 가능한 에이전트 선택됨", + regionalAgentsNoAvailable: "사용 가능한 지역 에이전트 없음", + regionalAgentsNoOnlineAvailable: "온라인 지역 에이전트 없음", + regionalAgentsNotFoundMessage: "온라인 지역 에이전트 없음. 기본 모니터링 사용", + regionalAgentsNotSelectedMessage: "지역 에이전트 선택 안됨. 기본 모니터링 사용", + + targetDefault: "대상 URL/호스트", + targetDNS: "도메인 이름", + targetHTTPDesc: "프로토콜 포함 전체 URL 입력 (http:// 또는 https://)", + targetPINGDesc: "호스트 이름 또는 IP 주소 입력", + targetTCPDesc: "TCP 연결 테스트용 호스트 이름 또는 IP 입력", + targetTCPPortDesc: "TCP 연결 테스트용 포트 번호 입력", + targetDNSDesc: "DNS 레코드 모니터링용 도메인 이름 입력 (A, AAAA, MX 등)", + targetDefaultDesc: "모니터링 대상 URL 또는 호스트 이름 입력", + targetDefaultPlaceholder: "URL 또는 호스트 이름 입력", + + serviceNameRequired: "서비스 이름은 필수입니다", + urlDomainHostRequired: "URL/도메인/호스트는 필수입니다", + enterValidUrlHostnameDomain: "유효한 URL, 호스트 이름 또는 도메인을 입력하세요", + + upServices: "가동 서비스", + downServices: "다운 서비스", + pausedServices: "일시정지 서비스", + warningServices: "경고 서비스", +}; diff --git a/application/src/translations/ko/settings.ts b/application/src/translations/ko/settings.ts new file mode 100644 index 0000000..c8f2fd4 --- /dev/null +++ b/application/src/translations/ko/settings.ts @@ -0,0 +1,59 @@ + +import { SettingsTranslations } from '../types/settings'; + +export const settingsTranslations: SettingsTranslations = { + // General Settings - Tabs + systemSettings: "시스템 설정", + mailSettings: "메일 설정", + + // General Settings - System Settings + appName: "앱 이름", + appURL: "앱 URL", + senderName: "발신자 이름", + senderEmail: "발신자 이메일 주소", + hideControls: "컨트롤 숨기기", + + // General Settings - Mail Settings + smtpSettings: "SMTP 구성", + smtpEnabled: "SMTP 활성화", + smtpHost: "SMTP 호스트", + smtpPort: "SMTP 포트", + smtpUsername: "SMTP 사용자 이름", + smtpPassword: "SMTP 비밀번호", + smtpAuthMethod: "인증 방법", + enableTLS: "TLS 활성화", + localName: "로컬 이름", + + // General Settings - Test Email + testEmail: "테스트 이메일", + sendTestEmail: "테스트 이메일 전송", + emailTemplate: "이메일 템플릿", + verification: "검증", + passwordReset: "비밀번호 재설정", + confirmEmailChange: "이메일 변경 확인", + otp: "OTP", + loginAlert: "로그인 알림", + authCollection: "인증 컬렉션", + selectCollection: "컬렉션 선택", + toEmailAddress: "받는 이메일", + enterEmailAddress: "이메일 주소 입력", + sending: "전송 중...", + + // General Settings - Actions and status + save: "변경 사항 저장", + saving: "저장 중...", + settingsUpdated: "설정이 성공적으로 업데이트되었습니다", + errorSavingSettings: "설정 저장 중 오류 발생", + errorFetchingSettings: "설정 불러오기 중 오류 발생", + testConnection: "연결 테스트", + testingConnection: "연결 테스트 중...", + connectionSuccess: "연결 성공", + connectionFailed: "연결 실패", + + // User Management + addUser: "사용자 추가", + permissionNotice: "권한 안내:", + permissionNoticeAddUser: "관리자 계정은 시스템 및 메일 설정을 확인하거나 변경할 수 없습니다. 이 설정은 슈퍼 관리자만 접근 및 수정할 수 있습니다. 시스템 구성 또는 메일 설정 변경이 필요하면 슈퍼 관리자에게 문의하세요.", + loadingSettings: "설정 로딩 중...", + loadingSettingsError: "설정 로딩 중 오류 발생", +}; \ No newline at end of file diff --git a/application/src/translations/ko/ssl.ts b/application/src/translations/ko/ssl.ts new file mode 100644 index 0000000..d08add2 --- /dev/null +++ b/application/src/translations/ko/ssl.ts @@ -0,0 +1,117 @@ + +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: "상세 정보", + viewDetailedInformation: "상세 정보 보기", + + // 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: "유효 일수", + validityPeriod: "유효 기간", + organization: "조직", + commonName: "공통 이름", + serialNumber: "일련번호", + algorithm: "알고리즘", + subjectAltNames: "대체 이름", + subjectAlternativeNames: "대체 이름", + resolvedIP: "해결된 IP", + issuedTo: "발급 대상", + days: "일", + + // Buttons and actions + addDomain: "도메인 추가", + refreshAll: "모두 새로고침", + cancel: "취소", + addCertificate: "인증서 추가", + check: "확인", + view: "보기", + edit: "편집", + delete: "삭제", + close: "닫기", + saveChanges: "변경 사항 저장", + updating: "업데이트 중", + + // Sections in detail view + basicInformation: "기본 정보", + validity: "유효성", + issuerInfo: "발급자 정보", + technicalDetails: "기술 세부정보", + technicalInformation: "기술 정보", + monitoringConfig: "모니터링 구성", + monitoringConfiguration: "모니터링 구성", + recordInfo: "레코드 정보", + certificateDetails: "인증서 상세", + + // 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", + noCertificatesFound: "인증서 없음", +}; diff --git a/application/src/translations/types/common.ts b/application/src/translations/types/common.ts index 275651b..5324bce 100644 --- a/application/src/translations/types/common.ts +++ b/application/src/translations/types/common.ts @@ -6,6 +6,7 @@ export interface CommonTranslations { english: string; khmer: string; german: string; + korean: string; japanese: string; simplifiedChinese: string; goodMorning: string; diff --git a/application/src/translations/types/incident.ts b/application/src/translations/types/incident.ts index 762338e..4ad5ccf 100644 --- a/application/src/translations/types/incident.ts +++ b/application/src/translations/types/incident.ts @@ -51,4 +51,12 @@ export interface IncidentTranslations { failedToUpdateStatus: string; inProgress: string; enterRootCause: string; + enterIncidentTitle: string; + enterIncidentDescription: string; + enterServiceId: string; + selectAssignedUser: string; + noAssignedUser: string; + affectedSystems: string; + enterAffectedSystems: string; + separateSystemsWithComma: string; } diff --git a/application/src/translations/types/maintenance.ts b/application/src/translations/types/maintenance.ts index 7170349..4189301 100644 --- a/application/src/translations/types/maintenance.ts +++ b/application/src/translations/types/maintenance.ts @@ -63,4 +63,17 @@ export interface MaintenanceTranslations { noScheduledMaintenance: string; noMaintenanceWindows: string; maintenanceCreatedSuccess: string; + editMaintenanceWindow: string; + editMaintenanceDesc: string; + priorityDescription: string; + statusDescription: string; + impactLevel: string; + impactLevelDescription: string; + selectAssignedUsers: string; + assignedPersonnelDescription: string; + mutedNotifications: string; + notificationsAreMuted: string; + selectNotificationChannel: string; + enableNotificationsFirst: string; + updateMaintenance: string; } diff --git a/application/src/translations/types/services.ts b/application/src/translations/types/services.ts index 63bd1bd..bd9e7a9 100644 --- a/application/src/translations/types/services.ts +++ b/application/src/translations/types/services.ts @@ -69,6 +69,7 @@ export interface ServicesTranslations { regionalAgentsAvailablePlaceholder: string; regionalAgentsAllSelected: string; regionalAgentsNoAvailable: string; + regionalAgentsNoOnlineAvailable: string; regionalAgentsNotFoundMessage: string; regionalAgentsNotSelectedMessage: string; @@ -92,5 +93,5 @@ export interface ServicesTranslations { upServices: string; downServices: string; pausedServices: string; - warningServices: string; + warningServices: string; } diff --git a/application/src/translations/zhcn/common.ts b/application/src/translations/zhcn/common.ts index d6b8dad..7d30a2e 100644 --- a/application/src/translations/zhcn/common.ts +++ b/application/src/translations/zhcn/common.ts @@ -8,6 +8,7 @@ export const commonTranslations: CommonTranslations = { english: "Englisch", khmer: "ភាសាខ្មែរ", german: "Deutsch", + korean: "한국어", japanese: "日本語", simplifiedChinese: "简体中文", goodMorning: "早上好",