Merge branch 'operacle:develop' into develop-fix-incident_assigned_user

This commit is contained in:
ghotso
2025-08-21 17:15:02 +02:00
committed by GitHub
23 changed files with 7165 additions and 3652 deletions
@@ -116,6 +116,9 @@ export const Header = ({
<DropdownMenuItem onClick={() => setLanguage("de")} className={language === "de" ? "bg-accent" : ""}>
{t("Deutsch")}
</DropdownMenuItem>
<DropdownMenuItem onClick={() => setLanguage("ko")} className={language === "ko" ? "bg-accent" : ""}>
{t("korean")}
</DropdownMenuItem>
<DropdownMenuItem onClick={() => setLanguage("ja")} className={language === "ja" ? "bg-accent" : ""}>
{t("japanese")}
</DropdownMenuItem>
@@ -8,6 +8,7 @@ export const commonTranslations: CommonTranslations = {
english: "Englisch",
khmer: "ភាសាខ្មែរ",
german: "Deutsch",
korean: "한국어",
japanese: "日本語",
simplifiedChinese: "简体中文",
goodMorning: "Guten Morgen",
@@ -8,6 +8,7 @@ export const commonTranslations: CommonTranslations = {
english: "Englisch",
khmer: "ភាសាខ្មែរ",
german: "Deutsch",
korean: "한국어",
japanese: "日本語",
simplifiedChinese: "简体中文",
goodMorning: "Good morning",
+3 -1
View File
@@ -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,
};
@@ -7,6 +7,7 @@ export const commonTranslations: CommonTranslations = {
english: "Englisch",
khmer: "ភាសាខ្មែរ",
german: "Deutsch",
korean: "한국어",
japanese: "日本語",
simplifiedChinese: "简体中文",
goodMorning: "おはようございます",
@@ -8,6 +8,7 @@ export const commonTranslations: CommonTranslations = {
english: "Englisch",
khmer: "ភាសាខ្មែរ",
german: "Deutsch",
korean: "한국어",
japanese: "日本語",
simplifiedChinese: "简体中文",
goodMorning: "អរុណសួស្តី",
+18
View File
@@ -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: "출시일",
};
+31
View File
@@ -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: "오류",
};
@@ -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: '영향 시스템을 콤마로 구분하여 입력',
};
+25
View File
@@ -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;
+23
View File
@@ -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: "개인정보 처리방침",
};
@@ -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: '유지보수 업데이트',
};
+21
View File
@@ -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: "시스템 정보",
};
@@ -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: "경고 서비스",
};
@@ -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: "설정 로딩 중 오류 발생",
};
+117
View File
@@ -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: "인증서 없음",
};
@@ -6,6 +6,7 @@ export interface CommonTranslations {
english: string;
khmer: string;
german: string;
korean: string;
japanese: string;
simplifiedChinese: string;
goodMorning: string;
@@ -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;
}
@@ -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;
}
@@ -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;
}
@@ -8,6 +8,7 @@ export const commonTranslations: CommonTranslations = {
english: "Englisch",
khmer: "ភាសាខ្មែរ",
german: "Deutsch",
korean: "한국어",
japanese: "日本語",
simplifiedChinese: "简体中文",
goodMorning: "早上好",
@@ -0,0 +1,72 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((app) => {
const collection = app.findCollectionByNameOrId("pbc_1938176441")
// add field
collection.fields.addAt(20, new Field({
"autogeneratePattern": "",
"hidden": false,
"id": "text1654359675",
"max": 0,
"min": 0,
"name": "ntfy_endpoint",
"pattern": "",
"presentable": false,
"primaryKey": false,
"required": false,
"system": false,
"type": "text"
}))
// update field
collection.fields.addAt(9, new Field({
"hidden": false,
"id": "select887233555",
"maxSelect": 1,
"name": "notification_type",
"presentable": false,
"required": false,
"system": false,
"type": "select",
"values": [
"telegram",
"signal",
"discord",
"slack",
"webhook",
"google_chat",
"email",
"ntfy"
]
}))
return app.save(collection)
}, (app) => {
const collection = app.findCollectionByNameOrId("pbc_1938176441")
// remove field
collection.fields.removeById("text1654359675")
// update field
collection.fields.addAt(9, new Field({
"hidden": false,
"id": "select887233555",
"maxSelect": 1,
"name": "notification_type",
"presentable": false,
"required": false,
"system": false,
"type": "select",
"values": [
"telegram",
"signal",
"discord",
"slack",
"webhook",
"google_chat",
"email"
]
}))
return app.save(collection)
})
File diff suppressed because it is too large Load Diff