diff --git a/assets/jsons/translations/de.json b/assets/jsons/translations/de.json index f581d489..c8cda9ea 100644 --- a/assets/jsons/translations/de.json +++ b/assets/jsons/translations/de.json @@ -180,6 +180,7 @@ "zh-CN": "简体中文", "zh-TW": "正體中文", "ja-JP": "日本語", + "ko-KR": "한국어", "translated": { "en-EN": "Englisch, Vereinigtes Königreich", "en-US": "Englisch, USA", @@ -189,7 +190,8 @@ "ru-RU": "Russisch", "zh-CN": "Vereinfachtes Chinesisch", "zh-TW": "Traditionelles Chinesisch", - "ja-JP": "Japanisch" + "ja-JP": "Japanisch", + "ko-KR": "Koreanisch" } } }, diff --git a/assets/jsons/translations/en.json b/assets/jsons/translations/en.json index 1bd2f7b3..40d3218f 100644 --- a/assets/jsons/translations/en.json +++ b/assets/jsons/translations/en.json @@ -185,6 +185,7 @@ "zh-CN": "简体中文", "zh-TW": "正體中文", "ja-JP": "日本語", + "ko-KR": "한국어", "translated": { "en-EN": "English, United Kingdom", "en-US": "English, USA", @@ -194,7 +195,8 @@ "ru-RU": "Russian", "zh-CN": "Chinese (Simplified)", "zh-TW": "Chinese (Traditional)", - "ja-JP": "Japanese" + "ja-JP": "Japanese", + "ko-KR": "Korean" } } }, @@ -223,7 +225,7 @@ } }, "changelogs": { - "open" : "🚀 Check Out the Changelog!", + "open": "🚀 Check Out the Changelog!", "not-founds": "😕 Oops, No Changelog Here!" }, "advanced": { @@ -570,7 +572,7 @@ "EPERM": "BSManager does not have the necessary permissions to link the folder.", "EACCES": "BSManager does not have the necessary permissions to link the folder.", "ENOSPC": "The disk is full, make some space and try again.", - "UNKNOWN_ERROR":"An unknown error has occurred while linking the folder." + "UNKNOWN_ERROR": "An unknown error has occurred while linking the folder." } } }, @@ -834,7 +836,7 @@ "maps": { "map-filter-panel": { "duration": "Duration", - "nps" : "Notes Per Second", + "nps": "Notes Per Second", "njs": "Note Jump Speed", "tags": "tags", "specificities": "general", @@ -909,11 +911,11 @@ "by": "By {songAutor}", "mapped-by": "mapped by", "delete": "Delete", - "preview" : "Preview map", - "bsr-code" : "BSR code", - "download" : "Download map", - "downloading" :"Downloading map", - "cancel-download" : "Cancel download", + "preview": "Preview map", + "bsr-code": "BSR code", + "download": "Download map", + "downloading": "Downloading map", + "cancel-download": "Cancel download", "hightlight-difficulty": "Highlight difficulty" } }, @@ -1240,8 +1242,57 @@ } }, "dateformat": { - "dayNames": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - "monthNames": ["Jan", "Feb", "Mar", "Apr", "May", "June", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - "timeNames": ["a", "p", "am", "pm", "A", "P", "AM", "PM"] + "dayNames": [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "monthNames": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "June", + "Jul", + "Aug", + "Sept", + "Oct", + "Nov", + "Dec", + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "timeNames": [ + "a", + "p", + "am", + "pm", + "A", + "P", + "AM", + "PM" + ] } } diff --git a/assets/jsons/translations/es.json b/assets/jsons/translations/es.json index bd8b16af..b068189d 100644 --- a/assets/jsons/translations/es.json +++ b/assets/jsons/translations/es.json @@ -180,6 +180,7 @@ "zh-CN": "简体中文", "zh-TW": "正體中文", "ja-JP": "日本語", + "ko-KR": "한국어", "translated": { "en-EN": "Inglés, Reino Unido", "en-US": "Inglés, Estados Unidos", @@ -189,7 +190,8 @@ "ru-RU": "Ruso", "zh-CN": "Chino simplificado", "zh-TW": "Chino tradicional", - "ja-JP": "Japonés" + "ja-JP": "Japonés", + "ko-KR": "Coreano" } } }, @@ -218,7 +220,7 @@ } }, "changelogs": { - "open" : "🚀 ¡Descubre lo nuevo en el Changelog!", + "open": "🚀 ¡Descubre lo nuevo en el Changelog!", "not-founds": "😕 Uy, ¡Changelog no encontrado!" }, "advanced": { @@ -827,7 +829,7 @@ "maps": { "map-filter-panel": { "duration": "Duración", - "nps" : "Notas Por Segundo", + "nps": "Notas Por Segundo", "njs": "Velocidad de salto de nota", "tags": "tags", "specificities": "general", @@ -902,11 +904,11 @@ "by": "Por {songAutor}", "mapped-by": "mapeado por", "delete": "Borrar", - "preview" : "Vista previa del mapa", - "bsr-code" : "Código BSR", - "download" : "Descargar mapa", - "downloading" :"Descargando mapa", - "cancel-download" : "Cancelar descarga", + "preview": "Vista previa del mapa", + "bsr-code": "Código BSR", + "download": "Descargar mapa", + "downloading": "Descargando mapa", + "cancel-download": "Cancelar descarga", "hightlight-difficulty": "Resaltar la dificultad" } }, @@ -1233,8 +1235,57 @@ } }, "dateformat": { - "dayNames": ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb", "Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"], - "monthNames": ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"], - "timeNames": ["a", "p", "am", "pm", "A", "P", "AM", "PM"] + "dayNames": [ + "Dom", + "Lun", + "Mar", + "Mié", + "Jue", + "Vie", + "Sáb", + "Domingo", + "Lunes", + "Martes", + "Miércoles", + "Jueves", + "Viernes", + "Sábado" + ], + "monthNames": [ + "Ene", + "Feb", + "Mar", + "Abr", + "May", + "Jun", + "Jul", + "Ago", + "Sep", + "Oct", + "Nov", + "Dic", + "Enero", + "Febrero", + "Marzo", + "Abril", + "Mayo", + "Junio", + "Julio", + "Agosto", + "Septiembre", + "Octubre", + "Noviembre", + "Diciembre" + ], + "timeNames": [ + "a", + "p", + "am", + "pm", + "A", + "P", + "AM", + "PM" + ] } } diff --git a/assets/jsons/translations/fr.json b/assets/jsons/translations/fr.json index e6401cf0..f926eae7 100644 --- a/assets/jsons/translations/fr.json +++ b/assets/jsons/translations/fr.json @@ -180,6 +180,7 @@ "zh-CN": "简体中文", "zh-TW": "正體中文", "ja-JP": "日本語", + "ko-KR": "한국어", "translated": { "en-EN": "Anglais, Royaume-Uni", "en-US": "Anglais, États-Unis", @@ -189,7 +190,8 @@ "ru-RU": "Russe", "zh-CN": "Chinois simplifié", "zh-TW": "Chinois traditionnel", - "ja-JP": "Japonais" + "ja-JP": "Japonais", + "ko-KR": "Coréen" } } }, diff --git a/assets/jsons/translations/ja.json b/assets/jsons/translations/ja.json index b6580a18..d77e9af3 100644 --- a/assets/jsons/translations/ja.json +++ b/assets/jsons/translations/ja.json @@ -180,6 +180,7 @@ "zh-CN": "简体中文", "zh-TW": "正體中文", "ja-JP": "日本語", + "ko-KR": "한국어", "translated": { "en-EN": "イギリス英語", "en-US": "アメリカ英語", @@ -189,7 +190,8 @@ "ru-RU": "ロシア語", "zh-CN": "簡体字中国", "zh-TW": "繁体字中国", - "ja-JP": "日本語" + "ja-JP": "日本語", + "ko-KR": "韓国語" } } }, diff --git a/assets/jsons/translations/ko.json b/assets/jsons/translations/ko.json new file mode 100644 index 00000000..f9f1e22a --- /dev/null +++ b/assets/jsons/translations/ko.json @@ -0,0 +1,1291 @@ +{ + "misc": { + "download": "다운로드", + "add": "추가", + "verify": "인증됨", + "launch": "실행", + "mods": "모드", + "maps": "맵", + "playlists": "재생 목록", + "models": "모델", + "cancel": "취소", + "delete": "삭제", + "accept": "동의", + "refuse": "거부", + "apply": "적용", + "copy": "복사", + "copied": "복사 완료!", + "confirm": "확인" + }, + "nav-bar": { + "add-version": "버전 추가", + "settings": "설정", + "shared": { + "text": "공유", + "tooltip": "공유 콘텐츠" + } + }, + "pages": { + "version-viewer": { + "launch-mods": { + "oculus": "Oculus 모드", + "oculus-description": "Steam을 통해 Beat Saber를 사용하는 경우, SteamVR을 우회하여 Oculus VR 컴포저를 사용할 수 있어 성능이 향상될 수 있습니다. 이는 Oculus 헤드셋을 사용하는 데 필수는 아닙니다.", + "desktop": "FPFC 모드", + "desktop-description": "FPFC 모드에서는 WASD와 마우스로 게임 내 메뉴를 조작할 수 있어 테스트가 더 쉬워집니다. 헤드셋을 착용할 필요가 없습니다!", + "debug": "디버그 모드", + "debug-description": "IPA 출력 로그 창을 활성화하여 MOD의 디버그 콘솔을 표시합니다.", + "advanced-launch": { + "button": "고급 실행", + "placeholder": "추가 인수 예: --revert; --nowait" + } + }, + "maps": { + "search-bar": { + "search-placeholder": "맵 검색", + "filters-btn": "필터", + "dropdown": { + "export-maps": "맵 내보내기", + "delete-maps": "맵 삭제", + "delete-duplicate-maps": "중복 삭제" + } + }, + "tabs": { + "maps": { + "actions": { + "drop-down": { + "browse-maps": "맵 보기", + "import-maps": "맵 가져오기" + }, + "link-maps": { + "tooltips": { + "link": "맵 링크", + "unlink": "맵 링크 해제" + } + } + }, + "empty-maps": { + "text": "맵이 없습니다", + "button": "맵 다운로드" + }, + "drop-zone": { + "text": "맵 가져오기", + "subtext": "ZIP 파일을 여기에 드롭하여 맵 가져오기" + } + }, + "playlists": { + "drop-down": { + "browse-playlists": "재생 목록 보기", + "create-a-playlist": "재생 목록 만들기", + "import-playlists": "재생 목록 가져오기" + }, + "drop-zone": { + "text": "재생 목록 가져오기", + "subtext": "\".bplist\" 또는 \".json\" 파일을 여기에 드롭하여 가져오기" + } + } + } + }, + "mods": { + "loading-mods": "모드를 불러오는 중...", + "no-internet": "인터넷 연결이 없습니다!", + "mods-not-available": "이 버전에서 사용할 수 있는 모드가 아직 없습니다.", + "buttons": { + "more-infos": "자세히 보기", + "install-or-update": "설치 및 업데이트", + "reinstall-all": "모두 재설치" + }, + "mods-grid": { + "header-bar": { + "name": "이름", + "installed": "설치됨", + "latest": "최신", + "description": "설명", + "dropdown": { + "uninstall-all": "모두 제거" + } + } + }, + "notifications": { + "all-mods-already-installed": { + "title": "이미 설치된 모드", + "description": "선택한 모든 모드가 이미 설치되었습니다." + } + } + }, + "dropdown": { + "open-folder": "폴더 열기", + "verify-files": "파일 확인", + "clone": "복제", + "edit": "편집", + "uninstall": "제거", + "create-shortcut": "바로 가기 만들기", + "shared-folders": "공유 폴더" + } + }, + "available-versions": { + "title": "버전 선택", + "steam-release": "릴리스 페이지", + "dropdown": { + "refresh": "버전 새로고침", + "import-version": "버전 가져오기" + }, + "recommended": "추천", + "recommended-tooltip": "모드가 가장 많은 버전" + }, + "settings": { + "steam-and-oculus": { + "title": "Steam 및 Oculus", + "description": "로그아웃하면 다음 Beat Saber 다운로드 시 계정을 전환할 수 있습니다.", + "logout": "로그아웃", + "logout-success": "로그아웃 성공", + "download-platform": { + "title": "기본 플랫폼", + "desc": "Beat Saber 다운로드에 사용할 기본 플랫폼을 선택하세요.", + "always-ask": "항상 묻기" + } + }, + "appearance": { + "title": "외관", + "description": "BSManager의 주요 두 가지 색상을 선택하세요.", + "reset": "초기화", + "sub-title": "테마", + "themes": { + "dark": "다크", + "light": "라이트", + "os": "컴퓨터와 동기화" + } + }, + "installation-folder": { + "title": "설치 폴더", + "description": "BSManager가 다운로드한 모든 콘텐츠를 포함할 폴더를 변경합니다.", + "choose-folder": "폴더 선택" + }, + "additional-content": { + "title": "추가 콘텐츠", + "description": "Beat Saber를 커스터마이징할 수 있는 추가 콘텐츠!", + "deep-links": { + "sub-title": "OneClick 설치" + } + }, + "language": { + "title": "언어", + "description": "언어를 선택", + "languages": { + "en-EN": "English, UK", + "en-US": "English, US", + "fr-FR": "Français", + "es-ES": "Español", + "de-DE": "Deutsch", + "ru-RU": "Русский", + "zh-CN": "简体中文", + "zh-TW": "正體中文", + "ja-JP": "日本語", + "ko-KR": "한국어", + "translated": { + "en-EN": "영어(영국)", + "en-US": "영어(미국)", + "fr-FR": "프랑스어", + "es-ES": "스페인어", + "de-DE": "독일어", + "ru-RU": "러시아어", + "zh-CN": "중국어 (간체)", + "zh-TW": "중국어 (번체)", + "ja-JP": "일본어", + "ko-KR": "한국어" + } + } + }, + "patreon": { + "title": "BSManager를 지원하기 💖", + "description": "프로젝트를 지원하고 BSManager의 지속적인 응원을 부탁드립니다!", + "buttons": { + "support": "BSManager 지원 🥰", + "supporters": "후원자 여러분 👀" + }, + "view": { + "no-supporters": "아직 후원자가 없습니다...", + "sponsors": "스폰서", + "supporters": "후원자 여러분" + } + }, + "discord": { + "description": "BSManager 커뮤니티 소셜 미디어에 참여하세요" + }, + "contribution": { + "description": "BSManager를 개선하기 위해 새로운 기능을 제안하거나 버그를 보고해 주세요!", + "buttons": { + "request-features": "새 기능 제안", + "report-bug": "버그 신고", + "open-logs": "로그 보기" + } + }, + "changelogs": { + "open": "🚀 변경 로그를 확인해보세요!", + "not-founds": "😕 변경 로그가 보이지 않습니다!" + }, + "advanced": { + "title": "고급 설정", + "description": "BSManager의 고급 설정입니다.", + "hardware-acceleration": { + "title": "하드웨어 가속", + "description": "하드웨어 가속을 활성화하여 GPU를 사용해 BSManager의 성능을 향상시킵니다. 프레임 드롭이 발생하는 경우 이 설정을 끄세요.", + "modal": { + "title": "재시작 필요", + "body": "하드웨어 가속 설정을 변경하면 BSManager가 종료 후 재시작됩니다. 계속하시겠습니까?", + "confirm-btn": "네, 맞습니다" + }, + "error-notification": { + "message": "오류가 발생했습니다. 하드웨어 가속을 비활성화할 수 없습니다." + } + }, + "use-symlinks": { + "title": "심볼릭 링크 사용", + "description": "폴더를 연결할 때 정션 대신 심볼릭 링크를 사용합니다. 필요할 때만 이 옵션을 활성화하세요.", + "modal": { + "title": "심볼릭 링크 권한", + "body": "심볼릭 링크를 생성하려면 BSManager는 관리자 권한 또는 시스템에 활성화된 개발자 모드를 필요로 합니다. 계속하시겠습니까?", + "confirm-btn": "네, 맞습니다" + }, + "error-notification": { + "message": "오류가 발생했습니다. 심볼릭 링크 설정을 변경할 수 없습니다." + } + } + } + } + }, + "notifications": { + "types": { + "error": "🚨 오류", + "warning": "⚠️ 경고", + "success": "🎉 성공" + }, + "common": { + "msg": { + "error-occurred": "오류가 발생했습니다" + } + }, + "shared": { + "errors": { + "titles": { + "operation-running": "작업 진행 중", + "no-internet": "인터넷 연결이 없습니다", + "file-not-supported": "파일이 지원되지 않습니다" + }, + "msg": { + "operation-running": "현재 작업이 완료될 때까지 기다렸다가 다시 시도하세요.", + "no-internet": "인터넷 연결을 확인하고 다시 시도하세요.", + "file-not-supported": "{types} 파일만 지원됩니다." + } + } + }, + "bs-download": { + "success": { + "titles": { + "download-success": "다운로드 완료", + "verification-finished": "검증 완료" + } + }, + "steam-download": { + "warnings": { + "msg": { + "ManifestChecksum": "이전에 다운로드한 매니페스트와 새로운 매니페스트가 일치하지 않는 것 같습니다 🤔", + "ConnectionTimeout": "인터넷 연결이 불안정한 것 같습니다 🥶", + "ConnectionLost": "연결이 끊어졌습니다. 다시 시도하세요...", + "ConnectionError": "Steam에 연결할 수 없습니다. 다시 시도하세요...", + "Unknown": "무언가 이상한 일이 일어난 것 같습니다 🤔 아마도 연결이 불안정할 것입니다." + } + }, + "errors": { + "msg": { + "401": "Steam이 Beat Saber 다운로드를 허용하지 않는 것 같습니다 😢", + "404": "Steam 서버에 연결할 수 없습니다.", + "Password": "비밀번호가 올바르지 않습니다.", + "InvalidCredentials": "유효하지 않은 로그인 자격 증명, 허가되지 않은 연결 또는 너무 많은 로그인 시도입니다.", + "NoManifest": "매니페스트를 찾을 수 없습니다", + "DirectoryCreate": "필요한 폴더를 설치할 수 없습니다.", + "NotAvailableApp": "Beat Saber를 소유하지 않으셨는데 다운로드하려고 하시나요 🤣", + "DepotNotFound": "Beat Saber를 다운로드할 수 없습니다 😥 다시 시도하세요 😕", + "NotCompleted": "다운로드할 수 없습니다. (´・ω・`)", + "InvalidManifest": "Beat Saber를 다운로드할 수 없습니다 😥 다시 시도하세요 😕", + "NoValidKey": "Beat Saber를 다운로드할 수 없습니다 😥 다시 시도하세요 😕", + "NoManifestCode": "Beat Saber를 다운로드할 수 없습니다 😥 다시 시도하세요 😕", + "Unknown": "알 수 없는 오류가 발생했습니다 (´・ω・`)", + "NoServer": "Steam 서버에 연결할 수 없습니다.", + "NotAllowed": "Beat Saber 다운로드가 허용되지 않는 것 같습니다 🥱", + "ConnectionTimeout": "Steam에 연결할 수 없습니다 😕", + "SteamLib": "이 오류가 발생하면 GitHub에 로그를 포함해 버그를 보고하세요.", + "ConnectionError": "10번 시도해도 Steam에 연결할 수 없습니다 🤯", + "LicenceError": "라이센스 목록을 가져올 수 없습니다.", + "RateLimitExceeded": "너무 많이 시도하셨습니다. 잠시 후에 다시 시도하세요.", + "TokenRejected": "로그인 토큰이 거부되었습니다 😕 다시 시도하세요.", + "AccessDenied": "Steam 접근이 거부되었습니다." + } + } + }, + "oculus-download": { + "errors": { + "msg": { + "DOWNLOAD_MANIFEST_FAILED": "이 버전의 매니페스트를 다운로드할 수 없습니다. 로그인 토큰이 무효일 수 있습니다.", + "MANIFEST_FILE_NOT_FOUND": "이 버전의 매니페스트를 찾을 수 없습니다.", + "PARSE_MANIFEST_FILE_FAILED": "매니페스트를 읽는 중 오류가 발생했습니다.", + "ALREADY_DOWNLOADING": "버전이 이미 다운로드 중입니다.", + "UNABLE_TO_GET_MANIFEST": "다운로드에 필요한 매니페스트를 가져올 수 없습니다.", + "VERIFY_INTEGRITY_FAILED": "파일 검증 중 오류가 발생했습니다.", + "SOME_FILES_FAILED_TO_DOWNLOAD": "일부 파일을 다운로드하지 못했습니다.", + "OCULUS_LOGIN_TIMED_OUT": "로그인 토큰을 얻는 데 시간이 너무 오래 걸렸습니다.", + "OCULUS_LOGIN_WINDOW_CLOSED_BY_USER": "메타 로그인 창이 닫혔습니다.", + "NO_META_AUTH_TOKEN": "다운로드에 필요한 Meta 로그인 토큰을 얻을 수 없습니다.", + "UNKNOWN_ERROR": "알 수 없는 오류가 발생했습니다." + } + } + } + }, + "bs-import-version": { + "success": { + "start-import": { + "title": "가져오는 중 👌", + "desc": "설정에 따라 가져오기에 몇 분이 걸릴 수 있습니다." + }, + "imported": { + "title": "가져오기 완료 🎉" + } + }, + "errors": { + "import-error": { + "desc": "선택한 폴더가 Beat Saber의 설치 폴더인지 확인하세요." + } + } + }, + "settings": { + "move-folder": { + "success": { + "titles": { + "transfer-started": "전송 시작", + "transfer-finished": "전송 완료" + }, + "descs": { + "transfer-started": "전송을 시작했습니다. 설정에 따라 몇 분이 걸릴 수 있습니다." + } + }, + "errors": { + "titles": { + "transfer-failed": "전송 실패 😕" + }, + "descs": { + "COPY_TO_SUBPATH": "복사 대상 폴더는 복사 원본 폴더의 하위 폴더로 설정할 수 없습니다.", + "restore-linked-folders": "공유 폴더 복원 중 오류가 발생했습니다. 버전 페이지의 '공유 폴더' 메뉴에서 수동으로 복원할 수 있습니다." + } + } + }, + "steam": { + "success": { + "titles": { + "logout": "Steam에서 로그아웃되었습니다." + } + } + }, + "additional-content": { + "deep-link": { + "select-all": "모두 선택", + "activation": { + "success": { + "title": "OneClick이 활성화되었습니다!", + "description": "OneClick을 통해 설치가 활성화되었습니다." + }, + "error": { + "description": "OneClick 설치를 활성화할 수 없습니다." + } + }, + "deactivation": { + "success": { + "title": "OneClick이 비활성화되었습니다!", + "description": "OneClick 설치가 비활성화됩니다." + }, + "error": { + "description": "알 수 없는 오류가 발생했습니다." + } + }, + "check-all-enabled": { + "title": "OneClick이 비활성화됨", + "description": "하나 이상의 OneClick 설치가 비활성화되어 있습니다. 설정에서 활성화해 주세요.", + "actions": { + "settings": "설정으로 이동", + "not-remind": "다시 알리지 않기" + } + } + } + } + }, + "bs-launch": { + "success": { + "titles": { + "BS_LAUNCHING": "실행 중...🚀", + "STEAM_LAUNCHING": "Steam 실행 확인 완료!" + }, + "msg": { + "BS_LAUNCHING": "워밍업을 잊지 마세요 😉", + "STEAM_LAUNCHING": "Beat Saber는 Steam 실행 후 자동으로 시작됩니다." + } + }, + "errors": { + "titles": { + "UNKNOWN_ERROR": "실행 불가", + "STEAM_NOT_RUNNING": "Steam이 실행 중이 아님", + "OCULUS_NOT_RUNNING": "Oculus가 실행 중이 아님", + "BS_ALREADY_RUNNING": "Beat Saber가 이미 실행 중임", + "EXE_NOT_FINDED": "파일을 찾을 수 없음", + "EXIT": "긴급 중지", + "OCULUS_LIB_NOT_FOUND": "Oculus 라이브러리를 찾을 수 없음" + }, + "msg": { + "UNKNOWN_ERROR": "알 수 없는 오류가 발생했습니다.", + "STEAM_NOT_RUNNING": "Beat Saber를 실행하려면 Steam이 실행 중이어야 합니다.", + "OCULUS_NOT_RUNNING": "Beat Saber를 실행하려면 Oculus가 실행 중이어야 합니다.", + "BS_ALREADY_RUNNING": "다시 실행하기 전에 Beat Saber를 닫아주세요.", + "EXE_NOT_FINDED": "몇 가지 파일을 찾을 수 없는 것 같습니다.", + "EXIT": "Beat Saber가 긴급 중지되었습니다. 파일을 점검합니다.", + "OCULUS_LIB_NOT_FOUND": "Oculus 앱이 올바르게 설치되었는지와 Oculus 라이브러리가 올바르게 정의되었는지 확인하세요." + }, + "actions": { + "STEAM_NOT_RUNNING": "Steam 실행" + } + } + }, + "steam": { + "steam-launching": { + "title": "Steam 실행!", + "description": "Beat Saber는 Steam 실행 후 자동으로 시작됩니다." + } + }, + "custom-version": { + "errors": { + "titles": { + "CantEditSteam": "편집 불가", + "CantRename": "이름 변경 불가", + "VersionAlreadExist": "이 버전은 이미 존재합니다!", + "CantClone": "클론 생성 불가", + "UnknownError": "알 수 없는 오류가 발생했습니다" + }, + "msg": { + "CantEditSteam": "Steam 버전은 편집할 수 없지만 클론을 생성할 수 있습니다." + } + }, + "success": { + "titles": { + "CloningFinished": "클론 생성 완료 🎉" + } + } + }, + "mods": { + "install-mods": { + "titles": { + "success": "Mod 설치 완료 🎉", + "warning": "Mod 설치 완료 🤔" + }, + "msg": { + "success": "모든 MOD가 설치되었습니다.", + "warning": "하나 이상의 MOD를 설치하지 못했습니다.", + "errors": { + "no-mods": "설치할 MOD가 없습니다.", + "cannot-install-bsipa": "BSIPA를 설치할 수 없습니다 😨" + } + } + }, + "uninstall-mod": { + "titles": { + "success": "Mod 제거 완료 🎉" + }, + "msg": { + "errors": { + "no-mods": "설치된 Mod가 없습니다 😑" + } + } + }, + "uninstall-all-mods": { + "titles": { + "success": "Mod 제거 완료 🎉" + }, + "msg": { + "success": "모든 Mod가 제거되었습니다.", + "errors": { + "no-mods": "이 버전에 설치된 Mod가 없습니다 😑" + } + } + } + }, + "maps": { + "one-click-install": { + "success": "맵 설치 완료", + "error": "맵 설치 중 오류가 발생했습니다" + }, + "no-duplicates-maps": { + "title": "중복 없음", + "msg": "맵이 삭제되지 않았습니다" + }, + "duplicates-maps-deleted": { + "title": "중복 삭제", + "msg": "중복이 삭제되었습니다" + }, + "import-map": { + "titles": { + "success": "맵 가져오기 완료", + "error": "맵 가져오기 중 오류가 발생했습니다" + }, + "msgs": { + "success": "맵이 정상적으로 가져왔습니다.", + "some-success": "일부 맵이 정상적으로 가져왔습니다.", + "only-accept-zip": "zip 파일만 지원됩니다.", + "invalid-zip": "zip 파일에 맵이 포함되어 있지 않습니다.", + "unknown": "알 수 없는 오류가 발생했습니다." + } + } + }, + "playlists": { + "one-click-install": { + "success": "플레이리스트 설치 완료", + "error": "플레이리스트 설치 중 오류가 발생했습니다." + } + }, + "models": { + "one-click-install": { + "success": "모델 설치 완료", + "error": "모델 설치 중 오류가 발생했습니다." + } + }, + "shared-folder": { + "info": { + "userdata-backup-created": { + "title": "백업을 생성했습니다", + "msg": "'UserData' 폴더를 공유하면 오류가 발생할 수 있습니다. 문제가 발생하면 폴더의 링크를 해제하고 백업을 복원하세요." + } + }, + "linking-error": { + "title": "폴더 연결 중 오류가 발생했습니다", + "msg": { + "EPERM": "BSManager에 폴더를 연결하기 위한 권한이 부족합니다.", + "EACCES": "BSManager에 폴더를 연결하기 위한 권한이 부족합니다.", + "ENOSPC": "디스크가 가득 찼습니다. 공간을 확보하고 다시 시도하세요.", + "UNKNOWN_ERROR": "폴더를 연결하는 중 알 수 없는 오류가 발생했습니다." + } + } + }, + "create-launch-shortcut": { + "success": { + "title": "바로 가기 생성 완료", + "msg": "바탕 화면에 바로 가기가 생성되었습니다." + }, + "error": { + "msg": "바로 가기 생성 중 오류가 발생했습니다." + } + } + }, + "modals": { + "misc": { + "remember-my-choice": "이 선택을 기억하기" + }, + "choose-store": { + "title": "어떤 플랫폼을 선택하시겠습니까?", + "body": "Beat Saber를 다운로드할 플랫폼을 선택하세요.", + "set-in-settings": "설정에서 기본 플랫폼을 선택할 수 있습니다." + }, + "guard": { + "title": "Steam 가드", + "inputs": { + "guard-code": { + "label": "가드 코드", + "placeholder": "가드 코드를 입력하세요" + } + }, + "buttons": { + "submit": "로그인" + } + }, + "steam-login": { + "title": "Steam에 로그인", + "inputs": { + "username": { + "label": "계정명으로 로그인", + "placeholder": "계정명을 입력하세요" + }, + "password": { + "label": "비밀번호", + "placeholder": "비밀번호를 입력하세요", + "max-length-warning": "비밀번호가 64자를 초과합니다! 첫 64자만 입력해 보세요." + }, + "qr": { + "label": "또는 QR 코드 사용", + "note": { + "use-the": "", + "steam-mobile-app": "Steam 모바일 앱", + "to-connect-with-qr": "을 사용해 QR 코드로 로그인하세요." + } + }, + "stay": "기억하기" + }, + "why-credentials": "왜 계정 정보가 필요한가요?", + "need-help-to-connect": "계정에 액세스하는 방법을 알려주세요!", + "buttons": { + "submit": "로그인" + } + }, + "steam-auth-approve": { + "title": "승인 대기 중", + "protected-by-mobile-auth": "모바일 인증으로 보호된 계정입니다.", + "use-steam-app-to-approve": "Steam 모바일 앱을 사용하여 연결을 승인하세요...", + "not-access-to-steam-app": "Steam 모바일 앱에 접근할 수 없습니다." + }, + "steam-credentials": { + "title": "Steam 계정 정보", + "p-1": "Steam은 다운로드를 허용하기 위해 게임을 구입했는지 확인할 필요가 있기 때문입니다. 계정 정보는 저장되지 않으며 DepotDownloader에 직접 전달됩니다. 계정 정보를 입력하지 않으려면 이 튜토리얼을 따르세요:", + "p-2": "오른쪽 상단의 톱니바퀴 아이콘을 클릭하고, \"버전 가져오기\"를 선택하여 Beat Saber가 설치된 폴더를 선택하세요." + }, + "bs-import-version": { + "title": "버전 가져오기", + "description": "BSManager에서 사용할 Beat Saber 버전을 가져옵니다. 선택한 Beat Saber 설치 폴더를 BSManager versions 폴더로 복사합니다.", + "oculus-version": "Oculus 버전", + "oculus-version-tooltip": "Oculus 버전인지 확인", + "buttons": { + "submit": "버전 가져오기" + } + }, + "bs-uninstall": { + "title": "제거", + "description": "정말로 {version} 버전의 Beat Saber를 제거하시겠습니까? 플레이하려면 다시 다운로드해야 합니다.", + "buttons": { + "submit": "제거" + } + }, + "install-folder": { + "title": "설치 폴더", + "description": "기본 설치 폴더를 변경하면 설치된 모든 데이터가 새 폴더로 이동됩니다.", + "buttons": { + "submit": "폴더 선택" + } + }, + "edit-version": { + "title": "이름 변경", + "buttons": { + "submit": "저장" + } + }, + "clone-version": { + "title": "버전 복제", + "description": "버전을 복제하여 Beat Saber의 추가 콘텐츠를 두 가지 버전으로 나눌 수 있습니다.", + "inputs": { + "name": { + "label": "이름", + "placeholder": "버전 이름" + }, + "color": { + "label": "색상" + } + }, + "buttons": { + "submit": "복제" + } + }, + "uninstall-mod": { + "title": "제거", + "description": "정말로 이 {mod}를 제거하시겠습니까? 설치된 다른 모드의 오작동을 유발할 수 있습니다.", + "description-bsipa": "정말로 BSIPA를 제거하시겠습니까? 이 후에는 설치된 모든 모드가 작동하지 않습니다." + }, + "uninstall-all-mods": { + "title": "모드 제거", + "description": "정말로 버전 {version}의 모든 모드를 제거하시겠습니까? 이 작업은 되돌릴 수 없습니다." + }, + "maps-actions": { + "delete-maps": { + "title": { + "single": "이 맵을 삭제하시겠습니까?", + "multiple": "여러 맵을 삭제하시겠습니까?" + }, + "desc": { + "single": "정말로 맵 {name}을(를) 삭제하시겠습니까?", + "multiple": "정말로 {nb}개의 맵을 삭제하시겠습니까?" + }, + "info": { + "desc": { + "single": "이 맵은 공유 맵의 일부입니다.", + "multiple": "이 맵들은 공유 맵의 일부입니다." + }, + "title": { + "single": "이 맵은 공유 맵을 사용하는 버전에서도 삭제됩니다.", + "multiple": "이 맵들은 공유 맵을 사용하는 버전에서도 삭제됩니다." + } + } + }, + "link-maps": { + "title": "맵 연결", + "desc": "맵을 연결하면 이 기능이 활성화된 모든 버전 간에 맵을 공유할 수 있습니다. 연결되면 이 버전은 공유 맵을 활용할 수 있습니다.", + "info": "맵 추가 및 삭제도 공유됩니다.", + "keep-maps": { + "label": "맵 유지", + "title": "맵 유지를 선택하면 현재 버전의 모든 맵이 공유 맵 폴더에 복사됩니다. 활성화하지 않으면 이 버전의 맵은 유지되지 않고 손실됩니다." + }, + "valid-btn": "맵 연결" + }, + "unlink-maps": { + "title": "맵 연결 해제", + "desc": "맵 연결을 해제하면 이 버전에서 공유 맵을 사용할 수 없습니다.", + "keep-maps": { + "label": "맵 유지", + "title": "맵 유지를 선택하면 연결을 해제한 후 공유 폴더에서 현재 버전으로 모든 맵이 복사됩니다. 이 옵션을 비활성화해도 공유 맵은 손실되지 않습니다." + }, + "valid-btn": "맵 연결 해제" + }, + "delete-duplicate-maps": { + "title": "맵을 삭제하시겠습니까?", + "desc": "맵 {map}만 중복되었습니다. 삭제하시겠습니까?", + "desc-plural": "{nb}개의 중복된 맵이 발견되었습니다. 삭제하시겠습니까?" + } + }, + "download-maps": { + "search-btn": "검색", + "loading-maps": "맵을 로딩 중...", + "no-maps-found": "맵을 찾을 수 없습니다", + "no-internet": "인터넷 연결 없음" + }, + "mods-disclaimer": { + "title": "면책 조항", + "p-1": "모드를 사용하기로 선택함으로써 다음 사항에 동의합니다:", + "li-1": "기본 게임에서는 발생하지 않는 문제가 발생할 수 있습니다. 버그, 충돌, 지연의 99.9%는 모드로 인한 것입니다.", + "li-2": "모드는 업데이트에 의해 손상될 수 있으며, 이는 일반적인 일입니다. 모드 제작자는 개인 생활이 있는 자원봉사자이므로 이런 일이 발생해도 인내심과 존중을 가져주세요.", + "li-3": "Beat Games는 의도적으로 모드를 손상시키려고 하지 않습니다. 그들은 코드베이스를 개선하고자 하며, 그 과정에서 모드가 손상될 수 있지만, 모드를 없애려는 의도는 없습니다.", + "p-2": "모드와 관련된 문제로 게임 개발자 또는 모드 개발자를 비난하지 마세요. 모드 개발자와 게임 개발자는 별도의 그룹입니다." + }, + "shared-folders": { + "title": "공유 폴더", + "description": "Beat Saber 폴더를 연결하여 다른 버전의 공유 폴더와 콘텐츠를 동기화하세요. 콘텐츠를 삭제하면 공유된 버전에서도 삭제됩니다.", + "buttons": { + "add-folder": "폴더 추가", + "link-folder": "폴더 연결", + "unlink-folder": "폴더 연결 해제", + "link-all": "모두 연결" + } + }, + "create-launcher-shortcut": { + "title": "런처 바로가기 만들기", + "description": "바탕화면에 실행 파일의 바로가기를 만들어 BSManager를 손쉽게 실행하세요.", + "buttons": { + "submit": "바로가기 만들기" + } + }, + "connect-to-meta": { + "title": "Meta에 연결하기", + "body": { + "token-needed": "Beat Saber를 다운로드하려면 Meta 로그인 토큰이 필요합니다.", + "need-cookie-enabled": "Meta에 로그인하면 로그인 창이 열리며 로그인 프로세스를 시작할 수 있습니다. 쿠키를 허용해 주세요. 그렇지 않으면 다운로드를 시작하기 위한 토큰을 얻지 못할 수 있습니다.", + "enter-token-manually": "로그인 토큰을 수동으로 입력하기", + "enter-token-manually-tooltip": "이를 통해 Meta 로그인을 거치지 않고 로그인 토큰을 입력할 수 있습니다." + }, + "stay": "기억하기", + "connect-to-meta": "Meta에 연결하기" + }, + "original-version-backup-oculus": { + "title": "주의", + "body": { + "must-be-installed-once": "Oculus Store에서 적어도 한 번은 Beat Saber를 설치해야 합니다. 그렇지 않으면 Beat Saber가 실행 후 자동으로 종료될 수 있습니다.", + "will-backup": "이 버전을 실행하기 위해 Oculus 라이브러리에 있는 Beat Saber의 원래 설치 폴더의 이름이 변경되며, Beat Saber가 종료되면 자동으로 복원됩니다." + }, + "not-remind-me": "다시 표시하지 않기", + "understood": "알겠습니다" + }, + "enter-meta-token": { + "title": "Oculus 토큰", + "body": { + "info-enter-token": "Beat Saber를 다운로드하려면 Oculus 로그인 토큰이 필요합니다.", + "how-obtain-token": "Oculus 토큰은 어떻게 얻나요?", + "oculus-token": "Oculus 토큰", + "token-is-invalid": "토큰이 유효하지 않습니다.", + "save-my-token": "내 토큰 저장하기", + "have-token-saved": "이미 토큰을 저장했습니다", + "save-token-info": "이를 통해 토큰을 쉽게 재사용하기 위해 저장합니다. 저장을 위해 토큰을 암호화할 비밀번호를 만들어야 합니다. 비밀번호를 잊어버린 경우, 토큰을 다시 제공하면 됩니다.", + "password": "비밀번호", + "password-too-short": "비밀번호가 너무 짧습니다", + "info-enter-password": "Beat Saber를 다운로드하려면 Oculus 로그인 토큰이 필요합니다. 저장한 Oculus 토큰을 위해 사용한 비밀번호를 입력하세요.", + "info-disabled-btn-password": "제공된 비밀번호로 복호화된 토큰은 무효입니다. 토큰을 저장하기 위해 사용된 비밀번호와 동일한지 확인하세요.", + "enter-oculus-token": "Oculus 토큰 입력하기" + }, + "valid-btn": "확인" + }, + "launch-as-admin": { + "title": "관리자 권한", + "body": { + "info": "Steam이 관리자 권한으로 실행되고 있는 것으로 감지되었습니다. Steam과 통신하려면 Beat Saber도 관리자 권한으로 실행해야 합니다. 그렇지 않으면 Beat Saber에서 문제가 발생하여 실행 후 종료될 수 있습니다.", + "info-2": "관리자 모드로 Beat Saber를 실행하면 설치된 MOD에도 관리자 권한이 부여됩니다. 따라서 관리자 권한 없이 Steam을 재시작하는 것을 권장합니다.", + "info-3": "Steam에 관리자 권한을 부여하는 것은 권장되지 않습니다. 이는 설치된 게임이나 MOD에도 영향을 미치고 보안 위험을 초래할 수 있습니다." + }, + "launch-as-admin": "관리자로 실행", + "not-remind-me": "다시 알림 받지 않기" + }, + "ask-install-path": { + "title": "설치 폴더", + "choose-folder-description": "BSManager에 의해 다운로드된 모든 콘텐츠 (버전, MOD, 맵, 재생 목록 등)를 포함하는 폴더를 선택하세요.", + "choose-folder": "폴더 선택하기", + "default": "기본값", + "default-tooltip": "기본적으로 홈 폴더로 설정됩니다" + } + }, + "maps": { + "map-filter-panel": { + "duration": "길이", + "nps": "초당 노트 수", + "njs": "노트 점프 속도", + "tags": "태그", + "specificities": "특성", + "requirements": "모드 필요", + "exclude": "제외하기" + }, + "map-types": { + "accuracy": "정확도", + "balanced": "균형", + "challenge": "도전", + "dance-style": "댄스 스타일", + "fitness": "피트니스", + "speed": "속도", + "tech": "기술적" + }, + "map-styles": { + "dance": "댄스", + "swing": "스윙", + "nightcore": "나이트코어", + "folk-acoustic": "포크 & 어쿠스틱", + "kids-family": "키즈 & 가족", + "ambient": "앰비언트", + "funk-disco": "펑크 & 디스코", + "jazz": "재즈", + "soul": "소울", + "speedcore": "스피드코어", + "punk": "펑크", + "rb": "R&B", + "holiday": "휴일", + "vocaloid": "보컬로이드", + "j-rock": "J-록", + "trance": "트랜스", + "drum-and-bass": "드럼 & 베이스", + "comedy-meme": "코미디 & 밈", + "instrumental": "기악", + "hardcore": "하드코어", + "k-pop": "K-팝", + "indie": "인디", + "techno": "테크노", + "house": "하우스", + "video-game-soundtrack": "게임 음악", + "tv-movie-soundtrack": "TV & 영화", + "alternative": "얼터너티브", + "dubstep": "덥스텝", + "metal": "메탈", + "anime": "애니메이션", + "hip-hop-rap": "힙합 & 랩", + "j-pop": "J-팝", + "rock": "록", + "pop": "팝", + "electronic": "일렉트로닉", + "classical-orchestral": "클래식 & 오케스트라" + }, + "map-specificities": { + "automapper": "AI", + "ranked": "랭크 인", + "curated": "선별됨", + "verified": "인증됨", + "fullSpread": "풀 스프레드" + }, + "map-excludes": { + "installed": "설치됨" + }, + "difficulties": { + "Easy": "쉬움", + "Normal": "보통", + "Hard": "어려움", + "Expert": "전문가", + "ExpertPlus": "전문가+" + }, + "map-item": { + "by": "{songAutor} 작성", + "mapped-by": "작성자 ", + "delete": "삭제", + "preview": "맵 미리보기", + "bsr-code": "BSR 코드", + "download": "맵 다운로드", + "downloading": "맵 다운로드 중", + "cancel-download": "다운로드 취소", + "hightlight-difficulty": "난이도 강조하기" + } + }, + "models": { + "types": { + "singular": { + "avatar": "아바타", + "saber": "세이버", + "platform": "플랫폼", + "bloq": "노트" + }, + "plural": { + "avatar": "아바타", + "saber": "세이버", + "platform": "플랫폼", + "bloq": "노트" + } + }, + "sorts": { + "name": "이름", + "date": "최신", + "author": "작성자" + }, + "panel": { + "actions": { + "search": "모델 검색", + "drop-down": { + "delete": "모델 삭제", + "export": "모델 내보내기" + }, + "link-models": "모델 링크", + "unlink-models": "모델 링크 해제" + }, + "grid": { + "loading": "모델 로딩 중...", + "no-models": "모델이 없습니다", + "download-models": "모델 다운로드" + } + }, + "modals": { + "delete-model": { + "title": "모델 삭제", + "desc": "정말로 모델 {modelName}를 삭제하시겠습니까?", + "linked-annotation": "이 모델은 모든 링크된 버전에서 삭제됩니다." + }, + "delete-models": { + "title": "모델 삭제", + "desc": "정말로 {nb}개의 모델을 삭제하시겠습니까?", + "linked-annotation": "이 모델은 모든 링크된 버전에서 삭제됩니다." + }, + "download-models": { + "search-btn": "검색", + "search-placeholder": "모델 검색", + "search-tips": { + "header": { + "tag": "태그", + "desc": "설명" + }, + "author-desc": "지정된 작성자의 모델만 표시", + "hash-desc": "지정된 해시를 가진 모델만 표시", + "tag-desc": "지정된 태그를 가진 모델만 표시", + "name-desc": "지정된 이름의 모델만 표시", + "discordid-desc": "지정된 Discord 사용자로부터의 모델만 표시", + "status-desc": "지정된 상태의 모델만 표시 (프로필만, 작성자만)" + }, + "no-models": "모델을 찾을 수 없습니다.", + "no-internet": "인터넷에 연결할 수 없습니다.", + "error-occured": "오류가 발생했습니다. 다시 시도해 주세요." + }, + "link-models": { + "avatar": { + "title": "아바타 링크", + "desc": "아바타를 링크하면 이 기능이 활성화된 모든 버전 간에 아바타를 공유할 수 있습니다. 또한 링크하면 이 버전이 공유 아바타의 혜택을 받을 수 있습니다.", + "info": "아바타의 추가 및 삭제도 공유됩니다.", + "keep-models": { + "label": "아바타 유지", + "title": "아바타를 유지하면 현재 버전에서 모든 아바타가 공유 아바타 폴더에 복사됩니다. 활성화하지 않으면 이 버전의 아바타가 유지되지 않으며, 그들은 사라집니다." + }, + "valid-btn": "아바타 링크" + }, + "saber": { + "title": "세이버 링크", + "desc": "세이버를 링크하면 이 기능이 활성화된 모든 버전 간에 세이버를 공유할 수 있습니다. 또한 링크하면 이 버전이 공유 세이버의 혜택을 받을 수 있습니다.", + "info": "세이버의 추가 및 삭제도 공유됩니다.", + "keep-models": { + "label": "세이버 유지", + "title": "세이버를 유지하면 현재 버전에서 모든 세이버가 공유 세이버 폴더에 복사됩니다. 활성화하지 않으면 이 버전의 세이버가 유지되지 않으며, 그들은 사라집니다." + }, + "valid-btn": "세이버 링크" + }, + "platform": { + "title": "플랫폼 링크", + "desc": "플랫폼을 링크하면 이 기능이 활성화된 모든 버전 간에 플랫폼을 공유할 수 있습니다. 또한 링크하면 이 버전이 공유 플랫폼의 혜택을 받을 수 있습니다.", + "info": "플랫폼의 추가 및 삭제도 공유됩니다.", + "keep-models": { + "label": "플랫폼 유지", + "title": "플랫폼을 유지하면 현재 버전에서 모든 플랫폼이 공유 플랫폼 폴더에 복사됩니다. 활성화하지 않으면 이 버전의 플랫폼이 유지되지 않으며, 그들은 사라집니다." + }, + "valid-btn": "플랫폼 링크" + }, + "bloq": { + "title": "노트 링크", + "desc": "노트를 링크하면 이 기능이 활성화된 모든 버전 간에 노트를 공유할 수 있습니다. 또한 링크하면 이 버전이 공유 노트의 혜택을 받을 수 있습니다.", + "info": "노트의 추가 및 삭제도 공유됩니다.", + "keep-models": { + "label": "노트 유지", + "title": "노트를 유지하면 현재 버전에서 모든 노트가 공유 노트 폴더에 복사됩니다. 활성화하지 않으면 이 버전의 노트가 유지되지 않으며, 그들은 사라집니다." + }, + "valid-btn": "노트 링크" + } + }, + "unlink-models": { + "avatar": { + "title": "아바타 링크 해제", + "desc": "아바타의 링크를 해제하면 이 버전에서는 공유 아바타를 사용할 수 없습니다.", + "keep-models": { + "label": "아바타 유지", + "title": "아바타를 유지하면 링크를 해제한 후 공유 폴더에 있는 모든 아바타가 현재 버전에 복사됩니다. 이것을 비활성화하더라도 공유 아바타는 사라지지 않습니다." + }, + "valid-btn": "아바타 링크 해제" + }, + "saber": { + "title": "세이버 링크 해제", + "desc": "세이버의 링크를 해제하면 이 버전에서는 공유 세이버를 사용할 수 없습니다.", + "keep-models": { + "label": "세이버 유지", + "title": "세이버를 유지하면 링크를 해제한 후 공유 폴더에 있는 모든 세이버가 현재 버전에 복사됩니다. 이것을 비활성화하더라도 공유 세이버는 사라지지 않습니다." + }, + "valid-btn": "세이버 링크 해제" + }, + "platform": { + "title": "플랫폼 링크 해제", + "desc": "플랫폼의 링크를 해제하면 이 버전에서는 공유 플랫폼을 사용할 수 없습니다.", + "keep-models": { + "label": "플랫폼 유지", + "title": "플랫폼을 유지하면 링크를 해제한 후 공유 폴더에 있는 모든 플랫폼이 현재 버전에 복사됩니다. 이것을 비활성화하더라도 공유 플랫폼은 사라지지 않습니다." + }, + "valid-btn": "플랫폼 링크 해제" + }, + "bloq": { + "title": "노트 링크 해제", + "desc": "노트의 링크를 해제하면 이 버전에서는 공유 노트를 사용할 수 없습니다.", + "keep-models": { + "label": "노트 유지", + "title": "노트를 유지하면 링크를 해제한 후 공유 폴더에 있는 모든 노트가 현재 버전에 복사됩니다. 이것을 비활성화하더라도 공유 노트는 사라지지 않습니다." + }, + "valid-btn": "노트 링크 해제" + } + } + }, + "notifications": { + "prevent-for-mods": { + "title": "모드가 필요합니다!", + "desc": "Beat Saber에서 모델을 사용하려면 필요한 모드를 설치하고 확인하세요.", + "go-to-mods": "모드 설치기로 이동", + "not-remind": "다시 표시하지 않기" + }, + "export-success": { + "title": "내보내기 완료🎉" + } + } + }, + "beat-saver": { + "maps-sorts": { + "Latest": "최신", + "Relevance": "관련성", + "Rating": "평점", + "Curated": "엄선됨" + } + }, + "auto-update": { + "checking": "업데이트 확인 중", + "downloading": "업데이트 중" + }, + "bs-shortcut-launch": { + "beat-saber-launching": "", + "launching": "실행 중", + "open-bsmanager": "BSManager 열기", + "status-text": { + "init": "초기화 중...", + "success": { + "BS_LAUNCHING": "Beat Saber 실행 중...", + "STEAM_LAUNCHING": "Steam 실행 중...", + "STEAM_LAUNCHED": "Steam 실행 완료!", + "UNABLE_TO_LAUNCH_STEAM": "Steam을 실행할 수 없습니다. Beat Saber를 강제로 실행합니다..." + } + } + }, + "drop-zone": { + "or-browse-files": "또는 파일 찾아보기" + }, + "playlist": { + "error-playlist-creation-title": "재생목록 생성 오류", + "error-playlist-creation-desc": "재생목록 생성 중 오류가 발생했습니다.", + "playlist-created-title": "재생목록이 생성되었습니다", + "playlist-created-desc": "재생목록이 정상적으로 생성되었습니다. 지금 바로 맵을 동기화할 수 있습니다!", + "download-playlist": "재생목록 다운로드", + "synchronize-playlist": "재생목록 동기화", + "synchronize-maps": "맵 동기화", + "error-playlists-synchronization-title": "재생목록 동기화 오류", + "error-playlists-synchronization-desc": "재생목록 동기화 중 오류가 발생했습니다.", + "playlists-synchronized-title": "재생목록이 동기화되었습니다!", + "playlists-synchronized-desc": "재생목록과 해당 맵이 다운로드되었습니다.", + "playlists-export-error-title": "재생목록 내보내기 오류", + "playlists-export-error-desc": "재생목록 내보내기 중 오류가 발생했습니다.", + "playlists-exported-title": "재생목록이 내보내어졌습니다!", + "playlists-exported-desc": "재생목록이 정상적으로 내보내어졌습니다.", + "playlists-with-maps-exported-desc": "재생목록과 해당 맵이 정상적으로 내보내어졌습니다.", + "playlist-delete-error-title": "재생목록 삭제 오류", + "playlist-delete-error-desc": "재생목록 삭제 중 오류가 발생했습니다.", + "playlists-deleted-title": "재생목록이 삭제되었습니다!", + "playlists-deleted-desc": "재생목록이 정상적으로 삭제되었습니다.", + "edit-playlist": "재생목록 편집", + "playlist-edit-error-title": "재생목록 편집 오류", + "playlist-edit-error-desc": "재생목록 편집 중 오류가 발생했습니다.", + "playlist-edited-title": "재생목록이 편집되었습니다!", + "playlist-edited-desc": "재생목록이 정상적으로 변경되었습니다. 지금 바로 맵을 동기화할 수 있습니다!", + "playlists-loading": "재생목록 로딩 중...", + "no-playlists": "재생목록이 없습니다", + "download-playlists": "재생목록 다운로드", + "created-by": "작성자", + "stop-download": "다운로드 중지", + "cancel-download": "다운로드 취소", + "open-file": "파일 열기", + "link-playlists": "재생목록 링크", + "link-playlist-desc": "재생목록을 링크하면 모든 버전 간에 재생목록을 공유할 수 있습니다. 링크를 클릭하면 이 버전이 공유 재생목록의 혜택을 받습니다.", + "link-playlist-info": "재생목록의 추가 및 삭제도 공유됩니다.", + "keep-playlists": "재생목록 유지", + "keep-playlists-tip": "재생목록을 유지하면 현재 버전의 재생목록이 공유 재생목록 폴더로 이동됩니다. 그렇지 않으면 잃어버리게 됩니다.", + "unlink-playlists": "재생목록 링크 해제", + "unlink-playlist-desc": "경고: 재생목록 링크를 해제하면 이 버전에서는 공유 재생목록을 사용할 수 없습니다.", + "unlink-keep-playlists-tip": "재생목록을 유지하면 현재 버전에 대해 공유 재생목록의 복사본이 생성됩니다. 그렇지 않으면 이 버전의 재생목록이 유지되지 않습니다.", + "delete-playlist-ask": "재생목록을 삭제하시겠습니까?", + "delete-playlists-ask": "재생목록을 삭제하시겠습니까?", + "delete-playlist-desc": "재생목록「{playlistTitle}」을(를) 삭제해도 괜찮습니까?", + "delete-playlists-desc": "{nb}개의 재생목록을 삭제해도 괜찮습니까?", + "delete-maps": "맵 삭제", + "delete-playlist-maps-tip": "활성화하면 재생목록 내의 모든 맵이 삭제됩니다.", + "delete-playlists-maps-tip": "활성화하면 재생목록 내의 모든 맵이 삭제됩니다.", + "export-playlist-ask": "재생목록을 내보내시겠습니까?", + "export-playlists-ask": "재생목록을 내보내시겠습니까?", + "export-playlist-desc": "재생목록「{playlistTitle}」을(를) 내보내도 괜찮습니까?", + "export-playlists-desc": "{nb}개의 재생목록을 내보내도 괜찮습니까?", + "export-maps": "맵 내보내기", + "export-playlist-maps-tip": "활성화하면 재생목록 내의 모든 맵도 내보내어집니다.", + "export-playlists-maps-tip": "활성화하면 재생목록 내의 모든 맵도 내보내어집니다.", + "export": "내보내기", + "need-clone-title": "경고", + "need-clone-desc-1": "이 재생목록은 외부 사이트에서 다운로드되었으며 동기화 링크가 포함되어 있습니다.", + "need-clone-desc-2": "동기화 중 변경 사항을 잃지 않도록 재생목록이 복제되고 동기화 링크가 삭제됩니다.", + "need-clone-desc-3": "그 후 필요에 따라 원래 재생목록을 삭제할 수 있습니다.", + "understood": "이해했습니다", + "synchronize-playlist-ask": "재생목록을 동기화하시겠습니까?", + "synchronize-playlists-ask": "재생목록을 동기화하시겠습니까?", + "synchronize-playlist-desc": "재생목록「{playlistTitle}」을(를) 동기화해도 괜찮습니까?", + "synchronize-playlists-desc": "{nb}개의 재생목록을 동기화해도 괜찮습니까?", + "synchronize-playlist-tip": "이 작업은 재생목록을 업데이트하고 부족한 맵을 다운로드합니다. 몇 분이 걸릴 수 있습니다.", + "synchronize": "동기화", + "curated": "추천", + "verified-mapper": "인증된 맵퍼", + "empty-playlists": "빈 재생목록", + "search-playlist": "재생목록 검색", + "no-playlists-found": "재생목록이 없습니다", + "error-occur-while-loading-playlists": "재생목록 로딩 중 오류가 발생했습니다", + "error-occur-while-loading-playlist": "재생목록 로딩 중 오류가 발생했습니다", + "loading-maps": "맵 로딩 중...", + "no-maps-found-for-playlist": "이 재생목록에 대한 맵이 없습니다", + "playlist-contain-no-maps": "재생목록에 맵이 포함되어 있지 않습니다", + "no-map-installed-for-playlist": "이 재생목록에 설치된 맵이 없습니다", + "playlist-is-waiting-to-download": "재생목록이 다운로드 대기 중입니다", + "download-maps": "맵 다운로드", + "download-missing-maps": "부족한 맵 다운로드", + "playlist-is-downloading": "재생목록 다운로드 중입니다", + "some-playlist-maps-are-missing": "이 재생목록의 일부 맵이 부족합니다", + "create-a-playlist": "재생목록 생성", + "synchronize-playlists": "재생목록 동기화", + "export-playlists": "재생목록 내보내기", + "delete-playlists": "재생목록 삭제", + "choose-image": "이미지 선택", + "title": "제목", + "playlist-title": "재생목록 제목", + "description": "설명", + "playlist-description": "재생목록 설명", + "author": "작성자", + "playlist-author": "재생목록 작성자", + "save": "저장", + "loading": "로딩 중...", + "installed": "설치됨", + "no-map-found": "맵이 없습니다", + "edit-playlist-shortcuts": "Shift 키 또는 Ctrl 키를 누른 상태에서 여러 맵 선택", + "add-to-playlist": "재생목록에 추가", + "remove-from-playlist": "재생목록에서 제거", + "playlist-is-empty": "재생목록이 비어 있습니다", + "continue": "계속", + "nb-maps": "맵 수", + "nb-mappers": "맵퍼 수", + "duration": "지속 시간", + "nps": "초당 음표 수", + "date-picker": { + "start-date-end-date": "시작일 — 종료일", + "all": "모두", + "last-24h": "지난 24시간", + "last-week": "지난주", + "last-month": "지난달", + "3-last-month": "지난 3개월" + }, + "playlists-imported": "재생목록이 가져와졌습니다", + "all-playlists-have-been-successfully-imported": "모든 재생목록이 정상적으로 가져와졌습니다", + "no-playlist-found": "재생목록이 없습니다", + "no-playlist-found-in-selected-files": "선택한 파일에 재생목록이 없습니다", + "some-playlists-not-imported": "일부 재생목록은 가져오지 못했습니다", + "some-playlists-have-been-imported": { + "INVALID_SOURCE": "일부 재생목록이 없습니다", + "INVALID_PLAYLIST_FILE": "일부 재생목록이 유효하지 않습니다", + "CANNOT_PARSE_PLAYLIST": "일부 재생목록을 읽을 수 없습니다", + "unknown": "일부 재생목록을 가져올 수 없습니다" + }, + "no-playlists-imported": "재생목록이 가져와지지 않았습니다", + "no-playlists-imported-errors": { + "INVALID_SOURCE": "재생목록이 없습니다", + "INVALID_PLAYLIST_FILE": "재생목록이 유효하지 않습니다", + "CANNOT_PARSE_PLAYLIST": "재생목록을 읽을 수 없습니다", + "unknown": "재생목록을 가져올 수 없습니다" + } + }, + "dateformat": { + "dayNames": [ + "일", + "월", + "화", + "수", + "목", + "금", + "토", + "일요일", + "월요일", + "화요일", + "수요일", + "목요일", + "금요일", + "토요일" + ], + "monthNames": [ + "1월", + "2월", + "3월", + "4월", + "5월", + "6월", + "7월", + "8월", + "9월", + "10월", + "11월", + "12월", + "1월", + "2월", + "3월", + "4월", + "5월", + "6월", + "7월", + "8월", + "9월", + "10월", + "11월", + "12월" + ], + "timeNames": [ + "오전", + "오후", + "오전", + "오후", + "오전", + "오후", + "오전", + "오후" + ] + } +} diff --git a/assets/jsons/translations/ru.json b/assets/jsons/translations/ru.json index 54bb3b08..2049abc0 100644 --- a/assets/jsons/translations/ru.json +++ b/assets/jsons/translations/ru.json @@ -180,6 +180,7 @@ "zh-CN": "简体中文", "zh-TW": "正體中文", "ja-JP": "日本語", + "ko-KR": "한국어", "translated": { "en-EN": "Английский, Великобритания", "en-US": "Английский, США", @@ -189,7 +190,8 @@ "ru-RU": "Русский", "zh-CN": "Китайский (упрощенный)", "zh-TW": "Китайский (традиционный)", - "ja-JP": "Японский" + "ja-JP": "Японский", + "ko-KR": "Корейский" } } }, diff --git a/assets/jsons/translations/zh-tw.json b/assets/jsons/translations/zh-tw.json index 7b4889b0..79c75ffe 100644 --- a/assets/jsons/translations/zh-tw.json +++ b/assets/jsons/translations/zh-tw.json @@ -180,6 +180,7 @@ "zh-CN": "簡體中文", "zh-TW": "正體中文", "ja-JP": "日本語", + "ko-KR": "한국어", "translated": { "en-EN": "英式英語", "en-US": "美式英語", @@ -189,7 +190,8 @@ "ru-RU": "俄語", "zh-CN": "簡體中文", "zh-TW": "正體中文", - "ja-JP": "日語" + "ja-JP": "日語", + "ko-KR": "韓語" } } }, diff --git a/assets/jsons/translations/zh.json b/assets/jsons/translations/zh.json index 9f135e35..57359296 100644 --- a/assets/jsons/translations/zh.json +++ b/assets/jsons/translations/zh.json @@ -180,6 +180,7 @@ "zh-CN": "简体中文", "zh-TW": "正體中文", "ja-JP": "日本語", + "ko-KR": "한국어", "translated": { "en-EN": "英式英语", "en-US": "美式英语", @@ -189,7 +190,8 @@ "ru-RU": "俄语", "zh-CN": "简体中文", "zh-TW": "正体中文", - "ja-JP": "日语" + "ja-JP": "日语", + "ko-KR": "韩语" } } }, diff --git a/src/renderer/components/models-management/models-panel.component.tsx b/src/renderer/components/models-management/models-panel.component.tsx index c43331c3..e10ba910 100644 --- a/src/renderer/components/models-management/models-panel.component.tsx +++ b/src/renderer/components/models-management/models-panel.component.tsx @@ -139,6 +139,7 @@ export function ModelsPanel({ version, isActive, goToMods }: { version?: BSVersi icon="add" text="misc.add" typeColor="primary" + textClassName="whitespace-nowrap" withBar={false} onClick={e => { e.preventDefault(); diff --git a/src/renderer/components/svgs/bsm-icon.component.tsx b/src/renderer/components/svgs/bsm-icon.component.tsx index 0802ff02..829563e1 100644 --- a/src/renderer/components/svgs/bsm-icon.component.tsx +++ b/src/renderer/components/svgs/bsm-icon.component.tsx @@ -56,6 +56,7 @@ import { RussianIcon } from "./flags/russian-icon.component"; import { ChineseIcon } from "./flags/chinese-icon.component"; import { ChineseTraditionalIcon } from "./flags/chineseTraditional-icon.component"; import { JapanIcon } from "./flags/japan-icon.component"; +import { KoreaIcon } from "./flags/korea-icon.component"; import { ChevronTopIcon } from "./icons/chevron-top-icon.component"; import { EyeCrossIcon } from "./icons/eye-cross-icon.component"; import { ShortcutIcon } from "./icons/shortcut-icon.component"; @@ -66,7 +67,7 @@ import { BrowseIcon } from "./icons/browse-icon.component"; import { AddFileIcon } from "./icons/add-file-icon.component"; -export type BsmIconType = SongDetailDiffCharactertistic | ("settings" | "trash" | "favorite" | "folder" | "bsNote" | "check" | "three-dots" | "twitch" | "eye" | "play" | "checkCircleIcon" | "discord" | "info" | "eye-cross" | "terminal" | "desktop" | "oculus" | "add" | "cross" | "task" | "github" | "close" | "thumbUpFill" | "timerFill" | "pause" | "twitter" | "sync" | "chevron-top" | "copy" | "steam" | "edit" | "export" | "patreon" | "search" | "bsMapDifficulty" | "link" | "unlink" | "download" | "filter" | "mee6" | "volume-up" | "volume-off" | "volume-down" | "shortcut" | "backup-restore" | "web-site" | "clean" | "browse" | "add-file" | "fr-FR-flag" | "es-ES-flag" | "en-US-flag" | "en-EN-flag" | "de-DE-flag" | "ru-RU-flag" | "zh-CN-flag" | "zh-TW-flag" | "ja-JP-flag"); +export type BsmIconType = SongDetailDiffCharactertistic | ("settings" | "trash" | "favorite" | "folder" | "bsNote" | "check" | "three-dots" | "twitch" | "eye" | "play" | "checkCircleIcon" | "discord" | "info" | "eye-cross" | "terminal" | "desktop" | "oculus" | "add" | "cross" | "task" | "github" | "close" | "thumbUpFill" | "timerFill" | "pause" | "twitter" | "sync" | "chevron-top" | "copy" | "steam" | "edit" | "export" | "patreon" | "search" | "bsMapDifficulty" | "link" | "unlink" | "download" | "filter" | "mee6" | "volume-up" | "volume-off" | "volume-down" | "shortcut" | "backup-restore" | "web-site" | "clean" | "browse" | "add-file" | "fr-FR-flag" | "es-ES-flag" | "en-US-flag" | "en-EN-flag" | "de-DE-flag" | "ru-RU-flag" | "zh-CN-flag" | "zh-TW-flag" | "ja-JP-flag" | "ko-KR-flag"); export const BsmIcon = memo(({ className, icon, style }: { className?: string; icon: BsmIconType; style?: CSSProperties }) => { // TODO : Very ugly very messy, need to find a better way to do this @@ -130,6 +131,9 @@ export const BsmIcon = memo(({ className, icon, style }: { className?: string; i if (icon === "ja-JP-flag") { return ; } + if (icon === "ko-KR-flag"){ + return ; + } if (icon === "task") { return ; } diff --git a/src/renderer/config/default-configuration.config.ts b/src/renderer/config/default-configuration.config.ts index 5172c42e..df69b903 100644 --- a/src/renderer/config/default-configuration.config.ts +++ b/src/renderer/config/default-configuration.config.ts @@ -23,7 +23,7 @@ export const defaultConfiguration: { "second-color": "#ff4444", theme: "os", language: window.navigator.language.length <= 2 ? `${window.navigator.language}-${window.navigator.language.toLocaleUpperCase()}` : window.navigator.language, - supported_languages: ["en-US", "en-EN", "fr-FR", "es-ES", "de-DE", "ru-RU", "zh-CN", "zh-TW", "ja-JP"], + supported_languages: ["en-US", "en-EN", "fr-FR", "es-ES", "de-DE", "ru-RU", "zh-CN", "zh-TW", "ja-JP", "ko-KR"], default_mods: ["SongCore", "WhyIsThereNoLeaderboard", "BeatSaverDownloader", "BeatSaverVoting", "PlaylistManager"], "default-shared-folders": [ window.electron.path.join("Beat Saber_Data", "CustomLevels"),