diff --git a/static/js/i18n.js b/static/js/i18n.js
index 0598a962..0ec49ee8 100644
--- a/static/js/i18n.js
+++ b/static/js/i18n.js
@@ -25,6 +25,7 @@ export const LANGUAGES = [
{ code: "en", flag: "๐ฌ๐ง", name: "English" },
{ code: "pl", flag: "๐ต๐ฑ", name: "Polski" },
{ code: "ja", flag: "๐ฏ๐ต", name: "ๆฅๆฌ่ช" },
+ { code: "ko", flag: "๐ฐ๐ท", name: "ํ๊ตญ์ด" },
{ code: "zh-Hans", flag: "๐จ๐ณ", name: "็ฎไฝไธญๆ" },
{ code: "de", flag: "๐ฉ๐ช", name: "Deutsch" },
{ code: "fr", flag: "๐ซ๐ท", name: "Franรงais" },
@@ -65,6 +66,7 @@ export function _detectDefault() {
const lower = nav.toLowerCase();
if (lower.startsWith("pl")) return "pl";
if (lower.startsWith("ja")) return "ja";
+ if (lower.startsWith("ko")) return "ko";
// Simplified Chinese: zh-CN, zh-Hans, zh-SG, or bare "zh" (assume simplified
// unless it's explicitly a traditional-script region, which we don't ship).
if (lower.startsWith("zh")) return "zh-Hans";
@@ -5206,4 +5208,543 @@ const es = {
"resetConfirm.failedConnection": "No se pudo restablecer โ revisa tu conexiรณn.",
};
-export const TRANSLATIONS = { en, pl, ja, "zh-Hans": zhHans, de, fr, es, pt, "pt-PT": ptPT, id };
+// Korean. Like ja, zhHans and id, Korean does not inflect nouns for
+// number, so every plural family here is .other only -- the buckets the
+// plural resolver actually reads for this language.
+//
+// Register is the plain ํด์์ฒด the interface wants, not the stiffer ํฉ๋๋ค์ฒด.
+// The audio loanwords a Korean musician already uses (๋ณด์ปฌ, ๋๋ผ, ๋ฒ ์ด์ค,
+// ๋ฃจํ) stay loanwords; translating those would read as odd to anyone who
+// has opened a DAW.
+const ko = {
+
+ "sections.kind.intro": "์ธํธ๋ก",
+ "sections.kind.outro": "์์ํธ๋ก",
+ "sections.kind.break": "๋ธ๋ ์ดํฌ",
+ "sections.kind.bridge": "๋ธ๋ฆฌ์ง",
+ "sections.kind.inst": "์ฐ์ฃผ",
+ "sections.kind.solo": "์๋ก",
+ "sections.kind.verse": "๋ฒ์ค",
+ "sections.kind.chorus": "์ฝ๋ฌ์ค",
+ "sections.kind.part": "๊ตฌ๊ฐ",
+ "sections.kindNumbered": "{kind} {n}",
+ "sections.clear": "์ง์ฐ๊ธฐ",
+ "sections.clearAria": "๋ชจ๋ ๊ตฌ๊ฐ ์ง์ฐ๊ธฐ",
+ "sections.clearConfirm": "์ ๋ง์?",
+ "structure.toggle": "๊ณก ๊ตฌ์กฐ",
+ "structure.toggleTitle": "์คํ์ ๊ณก ๊ตฌ์กฐ ๋ถ์: ๋ถ๋ฆฌํ ๋ค ์ธํธ๋ก, ๋ฒ์ค, ์ฝ๋ฌ์ค๋ฅผ ์๋์ผ๋ก ํ์ํด์",
+ "structure.experimental": "์คํ์ ",
+ "doc.title": "StemDeck, ์ด๋ค ๊ณก์ด๋ ์คํ
์ผ๋ก ๋ถ๋ฆฌ",
+
+ "topbar.urlPlaceholder": "๊ฒ์ํ๊ฑฐ๋ YouTube ๋๋ SoundCloud ๋งํฌ๋ฅผ ๋ถ์ฌ๋ฃ๊ฑฐ๋ ์ค๋์ค ํ์ผ์ ๋์ด๋ค ๋์ผ์ธ์โฆ",
+ "topbar.removeFile": "ํ์ผ ์ ๊ฑฐ",
+ "topbar.uploadFile": "์ค๋์ค ํ์ผ ์
๋ก๋",
+ "extract.label": "์ถ์ถ",
+ "extract.all": "์ ์ฒด",
+ "process.splitStems": "์คํ
๋ถ๋ฆฌ",
+
+ "stem.original": "์๋ณธ",
+ "stem.vocals": "๋ณด์ปฌ",
+ "stem.lead_vocals": "๋ฆฌ๋ ๋ณด์ปฌ",
+ "stem.backing_vocals": "๋ฐฑ ๋ณด์ปฌ",
+ "stem.drums": "๋๋ผ",
+ "stem.bass": "๋ฒ ์ด์ค",
+ "stem.guitar": "๊ธฐํ",
+ "stem.piano": "ํผ์๋
ธ",
+ "stem.other": "๊ธฐํ ์๋ฆฌ",
+ "stem.others": "๊ธฐํ ์๋ฆฌ",
+
+ "vocalMode.groupAria": "๋ณด์ปฌ ๋ชจ๋",
+ "vocalMode.all": "์ ์ฒด",
+ "vocalMode.split": "๋ฆฌ๋ + ๋ฐฑ",
+
+ "aria.mute": "{name} ์์๊ฑฐ",
+ "aria.solo": "{name} ์๋ก",
+ "aria.laneKeyUp": "{name} ๋ฐ์ ์ฌ๋ฆฌ๊ธฐ",
+ "aria.laneKeyDown": "{name} ๋ฐ์ ๋ด๋ฆฌ๊ธฐ",
+ "mixer.key.title": "์ด ํธ๋ ์กฐ์ฎ๊น: {n} ๋ฐ์",
+ "mixer.key.drumsLocked": "๋๋ผ์ ์กฐ์ฎ๊นํ์ง ์์์",
+ "mixer.key.unavailable": "์กฐ์ฎ๊น์๋ Web Audio๊ฐ ํ์ํด์",
+ "aria.soloOnly": "{name}๋ง ์๋ก",
+ "aria.download": "{name} ๋ค์ด๋ก๋",
+ "aria.volume": "{name} ๋ณผ๋ฅจ",
+
+ "notif.bell": "์๋ฆผ",
+ "notif.title": "์๋ฆผ",
+ "notif.clearAll": "๋ชจ๋ ์ง์ฐ๊ธฐ",
+ "notif.close": "์๋ฆผ ๋ซ๊ธฐ",
+ "notif.newRelease": "์ ๋ฒ์ ์ด ๋์์ด์",
+ "notif.dismiss": "์๋ฆผ ์ง์ฐ๊ธฐ",
+ "notif.empty": "์ ์๋ฆผ์ด ์์ด์",
+
+ "nav.libraryNav": "๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์",
+ "nav.toggleLibrary": "๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๊ธฐ/ํผ์น๊ธฐ",
+ "nav.library": "๋ผ์ด๋ธ๋ฌ๋ฆฌ",
+ "nav.favorites": "์ฆ๊ฒจ์ฐพ๊ธฐ",
+ "nav.trash": "ํด์งํต",
+ "nav.importQueue": "๊ฐ์ ธ์ค๊ธฐ ๋๊ธฐ์ด",
+ "nav.queue": "๋๊ธฐ์ด",
+ "nav.settings": "์ค์ ",
+ "nav.weRecommend": "์ถ์ฒ",
+ "nav.weRecommendLine1": "์ด๋ฐ ๊ณณ๋",
+ "nav.weRecommendLine2": "์ถ์ฒํด์",
+ "nav.help": "๋์๋ง",
+
+ "search.ariaLabel": "๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒ์",
+ "search.placeholder": "๊ฒ์ ๋๋ #ํ๊ทธโฆ",
+ "search.tab.ytSongs": "YouTube ๊ณก",
+ "search.tab.ytPlaylists": "YouTube ์ฌ์๋ชฉ๋ก",
+ "search.tab.scSongs": "SoundCloud ๊ณก",
+ "search.searching": "๊ฒ์ ์คโฆ",
+ "search.noResults": "๊ฒฐ๊ณผ๊ฐ ์์ด์",
+ "search.failed": "๊ฒ์์ ์คํจํ์ด์. ์ฐ๊ฒฐ์ ํ์ธํด ์ฃผ์ธ์.",
+ "search.tooLong": "{mins}๋ถ ์ด๊ณผ",
+ "search.tooLongHint": "์ค์ ํ {mins}๋ถ ์ ํ๋ณด๋ค ๊ธธ์ด์. ์ค์ ์์ ๋ฐ๊ฟ ์ ์์ด์.",
+ "search.preview": "๋ฏธ๋ฆฌ ๋ฃ๊ธฐ",
+ "search.play": "์ฌ์",
+ "search.pause": "์ผ์์ ์ง",
+ "search.seek": "์ด๋",
+ "search.previewFailed": "๋ฏธ๋ฆฌ ๋ค์ ์ ์์ด์",
+ "search.tagSuggestions": "ํ๊ทธ ์ถ์ฒ",
+ "search.placeholderLibrary": "๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒ์โฆ",
+ "search.placeholderFavorites": "์ฆ๊ฒจ์ฐพ๊ธฐ ๊ฒ์โฆ",
+ "search.placeholderTrash": "ํด์งํต ๊ฒ์โฆ",
+ "trash.empty": "ํด์งํต ๋น์ฐ๊ธฐ",
+ "trash.isEmptyState": "ํด์งํต์ด ๋น์ด ์์ด์",
+ "trash.noSearchMatch": "๊ฒ์๊ณผ ๋ง๋ ์ญ์ ๋ ํธ๋์ด ์์ด์",
+
+ "meta.key": "ํค",
+ "meta.bpm": "BPM",
+ "meta.lufs": "LUFS",
+ "meta.duration": "๊ธธ์ด",
+ "meta.scale": "์๊ณ",
+ "meta.dynamicRange": "๋ค์ด๋ด๋ฏน ๋ ์ธ์ง",
+ "meta.tempoStability": "ํ
ํฌ ์์ ์ฑ",
+
+ "presence.vocalGlobal": "์ ์ฒด ๋ณด์ปฌ",
+ "presence.drum": "๋๋ผ ๊ฐ๋",
+ "presence.bass": "๋ฒ ์ด์ค ๋๊ป",
+ "presence.guitar": "๊ธฐํ ๋น์ค",
+ "presence.piano": "ํผ์๋
ธ ๋น์ค",
+ "presence.other": "๊ธฐํ ์๋ฆฌ",
+
+ "sections.title": "๊ตฌ๊ฐ",
+ "sections.add": "์ถ๊ฐ",
+ "sections.addAria": "๊ตฌ๊ฐ ์ถ๊ฐ",
+ "sections.savingAria": "๊ตฌ๊ฐ ์ ์ฅ ์ค",
+
+ "mixer.title": "๋ฏน์",
+
+ "panels.analysis": "๋ถ์",
+
+ "panels.clickToCollapse": "๋๋ฌ์ ์ ๊ธฐ",
+
+ "panels.timeline": "ํ์๋ผ์ธ",
+
+ "panels.analysisTitle": "ํธ๋ ๋ถ์ ํ์ํ๊ฑฐ๋ ์จ๊ธฐ๊ธฐ",
+
+ "panels.sectionsTitle": "๊ตฌ๊ฐ ๋ง๋ ํ์ํ๊ฑฐ๋ ์จ๊ธฐ๊ธฐ",
+
+ "panels.timelineTitle": "ํ์๋ผ์ธ ํ์ํ๊ฑฐ๋ ์จ๊ธฐ๊ธฐ",
+ "mixer.hint": "ํ์ด๋ ๋๋๊ทธ ยท M/S",
+ "stemsPanel.ariaLabel": "์คํ
",
+
+ "beatgrid.toolbarAria": "๋นํธ ๊ทธ๋ฆฌ๋ ํธ์ง๊ธฐ",
+ "beatgrid.gridLabel": "๊ทธ๋ฆฌ๋",
+ "beatgrid.toolAria": "๋๊ตฌ",
+ "beatgrid.move": "์ด๋",
+ "beatgrid.moveTitle": "๋นํธ๋ฅผ ๋์ด์ ์ฎ๊ฒจ์",
+ "beatgrid.add": "์ถ๊ฐ",
+ "beatgrid.addTitle": "๋๋ฌ์ ๋นํธ๋ฅผ ์ถ๊ฐํด์",
+ "beatgrid.delete": "์ญ์ ",
+ "beatgrid.deleteTitle": "๋นํธ๋ฅผ ๋๋ฅด๋ฉด ์ง์์ ธ์",
+ "beatgrid.barLine": "๋ง๋์ ",
+ "beatgrid.barLineTitle": "๋นํธ๋ฅผ ๋๋ฅด๋ฉด ์ฒซ๋ฐ์ผ๋ก ํ์ํด์",
+ "beatgrid.ripple": "์ฐ๋",
+ "beatgrid.snap": "์ค๋
",
+ "beatgrid.bar": "๋ง๋",
+ "beatgrid.barAria": "์ด ๊ตฌ๊ฐ์ ๋ง๋๋น ๋นํธ ์",
+ "beatgrid.undo": "์คํ ์ทจ์",
+ "beatgrid.undoTitle": "์คํ ์ทจ์ (Cmd/Ctrl+Z)",
+ "beatgrid.redo": "๋ค์ ์คํ",
+ "beatgrid.redoTitle": "๋ค์ ์คํ (Cmd/Ctrl+Shift+Z)",
+ "beatgrid.reset": "๋๋๋ฆฌ๊ธฐ",
+ "beatgrid.resetTitle": "ํธ์ง์ ๋ชจ๋ ๋ฒ๋ฆฌ๊ณ ๊ฐ์ง๋ ๊ทธ๋ฆฌ๋๋ก ๋๋๋ ค์",
+ "beatgrid.done": "์๋ฃ",
+ "beatgrid.hint": "๋นํธ๋ฅผ ๋๋ฉด ๊ตฌ๊ฐ์ ๋ฐ์๊ฐ ๋ค์ ๋ง์ถฐ์ ธ์. Alt๋ฅผ ๋๋ฅด๊ณ ๋๋ฉด ํ ๋นํธ๋ง ์์ง์ฌ์.",
+
+ "wave.loadingAria": "ํํ ๋ถ๋ฌ์ค๋ ์ค",
+ "job.cancelAria": "์์
์ทจ์",
+ "job.cancel": "์ทจ์",
+
+ "footer.stemsPlaceholder": "โ ์คํ
",
+ "footer.stemsCount.other": "์คํ
{count}๊ฐ",
+
+ "footer.extractedLabel": "์ถ์ถ",
+ "footer.extracted": "{when} ์ถ์ถ",
+ "fav.toggleAria": "์ฆ๊ฒจ์ฐพ๊ธฐ ์ผ๊ธฐ/๋๊ธฐ",
+ "footer.seekAria": "์ด๋",
+
+ "export.optionsAria": "๋ด๋ณด๋ด๊ธฐ ์ต์
",
+ "export.formatAria": "๋ด๋ณด๋ด๊ธฐ ํ์",
+ "export.includeClick": "ํด๋ฆญ ํธ๋ ํฌํจ",
+ "export.videoFailed": "MP4๋ก ๋ด๋ณด๋ผ ์ ์์ด์. ์ด ํธ๋์ ์์์ ๊ฐ์ ธ์ค์ง ๋ชปํ์ด์. ์ค๋์ค ์คํ
์๋ ์ํฅ์ด ์์ด์.",
+ "export.includeClickTitle": "๋ด๋ณด๋ด๋ ํ์ผ์ ํด๋ฆญ ํธ๋์ ์์ด์",
+ "export.addCountIn": "์นด์ดํธ์ธ ์ถ๊ฐ (1๋ง๋)",
+ "export.addCountInTitle": "์ค๋์ค ์์ ์นด์ดํธ์ธ ํด๋ฆญ์ ํ ๋ง๋ ๋ฃ์ด์",
+ "export.mix": "๋ฏน์ค ๋ด๋ณด๋ด๊ธฐ",
+ "export.mixDesc": "๋ฏน์คํ ์ค๋์ค๋ฅผ ๋ด๋ณด๋ด์",
+ "export.mixDescVideo": "์๋ณธ ์์๊ณผ ํจ๊ป ๋ฏน์ค๋ฅผ ๋ด๋ณด๋ด์",
+ "export.failed": "๋ด๋ณด๋ด์ง ๋ชปํ์ด์.",
+ "export.allMuted": "๋ชจ๋ ์คํ
์ด ์์๊ฑฐ๋ผ ๋ด๋ณด๋ผ ๊ฒ์ด ์์ด์.",
+ "export.noStems": "๋ด๋ณด๋ผ ์คํ
์ด ์์ด์.",
+ "export.mixing": "๋ด๋ณด๋ด๋ ์คโฆ",
+ "export.allStems": "๋ชจ๋ ์คํ
๋ด๋ณด๋ด๊ธฐ",
+ "export.allStemsDesc": "๋ชจ๋ ์คํ
์ .zip ํ๋๋ก",
+ "export.currentRegion": "์ ํ ๊ตฌ๊ฐ ๋ด๋ณด๋ด๊ธฐ",
+ "export.currentRegionDesc": "์ ํํ ๊ตฌ๊ฐ์ ๋ด๋ณด๋ด์",
+
+ "transport.group": "ํธ๋์คํฌํธ",
+ "transport.stop": "์ ์ง",
+ "transport.playPause": "์ฌ์ / ์ผ์์ ์ง",
+
+ "position.group": "์์น",
+ "position.loopTitle": "์ ํํ ๊ตฌ๊ฐ์ ๋ฐ๋ณตํด์ (L)",
+ "position.loopLabel": "๊ตฌ๊ฐ ๋ฐ๋ณต",
+ "position.loopExactTitle": "๋ฐ๋ณต ์์๊ณผ ๋์ ์ ํํ (mm:ss.mmm ๋๋ ์ด)",
+ "position.loopStartAria": "๋ฐ๋ณต ์์",
+ "position.loopEndAria": "๋ฐ๋ณต ๋",
+
+ "speed.group": "์๋",
+ "pitch.group": "์ ์ฒด ํค",
+ "pitch.resetTitle": "๋ชจ๋ ํธ๋์ ์๋ ํค๋ก ๋๋๋ ค์",
+ "pitch.downTitle": "๋ฐ์ ๋ด๋ฆฌ๊ธฐ",
+ "pitch.upTitle": "๋ฐ์ ์ฌ๋ฆฌ๊ธฐ",
+ "speed.ariaLabel": "์ฌ์ ์๋",
+
+ "click.group": "ํด๋ฆญ ํธ๋",
+ "click.alpha": "์ํ",
+ "click.toggleTitle": "ํด๋ฆญ ํธ๋ (K)",
+ "click.toggleAria": "ํด๋ฆญ ํธ๋",
+ "click.unavailableAria": "ํด๋ฆญ ํธ๋์ ์ธ ์ ์์",
+ "click.on": "์ผ๊ธฐ",
+ "click.optionsAria": "ํด๋ฆญ ํธ๋ ์ต์
",
+ "click.countIn": "์นด์ดํธ์ธ",
+ "click.countInTitle": "์ฌ์์ ๋๋ฅด๋ฉด ๊ณก์ด ์์ํ๊ธฐ ์ ์ ํด๋ฆญ์ ํ ๋ง๋ ์ธ์ด์",
+ "click.barAccentAria": "N ๋นํธ๋ง๋ค ๊ฐ์ธ",
+ "click.auto": "์๋ (๊ฐ์ง๋จ)",
+ "click.autoNone": "์๋ (์ฐพ์ง ๋ชปํจ)",
+ "click.off": "๋๊ธฐ",
+ "click.editTitle": "๋นํธ ๊ทธ๋ฆฌ๋ ํธ์ง",
+ "click.grid": "๊ทธ๋ฆฌ๋",
+ "click.rateAria": "ํด๋ฆญ ์๋",
+ "click.rateTitle": "ํด๋ฆญ ์๋๋ฅผ ์ ๋ฐ ๋๋ ๋ ๋ฐฐ๋ก",
+ "click.half": "์ ๋ฐ ์๋",
+ "click.detected": "๊ฐ์ง๋ ํ
ํฌ",
+ "click.double": "๋ ๋ฐฐ ์๋",
+ "click.volumeAria": "ํด๋ฆญ ๋ณผ๋ฅจ",
+ "click.volumeTitle": "ํด๋ฆญ ๋ณผ๋ฅจ: {pct}",
+ "click.reason.loadTrack": "ํด๋ฆญ์ ์ฐ๋ ค๋ฉด ํธ๋์ ๋จผ์ ์ด์ด ์ฃผ์ธ์",
+ "click.reason.playbackUnavailable": "์ด ํธ๋์ ์ฌ์ํ ์ ์์ด์",
+ "click.reason.noBeatGrid": "์ด ํธ๋์๋ ๋นํธ ๊ทธ๋ฆฌ๋๊ฐ ์์ด์",
+ "click.reason.unavailableOnPath": "์ด ์ฌ์ ๋ฐฉ์์์๋ ํด๋ฆญ ํธ๋์ ์ธ ์ ์์ด์",
+ "click.reason.needsWebAudio": "ํด๋ฆญ ํธ๋์๋ Web Audio ์์ง์ด ํ์ํด์",
+
+ "about.title": "StemDeck",
+ "about.tagline": "์คํ ์์ค. ๊ตฌ๋
์์. ์์
ํ๋ ์ฌ๋์ด ์์
ํ๋ ์ฌ๋์ ์ํด ๋ง๋ค์์ด์.",
+ "about.closeAria": "์ ๋ณด ์ฐฝ ๋ซ๊ธฐ",
+ "about.website": "์น์ฌ์ดํธ",
+ "about.github": "GitHub",
+ "about.discord": "Discord",
+ "about.reddit": "Reddit",
+ "about.instagram": "Instagram",
+ "about.x": "X",
+
+ "friends.title": "์ถ์ฒ",
+ "friends.tagline": "์ข์ ์ผ์ ํ๋ ๋ฉ์ง ์ฌ๋๋ค์ด์์. ํ๋ฒ ๋ง๋ ๋ณด์ธ์ โค๏ธ",
+ "friends.closeAria": "์ถ์ฒ ์ฐฝ ๋ซ๊ธฐ",
+
+ "release.title": "์ ๋ฒ์ ์ด ๋์์ด์",
+ "release.closeAria": "๋ฆด๋ฆฌ์ค ์ฐฝ ๋ซ๊ธฐ",
+ "release.updateServer": "์๋ฒ ์
๋ฐ์ดํธํ๊ธฐ",
+ "release.pullImage": "์ ์ด๋ฏธ์ง๋ฅผ ๋ฐ๊ณ ์ปจํ
์ด๋๋ฅผ ๋ค์ ์์ํ์ธ์:",
+ "release.unraidNote": "Unraid์์๋ Community Applications ํ
ํ๋ฆฟ์ผ๋ก ์
๋ฐ์ดํธํ์ธ์.",
+ "release.download": "๋ค์ด๋ก๋",
+ "release.allReleases": "๋ชจ๋ ๋ฆด๋ฆฌ์ค",
+ "release.updateNow": "์ง๊ธ ์
๋ฐ์ดํธ",
+ "release.downloading": "์
๋ฐ์ดํธ ๋ฐ๋ ์คโฆ",
+ "release.restartUpdate": "๋ค์ ์์ํด์ ์
๋ฐ์ดํธ",
+ "release.applying": "์
๋ฐ์ดํธ ์ ์ฉ ์คโฆ",
+ "release.updateFailed": "์
๋ฐ์ดํธ์ ์คํจํ์ด์",
+
+ "failure.title": "๋ฌด์ธ๊ฐ ์คํจํ์ด์",
+ "failure.closeAria": "์ค๋ฅ ์ฐฝ ๋ซ๊ธฐ",
+ "failure.hint": "์๋ ๋ด์ฉ์ด ๋ฆฌํฌํธ์ ๋ค์ด๊ฐ์. ํธ๋ ์ ๋ชฉ๊ณผ ์๋ณธ ๋งํฌ๋ ํฌํจ๋์ง ์์ผ๋, ๋์์ด ๋ ๊ฒ ๊ฐ์ผ๋ฉด ์ง์ ์ ์ด ์ฃผ์ธ์. ์๋ ๋ฒํผ์ ๋๋ฅด๋ฉด ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ๋ผ์.",
+ "failure.includeLogs": "์ต๊ทผ ๋ก๊ทธ ํฌํจ",
+ "failure.collecting": "์ ๋ณด ๋ชจ์ผ๋ ์คโฆ",
+ "failure.fetchingLogs": "๋ก๊ทธ ๊ฐ์ ธ์ค๋ ์คโฆ",
+ "failure.logsIncluded": "๋ก๊ทธ๊ฐ ํฌํจ๋์ด์",
+ "failure.reportGithub": "GitHub์ ์๋ฆฌ๊ธฐ",
+ "failure.reportDiscord": "Discord์ ์๋ฆฌ๊ธฐ",
+
+ "settings.title": "์ค์ ",
+ "settings.closeAria": "์ค์ ๋ซ๊ธฐ",
+ "settings.tab.general": "์ผ๋ฐ",
+ "settings.tab.network": "๋คํธ์ํฌ",
+ "settings.tab.export": "๋ด๋ณด๋ด๊ธฐ",
+ "settings.tab.logs": "๋ก๊ทธ",
+ "settings.tab.registry": "๋ ์ง์คํธ๋ฆฌ",
+ "settings.readOnlyServer": "์๋ฒ ๋ชจ๋์์๋ ์ด ์ค์ ์ ๋ฐ๊ฟ ์ ์์ด์. ๋ฐ๊พธ๋ ค๋ฉด ์๋ฒ ์ค์ (์: docker-compose.yml)์ ์์ ํ๊ณ ๋ค์ ์์ํ์ธ์.",
+
+ "settings.language.title": "์ธ์ด",
+ "settings.language.desc": "์ด ์ฑ์์ ์ธ ํ์ ์ธ์ด์์.",
+
+ "settings.maxDuration.title": "์ต๋ ํธ๋ ๊ธธ์ด",
+ "settings.maxDuration.desc": "์ฒ๋ฆฌํ ์ ์๋ ๊ฐ์ฅ ๊ธด ํธ๋ ๊ธธ์ด์์, ๋ถ ๋จ์ (์ต๋ {max}).",
+ "settings.playlistLimit.title": "์ฌ์๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ ์ ํ",
+ "settings.playlistLimit.desc": "์ฌ์๋ชฉ๋ก ํ ๋ฒ์ ๋๊ธฐ์ด์ ๋ฃ์ ์ ์๋ ์ต๋ ํธ๋ ์์์ (์ต๋ 200).",
+ "settings.cookies.title": "YouTube ์ฟ ํค",
+ "settings.cookies.desc": "์ ํ ์ฌํญ์ด์์. cookies.txt ํ์ผ ๊ฒฝ๋ก๋ก, YouTube๊ฐ StemDeck์๊ฒ ๋ด์ด ์๋์ ํ์ธํ๋ผ๊ณ ํ ๋๋ง ์จ์. ๊ฐ์ ธ์ค๊ธฐ๊ฐ ์คํจํ์ง ์๋๋ค๋ฉด ๋น์ ๋์ธ์.",
+ "settings.cookies.placeholder": "cookies.txt ๊ฒฝ๋ก",
+ "settings.cookies.invalid": "ํ์ผ์ ์ฐพ์ ์ ์๊ฑฐ๋ ์ฝ์ ์ ์์ด์.",
+ "settings.stemsLocation.title": "StemData ์์น",
+ "settings.autoDelete.title": "์๋ฃ๋ ํธ๋ ์๋ ์ญ์ ",
+ "settings.autoDelete.desc": "์ผ์ง ์์ผ๋ฉด ๊บผ์ ธ ์์ด์. ๋ถ๋ฆฌํ ํธ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณ์ ๋ณด๊ดํด์. ์ญ์ ํ๋ฉด ๋๋๋ฆด ์ ์์ด์.",
+ "settings.autoDelete.daysTitle": "์ญ์ ๊น์ง",
+ "settings.autoDelete.daysDesc": "์๋ฃ๋ ํธ๋์ ์ญ์ ํ๊ธฐ ์ ๊น์ง ๋ณด๊ดํ๋ ์ผ์์์ (์ต๋ {max}).",
+ "settings.stemsLocation.change": "๋ณ๊ฒฝโฆ",
+ "settings.stemsLocation.resetting": "๋๋๋ฆฌ๋ ์คโฆ",
+ "settings.stemsLocation.resetFailed": "๋๋๋ฆฌ์ง ๋ชปํ์ด์. ์ฐ๊ฒฐ์ ํ์ธํด ์ฃผ์ธ์.",
+ "settings.stemsLocation.syncing": "๋๊ธฐํ ์คโฆ",
+ "settings.stemsLocation.syncFailed": "๋๊ธฐํํ์ง ๋ชปํ์ด์. ์ฐ๊ฒฐ์ ํ์ธํด ์ฃผ์ธ์.",
+ "settings.stemsLocation.inSync": "๋ชจ๋ ํธ๋์ด ๋๊ธฐํ๋์ด์.",
+ "settings.stemsLocation.unavailable": "์ฌ์ฉํ ์ ์์",
+ "settings.stemsLocation.persistFailed": "์์น๋ ๋ฐ๋์์ง๋ง ์ ์ฅ๋์ง ์์์ด์. ๋ค์ ์์ํ๋ฉด ์ด์ ํด๋๋ก ๋์๊ฐ์.",
+ "settings.stemsLocation.restartNote": "StemDeck์ ๋ค์ ์์ํ๋ฉด ์ ํ์ด ๋๋์.",
+ "settings.stemsLocation.pickerFailed": "ํด๋ ์ ํ ์ฐฝ์ ์ด์ง ๋ชปํ์ด์.",
+ "settings.stemsLocation.moving": "์คํ
์ ์ฎ๊ธฐ๋ ์ค์ด์์. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌ๋ฉด ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ด์.",
+ "settings.stemsLocation.moveFailed": "์คํ
ํด๋๋ฅผ ์ฎ๊ธฐ์ง ๋ชปํ์ด์.",
+ "settings.stemsLocation.serverUnreachable": "์๋ฒ์ ์ฐ๊ฒฐํ์ง ๋ชปํ์ด์.",
+ "settings.stemsLocation.movedPersistFailed.other": "{count}๊ฐ๋ฅผ ์ฎ๊ฒผ์ง๋ง ์ ์์น๋ก ์ ์ฅํ์ง ๋ชปํ์ด์ (ํด๋์ ์ฐ๊ธฐ ๊ถํ์ด ์๋์ง ํ์ธํด ์ฃผ์ธ์). ์ง๊ธ ๋ค์ ์์ํ๋ฉด ์ด์ ์์น๋ก ๋์๊ฐ์. ๋ค์ ์ค์ ํด ๋ณด์ธ์.",
+ "settings.stemsLocation.movedOk.other": "{count}๊ฐ๋ฅผ ์ฎ๊ฒผ์ด์. StemDeck์ ๋ค์ ์์ํ๋ฉด ์ ํ์ด ๋๋์.",
+
+ "settings.device.title": "์ฐ์ฐ ์ฅ์น",
+ "settings.device.desc": "์คํ
๋ถ๋ฆฌ์ ์ธ ์ฅ์น์์. ๋ค์ ํธ๋๋ถํฐ ์ ์ฉ๋ผ์{resolved}.",
+ "settings.device.auto": "์๋",
+ "settings.device.cuda": "CUDA (NVIDIA)",
+ "settings.device.mps": "MPS (Apple Silicon)",
+ "settings.device.cpu": "CPU",
+ "settings.device.currently": " (ํ์ฌ: {device})",
+ "settings.device.notAvailable": " (์ฌ์ฉํ ์ ์์)",
+ "settings.quality.title": "๋ถ๋ฆฌ ํ์ง",
+ "settings.quality.desc": "์ต๊ณ ํ์ง์ ๋ถ๋ฆฌ๊ธฐ๋ฅผ ๋ ๋ฒ ๋๋ ค ๋ฌด์์๋ก ์ด๊ธ๋ธ ๊ฒฐ๊ณผ๋ฅผ ํ๊ท ํด์. ์คํ
์ด ๋ ๊นจ๋ํด์ง์ง๋ง ์๊ฐ์ ๋ ๋ฐฐ ๊ฑธ๋ ค์.",
+ "settings.quality.standard": "ํ์ค",
+ "settings.quality.best": "์ต๊ณ (2๋ฐฐ ๋๋ฆผ)",
+
+ "settings.outOfSync.subhead": "๋๊ธฐํ๋์ง ์์ ํธ๋",
+ "settings.outOfSync.colName": "์ด๋ฆ",
+ "settings.outOfSync.colSource": "์๋ณธ",
+ "settings.outOfSync.colLocation": "์์น",
+ "settings.outOfSync.resync": "๋๊ธฐํ๋์ง ์์ ํธ๋ ๋ค์ ๋ง์ถ๊ธฐ",
+ "settings.outOfSync.allSynced": "๋ชจ๋ ํธ๋์ด ๋๊ธฐํ๋จ",
+ "settings.outOfSync.summary.other": "{count}๊ฐ ํธ๋์ด ๋๊ธฐํ๋์ง ์์์ด์",
+ "library.importedFile": "๊ฐ์ ธ์จ ํ์ผ",
+ "library.syncing": "๋๊ธฐํ ์คโฆ",
+ "library.syncFailed": "๋๊ธฐํํ์ง ๋ชปํ์ด์. ์ฐ๊ฒฐ์ ํ์ธํด ์ฃผ์ธ์.",
+ "library.recent": "์ต๊ทผ",
+ "library.stemCollections": "์คํ
๋ชจ์",
+ "library.tags": "ํ๊ทธ",
+ "library.newFolder": "์ ํด๋",
+ "queue.importQueue": "๊ฐ์ ธ์ค๊ธฐ ๋๊ธฐ์ด",
+ "queue.paused.other": "์ผ์์ ์ง๋จ. ์ง๋ ์ธ์
์์ ๋จ์ ํธ๋ {count}๊ฐ์์.",
+ "queue.start": "์์",
+ "queue.starting": "์์ํ๋ ์คโฆ",
+ "release.viewDownload": "๋ค์ด๋ก๋ ๋ณด๊ธฐ",
+
+ "track.localFile": "๋ก์ปฌ ํ์ผ",
+ "track.web": "์น",
+ "track.losslessWav": "๋ฌด์์ค (WAV)",
+ "track.compressedMp3": "์์ถ (MP3)",
+ "track.qualityHigh": "๋์",
+ "track.untitled": "์ ๋ชฉ ์๋ ํธ๋",
+ "track.unknown": "์ ์ ์๋ ํธ๋",
+ "track.removed": "์ญ์ ๋จ",
+ "track.moveToTrash": "ํด์งํต์ผ๋ก ์ฎ๊ธฐ๊ธฐ",
+ "track.moveTitleToTrash": "{title}์(๋ฅผ) ํด์งํต์ผ๋ก ์ฎ๊ธฐ๊ธฐ",
+ "folder.dragToReorder": "๋์ด์ ์์ ๋ฐ๊พธ๊ธฐ",
+ "folder.newSubfolder": "์ ํ์ ํด๋",
+ "folder.deleteFolder": "ํด๋ ์ญ์ ",
+ "folder.unsorted": "๋ฏธ๋ถ๋ฅ",
+ "favorites.noSearchMatch": "๊ฒ์๊ณผ ๋ง๋ ์ฆ๊ฒจ์ฐพ๊ธฐ๊ฐ ์์ด์",
+ "favorites.empty": "์์ง ์ฆ๊ฒจ์ฐพ๊ธฐ๊ฐ ์์ด์. ํธ๋์ โฅ๋ฅผ ๋๋ฅด๋ฉด ์ ์ฅ๋ผ์",
+ "queue.extractNext": "์ด ํธ๋์ ๋ค์์ผ๋ก ์ถ์ถ",
+ "queue.moveToFront": "{title}์(๋ฅผ) ๋๊ธฐ์ด ๋งจ ์์ผ๋ก",
+ "queue.cancelImport": "์ด ๊ฐ์ ธ์ค๊ธฐ ์ทจ์",
+ "queue.cancelImportOf": "{title} ๊ฐ์ ธ์ค๊ธฐ ์ทจ์",
+ "queue.pausedStatus": "์ผ์์ ์ง๋จ",
+ "queue.positionInLine": "๋๊ธฐ ์ค. {position}๋ฒ์งธ์์",
+
+ "settings.exportLogs.title": "๋ก๊ทธ ๋ด๋ณด๋ด๊ธฐ",
+ "settings.exportLogs.desc": "๋ชจ๋ ๋ก๊ทธ ํ์ผ์ zip ํ๋๋ก ๋ฐ์์. ๋ฒ๊ทธ ๋ฆฌํฌํธ์ ์ฒจ๋ถํ๊ธฐ ์ข์์. ํ์ผ์ด ์ด๋์ ์๋์ง๋ ๋ก๊ทธ ํญ์์ ๋ณผ ์ ์์ด์.",
+ "settings.exportLogs.button": "๋ก๊ทธ ๋ด๋ณด๋ด๊ธฐ",
+ "settings.exportLogs.preparing": "์ค๋น ์คโฆ",
+ "settings.exportLogs.error": "๋ก๊ทธ๋ฅผ ๋ด๋ณด๋ด์ง ๋ชปํ์ด์.",
+ "status.unavailable": "์ฌ์ฉํ ์ ์์",
+
+ "settings.resetData.title": "์ฑ ๋ฐ์ดํฐ ์ด๊ธฐํ",
+ "settings.resetData.desc": "๋ชจ๋ ํธ๋, ์์
, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํญ๋ชฉ์ ์๊ตฌํ ์ญ์ ํด์. ๊ณต์ ์๋ฒ๋ผ๋ฉด ์ฐ๋ ์ฌ๋ ๋ชจ๋์๊ฒ ์ํฅ์ ์ค์. ๋๋๋ฆด ์ ์์ด์.",
+ "settings.resetData.button": "์ฑ ๋ฐ์ดํฐ ์ด๊ธฐํโฆ",
+
+ "settings.network.allowTitle": "๋คํธ์ํฌ์์ StemDeck์ ์ ์ ํ์ฉ",
+ "settings.network.allowDesc": "ํด๋ํฐ ๊ฐ์ ๋ค๋ฅธ ๊ธฐ๊ธฐ์์ ์๋ ์ฃผ์๋ก StemDeck์ ์ด ์ ์๊ฒ ํด์.",
+ "settings.network.lockNote": "StemDeck์ ์๋ฒ ๋ชจ๋๋ก ์ผ๋ฉด ๋ฐ๊ฟ ์ ์์ด์. ์ด๋ ๋คํธ์ํฌ ์ ์์ ์๋ฒ ์ค์ ์์ ์ ํด์ ธ์.",
+ "settings.network.port.title": "ํฌํธ",
+ "settings.network.port.desc": "StemDeck์ด ์ฐ๋ ํฌํธ์์. ๋ค์ ์์ํ๋ฉด ์ ์ฉ๋ผ์.",
+ "settings.network.noConnection": "๋ก์ปฌ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์ฐพ์ง ๋ชปํ์ด์.",
+ "settings.network.qrHint": "์นด๋ฉ๋ผ๊ฐ ๋๋ฌด ์ ๋์ง ์๋๋ก ํ๋ฆฌ๊ฒ ํด ๋์ด์. ๋๋ฌ์ ํ์ธํ์ธ์.",
+ "settings.network.tapToUnblur": "๋๋ฌ์ ์ ๋ช
ํ๊ฒ",
+ "settings.network.qrCodeFor": "{url} QR ์ฝ๋",
+
+ "settings.export.sampleRate.title": "์ํ๋ ์ดํธ",
+ "settings.export.sampleRate.desc": "๋ด๋ณด๋ด๋ ๋ฏน์ค์ ๊ตฌ๊ฐ(WAV, FLAC, MP3)์ ์ํ๋ ์ดํธ์์. ๋๋ถ๋ถ์ DAW์ ์ํ๋ฌ์๋ 44.1 kHz๊ฐ ์ ๋ง๊ณ , ์ฅ๋น๊ฐ ๋ค๋ฅธ ๊ฐ์ ์๊ตฌํ๋ฉด ๋ฐ๊พธ์ธ์.",
+ "settings.export.videoQuality.title": "MP4 ์์ ํ์ง",
+ "settings.export.videoQuality.desc": "MP4 ๋ด๋ณด๋ด๊ธฐ์ YouTube ์์์ ์ต๋ ํด์๋์์.",
+
+ "settings.logs.locationTab": "์์น",
+ "settings.logs.applicationTab": "์ ํ๋ฆฌ์ผ์ด์
๋ก๊ทธ",
+ "settings.logs.backendTab": "๋ฐฑ์๋ ๋ก๊ทธ",
+ "settings.logs.setupTab": "์ค์น ๋ก๊ทธ",
+ "settings.logs.refresh": "์๋ก๊ณ ์นจ",
+ "settings.logs.loading": "๋ถ๋ฌ์ค๋ ์คโฆ",
+ "settings.logs.location.title": "๋ก๊ทธ ์์น",
+ "settings.logs.location.desc": "์ด ์ปดํจํฐ์์ StemDeck์ด ๋ก๊ทธ๋ฅผ ์ฐ๋ ๊ณณ์ด์์. ์ฝ๊ธฐ ์ ์ฉ์ด๋ ํ์ผ ํ์๊ธฐ์์ ์ด๊ฑฐ๋ ๋ก๊ทธ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฐ์ธ์.",
+ "settings.logs.application.title": "์ ํ๋ฆฌ์ผ์ด์
๋ก๊ทธ",
+ "settings.logs.application.desc": "stemdeck.log์ ์ต๊ทผ ํ ์๊ฐ์ด์์. ํ์ดํ๋ผ์ธ, API, ์์
๊ธฐ๋ก์ด ๋ด๊ฒจ์. ์ฝ๊ธฐ ์ ์ฉ์ด์์.",
+ "settings.logs.applicationAria": "์ ํ๋ฆฌ์ผ์ด์
๋ก๊ทธ (์ฝ๊ธฐ ์ ์ฉ)",
+ "settings.logs.backend.title": "๋ฐฑ์๋ ๋ก๊ทธ",
+ "settings.logs.backend.desc": "backend.log์ ์ต๊ทผ ํ ์๊ฐ์ด์์. ๋ด์ฅ Python ํ๋ก์ธ์ค์ ์๋ณธ ์ถ๋ ฅ์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์
๋ก๊ทธ๊ฐ ๋จ๊ธฐ๊ธฐ ์ ์ ์ค๋จ์ํจ ์ค๋ฅ๊น์ง ๋ค์ด ์์ด์. ๋ฐ์คํฌํฑ ์ฑ ์ ์ฉ์ด๊ณ ์ฝ๊ธฐ ์ ์ฉ์ด์์.",
+ "settings.logs.backendAria": "๋ฐฑ์๋ ๋ก๊ทธ (์ฝ๊ธฐ ์ ์ฉ)",
+ "settings.logs.setup.title": "์ค์น ๋ก๊ทธ",
+ "settings.logs.setup.desc": "setup.log์ ์ต๊ทผ ํ ์๊ฐ์ด์์. ์ฒซ ์คํ ์ค์ ๊ณผ GPU ๋ฐํ์ ์ค์น ๊ธฐ๋ก์ด์์. ๋ฐ์คํฌํฑ ์ฑ ์ ์ฉ์ด๊ณ ์ฝ๊ธฐ ์ ์ฉ์ด์์.",
+ "settings.logs.setupAria": "์ค์น ๋ก๊ทธ (์ฝ๊ธฐ ์ ์ฉ)",
+
+ "settings.registry.title": "์์
๋ ์ง์คํธ๋ฆฌ",
+ "settings.registry.desc": "registry.json์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ณธ ๊ฑฐ์์. ๋์คํฌ์ ์ ์ฅ๋ ์๋ฃ ์์
๋ชฉ๋ก์ด์์.",
+ "settings.registry.aria": "์์
๋ ์ง์คํธ๋ฆฌ (์ฝ๊ธฐ ์ ์ฉ)",
+ "settings.logs.noFilesYet": "์์ง ๋ก๊ทธ ํ์ผ์ด ์์ด์{folderNote}. ์คํ ํ ์ฒซ ๋ฉ์์ง๋ถํฐ ๊ธฐ๋ก์ด ์์๋ผ์.",
+ "settings.logs.folderNotCreated": " (ํด๋๊ฐ ์์ง ๋ง๋ค์ด์ง์ง ์์์ด์)",
+ "settings.logs.failedToLoad": "๋ก๊ทธ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค์ง ๋ชปํ์ด์.",
+
+ "settings.done": "์๋ฃ",
+
+ "settings.folder.rename": "ํด๋ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ",
+ "settings.folder.namePlaceholder": "ํด๋ ์ด๋ฆ",
+ "settings.folder.emptyError": "ํด๋ ์ด๋ฆ์ ์
๋ ฅํด ์ฃผ์ธ์.",
+ "settings.folder.charsError": "๋ฌธ์, ์ซ์, ๊ณต๋ฐฑ ๋๋ - _ ' & ( ) . , ๋ฅผ ์ธ ์ ์์ด์",
+ "settings.folder.cancel": "์ทจ์",
+ "settings.folder.save": "์ ์ฅ",
+
+ "settings.dangerZone": "์ํ ๊ตฌ์ญ",
+
+ "folderEditor.title": "ํด๋ ํธ์ง",
+ "folderEditor.closeAria": "๋ซ๊ธฐ",
+ "folderEditor.nameLabel": "์ด๋ฆ",
+ "folderEditor.colorLabel": "์์",
+ "folderEditor.colorGroupAria": "ํด๋ ์์",
+ "folderEditor.cancel": "์ทจ์",
+ "folderEditor.save": "์ ์ฅ",
+ "folderEditor.emptyError": "ํด๋ ์ด๋ฆ์ ์
๋ ฅํด ์ฃผ์ธ์.",
+ "folderEditor.tooLong": "ํด๋ ์ด๋ฆ์ด ๋๋ฌด ๊ธธ์ด์ (์ต๋ {max}).",
+ "folderEditor.charsError": "๋ฌธ์, ์ซ์, ๊ณต๋ฐฑ ๋๋ - _ ' & ( ) . , ๋ฅผ ์ธ ์ ์์ด์",
+
+ "notifKind.importFailed": "๊ฐ์ ธ์ค๊ธฐ ์คํจ",
+ "notifKind.playbackFailed": "์ฌ์ ์คํจ",
+ "notifKind.exportFailed": "๋ด๋ณด๋ด๊ธฐ ์คํจ",
+ "notifKind.updateCheckFailed": "์
๋ฐ์ดํธ ํ์ธ ์คํจ",
+ "notifKind.default": "๋ฌด์ธ๊ฐ ์คํจํ์ด์",
+ "notif.somethingWentWrong": "๋ฌธ์ ๊ฐ ์๊ฒผ์ด์.",
+ "time.justNow": "๋ฐฉ๊ธ",
+ "time.minAgo.other": "{count}๋ถ ์ ",
+ "time.hoursAgo.other": "{count}์๊ฐ ์ ",
+
+ "job.processing": "์ฒ๋ฆฌ ์ค",
+ "job.queuedTrack": "๋๊ธฐ ์ค์ธ ํธ๋",
+ "job.process": "์ฒ๋ฆฌ",
+ "job.tryAgain": "๋ค์ ์๋",
+ "job.dismiss": "๋ซ๊ธฐ",
+ "job.peakDb": "ํผํฌ {value} dB",
+ "job.dr.compressed": "์์ถ๋จ",
+ "job.dr.moderate": "๋ณดํต",
+ "job.dr.high": "๋์",
+ "job.dr.wide": "๋์",
+ "job.stability.veryStable": "๋งค์ฐ ์์ ์ ",
+ "job.stability.stable": "์์ ์ ",
+ "job.stability.moderate": "๋ณดํต",
+ "job.stability.variable": "๋ณ๋ ์์",
+ "job.bpmValue": "{bpm} BPM",
+ "job.cancelling": "์ทจ์ํ๋ ์คโฆ",
+ "job.processingTrackTitle": "ํธ๋ ์ฒ๋ฆฌ ์ค",
+ "job.unknownError": "์ ์ ์๋ ์ค๋ฅ",
+ "job.noLongerExists": "์๋ฒ์ ์ด ์์
์ด ๋๋ ์์ด์",
+ "job.audioProcessingFailed": "์ค๋์ค ์ฒ๋ฆฌ์ ์คํจํ์ด์.",
+ "job.working": "์์
์คโฆ",
+ "settings.device.changeFailed": "์ฐ์ฐ ์ฅ์น๋ฅผ ๋ฐ๊พธ์ง ๋ชปํ์ด์.",
+ "update.checkFailed": "์
๋ฐ์ดํธ๋ฅผ ํ์ธํ์ง ๋ชปํ์ด์.",
+ "track.unavailableReimport": "ํธ๋์ ์ธ ์ ์์ด์. ๋๋ฌ์ ๋ค์ ๊ฐ์ ธ์ค์ธ์",
+ "track.unavailableReupload": "ํธ๋์ ์ธ ์ ์์ด์. ๋ค์ ์ฌ๋ฆฌ๋ฉด ๋ณต๊ตฌ๋ผ์",
+ "track.audioUnavailableError": "์ด ํธ๋์ ์ค๋์ค๊ฐ ๋๋ ์์ด์. ๋ค์ ์ฌ๋ฆฌ๋ฉด ๋ณต๊ตฌํ ์ ์์ด์.",
+ "job.restoreFailed": "ํธ๋์ ๋ณต๊ตฌํ์ง ๋ชปํ์ด์: {message}",
+ "job.startFailed": "์์
์ ์์ํ์ง ๋ชปํ์ด์: {message}",
+ "upload.unsupportedFormat": "MP3, WAV, FLAC, MP4, M4A, OGG, Opus ํ์ผ๋ง ์ธ ์ ์์ด์.",
+ "upload.fileTooLarge": "ํ์ผ์ด ๋๋ฌด ์ปค์ ({size}). ์ต๋ {max}๊น์ง์์.",
+ "upload.skippedFiles.other": "{count}๊ฐ ํ์ผ์ ๊ฑด๋๋ฐ์์ด์ ({reason}).",
+ "upload.reasonTooLarge": "๋๋ฌด ํฌ๊ฑฐ๋ ์ค๋์ค๊ฐ ์๋",
+ "upload.reasonNotAudio": "์ค๋์ค๊ฐ ์๋",
+
+ "player.readyToImport": "ํธ๋์ ๊ฐ์ ธ์ฌ ์ค๋น๊ฐ ๋์ด์",
+ "player.stillLoadingWaveform": "์์ง ํํ์ ๋ถ๋ฌ์ค๋ ์ค์ด์์โฆ",
+ "player.audioCouldNotLoad": "์ด ํธ๋์ ์ค๋์ค๋ฅผ ๋ถ๋ฌ์ค์ง ๋ชปํ์ด์.",
+ "player.playbackDisabledFull": "์ด ํธ๋์ ์ฌ์ํ ์ ์์ด์. ๋ค๋ฅธ ํธ๋์๋ ์ํฅ์ด ์์ด์.",
+ "player.playbackDisabled": "์ด ํธ๋์ ์ฌ์ํ ์ ์์ด์.",
+
+ "metro.note.full": "{bpm} BPM์ผ๋ก ํด๋ฆญ ์ค์ด์์. ๋นํธ์ {conf}%๊ฐ ๋๋ผ๊ณผ ๋ง๊ณ , {accent}๋นํธ๋ง๋ค ๊ฐ์ธ๋ฅผ ์ค์. ํด๋ฆญ์ด ์ ๋ฐ์ด๋ ๋ ๋ฐฐ๋ก ๋๊ปด์ง๋ฉด /2 ๋๋ x2๋ฅผ ์ฐ์ธ์.",
+ "metro.note.noAccent": "{bpm} BPM์ผ๋ก ํด๋ฆญ ์ค์ด์์. ๋นํธ์ {conf}%๊ฐ ๋๋ผ๊ณผ ๋ง์์. ํด๋ฆญ์ด ์ ๋ฐ์ด๋ ๋ ๋ฐฐ๋ก ๋๊ปด์ง๋ฉด /2 ๋๋ x2๋ฅผ ์ฐ์ธ์.",
+ "metro.note.detectedSingleBar": "{bpm} BPM์ผ๋ก ํด๋ฆญ ์ค์ด์์. ๋นํธ์ {conf}%๊ฐ ๋๋ผ๊ณผ ๋ง๊ณ , ๊ฐ์ง๋ ์ฒซ๋ฐ๋ถํฐ {beats}/4๋ก ๊ฐ์ธ๋ฅผ ์ค์. ํด๋ฆญ์ด ์ ๋ฐ์ด๋ ๋ ๋ฐฐ๋ก ๋๊ปด์ง๋ฉด /2 ๋๋ x2๋ฅผ ์ฐ์ธ์.",
+ "metro.note.detectedMultiBar": "{bpm} BPM์ผ๋ก ํด๋ฆญ ์ค์ด์์. ๋นํธ์ {conf}%๊ฐ ๋๋ผ๊ณผ ๋ง๊ณ , ๊ฐ์ง๋ ๋ฐ์ ๊ตฌ๊ฐ {count}๊ฐ์ ๊ฐ์ธ๋ฅผ ์ค์. ํด๋ฆญ์ด ์ ๋ฐ์ด๋ ๋ ๋ฐฐ๋ก ๋๊ปด์ง๋ฉด /2 ๋๋ x2๋ฅผ ์ฐ์ธ์.",
+ "metro.note.fallback": "์๋น ์ถ์ ๊ธฐ๋ก {bpm} BPM ํด๋ฆญ ์ค์ด์์. ํด๋ฆญ์ด ์ ๋ฐ์ด๋ ๋ ๋ฐฐ๋ก ๋๊ปด์ง๋ฉด /2 ๋๋ x2๋ฅผ ์ฐ์ธ์.",
+
+ "sections.saving": "์ ์ฅ ์ค",
+ "sections.saved": "์ ์ฅ๋จ",
+ "sections.deleteAria": "๊ตฌ๊ฐ ์ญ์ ",
+ "sections.defaultName": "๊ตฌ๊ฐ",
+
+ "playlist.skip.unavailable.other": "์ฌ์ฉํ ์ ์๋ {count}๊ฐ",
+ "playlist.skip.tooLong.other": "๋๋ฌด ๊ธด {count}๊ฐ",
+ "playlist.skip.overflow.other": "์ง๊ธ ๋๊ธฐ์ด์ ๋ค์ด๊ฐ์ง ์๋ {count}๊ฐ",
+ "playlist.skip.truncated": "์ฒ์ {cap}๊ฐ๋ฅผ ๋๋ ๋๋จธ์ง",
+ "playlist.skippingPrefix": "{list}์(๋ฅผ) ๊ฑด๋๋ฐ์ด์.",
+ "playlist.listSep": ", ",
+ "playlist.importAriaLabel": "์ฌ์๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ",
+ "playlist.couldNotRead": "๊ทธ ์ฌ์๋ชฉ๋ก์ ์ฝ์ง ๋ชปํ์ด์: {message}",
+ "playlist.couldNotImport": "๊ทธ ์ฌ์๋ชฉ๋ก์ ๊ฐ์ ธ์ค์ง ๋ชปํ์ด์: {message}",
+ "playlist.queueFull": "๋๊ธฐ์ด์ด ๊ฐ๋ ์ฐผ์ด์. ๋น์์ง๊ธธ ๊ธฐ๋ค๋ฆฌ๊ฑฐ๋ ๋จผ์ ํ๋๋ฅผ ์ทจ์ํด ์ฃผ์ธ์.",
+ "playlist.nothingImportable": "๊ทธ ์ฌ์๋ชฉ๋ก์์ ์ง๊ธ ๊ฐ์ ธ์ฌ ์ ์๋ ๊ฒ์ด ์์ด์.",
+ "playlist.confirmTitle": "์ด ์ฌ์๋ชฉ๋ก์ ๊ฐ์ ธ์ฌ๊น์?",
+ "playlist.confirmBody.other": "ํธ๋ {count}๊ฐ๋ฅผ ํ๋์ฉ ๊ฐ์ ์ด๋ฆ์ ํด๋์ ๋๊ธฐ์ด๋ก ๋ฃ์ด์.{skipped}",
+ "playlist.skippedNote": " (์ฌ์ฉํ ์ ์๋ {count}๊ฐ๋ ๊ฑด๋๋ฐ์ด์.)",
+ "playlist.cancel": "์ทจ์",
+ "playlist.import.other": "ํธ๋ {count}๊ฐ ๊ฐ์ ธ์ค๊ธฐ",
+
+ "resetConfirm.title": "์ฑ ๋ฐ์ดํฐ๋ฅผ ์ด๊ธฐํํ ๊น์?",
+ "resetConfirm.ariaLabel": "์ฑ ๋ฐ์ดํฐ ์ด๊ธฐํ",
+ "resetConfirm.body": "๋ชจ๋ ํธ๋, ์์
, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํญ๋ชฉ์ ์๊ตฌํ ์ญ์ ํด์. ๊ณต์ ์๋ฒ๋ผ๋ฉด ์ฐ๋ ์ฌ๋ ๋ชจ๋์๊ฒ ์ํฅ์ ์ค์. ๋๋๋ฆด ์ ์์ด์.",
+ "resetConfirm.hint": "ํ์ธํ๋ ค๋ฉด RESET์ ์
๋ ฅํ์ธ์.",
+ "resetConfirm.typeToConfirmAria": "ํ์ธํ๋ ค๋ฉด RESET์ ์
๋ ฅํ์ธ์",
+ "resetConfirm.cancel": "์ทจ์",
+ "resetConfirm.go": "์ฑ ๋ฐ์ดํฐ ์ด๊ธฐํ",
+ "resetConfirm.resetting": "์ด๊ธฐํํ๋ ์คโฆ",
+ "resetConfirm.failed": "์ด๊ธฐํํ์ง ๋ชปํ์ด์.",
+ "resetConfirm.failedConnection": "์ด๊ธฐํํ์ง ๋ชปํ์ด์. ์ฐ๊ฒฐ์ ํ์ธํด ์ฃผ์ธ์.",
+};
+
+export const TRANSLATIONS = { en, pl, ja, ko, "zh-Hans": zhHans, de, fr, es, pt, "pt-PT": ptPT, id };
diff --git a/tests/js/i18n-detect.test.mjs b/tests/js/i18n-detect.test.mjs
index a9154fa1..d6f13ee9 100644
--- a/tests/js/i18n-detect.test.mjs
+++ b/tests/js/i18n-detect.test.mjs
@@ -40,6 +40,7 @@ const LOCALES = {
en: ["en", "en-US", "en-GB"],
pl: ["pl", "pl-PL"],
ja: ["ja", "ja-JP"],
+ ko: ["ko", "ko-KR"],
"zh-Hans": ["zh", "zh-CN", "zh-Hans", "zh-SG"],
de: ["de", "de-DE", "de-AT"],
fr: ["fr", "fr-FR", "fr-CA"],