On install failure the temp folder is now preserved instead of wiped, so already-downloaded songs/images are skipped on the next attempt. The error screen offers 재시도 (resume from the failed item) and 처음으로 (discard the partial download and restart). Closing the program without retrying still wipes the partial download via window-all-closed, and an explicit cancel also clears it. Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
161 lines
8.9 KiB
JSON
161 lines
8.9 KiB
JSON
{
|
|
"app": {
|
|
"title": "마인크래프트 음악퀴즈 리소스팩 간편설치기"
|
|
},
|
|
"stepIndicator": {
|
|
"step1": "1. 음악퀴즈",
|
|
"step2": "2. 설치",
|
|
"step3": "3. 완료"
|
|
},
|
|
"logViewer": {
|
|
"heading": "설치 로그",
|
|
"collapse": "접기",
|
|
"expand": "펼치기"
|
|
},
|
|
"common": {
|
|
"next": "다음",
|
|
"back": "이전",
|
|
"cancel": "취소",
|
|
"confirm": "확인",
|
|
"openFolder": "리소스팩 폴더 열기",
|
|
"loading": "목록을 불러오는 중...",
|
|
"selectFailed": "선택 실패",
|
|
"listLoadFailed": "목록 로드 실패: {{message}}",
|
|
"installFailed": "설치 실패: {{message}}",
|
|
"noPacks": "등록된 음악퀴즈가 없습니다.",
|
|
"mcVersionLabel": "마인크래프트 {{version}} · ",
|
|
"trackImageCount": "음악 {{music}}곡 · 사진 {{image}}장",
|
|
"requestTimeout": "요청 시간 초과",
|
|
"tooManyRedirects": "너무 많은 요청."
|
|
},
|
|
"step1": {
|
|
"heading": "음악퀴즈 선택"
|
|
},
|
|
"agreement": {
|
|
"heading": "약관 동의",
|
|
"intro": "리소스팩을 설치하기 전에 아래 약관을 모두 확인하고 동의해 주세요.",
|
|
"tabResourcepack": "리소스팩 약관",
|
|
"tabInstaller": "리소스팩 설치기 약관",
|
|
"loading": "약관을 불러오는 중...",
|
|
"loadFailed": "약관 로드 실패: {{message}}",
|
|
"listLoadFailed": "약관 표시에 실패하여 설치를 진행할 수 없습니다.\n사유: {{message}}\n네트워크 상태를 확인하고 다시 시도하거나, 처음 단계로 돌아가 주세요.",
|
|
"retry": "다시 시도",
|
|
"agreeAll": "위 모든 약관에 동의합니다.",
|
|
"agreeRequired": "약관에 동의해야 다음 단계로 진행할 수 있습니다.",
|
|
"cancelling": "취소 중…"
|
|
},
|
|
"step2": {
|
|
"heading": "리소스팩 설치",
|
|
"description": "음악·사진을 받아 리소스팩을 만들고 <code>%appdata%/.mc_custom/resourcepacks/</code> 에 자동 설치합니다.",
|
|
"chipYtdlp": "yt-dlp 준비",
|
|
"chipFfmpeg": "ffmpeg 준비",
|
|
"musicHeading": "음악 다운로드",
|
|
"musicSub": "{{count}}곡",
|
|
"imageHeading": "사진 다운로드",
|
|
"imageSub": "{{count}}장",
|
|
"packageHeading": "리소스팩 빌드",
|
|
"packageWaiting": "대기 중…",
|
|
"packageBuilding": "빌드 중…",
|
|
"packageDone": "설치 완료",
|
|
"cardWaiting": "대기",
|
|
"cardDone": "완료",
|
|
"cardError": "실패"
|
|
},
|
|
"step3": {
|
|
"heading": "완료",
|
|
"message": "리소스팩 설치를 완료했습니다."
|
|
},
|
|
"install": {
|
|
"errorMessage": "설치 중 오류가 발생했습니다: {{message}}",
|
|
"resumeHint": "재시도를 누르면 이미 받아둔 음악·사진은 건너뛰고 실패한 지점부터 이어서 설치합니다. 처음으로를 누르거나 프로그램을 닫으면 지금까지 받아둔 파일은 삭제됩니다.",
|
|
"retry": "재시도",
|
|
"startOver": "처음으로"
|
|
},
|
|
"log": {
|
|
"manifestDownload": "manifest 다운로드: {{url}}",
|
|
"packDefFailed": "팩 정의 로드 실패 ({{file}}): {{message}} — mcVersion 폴백",
|
|
"listLoadFailed": "목록 로드 실패 ({{file}}): {{message}}",
|
|
"packsLoaded": "로드된 음악퀴즈: {{count}}개",
|
|
"packEntry": " - {{key}}: mc={{mc}} 베이스={{base}}",
|
|
"packEntryUnknownVersion": "?",
|
|
"packEntryNoBase": "(없음)",
|
|
"selectedPack": "선택: {{key}}",
|
|
"ytdlpPreparing": "yt-dlp 준비 중…",
|
|
"ytdlpPath": "yt-dlp 경로: {{path}}",
|
|
"ffmpegPreparing": "ffmpeg 준비 중…",
|
|
"ffmpegPath": "ffmpeg 경로: {{path}}",
|
|
"cpuDetected": "CPU 코어 {{cores}}개 감지 → 동시 다운로드 {{concurrency}}개",
|
|
"musicStart": "음악 다운로드 시작 ({{total}}곡, 동시 {{concurrency}}개, 시차 {{stagger}}ms)",
|
|
"musicTrackStart": "{{idx}}번 노래 다운로드 시작",
|
|
"musicTrackDone": "{{idx}}번 노래 완료: {{name}}",
|
|
"musicTrackSkip": "{{idx}}번 노래는 이전에 받아둠 → 건너뜀(이어받기)",
|
|
"musicRefreshRetry": "{{count}}곡 다운로드 실패 → yt-dlp/ffmpeg 최신 버전으로 재설치 후 실패한 곡만 재시도",
|
|
"ytdlpReinstall": "yt-dlp.exe 최신 버전으로 강제 재설치 중…",
|
|
"ffmpegReinstall": "ffmpeg.exe 최신 버전으로 강제 재설치 중…",
|
|
"imageStart": "사진 다운로드 시작 ({{total}}장)",
|
|
"imageDownloading": "{{idx}}번 사진 다운로드 중…",
|
|
"imageDone": "{{idx}}번 사진 완료: {{name}}",
|
|
"imageSkip": "{{idx}}번 사진은 이전에 받아둠 → 건너뜀(이어받기)",
|
|
"baseDownload": "베이스 리소스팩 다운로드: {{path}}",
|
|
"baseUrl": " URL: {{url}}",
|
|
"baseReceived": "베이스 리소스팩 받음 ({{kb}} KB)",
|
|
"baseAbsent": "베이스 리소스팩 없음(resourcepackPath 빈 값) — 새 리소스팩으로 생성",
|
|
"baseRemoved": "베이스 리소스팩 삭제: {{path}}",
|
|
"buildingZip": "리소스팩 zip 빌드 중… ({{name}})",
|
|
"installComplete": "설치 완료: {{path}}",
|
|
"cancelRequested": "취소 요청됨. 실행 중 프로세스 {{count}}개 중단…",
|
|
"ytdlpExists": "yt-dlp.exe 이미 있음: {{path}}",
|
|
"ytdlpDownloading": "yt-dlp.exe 다운로드 중: {{url}}",
|
|
"ytdlpReady": "yt-dlp.exe 준비 완료: {{path}}",
|
|
"ffmpegExists": "ffmpeg.exe 이미 있음: {{path}}",
|
|
"ffmpegDownloading": "ffmpeg.exe 다운로드 중: {{url}}",
|
|
"ffmpegExtracting": "ffmpeg zip 압축 해제 중…",
|
|
"ffmpegReady": "ffmpeg.exe 준비 완료: {{path}}",
|
|
"baseExtract": "베이스 리소스팩 압축 해제: {{name}}",
|
|
"baseShaderOverrideStripped": "베이스 리소스팩의 vanilla 셰이더 오버라이드 제거: assets/minecraft/shaders/{{path}} — mcVersion {{mc}} (pack_format {{format}}) 의 새 GLSL API 와 호환되지 않아 결과 zip 에서 제외했습니다.",
|
|
"packFormatMatched": "pack_format = {{format}} (mcVersion {{matched}})",
|
|
"packFormatFallback": "pack_format = {{format}} (mcVersion \"{{version}}\" 매칭 실패, 최신 폴백)",
|
|
"packFormatRange": "호환 범위 선언: pack_format {{min}} ~ {{max}} (supported_formats / min_format / max_format 모두 기록)",
|
|
"soundsMerged": "기존 sounds.json 병합 ({{count}}개 항목)",
|
|
"tracksAdded": "음악 트랙 추가됨: {{count}}곡",
|
|
"paintingsAdded": "사진 텍스처 추가됨: {{count}}장",
|
|
"ytdlpLine": "yt-dlp> {{line}}"
|
|
},
|
|
"progress": {
|
|
"ytdlpPreparing": "yt-dlp 준비 중",
|
|
"ffmpegPreparing": "ffmpeg 준비 중",
|
|
"ready": "준비 완료",
|
|
"cancelled": "취소됨",
|
|
"baseDownloading": "베이스 리소스팩 다운로드 중",
|
|
"buildingWithBase": "베이스에 음악·사진 추가 중",
|
|
"buildingZip": "zip 빌드 중",
|
|
"installComplete": "설치 완료"
|
|
},
|
|
"pack": {
|
|
"description": "음악퀴즈 리소스팩 - {{name}}"
|
|
},
|
|
"errors": {
|
|
"selectedPackNotFound": "선택한 음악퀴즈를 찾을 수 없습니다.",
|
|
"selectPackFirst": "음악퀴즈를 먼저 선택해주세요.",
|
|
"currentPackNotFound": "선택된 음악퀴즈를 찾을 수 없습니다.",
|
|
"cancelledByUser": "사용자가 설치를 취소했습니다.",
|
|
"musicDownloadFailed": "{{idx}}번 노래 다운로드 실패: {{message}}",
|
|
"imageDownloadFailed": "{{idx}}번 사진 다운로드 실패: {{message}}",
|
|
"imageNormalizeFailed": "{{idx}}번 사진 정규화 실패: {{message}}",
|
|
"baseDownloadFailed": "베이스 리소스팩 다운로드 실패: {{message}}",
|
|
"ytdlpSignal": "yt-dlp 가 신호 {{signal}} 로 종료됨",
|
|
"ytdlpExit": "yt-dlp 종료 코드 {{code}}: {{stderr}}",
|
|
"ytdlpNoStderr": "(stderr 없음)",
|
|
"ytdlpMissingOutput": "예상 출력파일이 없음: {{path}}",
|
|
"imageMetaUnknown": "이미지 크기를 읽지 못함",
|
|
"imageDataUrlInvalid": "data: URL 형식이 올바르지 않아 이미지를 디코드하지 못했습니다.",
|
|
"ytdlpVerifyFailed": "yt-dlp.exe 다운로드는 됐지만 실행 검증에 실패했습니다.",
|
|
"ytdlpInstallFailed": "yt-dlp.exe 자동 설치 실패: {{message}}",
|
|
"ffmpegNotInZip": "zip 내부에서 ffmpeg.exe 를 찾을 수 없습니다.",
|
|
"ffmpegVerifyFailed": "ffmpeg.exe 다운로드는 됐지만 실행 검증에 실패했습니다.",
|
|
"ffmpegInstallFailed": "ffmpeg.exe 자동 설치 실패: {{message}}",
|
|
"baseTrackCollision": "베이스 리소스팩에 같은 트랙 ID 가 이미 있어 설치를 중단합니다: {{trackId}}\n베이스 자산을 보존하면서 새 트랙을 같은 ID 로 추가할 수 없습니다. 베이스의 sounds.json 엔트리/sounds 폴더에서 충돌하는 항목을 제거하거나 다른 베이스를 사용하세요.",
|
|
"basePaintingCollision": "베이스 리소스팩에 같은 사진 파일이 이미 있어 설치를 중단합니다: {{name}}\n베이스의 painting 텍스처를 보존하면서 같은 파일명을 추가할 수 없습니다. 베이스에서 충돌하는 파일을 제거하거나 다른 베이스를 사용하세요."
|
|
}
|
|
}
|