{ "common": { "back": "← 돌아가기", "backToList": "목록으로", "save": "저장", "cancel": "취소", "ok": "확인", "delete": "삭제", "edit": "수정", "close": "x", "loading": "불러오는 중..." }, "site": { "indexTitle": "음악퀴즈 목록", "heroTitle": "마인크래프트 음악퀴즈", "heroSubtitle": "설치기에서 사용 가능한 음악퀴즈 목록입니다.", "empty": "등록된 음악퀴즈가 없습니다.", "fileLabel": "파일: {{file}}.json", "mcVersion": "마인크래프트", "platform": "플랫폼", "modsFolder": "모드 폴더", "resourcepack": "리소스팩", "noneFallback": "없음" }, "nav": { "brand": "관리자 페이지", "logout": "로그아웃" }, "login": { "title": "관리자 로그인", "password": "비밀번호", "submit": "로그인", "wrongPassword": "비밀번호가 올바르지 않습니다." }, "dashboard": { "title": "음악퀴즈 목록", "browserTitle": "관리자 대시보드", "editList": "음악목록 수정", "editDatapack": "데이터팩 수정", "addPack": "음악퀴즈 추가", "deletePack": "음악퀴즈 삭제", "emptyHint": "등록된 음악퀴즈가 없습니다. \"음악퀴즈 추가\" 버튼으로 새로 만들어 보세요.", "select": "선택", "confirmDelete": "삭제 확인", "mcShort": "MC" }, "list": { "browserTitle": "음악목록 수정", "title": "음악목록 수정" }, "listEditor": { "browserTitle": "{{name}} — 음악/사진 목록", "dirtyTooltip": "저장되지 않은 변경사항이 있습니다", "tabMusic": "음악목록", "tabImage": "사진목록", "saveList": "목록 저장", "clearList": "목록 초기화", "playlistPlaceholder": "유튜브 플레이리스트 URL", "fetchPlaylist": "플레이리스트 불러오기", "imageFromMusic": "음악목록에서 가져오기", "modalConfirmTitle": "확인", "musicEditTitle": "음악 항목 수정", "musicEditUrl": "유튜브 영상 주소", "musicEditHint": "저장하면 yt-dlp 로 제목·가수·재생시간을 자동으로 갱신합니다.", "imageEditTitle": "사진 항목 수정", "imageSegYt": "유튜브 주소", "imageSegImg": "이미지 주소", "imageEditUrl": "주소", "titleFallback": "(제목 없음)", "artistFallback": "(가수 미상)", "rowEditTooltip": "더블클릭해서 수정", "aliasBtn": "별칭", "aliasBtnWithCount": "별칭 ({{count}})", "aliasModalTitle": "별칭 - {{title}}", "aliasBack": "← 돌아가기", "aliasAdd": "별칭 추가", "aliasPlaceholder": "별칭 입력", "aliasRemove": "삭제", "aliasHint": "정답으로 인정할 다른 표기·번역·약칭을 추가할 수 있습니다.", "metaLoading": "메타데이터 가져오는 중…", "metaFailedShort": "메타 조회 실패", "metaFailedTitle": "메타데이터 조회 실패", "metaFailedAsk": "{{message}}\n주소만 변경하고 제목/가수/시간은 그대로 둘까요?", "saving": "저장 중…", "saved": "저장 완료", "saveFailed": "저장 실패: {{message}}", "fetchEnterUrl": "플레이리스트 주소를 입력해 주세요.", "fetchTitle": "플레이리스트 불러오기", "fetchConfirm": "현재 {{type}}목록 순서가 모두 사라집니다. 진행할까요?", "fetchTypeMusic": "음악", "fetchTypeImage": "사진", "fetchLoading": "불러오는 중…", "fetchedCount": "{{count}}개 항목을 불러왔습니다.", "failed": "실패: {{message}}", "clearTitle": "목록 초기화", "clearConfirm": "\"{{type}}목록\"을 비웁니다. 진행할까요?", "imageFromMusicEmpty": "음악목록이 비어 있어 가져올 수 없습니다.", "imageFromMusicTitle": "사진목록 가져오기", "imageFromMusicConfirm": "저장된 음악목록의 영상 {{count}}개를 그대로 사진목록으로 가져옵니다.\n현재 사진목록은 모두 사라집니다. 진행할까요?", "leaveTitle": "저장되지 않은 변경사항", "leaveConfirm": "저장하지 않은 변경사항이 있습니다.\n저장 없이 이 페이지를 떠나시겠습니까?" }, "editor": { "browserTitle": "{{name}} 편집", "eyebrow": "PACK EDITOR", "displayName": "음악퀴즈 이름", "fileName": "JSON 파일 이름 (확장자 제외)", "mcVersion": "마인크래프트 버전", "platformType": "모드 플랫폼", "platformDownloadUrl": "플랫폼 설치파일 URL", "platformDownloadHint": "도메인 없이 입력하면 manifest.json 도메인의 /file/platforms/<파일명>으로 해석됩니다.", "platformLoaderVersion": "Fabric Loader 버전", "platformLoaderHint": "선택한 마인크래프트 버전 기준 Fabric Loader 목록입니다. 설치기는 최신 fabric-installer 를 받아 자동으로 CLI 설치합니다.", "platformLoaderEmpty": "호환 로더 없음", "platformLoaderPickMc": "마인크래프트 버전을 먼저 선택하세요", "platformLoaderLoadFailed": "로더 목록 로드 실패: {{message}}", "serverMinRam": "서버 최소 램 (MB)", "serverMaxRam": "서버 최대 램 (MB)", "clientMinRam": "클라이언트 최소 램 (MB)", "clientRecommendedRam": "클라이언트 권장 램 (MB)", "mapPath": "맵 파일 (.zip)", "mapPathHint": "/file/maps/ 아래 zip 파일 이름.", "serverPath": "서버 파일 (.zip)", "serverPathHint": "/file/servers/ 아래 zip 파일 이름. 멀티 모드 전용.", "modsFolder": "모드 폴더 이름", "modsFolderHint": "/file/mods/<폴더이름>/ 안의 모든 .jar을 자동으로 받습니다. 비워두면 모드를 받지 않습니다.", "resourcepackPath": "리소스팩 (.zip)", "resourcepackHint": "/file/resourcepacks/ 아래 .zip 파일 이름. 비워두면 리소스팩을 받지 않습니다.", "ramOrderInvalid": "클라이언트 최소 램은 권장 램보다 클 수 없습니다.", "fabricLoaderRequired": "Fabric 로더 버전을 선택해 주세요." }, "datapack": { "browserTitle": "데이터팩 수정", "title": "데이터팩 수정", "pickPack": "음악퀴즈 선택", "pickedNone": "선택된 음악퀴즈 없음", "pickedLabel": "선택: {{name}}", "totalCount": "총 {{count}}개의 음악을 찾았습니다.", "export": "데이터팩 출력", "copy": "복사", "copied": "복사됨", "exporting": "출력 중…", "exported": "출력 완료", "failed": "실패: {{message}}", "modalPickTitle": "음악퀴즈 선택" }, "errors": { "packNotFound": "해당 음악퀴즈를 찾을 수 없습니다.", "packNotFoundJson": "음악퀴즈를 찾을 수 없습니다.", "videoUrlRequired": "영상 주소를 입력해 주세요.", "playlistUrlRequired": "플레이리스트 주소를 입력해 주세요.", "metaNotFound": "메타데이터를 찾을 수 없습니다.", "ramOrderInvalid": "clientMinRam은 clientRecommendedRam보다 클 수 없습니다.", "unknown": "알 수 없는 오류", "serverError": "서버 오류: {{message}}" }, "youtube": { "ytdlpUnavailable": "yt-dlp 를 준비하지 못했습니다. (수동 입력으로 진행)", "ytdlpVerifyFailed": "yt-dlp 다운로드는 됐지만 실행 검증에 실패했습니다.", "ytdlpInstallFailed": "yt-dlp 자동 설치에 실패했습니다: {{message}}", "ytdlpVideoFailed": "yt-dlp 영상 조회 실패 (code={{code}}): {{detail}}", "ytdlpPlaylistFailed": "yt-dlp 플레이리스트 조회 실패 (code={{code}}): {{detail}}", "tooManyRedirects": "redirect 가 너무 많습니다." }, "datapackOutput": { "header": "# === musicquiz: {{name}} ===", "summary": "# 총 {{musicCount}}곡 / 사진 {{imageCount}}장", "initLine": "say [musicquiz] 데이터팩 초기화", "placeholder": "# 곡별 placeholder. 실제 포맷 확정되면 교체 예정.", "trackLine": "# {{index}}. {{title}} - {{artist}} ({{duration}}s)", "titleFallback": "(제목 없음)", "artistFallback": "(가수 미상)" } }