diff --git a/app/assets/lang/ko_KR.toml b/app/assets/lang/ko_KR.toml
new file mode 100644
index 00000000..30f96366
--- /dev/null
+++ b/app/assets/lang/ko_KR.toml
@@ -0,0 +1,299 @@
+[ejs.landing]
+updateAvailableTooltip = "업데이트 가능"
+usernamePlaceholder = "사용자 이름"
+usernameEditButton = "편집"
+settingsTooltip = "설정"
+serverStatus = "서버 상태"
+serverStatusPlaceholder = "닫힘"
+mojangStatus = "모장 상태"
+mojangStatusTooltipTitle = "서비스"
+mojangStatusNETitle = "Non Essential"
+newsButton = "뉴스"
+launchButton = "플레이"
+launchButtonPlaceholder = "• 서버 선택 안함"
+launchDetails = "로딩 중.."
+newsNavigationStatus = "{currentPage} of {totalPages}"
+newsErrorLoadSpan = "뉴스 확인 중.."
+newsErrorFailedSpan = "뉴스 로드 실패"
+newsErrorRetryButton = "다시 시도"
+newsErrorNoneSpan = "뉴스 없음"
+
+[ejs.login]
+loginCancelText = "취소"
+loginSubheader = "MINECRAFT 로그인"
+loginEmailError = "* 잘못된 값"
+loginEmailPlaceholder = "이메일 또는 아이디"
+loginPasswordError = "* 필수"
+loginPasswordPlaceholder = "비밀번호"
+loginForgotPasswordLink = "https://minecraft.net/password/forgot/"
+loginForgotPasswordText = "비밀번호 찾기"
+loginRememberMeText = "로그인 상태 유지"
+loginButtonText = "로그인"
+loginNeedAccountLink = "https://minecraft.net/store/minecraft-java-edition/"
+loginNeedAccountText = "회원가입"
+loginPasswordDisclaimer1 = "비밀번호는 저장되지 않으며 Mojang으로 바로 보내집니다."
+loginPasswordDisclaimer2 = "{appName}은 Mojang AB와 관련이 없습니다."
+
+[ejs.loginOptions]
+loginOptionsTitle = "로그인"
+loginWithMicrosoft = "Microsoft 계정으로 로그인"
+loginWithMojang = "Mojang 계정으로 로그인"
+cancelButton = "취소"
+
+[ejs.overlay]
+serverSelectHeader = "서버 목록"
+serverSelectConfirm = "선택"
+serverSelectCancel = "취소"
+accountSelectHeader = "계정 선택"
+accountSelectConfirm = "선택"
+accountSelectCancel = "취소"
+
+[ejs.settings]
+navHeaderText = "설정"
+navAccount = "계정"
+navMinecraft = "마인크래프트"
+navMods = "모드"
+navJava = "자바"
+navLauncher = "런처"
+navAbout = "정보"
+navUpdates = "업데이트"
+navDone = "완료"
+tabAccountHeaderText = "계정 설정"
+tabAccountHeaderDesc = "새로운 계정을 추가하거나 기존 계정을 관리하세요."
+microsoftAccount = "Microsoft"
+addMicrosoftAccount = "+ 마이크로소프트 계정 추가"
+mojangAccount = "Mojang"
+addMojangAccount = "+ 모장 계정 추가"
+minecraftTabHeaderText = "마인크래프트 설정"
+minecraftTabHeaderDesc = "마인크래프트 게임 실행에 관련한 설정입니다."
+gameResolutionTitle = "해상도"
+launchFullscreenTitle = "전체화면"
+autoConnectTitle = "서버 자동 접속"
+launchDetachedTitle = "게임 프로세스 별도 실행"
+launchDetachedDesc = "별도로 실행하지 않으면 런처를 종료하면 게임이 종료됩니다."
+tabModsHeaderText = "모드 설정"
+tabModsHeaderDesc = "모드를 활성화하거나 비활성화합니다."
+switchServerButton = "변경"
+requiredMods = "필수 모드"
+optionalMods = "선택 모드"
+dropinMods = "추가 모드"
+addMods = "모드 추가하기"
+dropinRefreshNote = "(F5를 눌러 새로고침을 하세요)"
+shaderpacks = "셰이더"
+shaderpackDesc = "셰이더를 활성화하거나 비활성화합니다.
직접 추가할 수도 있습니다."
+selectShaderpack = "셰이더 선택"
+tabJavaHeaderText = "자바 설정"
+tabJavaHeaderDesc = "자바 설정을 관리합니다. (고급 사용자 추천)"
+memoryTitle = "메모리(RAM)"
+maxRAM = "최대 메모리"
+minRAM = "최소 메모리"
+memoryDesc = "최소 메모리는 3GB 이상을 권장합니다.
최소와 최대 메모리를 같은 값으로 설정하면 렉이 줄어들 수 있습니다.."
+memoryTotalTitle = "전체"
+memoryAvailableTitle = "가용 가능"
+javaExecutableTitle = "자바 런타임"
+javaExecSelDialogTitle = "자바 실행 파일 선택"
+javaExecSelButtonText = "파일 선택"
+javaExecDesc = "실행전 자바 런타임을 검증합니다."
+javaPathDesc = "경로는 {pathSuffix}. 로 끝나야 합니다."
+jvmOptsTitle = "추가 JVM 옵션"
+jvmOptsDesc = "실행 시 JVM에 제공할 옵션입니다. -Xms 와 -Xmx 는 포함되지 않아야 합니다."
+launcherTabHeaderText = "런처 설정"
+launcherTabHeaderDesc = "런처에 관한 설정"
+allowPrereleaseTitle = "베타버전 업데이트 허용"
+allowPrereleaseDesc = "베타버전은 버그를 포함할 수 있습니다.
만일 당신이 베타버전을 사용하고 계시다면 활성화되어 있을 것입니다."
+dataDirectoryTitle = "데이터 폴더"
+selectDataDirectory = "데이터 디렉토리 선택"
+chooseFolder = "폴더 선택"
+dataDirectoryDesc = "모든 게임 파일과 자동 설치된 자바는 데이터 폴더에 저장됩니다."
+aboutTabHeaderText = "정보"
+aboutTabHeaderDesc = "현재 버전 정보"
+aboutTitle = "{appName}"
+stableRelease = "정식 버전"
+versionText = "버전 "
+sourceGithub = " 원본 소스 "
+support = " 지원 "
+devToolsConsole = " 개발자 도구 "
+releaseNotes = "릴리스 노트"
+changelog = "변경사항"
+noReleaseNotes = "릴리스 노트 없음"
+viewReleaseNotes = "GitHub에서 릴리스 노트 보기"
+launcherUpdatesHeaderText = "런처 업데이트"
+launcherUpdatesHeaderDesc = "런처를 업데이트합니다."
+checkForUpdates = "업데이트 확인!"
+whatsNew = "새로운 기능"
+updateReleaseNotes = "업데이트 릴리스 노트"
+
+
+[ejs.waiting]
+waitingText = "마이크로소프트 계정 연결 대기 중..."
+
+[ejs.welcome]
+continueButton = "계속"
+
+
+[js.discord]
+waiting = "클라이언트 대기 중.."
+state = "서버: {shortId}"
+
+[js.index]
+microsoftLoginTitle = "Microsoft 로그인"
+microsoftLogoutTitle = "Microsoft 로그아웃"
+
+[js.login]
+login = "로그인"
+loggingIn = "로그인 중"
+success = "성공"
+tryAgain = "다시 시도"
+
+[js.login.error]
+invalidValue = "* 잘못된 값"
+requiredValue = "* 필수"
+
+[js.login.error.unknown]
+title = "로그인 중 알 수 없는 오류 발생"
+desc = "알 수 없는 오류가 발생했습니다. 자세한 내용은 콘솔을 참조하세요."
+
+[js.landing.launch]
+pleaseWait = "로딩 중.."
+failureTitle = "실행 중 오류 발생"
+failureText = "자세한 내용은 콘솔 (CTRL + Shift + i)을 참조하세요."
+okay = "확인"
+
+[js.landing.selectedAccount]
+noAccountSelected = "계정이 선택되지 않았습니다"
+
+[js.landing.selectedServer]
+noSelection = "서버가 선택되지 않았습니다"
+loading = "로딩 중.."
+
+[js.landing.serverStatus]
+server = "서버"
+offline = "오프라인"
+players = "플레이어"
+
+[js.landing.systemScan]
+checking = "시스템 정보 확인 중.."
+noCompatibleJava = "호환 가능한
Java 설치 파일 없음"
+installJavaMessage = "마인크래프트를 실행하려면 64비트 Java {major}가 필요합니다. 설치하시겠습니까?"
+installJava = "Java 설치"
+installJavaManually = "수동 설치"
+javaDownloadPrepare = "Java 다운로드 준비 중.."
+javaDownloadFailureTitle = "Java 다운로드 중 오류 발생"
+javaDownloadFailureText = "자세한 내용은 콘솔 (CTRL + Shift + i)을 참조하세요."
+javaRequired = "실행을 위해
Java가 필요합니다"
+javaRequiredMessage = '실행하려면 유효한 x64 Java {major} 설치가 필요합니다.
Java 수동 설치 방법은 Java 관리 가이드를 참조하세요.'
+javaRequiredDismiss = "이해했습니다"
+javaRequiredCancel = "뒤로 가기"
+
+[js.landing.downloadJava]
+findJdkFailure = "OpenJDK 배포판을 찾지 못했습니다."
+javaDownloadCorruptedError = "다운로드한 JDK의 해시가 잘못되었습니다. 파일이 손상되었을 수 있습니다."
+extractingJava = "Java 추출 중"
+javaInstalled = "Java 설치 완료!"
+
+[js.landing.dlAsync]
+loadingServerInfo = "서버 정보 로딩 중.."
+fatalError = "치명적인 오류"
+unableToLoadDistributionIndex = "배포 인덱스의 복사본을 로드할 수 없습니다. 자세한 내용은 콘솔 (CTRL + Shift + i)을 참조하세요."
+pleaseWait = "잠시만 기다려 주세요.."
+errorDuringLaunchTitle = "실행 중 오류 발생"
+seeConsoleForDetails = "자세한 내용은 콘솔 (CTRL + Shift + i)을 참조하세요."
+validatingFileIntegrity = "파일 무결성 검증 중.."
+errorDuringFileVerificationTitle = "파일 검증 중 오류 발생"
+downloadingFiles = "파일 다운로드 중.."
+errorDuringFileDownloadTitle = "파일 다운로드 중 오류 발생"
+preparingToLaunch = "실행 준비 중.."
+launchingGame = "게임 실행 중.."
+launchWrapperNotDownloaded = "주요 파일인 LaunchWrapper가 제대로 다운로드되지 않았습니다. 결과적으로, 게임을 실행할 수 없습니다.
이 문제를 해결하려면, 일시적으로 바이러스 백신 소프트웨어를 비활성화하고 게임을 다시 실행해 보세요.
시간이 있으시다면, 문제 제출을 해주시면, 당신이 사용하는 바이러스 백신 소프트웨어에 대한 정보와 함께 문제를 해결하려고 노력하겠습니다."
+doneEnjoyServer = "완료. 즐거운 시간 보내세요!"
+checkConsoleForDetails = "자세한 내용은 콘솔 (CTRL + Shift + i)을 참조하세요."
+
+[js.landing.news]
+checking = "뉴스 확인 중"
+
+# IDK how to translate this xD
+[js.landing.discord]
+loading = "Loading game.."
+joining = "Sailing to Westeros!"
+joined = "Exploring the Realm!"
+
+[js.overlay]
+dismiss = "해제"
+
+[js.settings.fileSelectors]
+executables = "실행 파일"
+allFiles = "모든 파일"
+
+[js.settings.mstfLogin]
+errorTitle = "문제가 발생했습니다"
+errorMessage = "Microsoft 인증이 실패했습니다. 다시 시도해 주세요."
+okButton = "확인"
+
+[js.settings.mstfLogout]
+errorTitle = "문제가 발생했습니다"
+errorMessage = "Microsoft 로그아웃이 실패했습니다. 다시 시도해 주세요."
+okButton = "확인"
+
+[js.settings.authAccountSelect]
+selectButton = "계정 선택"
+selectedButton = "선택된 계정 ✔"
+
+[js.settings.authAccountLogout]
+lastAccountWarningTitle = "경고
마지막 계정입니다"
+lastAccountWarningMessage = "런처를 사용하려면 적어도 하나의 계정에 로그인해야 합니다. 로그아웃 후 다시 로그인해야 합니다.
로그아웃하시겠습니까?"
+confirmButton = "확인"
+cancelButton = "취소"
+
+[js.settings.authAccountPopulate]
+username = "닉네임"
+uuid = "UUID"
+selectAccount = "계정 선택"
+selectedAccount = "선택된 계정 ✓"
+logout = "로그아웃"
+
+[js.settings.dropinMods]
+removeButton = "제거"
+deleteFailedTitle = "드롭인 모드 {fullName} 삭제 실패"
+deleteFailedMessage = "파일이 사용 중이지 않은지 확인하고 다시 시도하세요."
+failedToggleTitle = "하나 이상의 드롭인 모드 전환 실패"
+okButton = "확인"
+
+[js.settings.serverListing]
+mainServer = "주 서버"
+
+[js.settings.java]
+selectedJava = "선택됨: Java {version} ({vendor})"
+invalidSelection = "유효하지 않음 (자바 런타임을 선택해 주세요)"
+requiresJava = "64비트 {major}이 필요합니다."
+availableOptions = "Java {major} (HotSpot VM)에 대한 사용 가능한 옵션"
+
+[js.settings.about]
+preReleaseTitle = "프리릴리스"
+stableReleaseTitle = "정식 버전"
+releaseNotesFailed = "릴리스 노트 로드 실패."
+
+[js.settings.updates]
+newReleaseTitle = "새로운 릴리스 사용 가능"
+newPreReleaseTitle = "새로운 프리릴리스 사용 가능"
+downloadingButton = "다운로드 중.."
+downloadButton = 'GitHub에서 다운로드런처를 닫고 dmg를 실행하여 업데이트하세요.'
+latestVersionTitle = "최신 버전 사용 중"
+checkForUpdatesButton = "업데이트 확인"
+checkingForUpdatesButton = "업데이트 확인 중.."
+
+[js.uibinder.startup]
+fatalErrorTitle = "치명적인 오류: 배포 인덱스 로드 실패"
+fatalErrorMessage = "서버에 연결하여 배포 인덱스를 다운로드할 수 없었습니다. 로컬에 복사본이 없어 로드할 수 없습니다.
배포 인덱스는 최신 서버 정보를 제공하는 핵심 파일입니다. 이 없이는 런처가 시작할 수 없습니다. 인터넷에 연결되어 있는지 확인하고 애플리케이션을 다시 실행하세요."
+closeButton = "닫기"
+
+[js.uibinder.validateAccount]
+failedMessageTitle = "로그인 새로 고침 실패"
+failedMessage = "{account}에 대한 로그인을 새로 고침하지 못했습니다. 다른 계정을 선택하거나 다시 로그인해 주세요."
+failedMessageSelectAnotherAccount = "{account}에 대한 로그인을 새로 고침하지 못했습니다. 다시 로그인해 주세요."
+loginButton = "로그인"
+selectAnotherAccountButton = "다른 계정 선택"
+
+[js.uicore.autoUpdate]
+checkingForUpdateButton = "업데이트 확인 중..."
+installNowButton = "설치하기"
+checkForUpdatesButton = "업데이트 확인"