- 약관 편집기 배경/슬래시 메뉴를 사이트 다크 팔레트로 통일 (흰 배경 + 흰 글씨 가시성 문제 해결) - 약관 목록을 가로 풀폭 1줄씩 세로로 쌓이는 레이아웃으로 변경 - 사용자 정의 약관 추가/삭제 지원 - manifest/terms/_meta.json 에 라벨 저장 - builtin 5종(map/resourcepack/mod/installer/installer-rp)은 삭제 불가, "기본" 배지 표시 - kind 식별자 규칙: 소문자/숫자/하이픈 32자 이내 - 공개 라우트 /manifest/terms/<file>.md 는 isPublicTermsFile() 로 _meta.json 차단 - 0.3.0 → 0.3.1 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
213 lines
10 KiB
JSON
213 lines
10 KiB
JSON
{
|
|
"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 도메인의 <code>/file/platforms/<파일명></code>으로 해석됩니다.",
|
|
"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 가 너무 많습니다."
|
|
}
|
|
}
|