kcg-ai-monitoring/frontend/src/lib/i18n/locales/ko/common.json
htlee 8af693a2df refactor(i18n): alert/confirm/aria-label 하드코딩 한글 제거
공통 번역 리소스 확장:
- common.json 에 aria / error / dialog / success / message 네임스페이스 추가
- ko/en 양쪽 동일 구조 유지 (aria 36 키 + error 7 키 + dialog 4 키 + message 5 키)

alert/confirm 11건 → t() 치환:
- parent-inference: ParentReview / LabelSession / ParentExclusion
- admin: PermissionsPanel / UserRoleAssignDialog / AccessControl

aria-label 한글 40+건 → t() 치환:
- parent-inference (group_key/sub_cluster/정답 parent MMSI/스코프 필터 등)
- admin (역할 코드/이름, 알림 제목/내용, 시작일/종료일, 코드 검색, 대분류 필터, 수신 현황 기준일)
- detection (그룹 유형/해역 필터, 관심영역, 필터 설정/초기화, 멤버 수, 미니맵/재생 닫기)
- enforcement (확인/선박 상세/단속 등록/오탐 처리)
- vessel/statistics/ai-operations (조회 시작/종료 시각, 업로드 패널 닫기, 전송, 예시 URL 복사)
- 공통 컴포넌트 (SearchInput, NotificationBanner)

MainLayout 언어 토글:
- title 삼항분기 → t('message.switchToEnglish'/'switchToKorean')
- aria-label="페이지 내 검색" → t('aria.searchInPage')
- 토글 버튼 자체에 aria-label={t('aria.languageToggle')} 추가
2026-04-16 16:32:37 +09:00

334 lines
9.6 KiB
JSON

