{ "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": "데이터팩 수정", "editTerms": "약관 수정", "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 파일 이름. 리소스팩 설치기가 이 zip 위에 음악·사진을 얹어 최종 리소스팩을 만듭니다. 비워두면 처음부터 새로 만듭니다.", "outputPackName": "생성되는 리소스팩 이름", "outputPackNamePlaceholder": "예: 음악퀴즈 테스트팩", "outputPackNameHint": "리소스팩 설치기가 만들어 내는 zip 파일 이름이자, 마인크래프트 리소스팩 목록의 제목이 됩니다. 비워두면 파일이름_resourcepack 형태로 자동 지정됩니다. Windows 파일명 금지 문자(\\ / : * ? \" < > |)는 자동으로 _ 로 바뀝니다.", "ramOrderInvalid": "클라이언트 최소 램은 권장 램보다 클 수 없습니다.", "fabricLoaderRequired": "Fabric 로더 버전을 선택해 주세요." }, "terms": { "browserTitle": "약관 수정", "title": "약관 수정", "hint": "수정할 약관을 선택하세요. 사이트에서 저장한 내용은 인스톨러가 약관 동의 화면에서 사용합니다.", "editorBrowserTitle": "{{label}} 편집", "editorTitle": "{{label}}", "save": "약관 저장", "saving": "저장 중…", "saved": "저장 완료", "saveFailed": "저장 실패: {{message}}", "preview": "미리보기", "edit": "편집", "slashHint": "/ 를 입력해 블록 종류를 선택하거나 #, - 를 직접 입력할 수 있습니다.", "slashHeading1": "큰 제목", "slashHeading2": "중간 제목", "slashHeading3": "작은 제목", "slashText": "내용", "slashBullet": "글머리 기호", "slashNumbered": "번호 매기기", "slashToggle": "토글", "slashDivider": "구분선", "slashQuote": "인용", "slashCode": "코드", "leaveConfirm": "저장하지 않은 변경사항이 있습니다.\n저장 없이 이 페이지를 떠나시겠습니까?", "builtinBadge": "기본", "addHeading": "약관 추가", "kindLabel": "식별자", "kindPlaceholder": "예: privacy", "kindHint": "소문자/숫자/하이픈만 사용, 32자 이내. 파일명과 URL 에 그대로 쓰입니다.", "labelLabel": "표시 이름", "labelPlaceholder": "예: 개인정보 처리방침", "addButton": "추가", "deleteButton": "삭제", "deleteConfirm": "정말 \"{{label}}\" 약관을 삭제할까요? 이 동작은 되돌릴 수 없습니다.", "invalidKind": "식별자는 소문자/숫자/하이픈만, 32자 이내여야 합니다.", "createFailed": "약관 추가 실패", "cannotDeleteBuiltin": "기본 약관은 삭제할 수 없습니다." }, "datapack": { "browserTitle": "데이터팩 수정", "title": "데이터팩 수정", "pickPack": "음악퀴즈 선택", "pickedNone": "선택된 음악퀴즈 없음", "pickedLabel": "선택: {{name}}", "totalCount": "총 {{count}}개의 음악을 찾았습니다.", "hint": "music_quiz 데이터팩의 data/mq/function/init/songs.mcfunction 파일에 아래 코드를 그대로 덮어쓰세요.", "export": "코드 출력", "copy": "복사", "copied": "복사됨", "exporting": "출력 중…", "exported": "출력 완료", "failed": "실패: {{message}}", "modalPickTitle": "음악퀴즈 선택", "imagesZip": "이미지.zip 출력", "imagesZipSizeLabel": "크기", "imagesZipDownloading": "이미지.zip 생성 중…", "imagesZipDone": "이미지.zip 다운로드 완료" }, "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 가 너무 많습니다." } }