i18ntk
Version:
i18n Tool Kit - Zero-dependency internationalization toolkit for setup, scanning, analysis, validation, auto translation, fixing, reporting, and runtime translation loading.
1,008 lines (1,007 loc) • 160 kB
JSON
{
"meta": {
"version": "4.7.0",
"updated": "2026-07-07",
"lang": "ko"
},
"common": {
"welcome": "환영",
"hello": "안녕하세요",
"goodbye": "안녕히 가세요",
"yes": "예",
"no": "아니요",
"save": "구하다",
"cancel": "취소",
"delete": "삭제",
"edit": "편집하다",
"loading": "로드 중...",
"offlineTitle": "오프라인 상태입니다",
"offlineMessage": "인터넷 연결을 확인해주세요",
"tryReconnect": "다시 연결해 보세요",
"logout": "로그아웃",
"login": "로그인",
"amount": "양",
"success": "성공",
"error": "오류",
"warning": "경고",
"info": "정보:",
"debug": "디버그",
"progress": "진전:",
"remaining": "남은 금액:",
"total": "총:",
"completed": "7. 성공적으로 완료되었습니다!",
"missing": "없어진",
"partial": "부분",
"sameAsSource": "소스와 동일:",
"formatMismatch": "형식 불일치:",
"typeMismatch": "유형 불일치:",
"structureMismatch": "구조 불일치:",
"invalidOption": "잘못된 옵션",
"separator": "==================================================",
"initializationFailed": "❌ 초기화 실패: {error}",
"stackTrace": "스택 추적: {stack}",
"pressEnterToContinue": "계속하려면 Enter를 누르세요...",
"pressEnterToReturn": "Enter를 눌러 주 메뉴로 돌아가세요...",
"stepCompleted": "단계 '{stepName}' 완전한.",
"stepFailed": "단계 '{stepName}'실패했습니다.",
"runningStep": "실행 단계: {stepName}",
"command": "명령: {command}",
"startingWorkflow": "워크플로 시작 중...",
"workflowCompleted": "워크플로가 완료되었습니다.",
"checkReports": "자세한 내용은 보고서를 확인하세요.",
"errorExecutingCommand": "명령 실행 중 오류 발생: {error}",
"genericError": "❌ 오류: {error}",
"errors": {
"errors": "오류:",
"genericError": "❌ 오류: {error}",
"initializationFailed": "❌ 초기화 실패: {error}",
"initializationCancelled": "❌ 사용자가 초기화를 취소했습니다.",
"translationKeyNotFound": "번역 키를 찾을 수 없습니다: {key}",
"sourceDirectoryNotFound": "소스 디렉터리를 찾을 수 없습니다: {directory}",
"configLoadingFailed": "구성 로드에 실패했습니다.",
"invalidSourceDirectory": "잘못된 소스 디렉터리: {directory}",
"securityViolation": "보안 위반이 감지되었습니다.",
"authenticationFailed": "인증 실패",
"sourceEqualsI18nWarn": "⚠️ sourceDir은 i18nDir과 같습니다({sourceDir}). 다음으로 넘어짐 {fallback} 소스 스캔을 위해."
},
"errorGeneratingStatusSummary": "상태 요약을 생성하는 중에 오류가 발생했습니다. {error}",
"errorRunningDebugTool": "디버그 도구 실행 중 오류 발생 '{displayName}': {error}",
"errorReadingDebugLogs": "디버그 로그를 읽는 동안 오류가 발생했습니다. {error}",
"errorAnalyzingLogFile": "로그 파일 분석 오류: {error}",
"errorAnalyzingTranslationKeys": "번역 키 분석 오류: {error}",
"errorAnalyzingTranslationCompleteness": "번역 완성도 분석 오류: {error}",
"analyzingTranslationCompleteness": "모든 언어에 대한 번역 완성도 분석 중...",
"i18nDirectoryNotFound": "⚠️ i18n 디렉토리를 찾을 수 없습니다: {i18nDir}",
"translationCompletenessAnalysisFailed": "⚠️ 번역 완성도 분석 실패: {error}",
"failedToAnalyzeLanguage": "❌ 언어 분석 실패 {language}: {error}",
"errorReadingI18nDirectory": "❌ i18n 디렉터리 읽기 오류:",
"languageCompletenessTitle": "📈 언어별 번역 완전성",
"errorAnalyzingTranslationFormat": "번역 형식 분석 오류: {error}",
"errorAnalyzingTranslationType": "번역 유형 분석 오류: {error}",
"errorAnalyzingTranslationStructure": "번역 구조 분석 오류: {error}",
"errorAnalyzingTranslationFormatMismatch": "번역 형식 불일치 분석 오류: {error}",
"errorAnalyzingTranslationTypeMismatch": "번역 유형 불일치 분석 오류: {error}",
"errorAnalyzingTranslationStructureMismatch": "번역 구조 불일치 분석 오류: {error}",
"errorAnalyzingTranslationSameAsSource": "소스와 동일한 번역을 분석하는 중에 오류가 발생했습니다. {error}",
"title": "상태",
"nextStep1": "1. 사용량 분석 확인:",
"nextStep2": "2. 번역 검증:",
"nextStep3": "3. 완전성 분석:",
"nextStep4": "4. 누락된 번역을 완료하세요.",
"nextStep5": "5. 요약 보고서 생성:",
"nextStep6": "6. 번역을 검토하고 마무리합니다.",
"generating": "요약 보고서 생성 중...",
"review": "번역을 검토하는 중...",
"finalizing": "번역을 마무리하는 중...",
"finalized": "성공적으로 마무리되었습니다!",
"warnings": "경고:",
"completedKeys": "완성된 키:",
"missingKeys": "누락된 키:",
"partialKeys": "부분 키:",
"home": "집",
"settings": "설정",
"startingSettings": "🎛️ 설정 CLI 시작 중...",
"confirm": "확인하다",
"errorExiting": "종료하는 동안 오류가 발생했습니다."
},
"errors": {
"invalidOption": "❌ 잘못된 옵션: {option}. 다시 시도해 주세요.",
"readlineClosed": "입력 스트림이 닫혔습니다. 비대화형 모드로 실행 중입니다.",
"noPackageJson": "package.json을 찾을 수 없습니다. i18n 프레임워크를 자동 감지할 수 없습니다.",
"noI18nDir": "프로젝트 루트에 i18n 디렉터리가 없습니다.",
"noI18nConfig": "프로젝트 루트에 i18n 구성 파일이 없습니다.",
"errorReadingDebugLogs": "디버그 로그를 읽는 동안 오류가 발생했습니다. {error}"
},
"scanner": {
"help_message": "I18n 텍스트 스캐너 사용법: node i18ntk-scanner.js [옵션] 옵션: --source-dir <dir> 스캔할 소스 디렉터리(기본값: ./src) --output <file> 스캔 결과 출력 파일(기본값: ./i18ntk-scanner-report.json) --framework <name> 대상 프레임워크(반응, vue, 각도, 바닐라) --패턴 <patterns> 사용자 정의 정규식 패턴(쉼표로 구분) --include-tests 검사에 테스트 파일 포함 --exclude-dirs <dirs> 제외할 디렉터리(쉼표로 구분) --help 이 도움말 표시 예: node i18ntk-scanner.js --source-dir=./src --framework=react node i18ntk-scanner.js --patterns 'console.log\\((.*?)\\)' --include-tests node i18ntk-scanner.js --output=./scan-results.json",
"help_options": {
"source_dir": "i18n 문제를 스캔할 소스 디렉터리",
"output_dir": "스캔 보고서 및 결과 디렉터리",
"framework": "대상 프레임워크(반응, Vue, 각도, 바닐라)",
"patterns": "텍스트 감지를 위한 사용자 정의 정규식 패턴",
"exclude": "검사에서 제외할 파일 패턴",
"output_report": "자세한 스캔 보고서 생성",
"min_length": "번역을 위해 고려해야 할 최소 텍스트 길이",
"max_length": "번역을 위해 고려해야 할 최대 텍스트 길이",
"include_tests": "스캔 프로세스에 테스트 파일 포함"
},
"starting": "🔍 프레임워크용 텍스트 스캐너 시작: {framework}",
"sourceDirectory": "📁 스캔 디렉터리: {sourceDir}",
"frameworkDetected": "🎯 감지된 프레임워크: {framework}",
"scanningFiles": "📊 스캔 중 {fileCount} 파일...",
"foundTexts": "📝 발견됨 {textCount} 번역이 필요한 텍스트",
"generatingReport": "📊 상세 보고서 생성 중...",
"reportSaved": "💾 스캔 보고서 저장 위치: {reportPath}",
"noTextsFound": "✅ 하드코딩된 영어 텍스트가 없습니다.",
"scanComplete": "🎉 스캔이 성공적으로 완료되었습니다!",
"analysisTitle": "🔍 번역 스캔 분석",
"fileSummary": "📄 {file}: {count} 발견된 텍스트",
"textLocation": "📍 라인 {line}: {text}",
"foundText": "설립하다 {count} 잠재적인 하드코딩된 텍스트 인스턴스",
"context": "📝 맥락: {context}",
"severity": "⚠️ 심각도: {severity}",
"recommendation": "💡 추천: {recommendation}",
"welcome": {
"title": "🎯 텍스트 스캐너에 오신 것을 환영합니다!",
"description": "이 도구는 소스 코드에서 번역이 필요할 수 있는 하드코딩된 영어 텍스트를 검색합니다."
},
"frameworkPrompt": {
"title": "🎯 프레임워크 선택",
"available": "사용 가능한 프레임워크: React, Vue, Angle, Vanilla",
"description": "프레임워크 유형을 입력하십시오(또는 자동 감지를 위해 Enter를 누르십시오).",
"input": "뼈대:"
},
"directoryPrompt": {
"title": "📁 소스 디렉토리 선택",
"current": "현재 디렉터리: {dir}",
"description": "검색할 디렉터리를 입력하세요(또는 현재 디렉터리를 보려면 Enter를 누르세요):",
"input": "예배 규칙서:"
},
"options": {
"includeTests": "테스트 파일을 포함하시겠습니까?",
"excludeDirs": "제외할 디렉터리(쉼표로 구분):",
"customPatterns": "검색할 사용자 정의 패턴(정규식):"
},
"reportGenerated": "생성된 스캔 보고서: {path}"
},
"fixer": {
"help_message": "I18n Translation Fixer 사용법: node i18ntk-fixer.js [옵션] 옵션: --source-dir <dir> 스캔할 소스 디렉터리(기본값: ./locales) --언어 <langs> 수정할 언어의 쉼표로 구분된 목록 --markers <markers> 번역되지 않은 것으로 처리할 쉼표로 구분된 마커 --no-backup 자동 백업 생성 건너뛰기 --help 이 도움말 표시 예: node i18ntk-fixer.js --언어s de,fr node i18ntk-fixer.js --source-dir=./locales --markers NOT_TRANSLATED node i18ntk-fixer.js --no-backup",
"starting": "🚀 언어 번역 수정 시작: {languages}",
"sourceDirectory": "📁 소스 디렉토리: {sourceDir}",
"sourceLanguage": "🔤 소스 언어: {sourceLanguage}",
"markers": "🏷️ 수정할 마커: {markers}",
"scanningLanguage": "📊 스캔 중 {language}...",
"noLanguages": "❌ 수정을 위해 지정된 언어가 없습니다.",
"allComplete": "🎉 모든 번역이 이미 완료되었습니다!",
"fullReportSaved": "📊 전체 보고서 저장 위치: {reportPath}",
"reviewReport": "계속하기 전에 보고서를 검토하세요.",
"backupCreated": "💾 백업이 성공적으로 생성되었습니다.",
"applyingFixes": "🔄 수정사항 적용 중...",
"fixingComplete": "✅ 번역 수정 완료!",
"operationCancelled": "❌ 사용자가 작업을 취소했습니다.",
"analysisTitle": "🔍 번역 수정 분석",
"analysisSeparator": "==================================================",
"totalIssues": "발견된 총 문제: {totalIssues}",
"missingTranslations": "누락된 번역: {missing}",
"placeholderTranslations": "자리 표시자 번역: {placeholder}",
"noIssues": "✅ 문제가 발견되지 않았습니다. 모든 번역이 완료되었습니다.",
"detailedIssues": "📋 DETAILED ISSUES:",
"detailedSeparator": "--------------------------------------------------",
"filePath": "📄 {file} → {path}",
"missingKey": "❌ 누락: {source} → {new}",
"placeholderKey": "⚠️ 자리 표시자: \"{target}\" → \"{new}\"",
"moreIssues": "... 그리고 {count} 더 많은 문제. 자세한 내용은 보고서 파일을 확인하세요.",
"confirmationTitle": "🤔 이 수정 사항을 계속 진행하시겠습니까?",
"confirmationOptions": "옵션:",
"optionYes": "y - 예, 모든 수정 사항을 적용합니다.",
"optionNo": "n - 아니요, 작업을 취소합니다.",
"optionShow": "s - 자세한 문제 표시",
"choicePrompt": "귀하의 선택(y/n/s):",
"nonInteractiveMode": "⚡ 비대화형 모드가 감지되었습니다. 자동으로 수정사항을 적용하고 있습니다...",
"reportGenerated": "📊 Fixer 보고서 생성됨: {path}",
"summary": "해결사 요약:",
"welcome": {
"title": "🎯 번역 해결사에 오신 것을 환영합니다!",
"description": "이 도구는 로케일 파일 전체에서 깨진 번역과 자리 표시자를 수정하는 데 도움이 됩니다."
},
"markerPrompt": {
"title": "🏷️ 자리표시자 마커 구성",
"description": "번역되지 않은 텍스트를 나타내는 마커를 입력하세요(쉼표로 구분).",
"currentDefaults": "기본 마커: {markers}",
"input": "마커(또는 기본값을 보려면 Enter를 누르십시오):"
},
"languagePrompt": {
"title": "🌍 수정할 언어 선택",
"available": "사용 가능한 언어: {languages}",
"description": "수정할 언어를 쉼표로 구분하여 입력하거나 모두 Enter 키를 누르세요.",
"input": "언어:",
"noLanguages": "수정할 언어가 없습니다."
},
"directoryPrompt": {
"title": "📁 디렉토리 선택",
"current": "현재 디렉터리: {dir}",
"description": "로케일 파일이 포함된 디렉토리를 입력하십시오(또는 현재를 위해 Enter를 누르십시오):",
"input": "예배 규칙서:"
},
"backupLocation": "백업 위치: {dir}",
"completed": "수정이 완료되었습니다.",
"creatingBackup": "백업 생성 위치 {dir}...",
"dryRunMode": "시험 실행 모드: {mode}",
"error": "해결 프로그램 실패: {error}",
"fixing": "고정 {language}...",
"foundLanguages": "설립하다 {count} 언어: {languages}",
"languageFixed": "{language}: 고정 {fixed} 키, 건너뛰었습니다. {skipped}.",
"running": "번역 수정 프로그램 실행 중...",
"totalFixed": "총 고정 금액: {count}"
},
"autorun": {
"stepAnalyzeTranslations": "번역 분석",
"stepCompletedWithIcon": "✅ 완료됨: {stepName}",
"stepValidateTranslations": "번역 검증",
"stepRunning": "▶️ 단계 {stepNumber}/{totalSteps}: {stepName}",
"separator": "==================================================",
"stepFailed": "❌ 실패: {stepName}",
"errorLabel": "오류",
"autoRunScriptTitle": "🧪 자동 실행 작업 흐름",
"usageTitle": "용법",
"runAllSteps": "실행: node i18ntk-autorun.js",
"configureSettingsFirst": "구성: i18ntk-config.json 또는 CLI 플래그",
"runSpecificSteps": "단계를 표시하려면 --steps=1,3 또는 --list를 사용하세요.",
"showHelp": "--자세한 내용은 도움말을 참조하세요.",
"examplesTitle": "예",
"configExample": "노드 i18ntk-autorun.js --ui-언어=zh",
"stepsExample1": "노드 i18ntk-autorun.js --단계=분석, 검증",
"stepsExample2": "노드 i18ntk-autorun.js --list",
"customSettingsConfiguration": "사용자 정의 자동 실행 설정",
"availableSteps": "사용 가능한 단계",
"startingAutoRunWorkflow": "🚀 자동 실행 워크플로 시작 중...",
"workflowIncludesSteps": "워크플로에는 다음이 포함됩니다. {count} 단계:",
"missingRequiredFile": "필수 파일 누락: {file}",
"workflowStopped": "오류로 인해 워크플로가 중지되었습니다.",
"workflowCompleted": "🎉 워크플로가 완료되었습니다!",
"successfulSteps": "성공적인 단계: {count}",
"failedSteps": "실패한 단계: {count}",
"stepInitializeProject": "프로젝트 초기화",
"stepCheckUsage": "키 사용량 확인",
"stepGenerateSummary": "요약 보고서 생성",
"runInitializationFirst": "먼저 초기화를 실행해 주세요.",
"initializationCheckPassed": "초기화 확인을 통과했습니다.",
"runningStep": "실행 단계: {stepName}",
"commandLabel": "명령: {command}",
"stepCompletedWithTime": "단계 '{stepName}'에서 완료 {duration}ms.",
"stepCompleted": "단계 '{stepName}' 완전한.",
"stepFailedWithError": "단계 '{stepName}' 오류로 인해 실패했습니다: {error}",
"requiredStepFailed": "필수 단계가 실패했습니다. 워크플로를 중지합니다.",
"optionalStepFailed": "선택적 단계가 실패했습니다. 워크플로를 계속합니다.",
"stepRequired": "(필수의)",
"stepOptional": "(선택 과목)",
"startingExecution": "실행 시작 중...",
"pressEnterToContinue": "계속하려면 Enter를 누르세요...",
"runningSelectedSteps": "선택한 단계를 실행 중...",
"invalidStepNumber": "잘못된 단계 번호: {stepNum}",
"executionReport": "실행 보고서:",
"requiredFailedSteps": "필수 단계 실패: {count}",
"stepDetails": "단계 세부정보:",
"reportSavedTo": "보고서 저장 위치: {path}",
"overallStatusSuccess": "SUCCESS",
"overallStatusFailed": "FAILED",
"overallStatus": "전반적인 상태: {status}",
"pressEnterForDefaults": "모든 프롬프트에 기본 설정을 사용하려면 Enter 키를 누르세요.",
"sourceDirPrompt": "소스 디렉터리를 입력하세요(기본값: {default}):",
"sourceLangPrompt": "출발어를 입력하세요(기본값: {default}):",
"targetLangsPrompt": "대상 언어를 입력하세요(쉼표로 구분, 기본값: {default}):",
"translationMarkerPrompt": "번역 마커 입력(기본값: {default}):",
"outputDirPrompt": "보고서의 출력 디렉터리를 입력합니다(기본값: {default}):",
"settingsUpdatedSuccessfully": "설정이 성공적으로 업데이트되었습니다!",
"errorConfiguringSettings": "설정 구성 오류: {error}",
"configurationComplete": "구성이 완료되었습니다.",
"runAutoRunCommand": "이제 자동 실행 명령을 실행할 수 있습니다.",
"configurationFailed": "구성 실패: {error}",
"noValidStepNumbers": "유효한 단계 번호가 제공되지 않았습니다.",
"autoRunFailed": "자동 실행 실패: {error}",
"stepCompleteTranslations": "완전한 번역",
"stepAnalyzeSizing": "크기 분석",
"stepCompletedIcon": "✅",
"stepRunningWithNumber": "[{stepNumber}/{totalSteps}] 단계 '{stepName}' 달리기...",
"stepFailedIcon": "❌",
"translationLoadWarning": "경고: 로드할 수 없습니다. {lang} 번역",
"configReadError": "읽는 중 오류가 발생했습니다. {file}"
},
"analyze": {
"help_message": "I18n 번역 분석기 사용법: node i18ntk-analyze.js [옵션] 옵션: --source-dir <dir> 스캔할 소스 디렉터리(기본값: ./src) --i18n-dir <dir> I18n 디렉터리(기본값: ./src/locales) --output-report 세부 보고서 생성 --output-dir <dir> 보고서의 출력 디렉터리(기본값: ./reports) --help 이 도움말 표시 예: node i18ntk-analyze.js --output-report node i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales node i18ntk-analyze.js --output-dir=./analytic --output-report",
"source_directory": "📁 소스 디렉토리: {sourceDir}",
"i18n_directory": "🌐 I18n 디렉토리: {i18nDir}",
"loading_translation_files": "📋 번역 파일 로드 중...",
"sourceDirectoryLabel": "📁 소스 디렉토리: {sourceDir}",
"sourceLanguageLabel": "🌍 소스 언어: {sourceLanguage}",
"strictModeLabel": "⚙️ 엄격 모드: {mode}",
"found_translation_files_count": "✅ 찾음 {count} 번역 파일",
"analyzing_translations": "🔍 번역 분석 중...",
"analysis_completed_successfully": "🎉 분석이 성공적으로 완료되었습니다!",
"analysis_results": "📊 ANALYSIS RESULTS",
"language_analysis_stats": "{language}: {translatedKeys}/{totalKeys} ({percentage}% 번역됨)",
"sample_missing_keys": "누락된 키 샘플:",
"missing_key": "- {key}",
"and_more_missing": "...그리고 {count} 더.",
"sample_unused_keys": "사용되지 않은 키 샘플:",
"unused_key": "- {key}",
"and_more_unused": "...그리고 {count} 더.",
"recommendations": "📋 추천",
"add_missing_translations": "💡 누락된 번역을 추가하여 적용 범위를 개선하세요.",
"remove_unused_translations": "💡 프로젝트를 깨끗하게 유지하려면 사용하지 않는 번역을 제거하세요.",
"next_steps": "📋 NEXT STEPS",
"review_analysis_results": "1. 콘솔 또는 생성된 보고서에서 분석 결과를 검토합니다.",
"run_with_output_report": "2. 자세한 보고서를 보려면 --output-report를 사용하여 실행하세요.",
"add_or_remove_translations": "3. 누락된 번역을 추가하거나 사용하지 않는 번역을 제거하세요.",
"rerun_analysis": "4. 분석을 다시 실행하여 개선 사항을 확인합니다.",
"analysis_summary": "📊 ANALYSIS SUMMARY",
"source_files_scanned": "스캔된 소스 파일: {fileCount}",
"translation_files_checked": "번역 파일 확인: {translationFileCount}",
"total_keys": "총 키: {totalKeys}",
"translated_keys": "번역된 키: {translatedKeys}",
"missing_keys": "누락된 키: {missingKeys}",
"unused_keys": "사용되지 않은 키: {unusedKeys}",
"translation_coverage": "번역 범위: {coverage}%",
"analysis_passed_for_language": "✅ 분석 통과 {language}",
"analysis_failed_for_language": "❌ 분석 실패 {language} ({missingKeys} 없어진, {unusedKeys} 미사용)",
"starting": "🔍 번역 분석을 시작합니다...",
"foundLanguages": "📋 찾았습니다 {count} 분석할 언어: {languages}",
"analyzing": "🔄 분석 중 {language}...",
"reportTitle": "📊 번역 분석 보고서",
"generated": "생성됨: {timestamp}",
"status": "상태: {translated}/{total} 키({percentage}% 번역됨)",
"filesAnalyzed": "분석된 파일: {analyzed}/{total}",
"keysNeedingTranslation": "번역이 필요한 키: {count}",
"fileBreakdown": "📋 파일 분석",
"error": "오류",
"completed": "✅ 다음에 대한 분석이 완료되었습니다. {language}",
"progress": "📊 전반적인 진행 상황: {translated}/{total} 처리된 언어",
"reportSaved": "보고서가 저장되었습니다: {reportPath}",
"summary": "📊 ANALYSIS SUMMARY",
"finished": "✅ 분석이 성공적으로 완료되었습니다!",
"statusFileMissing": "❌ 번역 파일이 없습니다",
"sourceKeys": "📊 소스 키: {count}",
"translation": "📊 번역: {translated}/{total} ({percentage}%)",
"structure": "🗂️ 구조: {status}",
"consistent": "일관된",
"inconsistent": "일관성 없는",
"missingKeys": "누락된 키: {count}",
"extraKeys": "추가 키: {count}",
"issues": "⚠️ 발견된 문제: {count}",
"issueType": {
"not_translated": "번역되지 않음: {count}",
"empty_value": "빈 값: {count}",
"partial_translation": "부분 번역: {count}",
"format_mismatch": "형식 불일치: {count}",
"type_mismatch": "유형 불일치: {count}",
"structure_mismatch": "구조 불일치: {count}",
"same_as_source": "소스와 동일: {count}"
},
"keysToTranslate": "📋 번역 키",
"key": "열쇠",
"english": "영어",
"needsTranslation": "번역이 필요합니다",
"andMoreKeys": "...그리고 {count} 더 많은 열쇠.",
"noLanguages": "⚠️ 타겟 언어가 없습니다.",
"languageStats": "{language}: {percentage}% 완벽한 ({translated}/{total} 열쇠)",
"invalidReportFilePath": "잘못된 보고서 파일 경로",
"failedToWriteReportFile": "보고서 파일을 안전하게 작성하지 못했습니다."
},
"complete": {
"configLoadedSuccessfully": "구성이 성공적으로 로드되었습니다.",
"configLoadingFailed": "구성 로드에 실패했습니다.",
"sourceLanguageNotFound": "소스 언어 디렉토리를 찾을 수 없습니다: {sourceLanguage}",
"couldNotParseTarget": "대상 파일을 구문 분석할 수 없습니다. {file}",
"couldNotParseSource": "소스 파일을 구문 분석할 수 없습니다. {file}",
"reportGenerated": "생성된 보고서: {path}",
"generateReportPrompt": "보고서를 생성하시겠습니까?",
"title": "🌍 I18NTK 번역 완료",
"separator": "============================================================",
"sourceDir": "📁 소스 디렉토리: {sourceDir}",
"sourceLanguage": "🌐 소스 언어: {sourceLanguage}",
"dryRunMode": "🧪 드라이 런 모드 - 변경 사항이 없습니다.",
"languages": "🌍 사용 가능한 언어: {languages}",
"addingMissingKeys": "➕ 번역 파일에 누락된 키 추가 중...",
"processing": "🔄 처리 {language}...",
"addedKeys": "✅ 추가됨 {count} 누락된 키",
"noChangesNeeded": "✅ 변경이 필요하지 않습니다 {language}",
"summaryTitle": "📊 완료 요약",
"totalChanges": "📝 총 변경 사항: {totalChanges}",
"languagesProcessed": "🌍 처리되는 언어: {languagesProcessed}",
"missingKeysAdded": "➕ 누락된 키가 추가되었습니다: {missingKeysAdded}",
"nextStepsTitle": "📋 NEXT STEPS",
"nextStep1": "1. 사용량 분석 실행:",
"nextStep2": "노드 i18ntk-usage.js --output-report",
"nextStep3": "2. 번역 검증:",
"nextStep4": "노드 i18ntk-validate.js",
"nextStep5": "3. 패턴 분석:",
"nextStep6": "노드 i18ntk-analyze.js",
"allKeysAvailable": "🎉 이제 모든 번역 키를 사용할 수 있습니다!",
"runWithoutDryRun": "💡 변경 사항을 적용하려면 --dry-run 없이 실행하세요.",
"deletingOldReport": "🗑️ 오래된 보고서를 삭제하는 중...",
"generatingFreshAnalysis": "📊 새로운 사용량 분석 생성 중...",
"couldNotGenerate": "❌ 사용량 분석을 생성할 수 없습니다.",
"reportNotFound": "📋 사용 보고서를 찾을 수 없습니다. 공용 키를 사용하는 중...",
"foundMissingKeys": "📋 찾았습니다 {count} 사용량 분석에서 누락된 키",
"couldNotParse": "❌ 사용 보고서를 구문 분석할 수 없습니다. 공용 키를 사용하는 중...",
"errorDuringCompletion": "❌ 완료 중 오류: {error}",
"fatalError": "❌ 치명적인 오류: {error}",
"configurationValidationFailed": "구성 유효성 검사 실패: 필수 필드가 누락되었습니다."
},
"sizing": {
"separator": "================================================================================",
"lineSeparator": "--------------------------------------------------------------------------------",
"analysisStats": "{stats}",
"sourceDirectoryLabel": "📁 소스 디렉토리: {sourceDir}",
"sourceLanguageLabel": "🌍 소스 언어: {sourceLanguage}",
"strictModeLabel": "⚙️ 엄격 모드: {mode}",
"invalidSourceDirectoryError": "잘못된 소스 디렉터리 경로: {sourceDir}",
"sourceDirectoryNotFoundError": "소스 디렉터리를 찾을 수 없습니다: {sourceDir}",
"invalidOutputDirectoryError": "잘못된 출력 디렉터리 경로: {outputDir}",
"invalidReportFileError": "잘못된 보고서 파일 경로",
"problematic_keys": "문제가 있는 키: {problematicKeys}",
"problematicKeysLabel": "문제가 있는 키: {problematicKeys}",
"long_translations": "긴 번역: {longTranslations}",
"failedToSaveReportError": "보고서를 안전하게 저장하지 못했습니다.",
"invalidCsvFileError": "잘못된 CSV 파일 경로",
"failedToSaveCsvError": "CSV 보고서를 안전하게 저장하지 못했습니다.",
"fatalError": "❌ 크기 분석 실패: {error}",
"starting_i18n_sizing_analysis": "i18n 크기 분석을 시작하는 중...",
"source_directory": "소스 디렉토리: {sourceDir}",
"found_languages": "발견된 언어: {languages}",
"analyzing_file_sizes": "파일 크기 분석 중...",
"analyzing_translation_content": "번역 내용 분석 중...",
"generating_size_comparisons": "크기 비교 생성 중...",
"no_languages_found_for_comparison": "비교할 언어를 찾을 수 없습니다.",
"sizing_analysis_results": "I18n 사이징 분석 결과",
"file_sizes_title": "파일 크기",
"file_sizes_header": "언어 크기(KB) 행 문자",
"file_size_row": "{lang} {sizeKB} {lines} {characters}",
"language_statistics_title": "언어통계",
"language_stats_header": "언어 키 문자 평균 길이 최대 길이 비어 있음 길게",
"language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
"size_variations_title": "크기 변화",
"size_variations_header": "언어 문자 차이 % 차이 문제",
"size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
"problematic_yes": "예",
"problematic_no": "아니요",
"recommendations_title": "권장사항",
"recommendation_item": "{index}. {recommendation}",
"problematic_key_detail": "{index}. 열쇠: '{key}' - 변형: {variations}",
"generating_detailed_report": "세부 보고서 생성 중...",
"keysHaveSignificantSizeVariations": "키에는 상당한 크기 변화가 있습니다",
"longTranslationsDetected": "${lang} 100자를 초과하는 ${data.longKeys} 번역이 있습니다. 이를 분해하는 것이 좋습니다.",
"longer": "더 길게",
"shorter": "더 짧은",
"review_translations": "검토를 고려해보세요 {lang} 번역 - 그렇죠 {percentageDifference}% {comparison} 기준선보다",
"report_saved_to": "보고서 저장 위치: {reportPath}",
"considerReviewingTranslations": "검토를 고려해보세요 ${lang} 번역 - 기준보다 ${data.percentageDifference}% 더 깁니다.",
"csv_report_saved_to": "CSV 보고서 저장 위치: {csvPath}",
"human_report_saved": "읽을 수 있는 보고서가 저장되었습니다: {reportPath}",
"folder_summary_title": "폴더 요약",
"folder_summary_table_header": "언어 크기(KB) 키 평균 길이 총 문자 수",
"folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
"language_comparison_title": "언어 비교",
"language_comparison_row": "{lang}: {diff} 문자({percent}%) {status}",
"summary_stats": "📊 요약: {totalLanguages} 언어, {totalKeys} 키 - 저장된 보고서 {reportPath}",
"detailedKeysDescription": "콘솔에 자세한 키 수준 분석 표시",
"too_many_keys_warning": "⚠️ 콘솔에 표시할 키가 너무 많습니다. 전체 분석을 보려면 자세한 보고서 파일을 확인하세요.",
"no_translation_files_found": "번역 파일을 찾을 수 없습니다.",
"analysis_completed": "분석 완료 {duration}ms",
"analysis_failed": "분석 실패: {errorMessage}",
"starting_analysis": "분석 시작 중...",
"found_files": "설립하다 {count} 파일",
"failed_to_parse_language_error": "파싱하지 못했습니다. {language} 번역: {errorMessage}",
"recommendations": {
"keys_have_significant_size_variations": "키에는 상당한 크기 변화가 있습니다",
"consider_reviewing_translations": "검토를 고려해보세요 {lang} 번역 - 그렇죠 {percentageDifference}% {comparison} 기준선보다",
"long_translations_detected": "{lang} 가지다 {longKeys} 다음보다 긴 번역 {threshold} 캐릭터 - 분해하는 것을 고려해보세요"
},
"detailed_key_analysis_title": "상세한 주요 분석",
"key_analysis_detail": "{lang}: {length} 문자({status}) - {translation}",
"key_analysis_header": "열쇠: {key}",
"status_empty": "비어 있는",
"status_long": "긴",
"status_ok": "좋아요"
},
"usage": {
"help_message": "I18n 사용 분석기 사용법: node i18ntk-usage.js [옵션] 옵션: --source-dir <dir> 스캔할 소스 디렉터리(기본값: ./src) --i18n-dir <dir> I18n 디렉터리(기본값: ./src/locales) --output-report 세부 보고서 생성 --output-dir <dir> 보고서의 출력 디렉터리(기본값: ./reports) --help 이 도움말 표시 예: node i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --output-dir=./analytic --output-report",
"source_directory_thissourcedir": "📁 소스 디렉토리: {sourceDir}",
"translationCompletenessTitle": "🌍 번역 완전성:",
"i18n_directory_thisi18ndir": "🌐 I18n 디렉토리: {i18nDir}",
"failed_to_parse_filename_error": "⚠️ 구문 분석에 실패했습니다. {fileName}: {errorMessage}",
"analyzing_source_files": "🔍 소스 파일 분석 중...",
"found_files_in_source": "📂 발견 {numFiles} 소스 디렉터리의 파일",
"found_thisusedkeyssize_unique_": "🎯 발견됨 {usedKeysSize} 고유하게 사용된 키",
"total_key_usages_totalkeysfoun": "📊 총 키 사용: {totalKeysFound}",
"loading_available_translation_": "📋 사용 가능한 번역 키 로드 중...",
"found_thisavailablekeyssize_av": "✅ 찾음 {availableKeysSize} 사용 가능한 키",
"foundTranslationFiles": "✅ 찾음 {count} 번역 파일",
"errorReadingI18nDirectory": "⚠️ i18n 디렉토리 읽기 오류: {error}",
"pressEnterToReturnToMenu": "📝 Enter를 눌러 메인 메뉴로 돌아가세요...",
"notTranslatedKeysTotal": "⚠️ 번역되지 않은 키: {total}",
"noSourceFilesFound": "⚠️ 소스 디렉터리에 소스 파일이 없습니다.",
"reviewNotTranslatedKeys": "💡 번역되지 않은 키 검토",
"analysisCompletedSuccessfully": "🎉 분석이 성공적으로 완료되었습니다!",
"detectedSourceDirectory": "감지된 소스 디렉터리: {sourceDir}",
"detectedI18nDirectory": "i18n 디렉토리가 감지되었습니다: {i18nDir}",
"fileInfo": "📄 {namespace}: {keys} 열쇠",
"failedToAnalyzeUsage": "❌ 사용량 분석 실패: {error}",
"failedToAnalyzeFile": "❌ 파일 분석 실패: {error}",
"failedToExtractKeys": "❌ 다음에서 키를 추출하지 못했습니다. {filePath}: {error}",
"analysisFailedError": "❌ 분석 실패: {error}",
"analyzerInitialized": "분석기가 초기화되었습니다.",
"analyzerInitFailed": "분석기 초기화 실패: {error}",
"argsParsed": "구문 분석된 인수",
"processedFiles": "처리됨 {processedFiles} ~의 {totalFiles} 파일.",
"argsParseFailed": "인수 구문 분석에 실패했습니다. {error}",
"translationDiscoveryError": "번역 검색 오류: {error}",
"fileTraversalError": "파일 탐색 오류: {error}",
"sourceEqualsI18nWarn": "{reason}. 사용 분석에서는 로케일 파일을 소스 코드로 검색하지 않습니다.",
"i18nEqualsSourceWarn": "⚠️ I18n 디렉토리와 소스 디렉토리는 동일합니다. 이로 인해 분석에 문제가 발생할 수 있습니다.",
"usageAnalysisFailed": "⚠️ 사용량 분석 실패: {error}",
"translationFileParseError": "⚠️ 번역 파일 구문 분석 오류: {error}",
"translationKeysLoadError": "⚠️ 번역 키 로드 오류: {error}",
"languageCompletenessStats": "🌐 {language}: {translated}/{total} ({completeness}% 번역됨)",
"missingKeysCount": "⚠️ 누락된 키: {count}",
"analyzingTranslationCompleteness": "번역 완성도 분석 중...",
"unusedKeysCount": "사용되지 않은 키: {count}",
"usedKeysCount": "사용된 키: {count}",
"availableKeysCount": "사용 가능한 키: {count}",
"analysisResults": "분석 결과:",
"i18nDirectoryNotFound": "⚠️ I18n 디렉토리를 찾을 수 없습니다. 경로를 확인해주세요.",
"sourceDirectoryNotFound": "⚠️ 소스 디렉터리를 찾을 수 없습니다: {dir}",
"checkUsage": {
"title": "🔍 I18NTK USAGE ANALYSIS",
"analyzing_source_files": "🔍 소스 파일 분석 중...",
"source_directory_thissourcedir": "📁 소스 디렉토리: {sourceDir}",
"i18n_directory_thisi18ndir": "📁 i18n 디렉토리: {i18nDir}",
"found_files_in_source": "✅ 찾음 {numFiles} 소스 디렉터리의 파일",
"no_source_files_found": "⚠️ 지정된 디렉터리에 소스 파일이 없습니다.",
"processedFiles": "📊 처리됨 {processedFiles} ~의 {totalFiles} 파일",
"failedToProcessFile": "❌ 처리 실패",
"found_thisusedkeyssize_unique_": "🔍 발견됨 {usedKeysSize} 고유하게 사용된 키",
"total_key_usages_totalkeysfoun": "📊 총 키 사용: {totalKeysFound}",
"loading_available_translation_": "📂 사용 가능한 번역 키 로드 중...",
"found_thisavailablekeyssize_av": "✅ 찾음 {availableKeysSize} 사용 가능한 키",
"message": "프로젝트 전체에서 번역 키 사용을 분석하는 중...",
"usage_analysis_results": "📊 USAGE ANALYSIS RESULTS",
"source_files_scanned_thisfileu": "📁 스캔된 소스 파일: {fileUsageSize}",
"available_translation_keys_thi": "✅ 사용 가능한 번역 키: {availableKeysSize}",
"used_translation_keys_thisused": "🔍 사용된 번역 키: {usedKeysSize}",
"dynamic_keys_detected_dynamick": "⚡ 동적 키가 감지되었습니다: {dynamicKeysLength}",
"unused_keys_unusedkeyslength": "🗑️ 사용하지 않은 키: {unusedKeysLength}",
"missing_keys_missingkeyslength": "❌ 누락된 키: {missingKeysLength}",
"translation_completeness_title": "📈 번역 완전성",
"language_completeness_stats": "{language}: {translated}/{total} 키({percentage}%)",
"n_sample_unused_keys": "🗑️ 사용하지 않은 키 샘플(처음 5개):",
"key": "🔑 {key}",
"and_unusedkeyslength_5_more": "... 그리고 {count} 사용하지 않은 키가 더 많습니다",
"n_sample_missing_keys": "❌ 누락된 키 샘플(처음 5개):",
"and_missingkeyslength_5_more": "... 그리고 {count} 더 많은 누락된 키",
"n_generating_detailed_report": "📊 상세 보고서 생성 중...",
"report_saved_reportpath": "📄 보고서 저장됨: {reportPath}",
"n_recommendations": "💡 권장사항:",
"consider_removing_unused_trans": "🗑️ 번들 크기를 줄이려면 사용하지 않는 번역을 삭제하는 것이 좋습니다.",
"add_missing_translation_keys_t": "➕ 일관성을 유지하기 위해 누락된 번역 키를 추가합니다.",
"review_dynamic_keys_manually_t": "🔍 동적 키를 수동으로 검토합니다(유효할 수도 있음)",
"all_translation_keys_are_prope": "✅ 모든 번역 키가 올바르게 사용되었습니다!",
"n_next_steps": "🎯 NEXT STEPS:",
"2_check_the_detailed_report_fo": "2. 특정 이슈에 대한 상세 리포트를 확인하세요",
"help_message": "I18n 사용 분석기 사용법: node i18ntk-usage.js [옵션] 옵션: --source-dir <dir> 스캔할 소스 디렉터리(기본값: ./src) --i18n-dir <dir> I18n 디렉터리(기본값: ./src/locales) --output-report 세부 보고서 생성 --output-dir <dir> 보고서의 출력 디렉터리(기본값: ./reports) --help 이 도움말 표시 예: node i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --output-dir=./analytic --output-report",
"1_review_the_analysis_results": "1. 콘솔 또는 생성된 보고서에서 분석 결과를 검토합니다.",
"2_run_with_outputreport_for_de": "2. 자세한 보고서를 보려면 --output-report를 사용하여 실행하세요.",
"3_remove_unused_keys_or_add_mi": "3. 사용하지 않는 키를 제거하거나 누락된 키를 소스 코드에 추가하세요.",
"4_rerun_analysis_to_verify_imp": "4. 분석을 다시 실행하여 개선 사항을 확인합니다.",
"noSourceFilesFound": "분석할 소스 파일이 없습니다.",
"i18nDirectoryNotFound": "I18n 디렉토리를 찾을 수 없습니다: {i18nDir}",
"noTranslationLanguagesFound": "번역 언어가 없습니다.",
"failedToAnalyzeFile": "파일을 분석하지 못했습니다. {filePath}: {error}",
"failedToAnalyzeLanguage": "언어 분석에 실패했습니다. {language}: {error}",
"translationCompletenessAnalysisFailed": "번역 완성도 분석 실패: {error}",
"n": "\\N"
},
"complete": {
"configLoadedSuccessfully": "구성이 성공적으로 로드되었습니다.",
"configLoadingFailed": "구성 로드에 실패했습니다.",
"title": "🌍 I18NTK 번역 완료",
"separator": "============================================================",
"sourceDir": "📁 소스 디렉토리: {sourceDir}",
"sourceLanguage": "🌐 소스 언어: {sourceLanguage}",
"dryRunMode": "🧪 드라이 런 모드 - 변경 사항이 없습니다.",
"languages": "🌍 사용 가능한 언어: {languages}",
"addingMissingKeys": "➕ 번역 파일에 누락된 키 추가 중...",
"processing": "🔄 처리 {language}...",
"addedKeys": "✅ 추가됨 {count} 누락된 키",
"changeDetails": "📝 {file}: {key}",
"andMore": "...그리고 {count} 더",
"noChangesNeeded": "✅ 변경이 필요하지 않습니다 {language}",
"summaryTitle": "📊 완료 요약",
"totalChanges": "📝 총 변경 사항: {totalChanges}",
"languagesProcessed": "🌍 처리되는 언어: {languagesProcessed}",
"missingKeysAdded": "➕ 누락된 키가 추가되었습니다: {missingKeysAdded}",
"nextStepsTitle": "📋 NEXT STEPS",
"nextStep1": "1. 사용량 분석 실행:",
"nextStep2": "노드 i18ntk-usage.js --output-report",
"nextStep3": "2. 번역 검증:",
"nextStep4": "노드 i18ntk-validate.js",
"nextStep5": "3. 패턴 분석:",
"nextStep6": "노드 i18ntk-analyze.js",
"allKeysAvailable": "🎉 이제 모든 번역 키를 사용할 수 있습니다!",
"runWithoutDryRun": "💡 변경 사항을 적용하려면 --dry-run 없이 실행하세요.",
"deletingOldReport": "🗑️ 오래된 보고서를 삭제하는 중...",
"generatingFreshAnalysis": "📊 새로운 사용량 분석 생성 중...",
"couldNotGenerate": "❌ 사용량 분석을 생성할 수 없습니다.",
"reportNotFound": "📋 사용 보고서를 찾을 수 없습니다. 공용 키를 사용하는 중...",
"foundMissingKeys": "📋 찾았습니다 {count} 사용량 분석에서 누락된 키",
"couldNotParse": "❌ 사용 보고서를 구문 분석할 수 없습니다. 공용 키를 사용하는 중..."
},
"noTranslationLanguagesFound": "번역 언어를 찾을 수 없습니다",
"failedToAnalyzeLanguage": "언어 분석에 실패했습니다.",
"translationCompletenessAnalysisFailed": "번역 완성도 분석 실패",
"failedToProcessFile": "파일 처리 실패:",
"failedToSaveReport": "사용량 보고서를 저장하지 못했습니다. {error}",
"i18nDirectoryDoesNotExist": "I18n 디렉토리가 존재하지 않습니다: {dir}",
"reportSavedTo": "사용 보고서 저장 위치: {reportPath}",
"sourceDirectoryDoesNotExist": "소스 디렉터리가 존재하지 않습니다: {dir}",
"noSourceDirectoryConfigured": "(구성된 바 없음)"
},
"validate": {
"help_message": "I18n 번역 유효성 검사기 사용법: node i18ntk-validate.js [옵션] 옵션: --source-dir <dir> 스캔할 소스 디렉터리(기본값: ./src) --i18n-dir <dir> I18n 디렉터리(기본값: ./src/locales) --output-report 세부 보고서 생성 --output-dir <dir> 보고서의 출력 디렉터리(기본값: ./reports) --help 이 도움말 표시 예: node i18ntk-validate.js --output-report node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales node i18ntk-validate.js --output-dir=./analytic --output-report",
"title": "🔍 I18n 번역 검사기",
"message": "유효성 검사 프로세스를 시작하는 중...",
"sourceDirectory": "📁 소스 디렉토리: {dir}",
"sourceLanguage": "🌍 소스 언어: {sourceLanguage}",
"strictMode": "⚙️ 엄격 모드: {mode}",
"noTargetLanguages": "구성된 대상 언어가 없습니다. 대상 확인을 건너뛰는 중입니다. \"i18ntk init --언어s=de,fr\"을 통해 언어를 추가합니다.",
"validatingLanguages": "🌍 언어 확인: {langs}",
"validatingLanguage": "🔍 언어 확인 중: {lang}",
"filesCount": "📄 파일: {count}",
"keysCount": "🔑 키: {count}",
"missingFilesCount": "📁 누락된 파일: {count}",
"syntaxErrorsCount": "❌ 구문 오류: {count}",
"translationPercentage": "🎯 번역: {percentage}% ({translated}/{total} 열쇠)",
"validationSummary": "📊 검증 요약",
"validation_failed": "❌ 유효성 검사 실패: {error}",
"totalErrors": "❌ 총 오류 수: {count}",
"totalWarnings": "⚠️ 총 경고: {count}",
"errorsSection": "❌ ERRORS",
"warningsSection": "⚠️ WARNINGS",
"recommendationsSection": "💡 추천",
"fixErrorsFirst": "1. 먼저 모든 오류를 수정하세요.",
"resolveMissingFilesAndSyntaxErrors": "1. 누락된 파일 및 구문 오류 해결",
"fixStructuralInconsistencies": "2. 구조적 불일치 수정",
"completeMissingTranslations": "3. 누락된 번역을 완성하세요",
"rerunValidation": "4. 유효성 검사를 다시 실행하여 수정 사항을 확인합니다.",
"addressWarnings": "품질 개선을 위해 경고 해결",
"reviewWarnings": "경고를 검토하고 적절한 경우 수정하세요.",
"considerRunningWithStrict": "2. 보다 엄격한 검증을 위해 --strict 플래그를 사용하여 실행하는 것을 고려하십시오.",
"allValidationsPassed": "🎉 모든 검증이 통과되었습니다!",
"considerRunningUsageAnalysis": "사용량 분석 실행을 고려하십시오: node i18ntk-usage.js",
"deletedOldReport": "🗑️ 오래된 검증 보고서를 삭제했습니다.",
"sourceDir": "📁 소스 디렉토리: {sourceDir}",
"i18nDir": "🌐 I18n 디렉토리: {i18nDir}",
"loadingTranslationFiles": "📋 번역 파일 로드 중...",
"foundTranslationFilesCount": "✅ 찾음 {count} 번역 파일",
"analyzingTranslations": "🔍 번역 분석 중...",
"validationCompletedSuccessfully": "🎉 검증이 성공적으로 완료되었습니다!",
"validationErrorsFound": "⚠️ 확인 오류가 발견되었습니다: {count}",
"validationWarningsFound": "⚠️ 유효성 검사 경고가 발견되었습니다. {count}",
"validationPassed": "✅ 오류 없이 유효성 검사가 통과되었습니다.",
"validationFailed": "검증 실패: {error}",
"startingValidationProcess": "🔍 유효성 검사 프로세스 시작 중...",
"validationProcessCompletedSuccessfully": "✅ 검증 과정이 성공적으로 완료되었습니다",
"stackTrace": "스택 추적: {stack}",
"authenticationFailed": "❌ 인증에 실패했습니다. 접근 불가.",
"fatalValidationError": "❌ 치명적인 유효성 검사 오류: {error}",
"configAccess": "검증을 위해 구성에 액세스하는 중",
"configValidated": "구성이 성공적으로 검증되었습니다.",
"configError": "구성 오류: {error}",
"validatorInit": "I18n 유효성 검사기 초기화 중",
"validatorInitialized": "I18n 유효성 검사기가 성공적으로 초기화되었습니다.",
"validatorInitError": "유효성 검사기 초기화 오류: {error}",
"argsParsing": "명령줄 인수 구문 분석",
"argsParsed": "명령줄 인수가 성공적으로 구문 분석되었습니다.",
"argsParseError": "인수 구문 분석 오류: {error}",
"languagesScan": "사용 가능한 언어 스캔 중",
"languagesFound": "설립하다 {count} 언어",
"languagesScanError": "언어 검색 오류: {error}",
"filesScan": "설립하다 {count} 파일 {language}",
"filesScanError": "파일 검색 오류: {error}",
"jsonValidated": "JSON 구문이 검증되었습니다: {filePath}",
"jsonValidationError": "JSON 유효성 검사 오류: {error}",
"languageValidation": "언어 확인 중: {language}",
"languageValidationError": "언어 유효성 검사 오류: {error}",
"fileDeleted": "파일이 삭제되었습니다.",
"runStarted": "검증 실행 시작",
"runCompleted": "검증 실행이 성공적으로 완료되었습니다.",
"runError": "검증 실행 실패: {error}",
"scriptExecution": "스크립트 실행",
"validationCompleted": "검증 완료",
"validationError": "유효성 검사 오류: {error}",
"separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
"languageHeader": "🌐 언어: {language}",
"validationResults": "📊 검증 결과",
"noErrors": "✅ 오류가 발견되지 않았습니다",
"noWarnings": "✅ 경고가 발견되지 않았습니다",
"summaryHeader": "📋 OVERALL SUMMARY",
"progressIndicator": "⏳ 처리 중...",
"completedIndicator": "✅ 완료됨",
"errorIndicator": "❌ 오류",
"warningIndicator": "⚠️ 경고",
"infoIndicator": "ℹ️ 정보",
"sourceDirNotConfigured": "소스 디렉터리가 구성되지 않았습니다.",
"sourceLanguageNotConfigured": "소스 언어가 구성되지 않았습니다.",
"translationFunctionNotInitialized": "번역 기능이 제대로 초기화되지 않았습니다.",
"sourceLanguageDirectoryNotFound": "소스 언어 디렉터리를 찾을 수 없습니다.",
"specifiedLanguageNotFound": "지정한 언어를 찾을 수 없습니다",
"noJsonFilesFound": "소스 디렉터리에 JSON 파일이 없습니다. {sourceDir}",
"i18nDirectoryNotFound": "I18n 디렉토리를 찾을 수 없습니다: {i18nDir}",
"invalidDirectoryPaths": "잘못된 디렉터리 경로가 감지되었습니다.",
"invalidSampleFilePath": "잘못된 샘플 파일 경로",
"failedToCreateSampleTranslationFile": "샘플 번역 파일을 생성하지 못했습니다.",
"invalidFilePathDetected": "잘못된 파일 경로가 감지되었습니다.",
"failedToWriteFile": "파일을 쓰지 못했습니다: {filePath}",
"invalidSourceDirectory": "잘못된 소스 디렉터리: {sourceDir}",
"invalidSourceLanguageDirectory": "잘못된 소스 언어 디렉터리: {sourceDir}"
},
"adminCli": {
"setupPinProtectionTitle": "🔐 관리자 PIN 보호 설정",
"setupPinProtectionDescription": "관리 작업을 위해서는 4~6자리 PIN이 필요합니다.",
"enablePinProtectionPrompt": "관리자 PIN 보호를 활성화하시겠습니까?",
"setupCancelled": "관리자 PIN 보호 설정이 취소되었습니다.",
"enterPinPrompt": "4~6자리 PIN을 입력하세요.",
"pinFormatError": "❌ PIN은 4~6자리여야 합니다. 다시 시도해 주세요.",
"confirmPinPrompt": "PIN 확인:",
"pinMismatchError": "❌ PIN이 일치하지 않습니다. 다시 시도해 주세요.",
"pinProtectionEnabledSuccess": "✅ 관리자 PIN 보호가 활성화되었습니다!",
"pinRecoveryWarning": "⚠️ PIN을 기억하세요. 분실 시 복구할 수 없습니다.",
"setupPinProtectionFailed": "❌ 관리자 PIN 보호를 설정하지 못했습니다.",
"errorSettingUpPin": "❌ 관리자 PIN 설정 중 오류 발생: {message}",
"authRequiredForOperation": "🔐 관리자 인증이 필요한 경우: {operation}",
"invalidPinFormat": "❌ 잘못된 PIN 형식입니다. PIN은 4~6자리여야 합니다.",
"authenticationSuccess": "✅ 인증 성공!",
"invalidPinAttemptsRemaining": "❌ PIN이 잘못되었습니다. {remaining} 시도 횟수가 남아 있습니다.",
"authenticationFailedAccessDenied": "❌ 인증에 실패했습니다. 접근 불가.",
"authenticationError": "❌ 인증 오류: {message}",
"pinProtectionNotEnabled": "현재 관리자 PIN 보호가 활성화되어 있지 않습니다.",
"disablingPinProtectionTitle": "🔓 관리자 PIN 보호 비활성화",
"confirmDisablePinProtection": "관리자 PIN 보호를 비활성화하시겠습니까?",
"operationCancelled": "작업이 취소되었습니다.",
"pinProtectionDisabledSuccess": "✅ 관리자 PIN 보호가 비활성화되었습니다.",
"disablePinProtectionFailed": "❌ 관리자 PIN 보호를 비활성화하지 못했습니다.",
"errorDisablingPinProtection": "❌ 관리자 보호를 비활성화하는 중에 오류가 발생했습니다. {message}",
"adminProtectionStatusTitle": "🔐 관리자 보호 상태",
"statusEnabled": "상태: ✅ 활성화됨",
"protectionDetails": "보호: 관리 작업에는 4~6자리 PIN이 필요합니다.",
"lockoutDetails": "잠금: 3회 시도 실패 = 15분 잠금",
"statusDisabled": "상태: ❌ 비활성화됨",
"noAuthRequired": "보호: 인증이 필요하지 않습니다.",
"unprotectedRisk": "위험: 관리 작업이 보호되지 않습니다.",
"errorCheckingAdminStatus": "❌ 관리자 상태 확인 중 오류 발생: {message}",
"authRequired": "🔐 관리자 인증이 필요합니다.",
"invalidPin": "❌ PIN이 잘못되었습니다.",
"authSuccess": "✅ 인증 성공!",
"adminPinSetupCli": "admin_pin_setup_cli",
"adminAuthFailedCli": "admin_auth_failed_cli",
"adminAuthDisabledCli": "admin_auth_disabled_cli",
"protectedAccess": "보호된 액세스: 민감한 작업에는 관리자 인증이 필요합니다.",
"enterPin": "관리자 PIN 입력:",
"accessGranted": "액세스 권한이 부여되었습니다."
},
"adminPin": {
"setup_title": "🔐 관리자 PIN 설정",
"setup_separator": "============================================================",
"setup_description": "민감한 설정에 대한 관리자 액세스를 위한 4~6자리 PIN을 만듭니다.",
"required_for_title": "이 PIN은 다음과 같은 경우에 필요합니다.",
"required_for_1": "• 보안 설정 변경",
"required_for_2": "• 고급 구성 수정",
"required_for_3": "• 디버그 도구에 액세스",
"required_for_4": "• 설정 재설정",
"setup_note": "💡 참고: 입력할 때 별표(*)가 표시됩니다. 이는 단지 마스킹 문자일 뿐입니다.",
"setup_digits_only": "숫자 0-9만 PIN 숫자로 허용됩니다.",
"invalid_pin_length": "❌ PIN이 잘못되었습니다. 4~6자리 숫자여야 합니다(숫자 0~9만).",
"invalid_pin_example": "예: 1234 또는 567890",
"pins_do_not_match": "❌ PIN이 일치하지 않습니다.",
"setup_success": "✅ 관리자 PIN이 성공적으로 설정되었습니다!",
"setup_warning": "⚠️ 이 PIN을 안전하게 보관하세요. 분실시 복구가 불가능합니다.",
"setup_error": "❌ PIN 설정 오류:",
"session_expired": "⏰ 비활성으로 인해 관리 세션이 만료되었습니다.",
"no_pin_set_setting_up": "⚠️ 관리자 PIN이 설정되지 않았습니다. PIN 설정 중...",
"no_pin_configured_access_denied": "⚠️ 관리자 PIN이 구성되지 않았습니다. 접근 불가.",
"use_admin_settings_to_set_pin": "💡 먼저 관리자 설정을 사용하여 PIN을 설정하세요.",
"locked_out": "🔒 시도 실패 횟수가 너무 많아 관리자 액세스가 잠겼습니다.",
"wait_before_retry": "5분 정도 기다린 후 다시 시도해 주세요.",
"access_granted": "✅ 관리자 액세스 권한이 부여되었습니다.",
"incorrect_pin": "❌ PIN이 잘못되었습니다. {attempts} 시도 횟수가 남아 있습니다.",
"verify_pin_error": "❌ PIN 확인 오류:",
"already_configured": "✅ 관리자 PIN이 이미 구성되어 있습니다.",
"optional_setup_title": "🔐 관리자 PIN 설정(선택 사항)",
"optional_setup_description": "관리자 PIN 보호는 다음과 같은 민감한 작업에 대한 보안을 추가합니다.",
"setup_prompt": "관리자 PIN을 설정하시겠습니까? (예/아니요):",
"skipping_setup": "⏭️ 관리자 PIN 설정을 건너뛰는 중입니다. 나중에 설정에서 설정할 수 있습니다.",
"setup_prompt_error": "❌ PIN 설정 프롬프트 중 오류 발생:",
"protectedAccess": "보호된 액세스: 민감한 작업에는 관리자 인증이 필요합니다.",
"enterPin": "관리자 PIN 입력:",
"accessGranted": "액세스 권한이 부여되었습니다.",
"invalidPin": "❌ PIN이 잘못되었습니다. 다시 시도해 주세요.",
"weak_pin_warning": "⚠️ 경고: 이 PIN은 취약하거나 일반적인 것으로 보입니다.",
"weak_pin_suggestion": "💡 다양한 숫자로 더 강력한 PIN을 사용하는 것이 좋습니다.",
"use_anyway_prompt": "계속 사용하려면 \"yes\"를 입력하고, 다른 PIN을 선택하려면 Enter를 누르세요.",
"enter_new_pin": "새 관리자 PIN(4~6자리) 입력:",
"confirm_pin": "관리자 PIN 확인:",
"not_set": "설정되지 않음",
"pin_display_mask": "####"
},
"debug": {
"title": "🔧 디버그 도구",
"separator": "============================================================",
"mainDebuggerSystemDiagnostics": "1. 시스템 진단",
"_consoleTranslationsCheck": "// 2. 콘솔 번역 확인",
"_exportMissingKeys": "// 3. 누락된 번역 키 내보내기",
"_replaceHardcodedConsole": "// 4. 하드코딩된 콘솔 문자열 바꾸기",
"_consoleKeyChecker": "// 5. 콘솔 키 검사기",
"debugLogs": "2. 디버그 로그",
"backToMainMenu": "0. 메인 메뉴로 돌아가기",
"selectOption": "디버그 도구를 선택합니다.",
"runningDebugTool": "달리기 {displayName}...",
"debugToolNotFound": "❌ 디버그 도구를 찾을 수 없습니다: {toolName}",
"errorRunningDebugTool": "디버그 도구 실행 중 오류 발생 '{displayName}': {error}",
"recentDebugLogs": "📄 최근 디버그 로그",
"noDebugLogsFound": "❌ 디버그 로그를 찾을 수 없습니다.",
"debugLogsDirectoryNotFound": "❌ 디버그 로그 디렉터리를 찾을 수 없습니다.",
"selectLogPrompt": "보려는 로그 파일을 선택하십시오(1-{count}):",
"invalidChoiceSelectRange": "선택이 잘못되었습니다. 사용 가능한 범위에서 선택해 주세요.",
"contentOf": "📄 내용 {filename}:",
"pressEnterToContinue": "계속하려면 Enter를 누르세요..."
},
"detect_language_mismatches": {
"tool_title": "🔍 언어 불일치 감지 도구",
"separator": "=====================================",
"analyzing_file": "📄 분석 중 {language}.json...",
"error_analyzing_file": "❌ 오류분석 {filename}: {errorMessage}",
"results_title": "📊 언어 불일치 감지 결과",
"results_separator": "========================================",
"summary_title": "📋 SUMMARY:",
"total_files_analyzed": "분석된 총 파일 수: {totalFiles}",
"files_with_mismatches": "불일치가 있는 파일: {filesWithMismatches}",
"total_mismatches_found": "발견된 총 불일치 수: {totalMismatches}",
"no_mismatches_found": "✅ 언어 불일치가 발견되지 않았습니다! 모든 번역이 올바른 언어로 되어 있는 것 같습니다.",
"detailed_results_title": "🔍 DETAILED RESULTS:",
"file_mismatch_header": "📄 {filename} ({language})",
"mismatches_count": "설립하다 {count} 불일치:",
"mismatch_details": "{index}. 열쇠: {key}",
"mismatch_value": "값: \"{value}\"",
"mismatch_issue": "문제: {description}",
"recommendations_title": "💡 권장사항:",
"recommendation_1": "1. [TRANSLATE]로 표시된 모든 항목을 검토하고 번역합니다.",
"recommendation_2": "2. 언어 접두사(예: [DE], [FR])를 적절한 번역으로 바꿉니다.",
"recommendation_3": "3. 영어 텍스트를 적절한 대상 언어로 번역",
"recommendation_4": "4. 사용자가 접하는 모든 텍스트에 해당하는 모국어를 사용하세요.",
"recommendation_5": "5. 수정 후 이 도구를 다시 실행하여 수정 사항을 확인하세요.",
"detailed_report_saved": "📄 상세 보고서 저장 위치: {reportPath}",
"error_saving_report": "❌ 보고서 저장 오류: {errorMessage}",
"auto_fix_mode": "🔧 자동 수정 모드 {dryRun}",
"auto_fix_separator": "=====================================",
"fixed_file": "✅ 수정됨 {filename}",
"auto_fix_summary_title": "📊 자동 수정 요약:",
"total_fixes_applied": "적용된 총 수정 사항: {count}",
"preview_fixes_title": "🔍 수정사항 미리보기:",
"fix_details": "{file}: {key} 오래된: \"{old}\" 새로운: \"{new}\"",
"more_fixes": "... 그리고 {count} 더 많은 수정 사항",
"run_with_apply_fixes": "💡 이 수정 사항을 적용하려면 --apply를 사용하여 실행하세요.",
"error_general": "❌ 오류:",
"mainDebuggerSystemDiagnostics": "메인 디버거/시스템 진단",
"exportMissingKeys": "누락된 키 내보내기",
"replaceHardcodedConsole": "하드코딩된 콘솔 교체",
"consoleKeyChecker": "콘솔 키 검사기",
"debugLogs": "디버그 로그",
"backToMainMenu": "메인 메뉴로 돌아가기",
"invalidChoiceSelectRange": "❌ 선택이 잘못되었습니다. 표시된 범위 내에서 숫자를 선택하세요.",
"runningDebugTool": "디버그 도구 실행: {displayName}",
"debugToolNotFound": "디버그 도구 '{toolName}' 찾을 수 없습니다.",
"recentDebugLogs": "최근 디버그 로그",
"noDebugLogsFound": "디버그 로그를 찾을 수 없습니다.",
"logEntry": "로그 항목: {timestamp} - {message}",
"debugLogsDirectoryNotFound": "디버그 로그 디렉터리를 찾을 수 없습니다."
},
"help": {
"title": "📊 I18NTK 관리 도움말",
"usage": "사용법: node main/manage/index.js [옵션]",
"interactiveMode": "💡 사용: node main/manage/index.js --command=<command> 직접 실행을 위해",
"showHelp": "📖 사용: node main/manage/index.js --사용 가능한 명령에 대한 도움말",
"availableCommands": "📖 사용 가능한 명령:",
"initProject": "🚀 새 언어 초기화",
"analyzeTranslations": "🔍 번역 분석",
"validateTranslations": "✅ 번역 확인",
"checkUsage": "📊 키 사용법 확인",
"initCommand": "init - 새 언어 초기화",
"analyzeCommand": "분석 - 번역 분석",
"validateCommand": "검증 - 번역 검증",
"usageCommand": "사용법 - 키 사용법 확인",
"sizingCommand": "사이징 - 사이징 분석",
"completeCommand": "완전한 - 완전한 번역(100% 적용)",
"summaryCommand": "요약 - 프로젝트 상태 표시",
"debugCommand": "디버그 - 디버그 번역 문제",
"scannerCommand": "스캐너 - 키 스캔",
"translateCommand": "번역 - 로케일 파일 자동 번역",
"menu": {
"pressEnterToContinue": "계속하려면 Enter를 누르세요...",
"title": "🌐 I18NTK 관리 메뉴",
"description": "국제화 관리를 위한 대화형 메뉴",
"exit": "🚪 종료"
},
"commands": {
"init": "init - 새 언어 초기화",
"analyze": "분석 - 번역 분석",
"validate": "검증 - 번역 검증",
"usage": "사용법 - 키 사용법 확인",
"sizing": "사이징 - 사이징 분석",
"complete": "완전한 - 완전한 번역(100% 적용)",
"summary": "요약 - 프로젝트 상태 표시",
"debug": "디버그 - 디버그 번역 문제"
},
"options": {
"sourceDir": "--소스-디렉터리 <dir> 분석할 소스 디렉터리",
"output": "--산출 <file> 보고서의 출력 파일",
"verbose": "--verbose, -v 자세한 정보 표시",
"keepReports": "--keep-reports 기존 보고서 유지",
"deleteReports": "--delete-reports 기존 보고서 삭제",
"help": "--help, -h 이 도움말 표시"
},
"examples": {
"title": "예:",
"example1": "노드 i18ntk-manage.js",
"example2": "노드 i18ntk-manage.js --source-dir ./locales",
"example3": "노드 i18ntk-manage.js --출력 요약-report.txt",
"example4": "노드 i18ntk-manage.js --verbose",
"example5": "node i18ntk-manage.js --source-dir ./locales --output report.json"
},
"features": {
"initProject": "🚀 새 언어 초기화",
"analyzeTranslations": "🔍 번역 분석",
"validateTranslations": "✅ 번역 확인",
"checkUsage": "📊 키 사용법 확인",
"completeTranslations": "🎯 완전한 번역(100% 적용)",
"showSizing": "📏 사이즈 분석",
"runWorkflow": "🔄 전체 워크플로 실행",
"showStatus": "📋 프로젝트 상태 표시",
"deleteReports": "🗑️ 모든 보고서 삭제",
"changeLanguage": "🌍 UI 언어 변경",
"settings": "⚙️ 설정",
"showHelp": "❓ 도움말",
"debugTools": "🔧 디버그 도구"
},
"messages": {
"selectOption": "옵션을 선택하세요:",
"invalidOption": "잘못된 옵션입니다. 다시 시도해 주세요.",
"operationCompleted": "✅ 작업이 성공적으로 완료되었습니다!",
"pressEnter": "계속하려면 Enter를 누르세요...",
"goodbye": "👋 안녕!",
"unknownCommand": "알 수 없는 명령: {command}",
"nonInteractive": "⚠️ 비대화형 모드가 감지되었습니다. 참고용으로만 표시된 메뉴입니다."
},
"i18n_helper": {
"translation_file_not_found": "번역 파일을 찾을 수 없습니다: {translationFile}",
"error_loading_translations": "번역 로드 중 오류 발생: {errorMessage}",
"translation_not_found": "키에 대한 번역을 찾을 수 없습니다: {key}",
"translation_key_not_string": "번역 키가 문자열로 해석되지 않습니다. {key}",
"error_reading_locales_directory": "로캘 디렉터리를 읽는 동안 오류가 발생했습니다. {errorMessage}"
}
},
"init": {
"initializationTitle": "🚀 i18n 관리 툴킷 - 프로젝트 초기화",
"initializationCancelled": "🚫 사용자가 초기화를 취소했습니다.",
"sourceDirectoryLabel": "📁 소스 디렉토리: {dir}",
"requiredTitle": "초기화 필요",
"requiredBody": "이 명령을 실행하기 전에 이 프로젝트를 초기화해야 합니다.",
"promptRunNow": "지금 초기화를 실행하시겠습니까? (예/아니요):",
"sourceLanguageLabel": "🌍 소스 언어: {language}",
"detectedI18nFrameworks": "🔍 감지된 i18n 프레임워크: {frameworks}",
"pinMustBe4Digits": "🔐 PIN은 4자리여야 합니다.",
"existingDirectoriesFound": "📁 기존 번역 디렉토리를 찾았습니다:",
"useExistingDirectoryPrompt": "기존 디렉터리를 사용하시겠습니까? (예/아니요)",
"selectDirectoryPrompt": "번호를 입력하여 디렉터리를 선택합니다(또는 '새 디렉터리 만들기' 선택).",
"enterNewDirectoryName": "새 번역 디렉터리의 이름을 입력하세요.",
"createdNewDirectory": "✅ 새 디렉터리 생성: {dir}",
"directoryAlreadyExists": "⚠️ 디렉토리가 이미 존재합니다: {dir}",