{
"nav": {
"dashboard": "종합 상황판",
"monitoring": "경보 현황판",
"riskMap": "위험도 지도",
"mapControl": "해역 관리",
"enforcementPlan": "단속 계획",
"darkVessel": "다크베셀 탐지",
"gearDetection": "어구 탐지",
"chinaFishing": "중국어선 분석",
"patrolRoute": "순찰경로 추천",
"fleetOptimization": "다함정 최적화",
"enforcementHistory": "단속 이력",
"realtimeEvent": "실시간 이벤트",
"eventList": "이벤트 목록",
"mobileService": "모바일 서비스",
"shipAgent": "함정 Agent",
"aiAlert": "AI 알림 발송",
"statistics": "통계 분석",
"externalService": "외부 서비스",
"reports": "보고서 관리",
"aiModel": "AI 모델관리",
"mlops": "MLOps",
"lgcnsMlops": "LGCNS MLOps",
"llmOps": "LLM 운영",
"aiAssistant": "AI 의사결정 지원",
"dataHub": "데이터 허브",
"systemConfig": "환경설정",
"notices": "공지사항",
"accessControl": "권한 관리",
"admin": "시스템 관리",
"parentReview": "모선 확정/거부",
"parentExclusion": "후보 제외",
"labelSession": "학습 세션",
"auditLogs": "감사 로그",
"accessLogs": "접근 이력",
"loginHistory": "로그인 이력",
"aiSecurity": "AI 보안",
"aiAgentSecurity": "AI Agent 보안",
"dataRetentionPolicy": "데이터 보관·파기",
"dataModelVerification": "데이터 모델 검증",
"performanceMonitoring": "성능 모니터링"
},
"status": {
"active": "활성",
"inactive": "비활성",
"online": "온라인",
"offline": "오프라인",
"tracking": "추적중",
"monitoring": "감시중",
"confirmed": "확인됨",
"pending": "대기중"
},
"alert": {
"critical": "긴급",
"high": "높음",
"medium": "보통",
"low": "낮음"
},
"violation": {
"eezViolation": "EEZ 침범",
"darkVessel": "다크베셀",
"mmsiTampering": "MMSI 변조",
"illegalTransship": "불법 환적",
"illegalGear": "불법 어구",
"riskBehavior": "위험 행동"
},
"eventStatus": {
"NEW": "신규",
"ACK": "확인",
"IN_PROGRESS": "처리중",
"RESOLVED": "완료",
"FALSE_POSITIVE": "오탐"
},
"enforcementAction": {
"CAPTURE": "나포",
"INSPECT": "검문",
"WARN": "경고",
"DISPERSE": "퇴거",
"TRACK": "추적",
"EVIDENCE": "증거수집"
},
"enforcementResult": {
"PUNISHED": "처벌",
"REFERRED": "수사의뢰",
"WARNED": "경고",
"RELEASED": "훈방",
"FALSE_POSITIVE": "오탐(정상)"
},
"patrolStatus": {
"AVAILABLE": "가용",
"ON_PATROL": "초계중",
"IN_PURSUIT": "추적중",
"INSPECTING": "검문중",
"RETURNING": "귀항중",
"STANDBY": "대기",
"MAINTENANCE": "정비중"
},
"engineSeverity": {
"CRITICAL": "심각",
"HIGH_CRITICAL": "높음~심각",
"HIGH": "높음",
"MEDIUM_CRITICAL": "보통~심각",
"MEDIUM": "보통",
"LOW": "낮음",
"NONE": "-"
},
"deviceStatus": {
"ONLINE": "온라인",
"OFFLINE": "오프라인",
"SYNCING": "동기화중",
"NOT_DEPLOYED": "미배포"
},
"parentResolution": {
"UNRESOLVED": "미해결",
"REVIEW_REQUIRED": "검토 필요",
"MANUAL_CONFIRMED": "수동 확정"
},
"labelSession": {
"ACTIVE": "진행중",
"COMPLETED": "완료",
"CANCELLED": "취소"
},
"modelStatus": {
"DEPLOYED": "배포됨",
"APPROVED": "승인",
"TESTING": "테스트",
"DRAFT": "초안"
},
"gearGroupType": {
"FLEET": "선단",
"GEAR_IN_ZONE": "구역 내 어구",
"GEAR_OUT_ZONE": "구역 외 어구"
},
"darkPattern": {
"AIS_FULL_BLOCK": "AIS 완전차단",
"MMSI_SPOOFING": "MMSI 변조 의심",
"LONG_LOSS": "장기 소실",
"INTERMITTENT": "신호 간헐송출",
"SPEED_ANOMALY": "속도 이상"
},
"darkTier": {
"CRITICAL": "고의 소실 (위험)",
"HIGH": "의심 소실",
"WATCH": "관찰 대상",
"NONE": "정상"
},
"transshipTier": {
"CRITICAL": "환적 확실",
"HIGH": "환적 의심",
"WATCH": "관찰 대상"
},
"adminSubGroup": {
"aiPlatform": "AI 플랫폼",
"systemOps": "시스템 운영",
"userMgmt": "사용자 관리",
"auditSecurity": "감사·보안"
},
"userAccountStatus": {
"ACTIVE": "활성",
"PENDING": "승인 대기",
"LOCKED": "잠금",
"INACTIVE": "비활성"
},
"loginResult": {
"SUCCESS": "성공",
"FAILED": "실패",
"LOCKED": "계정 잠금"
},
"permitStatus": {
"VALID": "유효",
"PENDING": "확인 중",
"EXPIRED": "만료",
"UNLICENSED": "무허가"
},
"gearJudgment": {
"NORMAL": "정상",
"CHECKING": "확인 중",
"SUSPECT_ILLEGAL": "불법 의심"
},
"vesselSurveillance": {
"TRACKING": "추적중",
"WATCHING": "감시중",
"CHECKING": "확인중",
"NORMAL": "정상"
},
"vesselRing": {
"SAFE": "양호",
"SUSPECT": "의심",
"WARNING": "경고"
},
"connectionStatus": {
"OK": "정상",
"WARNING": "경고",
"ERROR": "오류"
},
"trainingZone": {
"NAVY": "해군 훈련 구역",
"AIRFORCE": "공군 훈련 구역",
"ARMY": "육군 훈련 구역",
"ADD": "국방과학연구소",
"KCG": "해양경찰청"
},
"action": {
"search": "검색",
"save": "저장",
"cancel": "취소",
"delete": "삭제",
"export": "내보내기",
"print": "인쇄",
"download": "다운로드",
"upload": "업로드",
"filter": "필터",
"reset": "초기화",
"confirm": "확인",
"close": "닫기"
},
"layout": {
"brandTitle": "불법조업 감시",
"brandSub": "AI 탐지·차단 플랫폼",
"alertCount_one": "경보 {{count}}건",
"alertCount_other": "경보 {{count}}건",
"searchPlaceholder": "선박명, MMSI, 해역 검색...",
"pageSearch": "페이지 내 검색...",
"sessionExpiring": "세션 만료",
"extendNeeded": "연장 필요",
"auth": "인증:",
"logout": "로그아웃",
"download": "다운로드",
"excel": "엑셀",
"print": "인쇄",
"noExportTable": "내보낼 테이블이 없습니다.",
"fileDownload": "파일 다운로드",
"excelExport": "엑셀(CSV) 내보내기"
},
"role": {
"ADMIN": "시스템 관리자",
"OPERATOR": "상황실 운영자",
"ANALYST": "분석 담당자",
"FIELD": "현장 단속요원",
"VIEWER": "유관기관 열람자"
},
"group": {
"monitoring": "모니터링",
"detection": "탐지·분석",
"patrol": "순찰·경로",
"enforcement": "단속·이력",
"fieldOps": "함정·현장",
"parentInference": "모선 워크플로우",
"statistics": "통계·보고",
"aiOps": "AI 운영",
"admin": "시스템 관리"
},
"aria": {
"close": "닫기",
"closeDialog": "대화상자 닫기",
"closeNotification": "알림 닫기",
"edit": "편집",
"delete": "삭제",
"search": "검색",
"clearSearch": "검색어 지우기",
"searchInPage": "페이지 내 검색",
"refresh": "새로고침",
"filter": "필터",
"filterToggle": "필터 설정",
"filterReset": "필터 초기화",
"statusFilter": "상태 필터",
"scopeFilter": "스코프 필터",
"groupTypeFilter": "그룹 유형 필터",
"categoryFilter": "대분류 필터",
"regionFilter": "해역 필터",
"previous": "이전",
"next": "다음",
"send": "전송",
"confirmAction": "확인",
"dateFrom": "시작일",
"dateTo": "종료일",
"queryFrom": "조회 시작 시각",
"queryTo": "조회 종료 시각",
"roleCode": "역할 코드",
"roleName": "역할 이름",
"roleDesc": "역할 설명",
"groupKey": "그룹 키",
"subClusterId": "서브 클러스터 ID",
"excludedMmsi": "제외 MMSI",
"exclusionReason": "제외 사유",
"globalExclusionReason": "전역 제외 사유",
"correctParentMmsi": "정답 parent MMSI",
"uploadPanelClose": "업로드 패널 닫기",
"noticeTitle": "알림 제목",
"noticeContent": "알림 내용",
"languageToggle": "언어 전환",
"searchCode": "코드 검색",
"searchAreaOrZone": "해역 또는 해구 번호 검색",
"areaOfInterestSelect": "관심영역 선택",
"replayPosition": "재생 위치",
"replayClose": "재생 닫기",
"miniMapClose": "미니맵 닫기",
"memberCountMin": "최소 멤버 수",
"memberCountMax": "최대 멤버 수",
"receiptDate": "수신 현황 기준일",
"copyExampleUrl": "예시 URL 복사",
"vesselDetail": "선박 상세",
"enforcementRegister": "단속 등록",
"falsePositiveProcess": "오탐 처리"
},
"error": {
"operationFailed": "작업 실패: {{msg}}",
"createFailed": "생성 실패: {{msg}}",
"updateFailed": "갱신 실패: {{msg}}",
"deleteFailed": "삭제 실패: {{msg}}",
"registerFailed": "등록 실패: {{msg}}",
"processFailed": "처리 실패: {{msg}}",
"errorPrefix": "에러: {{msg}}"
},
"dialog": {
"cancelSession": "세션을 취소하시겠습니까?",
"deleteRole": "해당 역할을 삭제하시겠습니까?",
"genericDelete": "삭제하시겠습니까?",
"genericRemove": "제거하시겠습니까?"
},
"success": {
"permissionUpdated": "권한 갱신",
"saved": "저장되었습니다"
},
"message": {
"noPermission": "접근 권한이 없습니다",
"loading": "로딩 중...",
"builtinRoleCannotDelete": "내장 역할은 삭제할 수 없습니다",
"switchToEnglish": "Switch to English",
"switchToKorean": "한국어로 전환"
}
}