diff --git a/vanilla-os/abroot/locales/en.yml b/vanilla-os/abroot/locales/en.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c68332f592fc892568a7e110beb886b051e99ce5
--- /dev/null
+++ b/vanilla-os/abroot/locales/en.yml
@@ -0,0 +1,86 @@
+abroot:
+  use: "abroot"
+  long: "ABRoot provides full immutability and atomicity by performing transactions
+    between 2 root partitions (A<->B)"
+  short: "ABRoot provides full immutability and atomicity by performing transactions
+    between 2 root partitions (A<->B)"
+  verboseFlag: "show more detailed output"
+
+kargs:
+  use: "kargs"
+  long: "Manage kernel parameters."
+  short: "Manage kernel parameters"
+  rootRequired: "You must be root to run this command."
+  notChanged: "No changes were made to kernel parameters."
+  applyFailed: "Apply command failed: %s\n"
+
+rollback:
+  use: "rollback"
+  long: "Executes a system rollback, discarding changes made to the present root."
+  short: "Return the system to a previous state"
+  rootRequired: "You must be root to run this command."
+
+pkg:
+  use: "pkg"
+  long: "Install and manage packages."
+  short: "Manage packages"
+  rootRequired: "You must be root to run this command."
+  noPackageNameProvided: "You must provide at least one package name for this operation."
+  addedMsg: "Package(s) %s added.\n"
+  applyFailed: "Apply command failed: %s\n"
+  removedMsg: "Package(s) %s removed.\n"
+  listMsg: "Added packages:\n%s\nRemoved packages:\n%s\n"
+  dryRunFlag: "perform a dry run of the operation"
+
+status:
+  use: "status"
+  long: "Display the current ABRoot status."
+  short: "Display status"
+  jsonFlag: "Show output in JSON format"
+  dumpFlag: "Dump the ABRoot status to an archive"
+  rootRequired: "You must be root to run this command."
+  infoMsg: |
+    ABRoot Partitions:
+      - Present: %s ◄
+      - Future: %s
+
+    Loaded Configuration: %s
+
+    Device Specifications:
+      - CPU: %s
+      - GPU:%s
+      - Memory: %s
+
+    ABImage:
+      - Digest: %s
+      - Timestamp: %s
+      - Image: %s
+
+    Kernel Arguments: %s
+
+    Packages:
+      - Added: %s
+      - Removed: %s
+      - Unstaged: %s%s
+  unstagedFoundMsg: "\n\t\tThere are %d unstaged packages. Please run 'abroot pkg
+    apply' to apply them."
+  dumpMsg: "Dumped ABRoot status to %s\n"
+
+upgrade:
+  use: "upgrade"
+  long: "Update the boot partition for maintenance purposes (for advanced users only)"
+  short: "Update the boot partition"
+  forceFlag: "force update the boot partition without asking for confirmation"
+  rootRequired: "You must be root to run this command."
+  checkingSystemUpdate: "Checking for system updates..."
+  checkingPackageUpdate: "Checking for package updates..."
+  systemUpdateAvailable: "There is an update for your system."
+  packageUpdateAvailable: "There are %d package updates."
+  noUpdateAvailable: "No update available."
+  checkOnlyFlag: "check for updates but do not apply them"
+  dryRunFlag: "perform a dry run of the operation"
+  dryRunSuccess: "Dry run completed successfully."
+  added: "Added"
+  upgraded: "Upgraded"
+  downgraded: "Downgraded"
+  removed: "Removed"
\ No newline at end of file
diff --git a/vanilla-os/abroot/locales/ko.yml b/vanilla-os/abroot/locales/ko.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c2035c1c8a486b4701502247df6f158a9bad63d8
--- /dev/null
+++ b/vanilla-os/abroot/locales/ko.yml
@@ -0,0 +1,60 @@
+abroot:
+  use: "abroot"
+  long: "ABRoot은 두 개의 루트 파티션 간의 트랜잭션을 수행하여 완전한 불변성과 원자성을 제공합니다 (A<->B)."
+  short: "ABRoot은 두 개의 루트 파티션 간의 트랜잭션을 수행하여 완전한 불변성과 원자성을 제공합니다 (A<->B)."
+  verboseFlag: "더 자세한 출력 표시"
+
+kargs:
+  use: "kargs"
+  long: "커널 매개변수를 관리합니다."
+  short: "커널 매개변수를 관리합니다"
+  rootRequired: "이 명령을 실행하려면 루트여야 합니다."
+  notChanged: 커널 매개변수에 변경 사항이 없습니다.
+  applyFailed: "명령 적용이 실패했습니다: %s\n"
+rollback:
+  use: "rollback"
+  long: "현재 루트에 대한 변경 사항을 버림으로써 시스템 rollback을 실행합니다."
+  short: "시스템을 이전 상태로 복원합니다."
+  rootRequired: "이 명령을 실행하려면 루트여야 합니다."
+pkg:
+  addedMsg: "패키지(들) %s가 추가되었습니다.\n"
+  use: pkg
+  long: 패키지를 설치하고 관리합니다.
+  short: 패키지를 관리합니다.
+  rootRequired: 이 명령을 실행하려면 루트여야 합니다.
+  noPackageNameProvided: 이 작업에는 적어도 하나의 패키지 이름을 제공해야 합니다.
+  applyFailed: "명령 적용이 실패했습니다: %s\n"
+  removedMsg: "패키지(들) %s가 제거되었습니다.\n"
+  listMsg: "추가된 패키지:\n%s\n제거된 패키지:\n%s\n"
+  dryRunFlag: 작업의 시뮬레이션을 실행하세요.
+status:
+  use: status
+  long: 현재 ABRoot 상태를 표시합니다.
+  short: 상태를 표시합니다.
+  dumpFlag: ABRoot 상태를 아카이브에 덤프합니다.
+  rootRequired: 이 명령을 실행하려면 루트여야 합니다.
+  jsonFlag: JSON 형식으로 출력을 표시합니다.
+  unstagedFoundMsg: "\n\t\t미적용된 패키지가 %d개 있습니다. 'abroot pkg apply'를 실행하여 적용하십시오."
+  infoMsg: "ABRoot 파티션:\n  - 과거: %s ◄\n  - 미래: %s\n\n로드된 구성: %s\n\nPC 사양:\n  - CPU:
+    %s\n  - GPU:%s\n  - Memory: %s\n\nAB이미지:\n  - Digest: %s\n  - Timestamp: %s\n\
+    \  - 이미지: %s\n\n커널 매개변수: %s\n\n패키지:\n  - 추가된 항목: %s\n  - 제거된 항목: %s\n  - 미적용된
+    항목: %s%s\n"
+  dumpMsg: "ABRoot 상태를 %s에 덤프했습니다.\n"
+upgrade:
+  forceFlag: 확인 없이 부트 파티션을 강제로 업데이트합니다.
+  rootRequired: 이 명령을 실행하려면 루트여야 합니다.
+  use: upgrade
+  long: 유지 보수 목적으로 부트 파티션을 업데이트합니다 (고급 사용자 전용)
+  short: 부트 파티션을 업데이트합니다
+  noUpdateAvailable: 시스템에 대한 업데이트가 없습니다.
+  checkOnlyFlag: 업데이트를 적용하지 않고 오직 확인합니다.
+  removed: 제거된 항목
+  downgraded: 다운그레이드 된 항목
+  packageUpdateAvailable: '%d개의 패키지 업데이트가 있습니다'
+  systemUpdateAvailable: 시스템에 대한 업데이트가 있습니다.
+  upgraded: 업그레이드 된 항목
+  added: 추가된 항목
+  checkingPackageUpdate: 패키지 업데이트 확인중...
+  checkingSystemUpdate: 시스템 업데이트 확인중...
+  dryRunFlag: 작업의 시뮬레이션을 실행하세요.
+  dryRunSuccess: 시뮬레이션이 성공적으로 완료되었습니다.
diff --git a/vanilla-os/apx-gui/po/apx_gui.pot b/vanilla-os/apx-gui/po/apx_gui.pot
new file mode 100644
index 0000000000000000000000000000000000000000..41a494c456ce1b2eb2b81f9a1ac53850b6fb8044
--- /dev/null
+++ b/vanilla-os/apx-gui/po/apx_gui.pot
@@ -0,0 +1,279 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the apx_gui package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: apx_gui\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-07-10 18:39+0530\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: data/org.vanillaos.ApxGUI.desktop.in:3
+msgid "Apx"
+msgstr ""
+
+#: data/org.vanillaos.ApxGUI.appdata.xml.in:7
+msgid "A frontend in GTK 4 and Libadwaita for Apx."
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:6 apx_gui/gtk/window-main.ui:70
+msgid "New Package Manager"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:23 apx_gui/gtk/create-stack.ui:23
+#: apx_gui/gtk/create-subsystem.ui:23
+msgid "Cancel"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:28 apx_gui/gtk/create-stack.ui:28
+#: apx_gui/gtk/create-subsystem.ui:28
+msgid "Create"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:41 apx_gui/gtk/tab-pkgmanager.ui:24
+#: apx_gui/gtk/tab-stack.ui:24
+msgid "Details"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:44 apx_gui/gtk/create-stack.ui:44
+#: apx_gui/gtk/create-subsystem.ui:44
+msgid "Name"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:49 apx_gui/gtk/tab-pkgmanager.ui:27
+msgid "Need Sudo"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:70
+msgid "Commands"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:73 apx_gui/gtk/tab-pkgmanager.ui:57
+msgid "Autoremove"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:78 apx_gui/gtk/tab-pkgmanager.ui:63
+msgid "Clean"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:83 apx_gui/gtk/tab-pkgmanager.ui:69
+msgid "Install"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:88 apx_gui/gtk/tab-pkgmanager.ui:75
+msgid "List"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:93 apx_gui/gtk/tab-pkgmanager.ui:81
+msgid "Purge"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:98 apx_gui/gtk/tab-pkgmanager.ui:87
+msgid "Remove"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:103 apx_gui/gtk/tab-pkgmanager.ui:93
+msgid "Search"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:108 apx_gui/gtk/tab-pkgmanager.ui:99
+msgid "Show"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:113 apx_gui/gtk/tab-pkgmanager.ui:105
+msgid "Update"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:118 apx_gui/gtk/tab-pkgmanager.ui:111
+msgid "Upgrade"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:144
+msgid "Creating Package Manager…"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:145
+msgid "Please wait while the package manager is being created."
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:169
+msgid "An Error Occurred"
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:170
+msgid "An error occurred while creating the package manager."
+msgstr ""
+
+#: apx_gui/gtk/create-pkgmanager.ui:174 apx_gui/gtk/create-stack.ui:148
+#: apx_gui/gtk/create-subsystem.ui:108
+msgid "Close"
+msgstr ""
+
+#: apx_gui/gtk/create-stack.ui:6 apx_gui/gtk/window-main.ui:66
+msgid "New Stack"
+msgstr ""
+
+#: apx_gui/gtk/create-stack.ui:49 apx_gui/gtk/tab-stack.ui:27
+msgid "Base"
+msgstr ""
+
+#: apx_gui/gtk/create-stack.ui:54 apx_gui/gtk/tab-stack.ui:38
+#: apx_gui/gtk/tab-subsystem.ui:29
+msgid "Package Manager"
+msgstr ""
+
+#: apx_gui/gtk/create-stack.ui:80
+msgid "Add Package"
+msgstr ""
+
+#: apx_gui/gtk/create-stack.ui:92
+msgid "New Package"
+msgstr ""
+
+#: apx_gui/gtk/create-stack.ui:119
+msgid "Please wait while the stack is being created."
+msgstr ""
+
+#: apx_gui/gtk/create-stack.ui:144
+msgid "An error occurred while creating the stack."
+msgstr ""
+
+#: apx_gui/gtk/create-subsystem.ui:6 apx_gui/gtk/window-main.ui:62
+msgid "New Subsystem"
+msgstr ""
+
+#: apx_gui/gtk/create-subsystem.ui:49 apx_gui/gtk/tab-subsystem.ui:19
+msgid "Stack"
+msgstr ""
+
+#: apx_gui/gtk/create-subsystem.ui:78
+msgid "Creating Subsystem…"
+msgstr ""
+
+#: apx_gui/gtk/create-subsystem.ui:79
+msgid "Please wait while the subsystem is being created."
+msgstr ""
+
+#: apx_gui/gtk/create-subsystem.ui:104
+msgid "An error occurred while creating the subsystem."
+msgstr ""
+
+#: apx_gui/gtk/editor.ui:12
+msgid "Start or Open a Subsystem"
+msgstr ""
+
+#: apx_gui/gtk/editor.ui:13
+msgid "Start by opening a subsystem, stack or package manager on the left."
+msgstr ""
+
+#: apx_gui/gtk/help-overlay.ui:11
+msgctxt "shortcut window"
+msgid "General"
+msgstr ""
+
+#: apx_gui/gtk/help-overlay.ui:14
+msgctxt "shortcut window"
+msgid "Show Shortcuts"
+msgstr ""
+
+#: apx_gui/gtk/help-overlay.ui:20
+msgctxt "shortcut window"
+msgid "Quit"
+msgstr ""
+
+#: apx_gui/gtk/help-overlay.ui:26
+msgctxt "shortcut window"
+msgid "Create"
+msgstr ""
+
+#: apx_gui/gtk/help-overlay.ui:29
+msgctxt "shortcut window"
+msgid "New Subsystem"
+msgstr ""
+
+#: apx_gui/gtk/help-overlay.ui:35
+msgctxt "shortcut window"
+msgid "New Stack"
+msgstr ""
+
+#: apx_gui/gtk/help-overlay.ui:41
+msgctxt "shortcut window"
+msgid "New Package Manager"
+msgstr ""
+
+#: apx_gui/gtk/tab-pkgmanager.ui:13
+msgid "This package manager is built-in and cannot be edited or deleted."
+msgstr ""
+
+#: apx_gui/gtk/tab-pkgmanager.ui:42 apx_gui/gtk/tab-stack.ui:49
+msgid "Built-In"
+msgstr ""
+
+#: apx_gui/gtk/tab-pkgmanager.ui:119 apx_gui/gtk/tab-stack.ui:71
+msgid "Destructive Actions"
+msgstr ""
+
+#: apx_gui/gtk/tab-pkgmanager.ui:122
+msgid "Delete Package Manager"
+msgstr ""
+
+#: apx_gui/gtk/tab-stack.ui:13
+msgid "This stack is built-in and cannot be edited or deleted."
+msgstr ""
+
+#: apx_gui/gtk/tab-stack.ui:59
+msgid "Packages"
+msgstr ""
+
+#: apx_gui/gtk/tab-stack.ui:74
+msgid "Delete Stack"
+msgstr ""
+
+#: apx_gui/gtk/tab-subsystem.ui:9
+msgid "Status"
+msgstr ""
+
+#: apx_gui/gtk/tab-subsystem.ui:53
+msgid "Open Console"
+msgstr ""
+
+#: apx_gui/gtk/tab-subsystem.ui:54
+msgid "Enter a console in this subsystem's environment."
+msgstr ""
+
+#: apx_gui/gtk/tab-subsystem.ui:74
+msgid "Reset Subsystem"
+msgstr ""
+
+#: apx_gui/gtk/tab-subsystem.ui:89
+msgid "Delete Subsystem"
+msgstr ""
+
+#: apx_gui/gtk/window-main.ui:78
+msgid "_Keyboard Shortcuts"
+msgstr ""
+
+#: apx_gui/gtk/window-main.ui:82
+msgid "_About Apx GUI"
+msgstr ""
+
+#: apx_gui/main.py:102
+msgid "translator_credits"
+msgstr ""
+
+#: apx_gui/main.py:107
+msgid "Contributors"
+msgstr ""
+
+#: apx_gui/main.py:113
+msgid "Tools"
+msgstr ""
diff --git a/vanilla-os/apx-gui/po/ko.po b/vanilla-os/apx-gui/po/ko.po
new file mode 100644
index 0000000000000000000000000000000000000000..7f4a25323b4ee2655a5ce69b8dc0f0d6898f76f5
--- /dev/null
+++ b/vanilla-os/apx-gui/po/ko.po
@@ -0,0 +1,296 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the apx_gui package.
+# MJKim <kmj10727@gmail.com>, 2023.
+# lmj0927 <lmjj0927@naver.com>, 2023.
+msgid ""
+msgstr ""
+"Project-Id-Version: apx_gui\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-07-10 18:39+0530\n"
+"PO-Revision-Date: 2023-12-21 19:35+0000\n"
+"Last-Translator: lmj0927 <lmjj0927@naver.com>\n"
+"Language-Team: Korean <https://hosted.weblate.org/projects/vanilla-os/"
+"apx-gui/ko/>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 5.4-dev\n"
+
+#: data/org.vanillaos.ApxGUI.desktop.in:3
+msgid "Apx"
+msgstr "Apx"
+
+#: data/org.vanillaos.ApxGUI.appdata.xml.in:7
+msgid "A frontend in GTK 4 and Libadwaita for Apx."
+msgstr "APX 패키지 관리자를 위한 GTK 4, Libadwaita 프론트엔드입니다."
+
+#: apx_gui/gtk/create-pkgmanager.ui:6 apx_gui/gtk/window-main.ui:70
+msgid "New Package Manager"
+msgstr "새 패키지 관리자"
+
+#: apx_gui/gtk/create-pkgmanager.ui:23 apx_gui/gtk/create-stack.ui:23
+#: apx_gui/gtk/create-subsystem.ui:23
+msgid "Cancel"
+msgstr "취소"
+
+#: apx_gui/gtk/create-pkgmanager.ui:28 apx_gui/gtk/create-stack.ui:28
+#: apx_gui/gtk/create-subsystem.ui:28
+msgid "Create"
+msgstr "만들기"
+
+#: apx_gui/gtk/create-pkgmanager.ui:41 apx_gui/gtk/tab-pkgmanager.ui:24
+#: apx_gui/gtk/tab-stack.ui:24
+msgid "Details"
+msgstr "자세히 보기"
+
+#: apx_gui/gtk/create-pkgmanager.ui:44 apx_gui/gtk/create-stack.ui:44
+#: apx_gui/gtk/create-subsystem.ui:44
+msgid "Name"
+msgstr "이름"
+
+#: apx_gui/gtk/create-pkgmanager.ui:49 apx_gui/gtk/tab-pkgmanager.ui:27
+msgid "Need Sudo"
+msgstr "Sudo 필요"
+
+#: apx_gui/gtk/create-pkgmanager.ui:70
+msgid "Commands"
+msgstr "명령어"
+
+#: apx_gui/gtk/create-pkgmanager.ui:73 apx_gui/gtk/tab-pkgmanager.ui:57
+msgid "Autoremove"
+msgstr "자동 삭제"
+
+#: apx_gui/gtk/create-pkgmanager.ui:78 apx_gui/gtk/tab-pkgmanager.ui:63
+msgid "Clean"
+msgstr "청소하기"
+
+#: apx_gui/gtk/create-pkgmanager.ui:83 apx_gui/gtk/tab-pkgmanager.ui:69
+#, fuzzy
+msgid "Install"
+msgstr "설치하는 중..."
+
+#: apx_gui/gtk/create-pkgmanager.ui:88 apx_gui/gtk/tab-pkgmanager.ui:75
+msgid "List"
+msgstr "목록"
+
+#: apx_gui/gtk/create-pkgmanager.ui:93 apx_gui/gtk/tab-pkgmanager.ui:81
+msgid "Purge"
+msgstr "완전히 삭제"
+
+#: apx_gui/gtk/create-pkgmanager.ui:98 apx_gui/gtk/tab-pkgmanager.ui:87
+msgid "Remove"
+msgstr "삭제"
+
+#: apx_gui/gtk/create-pkgmanager.ui:103 apx_gui/gtk/tab-pkgmanager.ui:93
+msgid "Search"
+msgstr "검색"
+
+#: apx_gui/gtk/create-pkgmanager.ui:108 apx_gui/gtk/tab-pkgmanager.ui:99
+msgid "Show"
+msgstr "표시"
+
+#: apx_gui/gtk/create-pkgmanager.ui:113 apx_gui/gtk/tab-pkgmanager.ui:105
+msgid "Update"
+msgstr "업데이트"
+
+#: apx_gui/gtk/create-pkgmanager.ui:118 apx_gui/gtk/tab-pkgmanager.ui:111
+msgid "Upgrade"
+msgstr "업그레이드"
+
+#: apx_gui/gtk/create-pkgmanager.ui:144
+msgid "Creating Package Manager…"
+msgstr "패키지 관리자를 만드는 중…"
+
+#: apx_gui/gtk/create-pkgmanager.ui:145
+msgid "Please wait while the package manager is being created."
+msgstr "패키지 관리자가 만들어질 때까지 기다리십시오."
+
+#: apx_gui/gtk/create-pkgmanager.ui:169
+msgid "An Error Occurred"
+msgstr "오류 발생"
+
+#: apx_gui/gtk/create-pkgmanager.ui:170
+msgid "An error occurred while creating the package manager."
+msgstr "패키지 관리자를 만드는 중 오류가 발생했습니다."
+
+#: apx_gui/gtk/create-pkgmanager.ui:174 apx_gui/gtk/create-stack.ui:148
+#: apx_gui/gtk/create-subsystem.ui:108
+msgid "Close"
+msgstr "닫기"
+
+#: apx_gui/gtk/create-stack.ui:6 apx_gui/gtk/window-main.ui:66
+msgid "New Stack"
+msgstr "새 스택"
+
+#: apx_gui/gtk/create-stack.ui:49 apx_gui/gtk/tab-stack.ui:27
+msgid "Base"
+msgstr "기반"
+
+#: apx_gui/gtk/create-stack.ui:54 apx_gui/gtk/tab-stack.ui:38
+#: apx_gui/gtk/tab-subsystem.ui:29
+msgid "Package Manager"
+msgstr "패키지 관리자"
+
+#: apx_gui/gtk/create-stack.ui:80
+msgid "Add Package"
+msgstr "패키지 추가"
+
+#: apx_gui/gtk/create-stack.ui:92
+msgid "New Package"
+msgstr "새 패키지"
+
+#: apx_gui/gtk/create-stack.ui:119
+msgid "Please wait while the stack is being created."
+msgstr "스택이 만들어질 때까지 기다리십시오."
+
+#: apx_gui/gtk/create-stack.ui:144
+msgid "An error occurred while creating the stack."
+msgstr "스택을 만드는 중 오류가 발생했습니다."
+
+#: apx_gui/gtk/create-subsystem.ui:6 apx_gui/gtk/window-main.ui:62
+msgid "New Subsystem"
+msgstr "새 하위 시스템"
+
+#: apx_gui/gtk/create-subsystem.ui:49 apx_gui/gtk/tab-subsystem.ui:19
+msgid "Stack"
+msgstr "스택"
+
+#: apx_gui/gtk/create-subsystem.ui:78
+msgid "Creating Subsystem…"
+msgstr "하위 시스템을 생성하고 있습니다…"
+
+#: apx_gui/gtk/create-subsystem.ui:79
+msgid "Please wait while the subsystem is being created."
+msgstr "하위 시스템이 만들어질 때까지 기다리십시오."
+
+#: apx_gui/gtk/create-subsystem.ui:104
+msgid "An error occurred while creating the subsystem."
+msgstr "하위 시스템을 만드는 중 오류가 발생했습니다."
+
+#: apx_gui/gtk/editor.ui:12
+msgid "Start or Open a Subsystem"
+msgstr "하위 시스템을 시작하거나 열기"
+
+#: apx_gui/gtk/editor.ui:13
+msgid "Start by opening a subsystem, stack or package manager on the left."
+msgstr "하위 시스템을 열려면 왼쪽에 있는 스택 및 패키지 관리자를 시작하십시오."
+
+#: apx_gui/gtk/help-overlay.ui:11
+msgctxt "shortcut window"
+msgid "General"
+msgstr "일반"
+
+#: apx_gui/gtk/help-overlay.ui:14
+msgctxt "shortcut window"
+msgid "Show Shortcuts"
+msgstr "바로가기 표시하기"
+
+#: apx_gui/gtk/help-overlay.ui:20
+msgctxt "shortcut window"
+msgid "Quit"
+msgstr "끝내기"
+
+#: apx_gui/gtk/help-overlay.ui:26
+#, fuzzy
+#| msgid "Create"
+msgctxt "shortcut window"
+msgid "Create"
+msgstr "만들기"
+
+#: apx_gui/gtk/help-overlay.ui:29
+#, fuzzy
+#| msgid "New Subsystem"
+msgctxt "shortcut window"
+msgid "New Subsystem"
+msgstr "새 하위 시스템"
+
+#: apx_gui/gtk/help-overlay.ui:35
+#, fuzzy
+#| msgid "New Stack"
+msgctxt "shortcut window"
+msgid "New Stack"
+msgstr "새 스택"
+
+#: apx_gui/gtk/help-overlay.ui:41
+#, fuzzy
+#| msgid "New Package Manager"
+msgctxt "shortcut window"
+msgid "New Package Manager"
+msgstr "새 패키지 관리자"
+
+#: apx_gui/gtk/tab-pkgmanager.ui:13
+msgid "This package manager is built-in and cannot be edited or deleted."
+msgstr "이 패키지 관리자는 내장되어 있으므로 편집하거나 삭제할 수 없습니다."
+
+#: apx_gui/gtk/tab-pkgmanager.ui:42 apx_gui/gtk/tab-stack.ui:49
+msgid "Built-In"
+msgstr "내장됨"
+
+#: apx_gui/gtk/tab-pkgmanager.ui:119 apx_gui/gtk/tab-stack.ui:71
+msgid "Destructive Actions"
+msgstr "주의 동작"
+
+#: apx_gui/gtk/tab-pkgmanager.ui:122
+msgid "Delete Package Manager"
+msgstr "패키지 관리자 삭제"
+
+#: apx_gui/gtk/tab-stack.ui:13
+msgid "This stack is built-in and cannot be edited or deleted."
+msgstr "이 스택은 내장되어 있어 편집하거나 삭제할 수 없습니다."
+
+#: apx_gui/gtk/tab-stack.ui:59
+msgid "Packages"
+msgstr "패키지"
+
+#: apx_gui/gtk/tab-stack.ui:74
+msgid "Delete Stack"
+msgstr "스택 삭제"
+
+#: apx_gui/gtk/tab-subsystem.ui:9
+msgid "Status"
+msgstr "상태"
+
+#: apx_gui/gtk/tab-subsystem.ui:53
+msgid "Open Console"
+msgstr "콘솔 열기"
+
+#: apx_gui/gtk/tab-subsystem.ui:54
+msgid "Enter a console in this subsystem's environment."
+msgstr "하위 시스템 환경의 콘솔에 진입합니다."
+
+#: apx_gui/gtk/tab-subsystem.ui:74
+msgid "Reset Subsystem"
+msgstr "하위 시스템 초기화"
+
+#: apx_gui/gtk/tab-subsystem.ui:89
+msgid "Delete Subsystem"
+msgstr "하위 시스템 삭제"
+
+#: apx_gui/gtk/window-main.ui:78
+msgid "_Keyboard Shortcuts"
+msgstr "키보드 바로 가기(_K)"
+
+#: apx_gui/gtk/window-main.ui:82
+msgid "_About Apx GUI"
+msgstr "APX GUI에 대하여(_A)"
+
+#: apx_gui/main.py:102
+msgid "translator_credits"
+msgstr "MJ Kim <kmj10727@gmail.com>"
+
+#: apx_gui/main.py:107
+msgid "Contributors"
+msgstr "기여자"
+
+#: apx_gui/main.py:113
+msgid "Tools"
+msgstr "도구"
+
+#~ msgid "New Sub System"
+#~ msgstr "하위 시스템 추가"
+
+#~ msgid "_Quit"
+#~ msgstr "끝내기(_Q)"
diff --git a/vanilla-os/apx/locales/en.yml b/vanilla-os/apx/locales/en.yml
new file mode 100644
index 0000000000000000000000000000000000000000..852652c862faaaa7d225afec01f11954bc911638
--- /dev/null
+++ b/vanilla-os/apx/locales/en.yml
@@ -0,0 +1,333 @@
+apx:
+  description: "Apx is a package manager with support for multiple sources, allowing
+    you to install packages in subsystems."
+  errors:
+    unknownCommand: "Unknown command: %s"
+    invalidInput: "Invalid input."
+    invalidChoice: "Invalid choice."
+    noRoot: "Do not run Apx as root."
+  info:
+    aborting: "Aborting as requested."
+  terminal:
+    yes: "yes"
+    no: "no"
+
+runtimeCommand:
+  description: "Work with the specified subsystem, accessing the package manager and
+    environment."
+  error:
+    enteringContainer: "An error occurred while entering the container: %s"
+    noPackageSpecified: "No packages specified."
+    cantAccessPkgManager: "An error occurred while accessing the package manager:
+      %s"
+    executingCommand: "An error occurred while executing the command: %s"
+    noAppNameOrBin: "--app-name or --bin must be specified."
+    sameAppOrBin: "--app-name and --bin cannot be both specified."
+    exportingApp: "An error occurred while exporting the application: %s"
+    exportingBin: "An error occurred while exporting the binary: %s"
+    unexportingApp: "An error occurred while unexporting the application: %s"
+    unexportingBin: "An error occurred while unexporting the binary: %s"
+  info:
+    unexportedApps: "Unexported %d applications"
+    exportedApps: "Exported %d applications"
+    exportedApp: "Exported application %s"
+    exportedBin: "Exported binary %s"
+    unexportedApp: "Unexported application %s"
+    unexportedBin: "Unexported binary %s"
+  autoremove:
+    description: "Remove packages that are no longer required."
+  clean:
+    description: "Clean the package manager's cache."
+  install:
+    description: "Install the specified package."
+    options:
+      noExport:
+        description: "Do not export a desktop entry."
+  list:
+    description: "List all installed packages."
+  purge:
+    description: "Purge the specified packages."
+  remove:
+    description: "Remove the specified packages."
+  search:
+    description: "Search for packages matching the specified query."
+  show:
+    description: "Show information about the specified package."
+  update:
+    description: "Update the list of available packages."
+  upgrade:
+    description: "Upgrade all installed packages."
+  enter:
+    description: "Enter the subsystem's environment."
+  export:
+    description: "Export an application or binary from the subsystem."
+    options:
+      appName:
+        description: "The name of the application to export."
+      bin:
+        description: "The name of the binary to export."
+      binOutput:
+        description: "Path of the binary output (default: ~/.local/bin/)."
+  unexport:
+    description: "Unexport an application or binary from the subsystem."
+    options:
+      appName:
+        description: "The name of the application to unexport."
+      bin:
+        description: "The name of the binary to unexport."
+      binOutput:
+        description: "Path of the binary output (default: ~/.local/bin/)."
+
+pkgmanagers:
+  description: "Work with the package managers that are available in apx."
+  labels:
+    name: "Name"
+    builtIn: "Built-in"
+
+  list:
+    description: "List all available package managers."
+    info:
+      noPkgManagers: "No package managers available. Create a new one with 'apx pkgmanagers
+        new' or contact the system administrator."
+      foundPkgManagers: "Found %d package managers"
+    options:
+      json:
+        description: "Output in JSON format."
+  show:
+    description: "Show information about the specified package manager."
+  new:
+    description: "Create a new package manager."
+
+    error:
+      emptyName: "The name cannot be empty."
+      noName: "No name specified."
+      emptyCommand: "The command cannot be empty."
+      noCommand: "No command specified for '%s'."
+      alreadyExists: "A package manager with the name '%s' already exists."
+    info:
+      askName: "Choose a name:"
+      askSudo: "Does the package manager need sudo to run?"
+      askCommand: "Enter the command for '%s':"
+      askOverwrite: "A package manager with the name '%s' already exists. Overwrite
+        it?"
+      success: "Created package manager '%s'."
+    options:
+      assumeYes:
+        description: "Assume yes to all prompts."
+      name:
+        description: "The name of the package manager."
+      needSudo:
+        description: "Whether the package manager needs sudo to run."
+      autoremove:
+        description: "The command to run to autoremove packages."
+      clean:
+        description: "The command to run to clean the package manager's cache."
+      install:
+        description: "The command to run to install packages."
+      list:
+        description: "The command to run to list installed packages."
+      purge:
+        description: "The command to run to purge packages."
+      remove:
+        description: "The command to run to remove packages."
+      search:
+        description: "The command to run to search for packages."
+      show:
+        description: "The command to run to show information about packages."
+      update:
+        description: "The command to run to update the list of available packages."
+      upgrade:
+        description: "The command to run to upgrade packages."
+  rm:
+    description: "Remove the specified package manager."
+
+    error:
+      noName: "No name specified."
+      inUse: "The package manager is used in %d stacks:"
+    info:
+      askConfirmation: "Are you sure you want to remove '%s'? [y/N]"
+      success: "Removed package manager '%s'."
+      aborting: "Aborting removal of package manager '%s'."
+    options:
+      force:
+        description: "Force removal of the package manager."
+      name:
+        description: "The name of the package manager to remove."
+
+stacks:
+  description: "Work with the stacks that are available in apx."
+  labels:
+    name: "Name"
+    builtIn: "Built-in"
+
+  list:
+    description: "List all available stacks."
+    info:
+      noStacks: "No stacks available. Create a new one with 'apx stacks new' or contact
+        the system administrator."
+      foundStacks: "Found %d stacks:"
+      aborting: "Aborting removal of stack '%s'."
+    options:
+      json:
+        description: "Output in JSON format."
+  show:
+    description: "Show information about the specified stack."
+  new:
+    description: "Create a new stack."
+    error:
+      emptyName: "The name cannot be empty."
+      noName: "No name specified."
+      emptyBase: "The base cannot be empty."
+      noBase: "No base specified."
+      emptyPkgManager: "The package manager cannot be empty."
+      noPkgManager: "No package manager specified."
+      pkgManagerDoesNotExist: "The specified package manager does not exist. Create
+        it with 'apx pkgmanagers new' or contact the system administrator."
+      emptyPackages: "The packages cannot be empty."
+      noPackages: "No packages specified."
+      alreadyExists: "A stack with the name '%s' already exists."
+    info:
+      askName: "Choose a name:"
+      askBase: "Choose a base (e.g. 'vanillaos/pico'):"
+      askPkgManager: "Choose a package manager:"
+      selectPkgManager: "Select a package manager [1-%d]:"
+      noPackages: "You have not provided any package to install in the stack. Do you
+        want to add some now?"
+      confirmPackages: "Do you want to confirm the current packages list?"
+      askPackages: "Please type the packages you want to install in the stack, separated
+        by a space:"
+      success: "Created stack '%s'."
+    options:
+      assumeYes:
+        description: "Assume yes to all prompts."
+      name:
+        description: "The name of the stack."
+      base:
+        description: "The base subsystem to use."
+      packages:
+        description: "The packages to install."
+      pkgManager:
+        description: "The package manager to use."
+  update:
+    description: "Update the specified stack."
+    error:
+      noName: "No name specified."
+      noBase: "No base specified."
+      noPkgManager: "No package manager specified."
+      pkgManagerDoesNotExist: "The specified package manager does not exist. Create
+        it with 'apx pkgmanagers new' or contact the system administrator."
+    info:
+      askBase: "Type a new base or confirm the current one (%s):"
+      askPkgManager: "Choose a new package manager or confirm the current one (%s):"
+      askPackages: "Type the packages you want to install in the stack, separated
+        by a space, or confirm the current ones (%s):"
+      success: "Updated stack '%s'."
+
+    options:
+      assumeYes:
+        description: "Assume yes to all prompts."
+      name:
+        description: "The name of the stack."
+      base:
+        description: "The base subsystem to use."
+      packages:
+        description: "The packages to install."
+      pkgManager:
+        description: "The package manager to use."
+  rm:
+    description: "Remove the specified stack."
+    error:
+      noName: "No name specified."
+    info:
+      askConfirmation: "Are you sure you want to remove '%s'? [y/N]"
+      success: "Removed stack '%s'."
+    options:
+      force:
+        description: "Force removal of the stack."
+      name:
+        description: "The name of the stack to remove."
+  export:
+    description: "Export the specified stack."
+    error:
+      noName: "No name specified."
+      noOutput: "No output specified."
+    info:
+      success: "Exported stack '%s' to '%s'."
+    options:
+      name:
+        description: "The name of the stack to export."
+      output:
+        description: "The path to export the stack to."
+  import:
+    description: "Import the specified stack."
+    error:
+      noInput: "No input specified."
+      cannotLoad: "Cannot load stack from '%s'."
+    info:
+      success: "Imported stack from '%s'."
+    options:
+      input:
+        description: "The path to import the stack from."
+
+subsystems:
+  description: "Work with the subsystems that are available in apx."
+  labels:
+    name: "Name"
+    status: "Status"
+
+  list:
+    description: "List all available subsystems."
+    error:
+    info:
+      noSubsystems: "No subsystems available. Create a new one with 'apx subsystems
+        new' or contact the system administrator."
+      foundSubsystems: "Found %d subsystems:"
+    options:
+      json:
+        description: "Output in JSON format."
+  new:
+    description: "Create a new subsystem."
+    error:
+      noStacks: "A stack is needed to create a subsystem. Create a new one with 'apx
+        stacks new' or contact the system administrator."
+      emptyName: "The name cannot be empty."
+      noName: "No name specified."
+      emptyStack: "The stack cannot be empty."
+      noStack: "No stack specified."
+      stackDoesNotExist: "The specified stack does not exist. Create it with 'apx
+        stacks new' or contact the system administrator."
+      alreadyExists: "A subsystem with the name '%s' already exists."
+    info:
+      askName: "Choose a name:"
+      selectStack: "Select a stack [1-%d]:"
+      success: "Created subsystem '%s'."
+      creatingSubsystem: "Creating subsystem '%s' with stack '%s'…"
+    options:
+      name:
+        description: "The name of the subsystem."
+      stack:
+        description: "The stack to use."
+  rm:
+    description: "Remove the specified subsystem."
+    error:
+      noName: "No name specified."
+    info:
+      askConfirmation: "Are you sure you want to remove '%s'? [y/N]"
+      success: "Removed subsystem '%s'."
+    options:
+      force:
+        description: "Force removal of the subsystem."
+      name:
+        description: "The name of the subsystem to remove."
+  reset:
+    description: "Reset the specified subsystem."
+    error:
+      noName: "No name specified."
+    info:
+      askConfirmation: "Are you sure you want to reset '%s'? [y/N]"
+      success: "The subsystem '%s' has been reset."
+    options:
+      force:
+        description: "Force reset of the subsystem."
+      name:
+        description: "The name of the subsystem to reset."
diff --git a/vanilla-os/apx/locales/ko.yml b/vanilla-os/apx/locales/ko.yml
new file mode 100644
index 0000000000000000000000000000000000000000..101aa3985e49a8c4d09cb59cdba55c35a7e355f2
--- /dev/null
+++ b/vanilla-os/apx/locales/ko.yml
@@ -0,0 +1,325 @@
+apx:
+  description: "APX는 다양한 소스를 지원하며, 하위 시스템에 패키지를 설치할 수 있게 하는 패키지 관리자입니다."
+  errors:
+    unknownCommand: "알 수 없는 명령어: %s"
+    invalidInput: "잘못된 입력입니다."
+    invalidChoice: 유효하지 않은 선택입니다.
+    noRoot: 루트로 Apx를 실행하지 마십시오.
+  info:
+    aborting: "요청에 의해 중단되었습니다."
+  terminal:
+    yes: "예"
+    no: "아니오"
+
+runtimeCommand:
+  description: "지정된 하위 시스템과 함께 작업하며, 패키지 관리자와 환경에 액세스합니다."
+  error:
+    noPackageSpecified: "지정된 패키지가 없습니다."
+    cantAccessPkgManager: "패키지 관리자에 액세스하는 중 오류가 발생했습니다: %s"
+    executingCommand: "명령을 실행하는 중 오류가 발생했습니다: %s"
+    noAppNameOrBin: "--app-name 또는 --bin을 지정해야 합니다."
+    sameAppOrBin: "--app-name 과 --bin 둘 다 지정할 수 없습니다."
+    exportingApp: "응용 프로그램을 export하는 중 오류가 발생했습니다: %s"
+    exportingBin: "바이너리를 export하는 중 오류가 발생했습니다: %s"
+    unexportingApp: "응용 프로그램을 unexport하는 중 오류가 발생했습니다: %s"
+    unexportingBin: "바이너리를 unexport하는 중 오류가 발생했습니다: %s"
+    enteringContainer: '컨테이너에 들어가는 중 오류가 발생했습니다: %s'
+  info:
+    unexportedApps: "응용 프로그램(들) %d(을)를 Unexport하였습니다"
+    exportedApps: "응용 프로그램(들) %d(을)를 Export하였습니다"
+    exportedApp: "응용 프로그램 %d(을)를 Export하였습니다 %s"
+    exportedBin: "바이너리 %d(을)를 Export하였습니다 %s"
+    unexportedApp: "응용 프로그램 %d를 Unexport하였습니다 %s"
+    unexportedBin: "바이너리 %d를 Unexport하였습니다 %s"
+  autoremove:
+    description: "더이상 필요하지 않은 패키지를 제거합니다."
+  clean:
+    description: "패키지 관리자의 캐시를 정리합니다."
+  install:
+    description: "지정된 패키지를 설치합니다."
+    options:
+      noExport:
+        description: "데스크톱 항목 내보내지 마십시오."
+  list:
+    description: "모든 설치된 패키지를 나열합니다."
+  purge:
+    description: "지정된 패키지를 purge합니다."
+  remove:
+    description: "지정된 패키지를 제거합니다."
+  search:
+    description: "지정된 쿼리와 일치하는 패키지를 검색합니다."
+  show:
+    description: "지정된 패키지에 대한 정보를 표시합니다."
+  update:
+    description: "사용 가능한 패키지 목록을 업데이트합니다."
+  upgrade:
+    description: "설치된 모든 패키지를 업그레이드합니다."
+  enter:
+    description: "하위 시스템 환경에 진입합니다."
+  export:
+    description: "하위 시스템에서 응용 프로그램이나 바이너리를 Export합니다."
+    options:
+      appName:
+        description: "Export할 응용 프로그램 이름입니다."
+      bin:
+        description: "Export할 바이너리 이름입니."
+      binOutput:
+        description: "바이너리 출력 경로 (기본: ~/.local/bin/)."
+  unexport:
+    description: "하위시스템에서 응용 프로그램이나 바이너리를 Unexport합니다."
+    options:
+      appName:
+        description: "Unexport할 응용 프로그램 이름입니다."
+      bin:
+        description: "Unexport할 바이너리 이름입니다."
+      binOutput:
+        description: "바이너리 출력 경로 (기본값: ~/.local/bin/)."
+
+pkgmanagers:
+  description: "apx에서 사용 가능한 패키지 관리자와 작업합니다."
+  labels:
+    name: "이름"
+    builtIn: "Built-in"
+
+  list:
+    description: "사용 가능한 모든 패키지 관리자를 나열합니다."
+    info:
+      noPkgManagers: "사용 가능한 패키지 관리자가 없습니다. 'apx pkgmanagers new'로 새로 만들거나 시스템 관리자에게
+        문의하십시오."
+      foundPkgManagers: "%d개의 패키지 관리자를 찾았습니다:"
+    options:
+      json:
+        description: "JSON 형식으로 출력합니다."
+  show:
+    description: "지정된 패키지 관리자에 대한 정보를 표시합니다."
+  new:
+    description: "새로운 패키지 관리자를 생성합니다."
+
+    error:
+      emptyName: "이름은 비워둘 수 없습니다."
+      noName: "지정된 이름이 없습니다."
+      emptyCommand: "명령은 비워둘 수 없습니다."
+      noCommand: "'%s'에 대한 명령이 지정되지 않았습니다."
+      alreadyExists: "이미 '%s'라는 이름의 패키지 관리자가 있습니다."
+    info:
+      askName: "이름을 입력하십시오:"
+      askSudo: "패키지 관리자 실행에 sudo가 필요한가요?"
+      askCommand: "'%s'에 대한 명령을 입력하십시오:"
+      askOverwrite: "'%s'라는 이름의 패키지 관리자가 이미 있습니다. 덮어쓸까요?"
+      success: "'%s' 패키지 관리자가 생성되었습니다."
+    options:
+      assumeYes:
+        description: "모든 프롬프트에 '예'로 가정합니다."
+      name:
+        description: "패키지 관리자의 이름입니다."
+      needSudo:
+        description: "패키지 관리자가 실행에 sudo가 필요한지 여부."
+      autoremove:
+        description: "패키지를 자동으로 제거하는 데 사용할 명령어입니다."
+      clean:
+        description: "패키지 관리자의 캐시를 정리하는 데 사용할 명령어입니다."
+      install:
+        description: "패키지를 설치하는 데 사용할 명령어입니다."
+      list:
+        description: "설치된 패키지를 나열하는 데 사용할 명령어입니다."
+      purge:
+        description: "패키지를 purge하는 데 사용할 명령어입니다."
+      remove:
+        description: "패키지를 제거하는 데 사용할 명령어입니다."
+      search:
+        description: "패키지를 검색하는 데 사용할 명령어입니다."
+      show:
+        description: "패키지에 대한 정보를 표시하는 데 사용할 명령어입니다."
+      update:
+        description: "사용 가능한 패키지 목록을 업데이트하는 데 사용할 명령입니다."
+      upgrade:
+        description: "패키지를 업그레이드하는 데 사용할 명령입니다."
+  rm:
+    description: "지정된 패키지 관리자를 제거합니다."
+
+    error:
+      noName: "지정된 이름이 없습니다."
+      inUse: "패키지 관리자는 %d 스택에서 사용 중입니다:"
+    info:
+      askConfirmation: "'%s'(을)를 제거하시겠습니까?[y/N]"
+      success: "'%s' 패키지 관리자가 제거되었습니다."
+      aborting: "'%s' 패키지 관리자의 제거를 중단합니다."
+    options:
+      force:
+        description: "패키지 관리자를 강제로 제거합니다."
+      name:
+        description: "제거할 패키지 관리자의 이름입니다."
+
+stacks:
+  description: "apx에서 사용 가능한 스택과 작업합니다."
+  labels:
+    name: "이름"
+    builtIn: "Built-in"
+
+  list:
+    description: "사용 가능한 모든 스택을 나열합니다."
+    info:
+      noStacks: "사용 가능한 스택이 없습니다. 'apx stacks new'로 새로 만들거나 시스템 관리자에게 문의하십시오."
+      foundStacks: "%d개의 스택을 찾았습니다:"
+      aborting: "'%s' 스택의 제거를 중단합니다."
+    options:
+      json:
+        description: "JSON 형식으로 출력합니다."
+  show:
+    description: "지정된 스택에 대한 정보를 표시합니다."
+  new:
+    description: "새로운 스택을 생성합니다."
+    error:
+      emptyName: "이름은 비워둘 수 없습니다."
+      noName: "지정된 이름이 없습니다."
+      emptyBase: "Base를 비워둘 수 없습니다."
+      noBase: "지정된 Base가 없습니다."
+      emptyPkgManager: "패키지 관리자는 비워둘 수 없습니다."
+      noPkgManager: "지정된 패키지 관리자가 없습니다."
+      pkgManagerDoesNotExist: "지정된 패키지 관리자가 존재하지 않습니다. 'apx pkgmanagers new'로 만들거나
+        시스템 관리자에게 문의하십시오."
+      emptyPackages: "패키지는 비워둘 수 없습니다."
+      noPackages: "지정된 패키지가 없습니다."
+      alreadyExists: "'%s'라는 이름의 스택이 이미 있습니다."
+    info:
+      askName: "이름을 입력하십시오:"
+      askBase: "Base을 입력하십시오 (예: 'vanillaos/pico'):"
+      askPkgManager: "패키지 관리자 입력하십시오:"
+      selectPkgManager: "패키지 관리자를 선택하십시오 [1-%d]:"
+      noPackages: "스택에 설치할 패키지를 제공하지 않았습니다. 지금 추가하시겠습니까?"
+      confirmPackages: "현재 패키지 목록을 확인하시겠습니까?"
+      askPackages: "스택에 설치할 패키지를 띄어쓰기로 구분하여 입력하십시오:"
+      success: "'%s' 스택이 생성되었습니다."
+    options:
+      assumeYes:
+        description: "모든 프롬프트에 '예'로 가정합니다."
+      name:
+        description: "스택의 이름입니다."
+      base:
+        description: "사용할 Base 하위 시스템입니다."
+      packages:
+        description: "설치할 패키지입니다."
+      pkgManager:
+        description: "사용할 패키지 관리자입니다."
+  update:
+    description: "지정된 스택을 업데이트합니다."
+    error:
+      noName: "지정된 이름이 없습니다."
+      noBase: "지정된 Base가 없습니다."
+      noPkgManager: "지정된 패키지 관리자가 없습니다."
+      pkgManagerDoesNotExist: "지정된 패키지 관리자가 존재하지 않습니다. 'apx pkgmanagers new'로 만들거나
+        시스템 관리자에게 문의하십시오."
+    info:
+      askBase: "새로운 Base를 입력하거나 현재 Base를 확인하십시오 (%s):"
+      askPkgManager: "새로운 패키지 관리자를 선택하거나 현재 패키지 관리자를 확인하십시오 (%s):"
+      askPackages: "스택에 설치할 패키지를 띄어쓰기로 구분하여 입력하거나 현재 패키지를 확인하십시오 (%s):"
+      success: "'%s' 스택을 업데이트했습니다."
+
+    options:
+      assumeYes:
+        description: "모든 프롬프트에 '예'로 가정합니다."
+      name:
+        description: "스택의 이름입니다."
+      base:
+        description: "사용할 Base 하위 시스템입니다."
+      packages:
+        description: "설치할 패키지입니다."
+      pkgManager:
+        description: "사용할 패키지 관리자입니다."
+  rm:
+    description: "지정된 스택을 제거합니다."
+    error:
+      noName: "지정된 이름이 없습니다."
+    info:
+      askConfirmation: "'%s'를 제거하시겠습니까?[y/N]"
+      success: "'%s' 스택이 제거되었습니다."
+    options:
+      force:
+        description: "스택을 강제로 제거합니다."
+      name:
+        description: "제거할 스택의 이름입니다."
+  export:
+    description: "지정된 스택을 Export합니다."
+    error:
+      noName: "지정된 이름이 없습니다."
+      noOutput: "지정된 출력이 없습니다."
+    info:
+      success: "'%s' 스택을 '%s'로 Export하였습니다."
+    options:
+      name:
+        description: "Export할 스택의 이름입니다."
+      output:
+        description: "스택을 Export할 경로입니다."
+  import:
+    description: "지정된 스택을 가져옵니다."
+    error:
+      noInput: "입력이 지정되지 않았습니다."
+      cannotLoad: "'%s'에서 스택을 로드할 수 없습니다."
+    info:
+      success: "'%s'에서 스택을 가져왔습니다."
+    options:
+      input:
+        description: "스택을 가져올 경로입니다."
+
+subsystems:
+  description: "apx에서 사용 가능한 하위 시스템과 작업합니다."
+  labels:
+    name: "이름"
+    status: "상태"
+
+  list:
+    description: "사용 가능한 모든 하위 시스템을 보여줍니다."
+    error:
+    info:
+      noSubsystems: "하위 시스템이 없습니다. 'apx subsystems new' 명령어로 새 하위 시스템을 생성하시거나 시스템
+        관리자에게 문의하십시오."
+      foundSubsystems: "하위 시스템을 찾았습니다: %d"
+    options:
+      json:
+        description: "JSON 형식으로 출력합니다."
+  new:
+    description: "새 하위 시스템을 만듭니다."
+    error:
+      noStacks: "하위 시스템을 만드는 데 스택이 필요합니다. 'apx stacks new' 명령어로 새로운 스택을 생성하시거나 시스템
+        관리자에게 문의하십시오."
+      emptyName: "이름은 비울 수 없습니다."
+      noName: "이름이 특정되지 않았습니다."
+      emptyStack: "스택은 비울 수 없습니다."
+      noStack: "스택이 특정되지 않았습니다."
+      stackDoesNotExist: "특정된 스택이 존재하지 않습니다. 'apx stacks new' 명령어로 해당 스택을 생성하시거나 시스템
+        관리자에게 문의하십시오."
+      alreadyExists: "'%s' 이름을 가진 하위 시스템이 이미 존재합니다."
+    info:
+      askName: "이름 입력:"
+      selectStack: "스택 선택 [1-%d]:"
+      success: "하위 시스템 '%s'(을)를 만들었습니다."
+      creatingSubsystem: "스택 '%s'와 하위 시스템 '%s'(을)를 만들었습니다.…"
+    options:
+      name:
+        description: "하위 시스템의 이름입니다."
+      stack:
+        description: "사용할 스택입니다."
+  rm:
+    description: "특정 하위 시스템을 삭제합니다."
+    error:
+      noName: "이름이 특정되지 않았습니다."
+    info:
+      askConfirmation: "'%s'(을)를 삭제하시겠습니까?"
+      success: "하위 시스템 '%s'(을)를 삭제하였습니다."
+    options:
+      force:
+        description: "하위 시스템을 강제로 삭제합니다."
+      name:
+        description: "삭제할 하위 시스템의 이름을 지정합니다."
+  reset:
+    description: "특정 하위 시스템을 초기화합니다."
+    error:
+      noName: "이름이 특정되지 않았습니다."
+    info:
+      askConfirmation: "'%s'(을)를 초기화하시겠습니까?"
+      success: "하위 시스템 '%s'(이)가 초기화되었습니다."
+    options:
+      force:
+        description: "하위 시스템을 강제로 초기화합니다."
+      name:
+        description: "초기화할 하위 시스템의 이름을 지정합니다."
diff --git a/vanilla-os/first-setup/po/ko.po b/vanilla-os/first-setup/po/ko.po
new file mode 100644
index 0000000000000000000000000000000000000000..b3f564fd223dd1b5dbd981b814da02c378a9b772
--- /dev/null
+++ b/vanilla-os/first-setup/po/ko.po
@@ -0,0 +1,302 @@
+# Korean translations for vanilla-first-setup package.
+# Copyright (C) 2022 THE vanilla-first-setup'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the vanilla-first-setup package.
+# Automatically generated, 2022.
+#
+# lmj0927 <lmjj0927@naver.com>, 2023.
+msgid ""
+msgstr ""
+"Project-Id-Version: vanilla-first-setup\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-08-29 00:39+0530\n"
+"PO-Revision-Date: 2023-12-21 19:36+0000\n"
+"Last-Translator: lmj0927 <lmjj0927@naver.com>\n"
+"Language-Team: Korean <https://hosted.weblate.org/projects/vanilla-os/"
+"first-setup/ko/>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 5.4-dev\n"
+
+#: data/org.vanillaos.FirstSetup.desktop.in:3
+msgid "Vanilla OS First Setup"
+msgstr "바닐라 OS 첫 번째 설정"
+
+#: data/org.vanillaos.FirstSetup.appdata.xml.in:7
+#, fuzzy
+msgid "Tweak your Vanilla OS installation."
+msgstr "우분투 바닐라 GNOME 설치를 수정합니다."
+
+#: data/org.vanillaos.FirstSetup.appdata.xml.in:10
+msgid "No description"
+msgstr "설명 없음"
+
+#: data/org.vanillaos.FirstSetup.appdata.xml.in:26
+msgid "First release"
+msgstr "첫 번째 릴리스"
+
+#: vanilla_first_setup/gtk/default-conn-check.ui:12
+#: vanilla_first_setup/defaults/conn_check.py:114
+msgid "Checking Connection…"
+msgstr "연결 확인중…"
+
+#: vanilla_first_setup/gtk/default-conn-check.ui:13
+#: vanilla_first_setup/defaults/conn_check.py:116
+msgid "Please wait until the connection check is done."
+msgstr "연결 확인이 완료될 때까지 기다려 주세요."
+
+#: vanilla_first_setup/gtk/default-hostname.ui:14
+msgid "Device Details"
+msgstr "장치 세부정보"
+
+#: vanilla_first_setup/gtk/default-hostname.ui:15
+msgid "Provide details about your device"
+msgstr "장치에 대한 세부 정보를 제공하세요"
+
+#: vanilla_first_setup/gtk/default-hostname.ui:22
+msgid "Device Name"
+msgstr "장치 이름"
+
+#: vanilla_first_setup/gtk/default-hostname.ui:35
+#: vanilla_first_setup/gtk/default-network.ui:95
+#: vanilla_first_setup/gtk/default-theme.ui:49
+#: vanilla_first_setup/gtk/default-user.ui:60
+msgid "Next"
+msgstr "다음"
+
+#: vanilla_first_setup/gtk/default-network.ui:18
+msgid "Connect to the Internet"
+msgstr "인터넷에 연결"
+
+#: vanilla_first_setup/gtk/default-network.ui:19
+msgid ""
+"An active internet connection is required to make sure your system is up-to-"
+"date and download your favorite applications."
+msgstr "시스템이 최신 상태로 유지되고 즐겨 사용하는 애플리케이션을 다운로드하려면 "
+"활성 인터넷 연결이 필요합니다."
+
+#: vanilla_first_setup/gtk/default-network.ui:29
+msgid "Wired"
+msgstr "유선 네트워크"
+
+#: vanilla_first_setup/gtk/default-network.ui:34
+msgid "Wireless Networks"
+msgstr "무선 네트워크"
+
+#: vanilla_first_setup/gtk/default-network.ui:39
+msgid "Advanced"
+msgstr "고급 설정"
+
+#: vanilla_first_setup/gtk/default-network.ui:42
+msgid "Connect to Hidden Network..."
+msgstr "숨겨진 네트워크에 연결..."
+
+#: vanilla_first_setup/gtk/default-network.ui:69
+msgid "Open Proxy Settings..."
+msgstr "프록시 설정 열기..."
+
+#: vanilla_first_setup/gtk/default-theme.ui:17
+msgid "Default"
+msgstr "기본값"
+
+#: vanilla_first_setup/gtk/default-theme.ui:29
+msgid "Dark"
+msgstr "어두운 테마"
+
+#: vanilla_first_setup/gtk/default-theme.ui:42
+msgid "Color Scheme"
+msgstr "색 구성표"
+
+#: vanilla_first_setup/gtk/default-theme.ui:43
+msgid "Choose a color scheme for your system."
+msgstr "사용자 시스템의 색 구성표를 고릅니다."
+
+#: vanilla_first_setup/gtk/default-user.ui:21
+msgid "Create User"
+msgstr "사용자 생성"
+
+#: vanilla_first_setup/gtk/default-user.ui:22
+msgid "Provide details for your user account"
+msgstr "사용자 계정에 대한 세부 정보를 제공하세요"
+
+#: vanilla_first_setup/gtk/default-user.ui:29
+msgid "Name"
+msgstr "이름"
+
+#: vanilla_first_setup/gtk/default-user.ui:35
+msgid "Username"
+msgstr "사용자 이름"
+
+#: vanilla_first_setup/gtk/default-user.ui:41
+msgid "Password"
+msgstr "비밀번호"
+
+#: vanilla_first_setup/gtk/default-user.ui:47
+msgid "Confirm Password"
+msgstr "비밀번호 확인"
+
+#: vanilla_first_setup/gtk/default-welcome.ui:20
+#: vanilla_first_setup/gtk/default-welcome.ui:29
+msgid "Welcome!"
+msgstr "환영합니다!"
+
+#: vanilla_first_setup/gtk/dialog.ui:6
+#, fuzzy
+msgid "Showing Information"
+msgstr "정보 표시"
+
+#: vanilla_first_setup/gtk/done.ui:12
+msgid "All done!"
+msgstr "모두 완료되었습니다!"
+
+#: vanilla_first_setup/gtk/done.ui:13
+#, fuzzy
+msgid "Restart your device to enjoy your Vanilla OS experience."
+msgstr "사용자의 PC를 다시 시작하여 바닐라 OS 환경을 즐기십시오."
+
+#: vanilla_first_setup/gtk/layout-yes-no.ui:36
+msgid "Yes, enable it"
+msgstr "예, 활성화합니다"
+
+#: vanilla_first_setup/gtk/post-script.ui:11
+msgid "Finalizing"
+msgstr "완료 중"
+
+#: vanilla_first_setup/gtk/post-script.ui:12
+msgid "Your device will be ready soon."
+msgstr "장치가 곧 준비될 것 입니다."
+
+#: vanilla_first_setup/gtk/progress.ui:70
+msgid "Installing..."
+msgstr "설치중..."
+
+#: vanilla_first_setup/gtk/progress.ui:91
+msgid "Show Console output"
+msgstr "콘솔 출력 표시"
+
+#: vanilla_first_setup/gtk/progress.ui:106
+msgid "Show Slideshow"
+msgstr "슬라이드쇼 표시"
+
+#: vanilla_first_setup/gtk/tour.ui:27
+msgid "Read More"
+msgstr "더 읽기"
+
+#: vanilla_first_setup/gtk/window.ui:25
+msgid "Back"
+msgstr "뒤로"
+
+#: vanilla_first_setup/gtk/wireless-row.ui:33
+#: vanilla_first_setup/defaults/network.py:371
+msgid "Connected"
+msgstr "연결됨"
+
+#: vanilla_first_setup/defaults/conn_check.py:103
+msgid "No Internet Connection!"
+msgstr "인터넷 연결이 없습니다!"
+
+#: vanilla_first_setup/defaults/conn_check.py:105
+msgid "First Setup requires an active internet connection"
+msgstr "최초 설정에는 활성화된 인터넷 연결이 필요합니다"
+
+#: vanilla_first_setup/defaults/network.py:38
+msgid "Insecure network (WEP)"
+msgstr "보안이 취약한 네트워크 (WEP)"
+
+#: vanilla_first_setup/defaults/network.py:39
+msgid "Secure network (WPA)"
+msgstr "안전한 네트워크 (WPA)"
+
+#: vanilla_first_setup/defaults/network.py:40
+msgid "Secure network (WPA2)"
+msgstr "안전한 네트워크 (WPA2)"
+
+#: vanilla_first_setup/defaults/network.py:41
+msgid "Secure network (WPA3)"
+msgstr "안전한 네트워크 (WPA3)"
+
+#: vanilla_first_setup/defaults/network.py:374
+msgid "Authentication required"
+msgstr "인증이 필요합니다"
+
+#: vanilla_first_setup/defaults/network.py:382
+msgid "Connecting"
+msgstr "연결중"
+
+#: vanilla_first_setup/defaults/network.py:384
+msgid "Disconnected"
+msgstr "연결이 끊어졌습니다"
+
+#: vanilla_first_setup/defaults/network.py:386
+msgid "Disconnecting"
+msgstr "연결 끊는 중"
+
+#: vanilla_first_setup/defaults/network.py:388
+msgid "Connection Failed"
+msgstr "연결 실패"
+
+#: vanilla_first_setup/defaults/network.py:390
+msgid "Status Unknown"
+msgstr "상태를 알 수 없음"
+
+#: vanilla_first_setup/defaults/network.py:392
+msgid "Unmanaged"
+msgstr "관리되지 않음"
+
+#: vanilla_first_setup/defaults/network.py:394
+msgid "Unavailable"
+msgstr "사용할 수 없음"
+
+#: vanilla_first_setup/defaults/network.py:408
+msgid "Cable Unplugged"
+msgstr "케이블이 연결되지 않음"
+
+#: vanilla_first_setup/layouts/preferences.py:75
+msgid "Please select at least one option."
+msgstr "옵션을 하나 이상 선택하십시오."
+
+#: vanilla_first_setup/views/done.py:51
+#, fuzzy
+msgid "Restart your device to enjoy your {} experience."
+msgstr "사용자의 PC를 다시 시작하여 {} 환경을 즐기십시오."
+
+#: vanilla_first_setup/views/done.py:73
+msgid "Something went wrong"
+msgstr "문제가 발생했습니다"
+
+#: vanilla_first_setup/views/done.py:75
+msgid "Please contact the distribution developers."
+msgstr "배포 개발자에게 문의하십시오."
+
+#: vanilla_first_setup/main.py:56
+msgid "Run a post script"
+msgstr "Post 스크립트 실행"
+
+#: vanilla_first_setup/main.py:64
+msgid "Run as a new user"
+msgstr "새로운 사용자로 실행"
+
+#: vanilla_first_setup/window.py:69
+msgid "Done!"
+msgstr "완료!"
+
+#: vanilla_first_setup/window.py:70
+msgid "Your device is ready to use."
+msgstr "장치가 사용할 준비가 되었습니다."
+
+#: vanilla_first_setup/window.py:71
+msgid "Error!"
+msgstr "오류!"
+
+#: vanilla_first_setup/window.py:72
+#, fuzzy
+msgid "Something went wrong."
+msgstr "문제가 발생했습니다"
+
+#~ msgid "Make your choices, this wizard will take care of everything."
+#~ msgstr "사용자가 고르면, 이 마법사가 모든 것을 처리할 것입니다."
+
+#~ msgid "The changes are being applied. Please Wait…"
+#~ msgstr "변경사항을 적용하고 있습니다. 기다려 주십시오…"
diff --git a/vanilla-os/first-setup/po/vanilla-first-setup.pot b/vanilla-os/first-setup/po/vanilla-first-setup.pot
new file mode 100644
index 0000000000000000000000000000000000000000..3aec755c1f353af5d309ba29fe1cf8315ff3c837
--- /dev/null
+++ b/vanilla-os/first-setup/po/vanilla-first-setup.pot
@@ -0,0 +1,287 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the vanilla-first-setup package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: vanilla-first-setup\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-08-29 00:39+0530\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: data/org.vanillaos.FirstSetup.desktop.in:3
+msgid "Vanilla OS First Setup"
+msgstr ""
+
+#: data/org.vanillaos.FirstSetup.appdata.xml.in:7
+msgid "Tweak your Vanilla OS installation."
+msgstr ""
+
+#: data/org.vanillaos.FirstSetup.appdata.xml.in:10
+msgid "No description"
+msgstr ""
+
+#: data/org.vanillaos.FirstSetup.appdata.xml.in:26
+msgid "First release"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-conn-check.ui:12
+#: vanilla_first_setup/defaults/conn_check.py:114
+msgid "Checking Connection…"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-conn-check.ui:13
+#: vanilla_first_setup/defaults/conn_check.py:116
+msgid "Please wait until the connection check is done."
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-hostname.ui:14
+msgid "Device Details"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-hostname.ui:15
+msgid "Provide details about your device"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-hostname.ui:22
+msgid "Device Name"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-hostname.ui:35
+#: vanilla_first_setup/gtk/default-network.ui:95
+#: vanilla_first_setup/gtk/default-theme.ui:49
+#: vanilla_first_setup/gtk/default-user.ui:60
+msgid "Next"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-network.ui:18
+msgid "Connect to the Internet"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-network.ui:19
+msgid ""
+"An active internet connection is required to make sure your system is up-to-"
+"date and download your favorite applications."
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-network.ui:29
+msgid "Wired"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-network.ui:34
+msgid "Wireless Networks"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-network.ui:39
+msgid "Advanced"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-network.ui:42
+msgid "Connect to Hidden Network..."
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-network.ui:69
+msgid "Open Proxy Settings..."
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-theme.ui:17
+msgid "Default"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-theme.ui:29
+msgid "Dark"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-theme.ui:42
+msgid "Color Scheme"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-theme.ui:43
+msgid "Choose a color scheme for your system."
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-user.ui:21
+msgid "Create User"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-user.ui:22
+msgid "Provide details for your user account"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-user.ui:29
+msgid "Name"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-user.ui:35
+msgid "Username"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-user.ui:41
+msgid "Password"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-user.ui:47
+msgid "Confirm Password"
+msgstr ""
+
+#: vanilla_first_setup/gtk/default-welcome.ui:20
+#: vanilla_first_setup/gtk/default-welcome.ui:29
+msgid "Welcome!"
+msgstr ""
+
+#: vanilla_first_setup/gtk/dialog.ui:6
+msgid "Showing Information"
+msgstr ""
+
+#: vanilla_first_setup/gtk/done.ui:12
+msgid "All done!"
+msgstr ""
+
+#: vanilla_first_setup/gtk/done.ui:13
+msgid "Restart your device to enjoy your Vanilla OS experience."
+msgstr ""
+
+#: vanilla_first_setup/gtk/layout-yes-no.ui:36
+msgid "Yes, enable it"
+msgstr ""
+
+#: vanilla_first_setup/gtk/post-script.ui:11
+msgid "Finalizing"
+msgstr ""
+
+#: vanilla_first_setup/gtk/post-script.ui:12
+msgid "Your device will be ready soon."
+msgstr ""
+
+#: vanilla_first_setup/gtk/progress.ui:70
+msgid "Installing..."
+msgstr ""
+
+#: vanilla_first_setup/gtk/progress.ui:91
+msgid "Show Console output"
+msgstr ""
+
+#: vanilla_first_setup/gtk/progress.ui:106
+msgid "Show Slideshow"
+msgstr ""
+
+#: vanilla_first_setup/gtk/tour.ui:27
+msgid "Read More"
+msgstr ""
+
+#: vanilla_first_setup/gtk/window.ui:25
+msgid "Back"
+msgstr ""
+
+#: vanilla_first_setup/gtk/wireless-row.ui:33
+#: vanilla_first_setup/defaults/network.py:371
+msgid "Connected"
+msgstr ""
+
+#: vanilla_first_setup/defaults/conn_check.py:103
+msgid "No Internet Connection!"
+msgstr ""
+
+#: vanilla_first_setup/defaults/conn_check.py:105
+msgid "First Setup requires an active internet connection"
+msgstr ""
+
+#: vanilla_first_setup/defaults/network.py:38
+msgid "Insecure network (WEP)"
+msgstr ""
+
+#: vanilla_first_setup/defaults/network.py:39
+msgid "Secure network (WPA)"
+msgstr ""
+
+#: vanilla_first_setup/defaults/network.py:40
+msgid "Secure network (WPA2)"
+msgstr ""
+
+#: vanilla_first_setup/defaults/network.py:41
+msgid "Secure network (WPA3)"
+msgstr ""
+
+#: vanilla_first_setup/defaults/network.py:374
+msgid "Authentication required"
+msgstr ""
+
+#: vanilla_first_setup/defaults/network.py:382
+msgid "Connecting"
+msgstr ""
+
+#: vanilla_first_setup/defaults/network.py:384
+msgid "Disconnected"
+msgstr ""
+
+#: vanilla_first_setup/defaults/network.py:386
+msgid "Disconnecting"
+msgstr ""
+
+#: vanilla_first_setup/defaults/network.py:388
+msgid "Connection Failed"
+msgstr ""
+
+#: vanilla_first_setup/defaults/network.py:390
+msgid "Status Unknown"
+msgstr ""
+
+#: vanilla_first_setup/defaults/network.py:392
+msgid "Unmanaged"
+msgstr ""
+
+#: vanilla_first_setup/defaults/network.py:394
+msgid "Unavailable"
+msgstr ""
+
+#: vanilla_first_setup/defaults/network.py:408
+msgid "Cable Unplugged"
+msgstr ""
+
+#: vanilla_first_setup/layouts/preferences.py:75
+msgid "Please select at least one option."
+msgstr ""
+
+#: vanilla_first_setup/views/done.py:51
+msgid "Restart your device to enjoy your {} experience."
+msgstr ""
+
+#: vanilla_first_setup/views/done.py:73
+msgid "Something went wrong"
+msgstr ""
+
+#: vanilla_first_setup/views/done.py:75
+msgid "Please contact the distribution developers."
+msgstr ""
+
+#: vanilla_first_setup/main.py:56
+msgid "Run a post script"
+msgstr ""
+
+#: vanilla_first_setup/main.py:64
+msgid "Run as a new user"
+msgstr ""
+
+#: vanilla_first_setup/window.py:69
+msgid "Done!"
+msgstr ""
+
+#: vanilla_first_setup/window.py:70
+msgid "Your device is ready to use."
+msgstr ""
+
+#: vanilla_first_setup/window.py:71
+msgid "Error!"
+msgstr ""
+
+#: vanilla_first_setup/window.py:72
+msgid "Something went wrong."
+msgstr ""
diff --git a/vanilla-os/glossary/ko.tbx b/vanilla-os/glossary/ko.tbx
new file mode 100644
index 0000000000000000000000000000000000000000..cccc7a6281af1a9f681c0769a8c4da4836de8d4f
--- /dev/null
+++ b/vanilla-os/glossary/ko.tbx
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE martif PUBLIC "ISO 12200:1999A//DTD MARTIF core (DXFcdV04)//EN" "TBXcdv04.dtd">
+<martif type="TBX" xml:lang="en">
+    <martifHeader>
+        <fileDesc>
+            <sourceDesc>
+                <p>Translate Toolkit</p>
+            </sourceDesc>
+        </fileDesc>
+    </martifHeader>
+    <text>
+        <body>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>driver</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>드라이버</term></tig></langSet>
+            </termEntry>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>First Setup</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>초기 설정</term></tig></langSet>
+            </termEntry>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>Smart Update</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>스마트 업데이트</term></tig></langSet>
+            </termEntry>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>Automatic Update</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>자동 업데이트</term></tig></langSet>
+            </termEntry>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>Control Center</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>제어 센터</term></tig></langSet>
+            </termEntry>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>sub system</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>하위 시스템</term></tig></langSet>
+            </termEntry>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>application</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>응용 프로그램</term></tig></langSet>
+            </termEntry>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>setup</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>설정</term></tig></langSet>
+                <descrip>(a device) setup</descrip>
+            </termEntry>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>device</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>장치</term></tig></langSet>
+            </termEntry>
+            <termEntry id="1">
+                <langSet xml:lang="en"><tig><term>driver</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>드라이버</term></tig></langSet>
+                <descrip>(a device) driver</descrip>
+            </termEntry>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>drivers</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>드라이버(들)</term></tig></langSet>
+            </termEntry>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>applications</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>응용 프로그램(들)</term></tig></langSet>
+            </termEntry>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>command</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>명령어</term></tig></langSet>
+            </termEntry>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>Sub System</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>하위 시스템</term></tig></langSet>
+            </termEntry>
+            <termEntry>
+                <langSet xml:lang="en"><tig><term>Unexporting</term></tig></langSet>
+                <langSet xml:lang="ko"><tig><term>Unexport중</term></tig></langSet>
+                <note from="translator">Unexporting is the process of stopping exports, or the removal of an item from a list of items to be exported. A generic term for translating such a specific term could be "removal".</note>
+            </termEntry>
+        </body>
+    </text>
+</martif>
diff --git a/vanilla-os/ikaros/locales/en.yml b/vanilla-os/ikaros/locales/en.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d2c8da955ee107339637b427d423852a770cdfd7
--- /dev/null
+++ b/vanilla-os/ikaros/locales/en.yml
@@ -0,0 +1,29 @@
+ikaros:
+  use: "ikaros"
+  long: "Ikaros is a command line tool for managing drivers for your devices"
+  short: "Ikaros manages drivers for your devices"
+
+listDevices:
+  use: "list-devices"
+  long: "List all devices"
+  short: "List devices"
+  json: "output the result in JSON format"
+  startListing: "Listing devices and drivers..."
+  successfulListing: "Successfully listed devices and drivers"
+
+install:
+  use: "install"
+  long: "Install a driver"
+  short: "Install a driver"
+  startInstallation: "Installing driver..."
+  failedGetDevice: "Failed to get device"
+  failedInstallation: "Failed to install driver"
+  successfulInstallation: "Successfully installed driver"
+
+autoInstall:
+  use: "auto-install"
+  long: "Auto install the correct drivers for all devices"
+  short: "Auto install correct drivers"
+  startInstallation: "Auto installing drivers for all devices..."
+  failedInstallation: "Failed to install drivers"
+  successfulInstallation: "Successfully installed drivers for all devices"
diff --git a/vanilla-os/ikaros/locales/ko.yml b/vanilla-os/ikaros/locales/ko.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7cb8306ab6dc71f8ce31e1740fd9ca105fa99e61
--- /dev/null
+++ b/vanilla-os/ikaros/locales/ko.yml
@@ -0,0 +1,29 @@
+ikaros:
+  use: "ikaros"
+  long: "Ikaros는 장치 드라이버를 관리하는 명령줄 도구입니다."
+  short: "Ikaros는 장치 드라이버를 관리합니다."
+
+listDevices:
+  use: "list-devices"
+  long: "모든 장치 목록 표시"
+  short: "장치 목록 표시"
+  json: "JSON 형식으로 출력"
+  startListing: "장치 및 드라이버 목록 작성 중..."
+  successfulListing: "장치 및 드라이버 목록 작성 완료"
+
+install:
+  use: "install"
+  long: "드라이버 설치"
+  short: "드라이버 설치"
+  startInstallation: "드라이버 설치 중..."
+  failedGetDevice: "장치 가져오기 실패"
+  failedInstallation: "드라이버 설치 실패"
+  successfulInstallation: "드라이버 설치 완료"
+
+autoInstall:
+  use: "auto-install"
+  long: "모든 장치에 대해 올바른 드라이버 자동 설치"
+  short: "올바른 드라이버 자동 설치"
+  startInstallation: "모든 장치에 대한 드라이버 자동 설치 중..."
+  failedInstallation: "드라이버 설치 실패"
+  successfulInstallation: "모든 장치에 대한 드라이버 자동 설치 완료"
diff --git a/vanilla-os/installer/po/ko.po b/vanilla-os/installer/po/ko.po
new file mode 100644
index 0000000000000000000000000000000000000000..3540cf0b3d518cccb27f3c86c973cdac66153eb7
--- /dev/null
+++ b/vanilla-os/installer/po/ko.po
@@ -0,0 +1,723 @@
+# Korean translations for vanilla-installer package.
+# Copyright (C) 2022 THE vanilla-installer'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the vanilla-installer package.
+# Automatically generated, 2022.
+#
+# Namhoon Kim <namhoon80.kim@gmail.com>, 2023.
+# MJKim <kmj10727@gmail.com>, 2023.
+# lmj0927 <lmjj0927@naver.com>, 2023.
+msgid ""
+msgstr ""
+"Project-Id-Version: vanilla-installer\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-11-22 10:57+0530\n"
+"PO-Revision-Date: 2023-12-21 19:35+0000\n"
+"Last-Translator: lmj0927 <lmjj0927@naver.com>\n"
+"Language-Team: Korean <https://hosted.weblate.org/projects/vanilla-os/"
+"installer/ko/>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 5.4-dev\n"
+
+#: data/org.vanillaos.Installer.desktop.in:3 vanilla_installer/gtk/window.ui:8
+msgid "Vanilla OS Installer"
+msgstr "바닐라 OS 설치 프로그램"
+
+#: data/org.vanillaos.Installer.appdata.xml.in:7
+#, fuzzy
+msgid "Tweak your Vanilla OS installation."
+msgstr "우분투 바닐라 GNOME 설치를 수정합니다."
+
+#: data/org.vanillaos.Installer.appdata.xml.in:10
+msgid "No description"
+msgstr "설명 없음"
+
+#: data/org.vanillaos.Installer.appdata.xml.in:26
+msgid "First release"
+msgstr "첫 번째 릴리스"
+
+#: vanilla_installer/gtk/confirm.ui:10
+msgid "Confirm Installation"
+msgstr "설치 확인하기"
+
+#: vanilla_installer/gtk/confirm.ui:11
+msgid "The following changes will be made to your system:"
+msgstr "사용자의 시스템에 다음과 같은 변경사항이 적용됩니다:"
+
+#: vanilla_installer/gtk/confirm.ui:28
+msgid "Install Vanilla OS"
+msgstr "바닐라 OS 설치하기"
+
+#: vanilla_installer/gtk/default-disk.ui:19
+#: vanilla_installer/gtk/default-encryption.ui:18
+#: vanilla_installer/gtk/default-keyboard.ui:30
+#: vanilla_installer/gtk/default-language.ui:18
+#: vanilla_installer/gtk/default-theme.ui:49
+#: vanilla_installer/gtk/default-timezone.ui:18
+#: vanilla_installer/gtk/default-users.ui:19
+#: vanilla_installer/gtk/layout-preferences.ui:29
+msgid "Next"
+msgstr "다음"
+
+#: vanilla_installer/gtk/default-disk.ui:29
+msgid "Install Location"
+msgstr "설치위치"
+
+#: vanilla_installer/gtk/default-disk.ui:30
+msgid ""
+"Select the disk where you want to install Vanilla OS. Alternatively, you can "
+"select one or more disks to configure manually."
+msgstr "바닐라 OS를 설치할 디스크를 선택하세요. 또는 수동으로 구성할 하나 이상의 "
+"디스크를 선택할 수 있습니다."
+
+#: vanilla_installer/gtk/default-disk.ui:44
+#, fuzzy
+msgid "Use entire disk"
+msgstr "전체 디스크 사용하기"
+
+#: vanilla_installer/gtk/default-disk.ui:56
+msgid "Manual"
+msgstr "메뉴얼"
+
+#: vanilla_installer/gtk/default-disk.ui:86
+msgid "You need at least %s of disk space to proceed with the installation."
+msgstr "설치를 계속하려면 최소 %s의 디스크 공간이 필요합니다."
+
+#: vanilla_installer/gtk/default-encryption.ui:28
+msgid "Device Encryption"
+msgstr "장치 암호화"
+
+#: vanilla_installer/gtk/default-encryption.ui:29
+msgid ""
+"Vanilla OS provides full-disk encryption through LUKS2 to protect your "
+"personal information in case your device gets stolen."
+msgstr "바닐라 OS는 LUKS2를 통한 완전한 디스크 암호화를 제공하여 장치가 도난당한 "
+"경우 개인 정보를 보호합니다."
+
+#: vanilla_installer/gtk/default-encryption.ui:36
+msgid "Encrypt device"
+msgstr "암호화 된 장치"
+
+#: vanilla_installer/gtk/default-encryption.ui:37
+msgid "Use a memorable password to encrypt your data"
+msgstr "데이터를 암호화하기 위해 기억하기 쉬운 암호 사용하세요"
+
+#: vanilla_installer/gtk/default-encryption.ui:49
+#: vanilla_installer/gtk/default-users.ui:60
+msgid "Password"
+msgstr "비밀번호"
+
+#: vanilla_installer/gtk/default-encryption.ui:55
+#: vanilla_installer/gtk/default-users.ui:66
+msgid "Confirm Password"
+msgstr "비밀번호 확인"
+
+#: vanilla_installer/gtk/default-keyboard.ui:40
+msgid "Keyboard Layout"
+msgstr "자판 배열"
+
+#: vanilla_installer/gtk/default-keyboard.ui:41
+msgid "Select your preferred keyboard layout"
+msgstr "원하는 자판 배열 선택하기"
+
+#: vanilla_installer/gtk/default-keyboard.ui:51
+msgid "Search for a Keyboard Layout"
+msgstr "자판 배열 검색하기"
+
+#: vanilla_installer/gtk/default-language.ui:28
+#: vanilla_installer/views/confirm.py:75
+msgid "Language"
+msgstr "언어"
+
+#: vanilla_installer/gtk/default-language.ui:29
+msgid "Select your language"
+msgstr "사용자의 언어 선택하기"
+
+#: vanilla_installer/gtk/default-language.ui:39
+#, fuzzy
+#| msgid "Search for a language"
+msgid "Search for a language"
+msgstr "언어 검색하기"
+
+#: vanilla_installer/gtk/default-nvidia.ui:14
+msgid "NVIDIA® Drivers"
+msgstr "NVIDIA® 드라이버"
+
+#: vanilla_installer/gtk/default-nvidia.ui:15
+msgid ""
+"Choose whether to install proprietary NVIDIA drivers for better "
+"compatibility and performance."
+msgstr "호환성 및 성능 향상을 위해 NVIDIA 전용 드라이버를 설치할지 여부를 선택하세요."
+
+#: vanilla_installer/gtk/default-nvidia.ui:29
+msgid "Don't install"
+msgstr "설치하지 않기"
+
+#: vanilla_installer/gtk/default-nvidia.ui:38
+msgid "Install  (recommended)"
+msgstr "설치(권장)"
+
+#: vanilla_installer/gtk/default-nvidia.ui:70
+msgid "About Proprietary Drivers"
+msgstr "독점 드라이버 정보"
+
+#: vanilla_installer/gtk/default-nvidia.ui:78
+msgid ""
+"A proprietary driver has private code that neither Vanilla OS nor Debian "
+"developers can review.\n"
+"\n"
+"Security and other updates are dependent on the driver vendor."
+msgstr ""
+"독점 드라이버에는 바닐라 OS나 데비안 개발자가 검토할 수 없는 비공개 코드가 "
+"있습니다.\n"
+"\n"
+"보안 및 기타 업데이트는 드라이버 공급업체에 따라 다릅니다."
+
+#: vanilla_installer/gtk/default-theme.ui:17
+msgid "Default"
+msgstr "기본값"
+
+#: vanilla_installer/gtk/default-theme.ui:29
+msgid "Dark"
+msgstr "어두운 테마"
+
+#: vanilla_installer/gtk/default-theme.ui:42
+msgid "Color Scheme"
+msgstr "색 구성표"
+
+#: vanilla_installer/gtk/default-theme.ui:43
+msgid "Choose a color scheme for your system"
+msgstr "사용자 시스템의 색 구성표 고르기"
+
+#: vanilla_installer/gtk/default-timezone.ui:28
+msgid "Date & Time"
+msgstr "날짜 및 시간"
+
+#: vanilla_installer/gtk/default-timezone.ui:29
+msgid "Select your preferred timezone"
+msgstr "원하는 시간대 선택하기"
+
+#: vanilla_installer/gtk/default-timezone.ui:39
+msgid "Search for a Timezone"
+msgstr "시간대 검색하기"
+
+#: vanilla_installer/gtk/default-users.ui:40
+msgid "Create User"
+msgstr "사용자 생성"
+
+#: vanilla_installer/gtk/default-users.ui:41
+msgid "Provide details for your user account"
+msgstr "사용자 계정에 대한 세부 정보를 제공하세요"
+
+#: vanilla_installer/gtk/default-users.ui:48
+msgid "Name"
+msgstr "이름"
+
+#: vanilla_installer/gtk/default-users.ui:54
+msgid "Username"
+msgstr "사용자 이름"
+
+#: vanilla_installer/gtk/default-welcome.ui:17
+#, fuzzy
+msgid "Install"
+msgstr "설치하는 중..."
+
+#: vanilla_installer/gtk/default-welcome.ui:34
+#: vanilla_installer/gtk/dialog-recovery.ui:6
+msgid "Recovery"
+msgstr "복구"
+
+#: vanilla_installer/gtk/default-welcome.ui:51
+#: vanilla_installer/gtk/dialog-poweroff.ui:6
+#: vanilla_installer/gtk/dialog-poweroff.ui:26
+msgid "Power Off"
+msgstr "전원 시스템 종료"
+
+#: vanilla_installer/gtk/dialog.ui:6
+#, fuzzy
+msgid "Showing Information"
+msgstr "정보 표시"
+
+#: vanilla_installer/gtk/dialog-disk.ui:5
+msgid "Configure Disk"
+msgstr "디스크 구성하기"
+
+#: vanilla_installer/gtk/dialog-disk.ui:17
+#: vanilla_installer/gtk/dialog-disk-confirm.ui:18
+msgid "Cancel"
+msgstr "취소"
+
+#: vanilla_installer/gtk/dialog-disk.ui:22
+msgid "Apply"
+msgstr "적용하기"
+
+#: vanilla_installer/gtk/dialog-disk-confirm.ui:6
+#: vanilla_installer/gtk/dialog-disk-confirm.ui:25
+#: vanilla_installer/gtk/dialog-disk-confirm.ui:36
+msgid "Confirm Changes"
+msgstr "변경사항 확인하기"
+
+#: vanilla_installer/gtk/dialog-disk-confirm.ui:26
+msgid ""
+"The following changes will be made to your disk. Please review them "
+"carefully."
+msgstr "디스크에 다음과 같은 변경사항이 적용됩니다. 주의 깊게 검토하십시오."
+
+#: vanilla_installer/gtk/dialog-output.ui:6
+msgid "Log"
+msgstr "로그"
+
+#: vanilla_installer/gtk/dialog-poweroff.ui:42
+msgid "Restart"
+msgstr "재시작"
+
+#: vanilla_installer/gtk/dialog-poweroff.ui:58
+msgid "Restart into Firmware Setup"
+msgstr "펌웨어 설정으로 재시작"
+
+#: vanilla_installer/gtk/dialog-recovery.ui:26
+msgid "Console"
+msgstr "콘솔"
+
+#: vanilla_installer/gtk/dialog-recovery.ui:27
+msgid "Open a Terminal"
+msgstr "터미널 열기"
+
+#: vanilla_installer/gtk/dialog-recovery.ui:43
+msgid "Documentation"
+msgstr "문서"
+
+#: vanilla_installer/gtk/dialog-recovery.ui:44
+msgid "Read the Vanilla OS Documentation"
+msgstr "Vanilla OS 문서 읽기"
+
+#: vanilla_installer/gtk/dialog-recovery.ui:60
+msgid "Gparted"
+msgstr "GParted"
+
+#: vanilla_installer/gtk/dialog-recovery.ui:61
+msgid "Manage disks and partitions"
+msgstr "디스크 및 파티션 관리"
+
+#: vanilla_installer/gtk/dialog-recovery.ui:77
+msgid "Handbook"
+msgstr "핸드북"
+
+#: vanilla_installer/gtk/dialog-recovery.ui:78
+msgid "Read tutorials and guides about Vanilla OS."
+msgstr "바닐라 OS에 대한 튜토리얼 및 가이드 읽기."
+
+#: vanilla_installer/gtk/dialog-recovery.ui:94
+msgid "Web Browser"
+msgstr "웹 브라우저"
+
+#: vanilla_installer/gtk/dialog-recovery.ui:95
+msgid "Search online for help"
+msgstr "온라인에서 도움말 검색"
+
+#: vanilla_installer/gtk/done.ui:12
+msgid "All done!"
+msgstr "모두 완료되었습니다!"
+
+#: vanilla_installer/gtk/done.ui:13
+msgid "Restart your device to enjoy your Vanilla OS experience"
+msgstr "사용자의 기기를 다시 시작하여 바닐라 OS 환경을 즐기십시오"
+
+#: vanilla_installer/gtk/done.ui:23
+msgid "Show Log"
+msgstr "로그 표시"
+
+#: vanilla_installer/gtk/done.ui:32
+msgid "Reboot Now"
+msgstr "지금 재부팅"
+
+#: vanilla_installer/gtk/done.ui:42
+msgid "Close"
+msgstr "닫기"
+
+#: vanilla_installer/gtk/layout-yes-no.ui:36
+msgid "Yes, enable it"
+msgstr "예, 활성화합니다"
+
+#: vanilla_installer/gtk/progress.ui:70
+msgid "Installing..."
+msgstr "설치중..."
+
+#: vanilla_installer/gtk/progress.ui:91
+msgid "Show Console output"
+msgstr "콘솔 출력 표시"
+
+#: vanilla_installer/gtk/progress.ui:106
+msgid "Show Slideshow"
+msgstr "슬라이드쇼 표시"
+
+#: vanilla_installer/gtk/widget-partition.ui:10
+msgid "Open GParted"
+msgstr "GParted 열기"
+
+#: vanilla_installer/gtk/widget-partition.ui:11
+msgid "Open GParted to manually partition the disk"
+msgstr "디스크를 수동으로 분할하기 위해 GParted 열기"
+
+#: vanilla_installer/gtk/widget-partition.ui:29
+msgid "Boot Partition"
+msgstr "부팅 파티션"
+
+#: vanilla_installer/gtk/widget-partition.ui:30
+#, fuzzy
+#| msgid ""
+#| "The partition to mount under “/boot”. This directory stores files for "
+#| "booting in Vanilla OS."
+msgid ""
+"The partition to mount under “/boot”. This directory stores files for "
+"booting into Vanilla OS."
+msgstr "\"/boot\" 파티션. 바닐라 OS 부팅 파일들을 위한 디렉토리 입니다."
+
+#: vanilla_installer/gtk/widget-partition.ui:33
+#: vanilla_installer/gtk/widget-partition.ui:54
+#: vanilla_installer/gtk/widget-partition.ui:75
+#: vanilla_installer/gtk/widget-partition.ui:96
+#: vanilla_installer/gtk/widget-partition.ui:117
+#: vanilla_installer/gtk/widget-partition.ui:151
+#: vanilla_installer/defaults/disk.py:402
+msgid "No partition selected"
+msgstr "파티션이 선택되지 않았습니다"
+
+#: vanilla_installer/gtk/widget-partition.ui:34
+#: vanilla_installer/gtk/widget-partition.ui:55
+#: vanilla_installer/gtk/widget-partition.ui:76
+#: vanilla_installer/gtk/widget-partition.ui:97
+#: vanilla_installer/gtk/widget-partition.ui:118
+#: vanilla_installer/gtk/widget-partition.ui:152
+#: vanilla_installer/defaults/disk.py:404
+msgid "Please select a partition from the options below"
+msgstr "아래 옵션에서 파티션을 선택하세요."
+
+#: vanilla_installer/gtk/widget-partition.ui:45
+msgid "Boot partition is too small."
+msgstr "부트 파티션이 너무 작습니다."
+
+#: vanilla_installer/gtk/widget-partition.ui:50
+msgid "EFI Partition"
+msgstr "EFI 파티션"
+
+#: vanilla_installer/gtk/widget-partition.ui:51
+msgid ""
+"The partition to mount under “/boot/efi”. This directory stores files for "
+"booting in the bootloader."
+msgstr "\"/boot/efi\" 파티션. 부트로더를 위한 파일들이 저장됩니다."
+
+#: vanilla_installer/gtk/widget-partition.ui:66
+msgid "EFI partition is too small."
+msgstr "EFI 파티션이 너무 작습니다."
+
+#: vanilla_installer/gtk/widget-partition.ui:71
+msgid "BIOS Boot Partition"
+msgstr "BIOS 부팅 파티션"
+
+#: vanilla_installer/gtk/widget-partition.ui:72
+msgid ""
+"The partition required by GPT-formatted disks to support booting from BIOS "
+"systems. It must be located in the first 2 TB of the disk and must be "
+"exactly 1 Mebibyte (1 MiB)."
+msgstr ""
+"BIOS 부팅을 지원하기 위해서 GPT-형식의 디스크에서 요구하는 파티션. 반드시 디"
+"스크의 처음 2TB에 위치하여야 하며 정확히 1 MiB 크기가 필요합니다."
+
+#: vanilla_installer/gtk/widget-partition.ui:87
+msgid "BIOS partition must be exactly 1 MiB."
+msgstr "BIOS 파티션은 정확히 1MiB 이어야 합니다."
+
+#: vanilla_installer/gtk/widget-partition.ui:92
+#, fuzzy
+#| msgid "Root Partitions"
+msgid "Root Partition"
+msgstr "루트 파티션"
+
+#: vanilla_installer/gtk/widget-partition.ui:93
+msgid ""
+"The partition to mount under “/”. It will be automatically converted into an "
+"LVM thin pool during installation."
+msgstr "파티션을 \"/\" 아래에 마운트합니다. 설치 중에 자동으로 LVM 얇은 풀로 "
+"변환됩니다."
+
+#: vanilla_installer/gtk/widget-partition.ui:108
+msgid "Root partition is too small."
+msgstr "루트 파티션이 너무 작습니다."
+
+#: vanilla_installer/gtk/widget-partition.ui:113
+msgid "Var Partition"
+msgstr "var 파티션"
+
+#: vanilla_installer/gtk/widget-partition.ui:114
+msgid ""
+"The partition to mount under “/var”. This directory stores all user data "
+"like personal documents and system-wide configuration."
+msgstr ""
+"\"/var\" 아래에 마운트할 파티션입니다. 이 디렉터리에는 개인 문서 및 시스템 "
+"전역 구성과 같은 모든 사용자 데이터가 저장됩니다."
+
+#: vanilla_installer/gtk/widget-partition.ui:129
+msgid "Home partition is too small."
+msgstr "홈 파티션이 너무 작습니다."
+
+#: vanilla_installer/gtk/widget-partition.ui:134
+#: vanilla_installer/gtk/widget-partition.ui:138
+msgid "Swap Partition"
+msgstr "파티션 교체"
+
+#: vanilla_installer/gtk/widget-partition.ui:135
+msgid ""
+"Swap acts as a virtual extension of your RAM and enables hibernation. "
+"Vanilla OS already uses zram to provide swapping at no storage cost."
+msgstr ""
+"스왑은 RAM의 가상 확장 역할을 하며 최대 절전 모드를 활성화합니다. 바닐라 "
+"OS는 이미 zram을 사용하여 스토리지 비용 없이 스왑을 제공합니다."
+
+#: vanilla_installer/gtk/widget-partition.ui:139
+msgid ""
+"Choose a partition to use for swap alongside zram. This is not required for "
+"hibernation."
+msgstr "zram과 함께 스왑에 사용할 파티션을 선택합니다. 최대 절전 모드에서는 필요하지 "
+"않습니다."
+
+#: vanilla_installer/gtk/window.ui:37
+msgid "Back"
+msgstr "뒤로"
+
+#: vanilla_installer/gtk/wireless-row.ui:33
+#: vanilla_installer/defaults/network.py:374
+msgid "Connected"
+msgstr "연결됨"
+
+#: vanilla_installer/defaults/disk.py:298
+msgid "GParted is already running. Only one instance of GParted is permitted."
+msgstr "GParted가 이미 실행 중입니다. GParted의 인스턴스는 하나만 허용됩니다."
+
+#: vanilla_installer/defaults/disk.py:363
+msgid "Partition must be at least {}"
+msgstr "파티션은 {} 이상이어야 합니다"
+
+#: vanilla_installer/defaults/disk.py:387
+msgid "Partition must EXACTLY {}"
+msgstr "파티션은 정확히 {}여야 합니다"
+
+#: vanilla_installer/defaults/disk.py:500
+msgid "Partitions have changed. Current selections have been cleared."
+msgstr "파티션이 변경되었습니다. 현재 선택 항목이 지워졌습니다."
+
+#: vanilla_installer/defaults/disk.py:558
+msgid "Entire disk will be used."
+msgstr "전체 디스크가 사용됩니다."
+
+#: vanilla_installer/defaults/disk.py:565
+msgid "Will be formatted in {} and mounted in {}"
+msgstr "{}로 포맷되고 {}에 마운트됩니다"
+
+#: vanilla_installer/defaults/network.py:37
+msgid "Insecure network (WEP)"
+msgstr "보안이 취약한 네트워크 (WEP)"
+
+#: vanilla_installer/defaults/network.py:38
+msgid "Secure network (WPA)"
+msgstr "안전한 네트워크 (WPA)"
+
+#: vanilla_installer/defaults/network.py:39
+msgid "Secure network (WPA2)"
+msgstr "안전한 네트워크 (WPA2)"
+
+#: vanilla_installer/defaults/network.py:40
+msgid "Secure network (WPA3)"
+msgstr "안전한 네트워크 (WPA3)"
+
+#: vanilla_installer/defaults/network.py:377
+msgid "Authentication required"
+msgstr "인증이 필요합니다"
+
+#: vanilla_installer/defaults/network.py:385
+msgid "Connecting"
+msgstr "연결중"
+
+#: vanilla_installer/defaults/network.py:387
+msgid "Disconnected"
+msgstr "연결이 끊어졌습니다"
+
+#: vanilla_installer/defaults/network.py:389
+msgid "Disconnecting"
+msgstr "연결 끊는 중"
+
+#: vanilla_installer/defaults/network.py:391
+msgid "Connection Failed"
+msgstr "연결 실패"
+
+#: vanilla_installer/defaults/network.py:393
+msgid "Status Unknown"
+msgstr "상태를 알 수 없음"
+
+#: vanilla_installer/defaults/network.py:395
+msgid "Unmanaged"
+msgstr "관리되지 않음"
+
+#: vanilla_installer/defaults/network.py:397
+msgid "Unavailable"
+msgstr "사용할 수 없음"
+
+#: vanilla_installer/defaults/network.py:411
+msgid "Cable Unplugged"
+msgstr "케이블이 연결되지 않음"
+
+#: vanilla_installer/layouts/preferences.py:67
+msgid "Please select at least one option."
+msgstr "옵션을 하나 이상 선택하십시오."
+
+#: vanilla_installer/utils/builder.py:71
+msgid "Missing 'log_file' in the recipe."
+msgstr "레시피에 '로그 파일'이 누락되었습니다."
+
+#: vanilla_installer/utils/builder.py:80
+#, python-format
+msgid "failed to create log file: %s"
+msgstr "로그 파일을 만들지 못했습니다: %s"
+
+#: vanilla_installer/utils/builder.py:81
+msgid "No log will be stored."
+msgstr "로그는 저장되지 않습니다."
+
+#: vanilla_installer/utils/builder.py:88
+#, python-format
+msgid "Performing display-condition: %s"
+msgstr "디스플레이 조건 수행: %s"
+
+#: vanilla_installer/utils/builder.py:97 vanilla_installer/utils/builder.py:102
+#, python-format
+msgid "Step %s skipped due to display-conditions"
+msgstr "%s 단계는 디스플레이 조건으로 인해 건너뛰었습니다"
+
+#: vanilla_installer/utils/recipe.py:43
+msgid "Invalid recipe file"
+msgstr "잘못된 레시피 파일"
+
+#: vanilla_installer/utils/recipe.py:52
+msgid "Recipe is not a dictionary"
+msgstr "레시피는 사전이 아닙니다"
+
+#: vanilla_installer/utils/recipe.py:57
+#, python-brace-format
+msgid "Recipe is missing the '{key}' key"
+msgstr "레시피에 '{key}' 키가 누락되었습니다"
+
+#: vanilla_installer/utils/recipe.py:61
+msgid "Recipe steps is not a list"
+msgstr "레시피 단계는 목록이 아닙니다"
+
+#: vanilla_installer/utils/recipe.py:66
+#, python-brace-format
+msgid "Step {step} is not a dictionary"
+msgstr "{step} 단계는 사전이 아닙니다"
+
+#: vanilla_installer/views/confirm.py:81
+msgid "Keyboard"
+msgstr "키보드"
+
+#: vanilla_installer/views/confirm.py:87
+msgid "Timezone"
+msgstr "표준 시간대"
+
+#: vanilla_installer/views/confirm.py:95
+msgid "Users"
+msgstr "사용자"
+
+#: vanilla_installer/views/confirm.py:104
+#: vanilla_installer/views/confirm.py:120
+msgid "Disk"
+msgstr "디스크"
+
+#: vanilla_installer/views/done.py:40
+#, fuzzy
+msgid "Restart your device to enjoy your {} experience."
+msgstr "사용자의 PC를 다시 시작하여 {} 환경을 즐기십시오."
+
+#: vanilla_installer/views/done.py:54
+msgid "Something went wrong"
+msgstr "문제가 발생했습니다"
+
+#: vanilla_installer/views/done.py:56
+msgid "Please contact the distribution developers."
+msgstr "배포 개발자에게 문의하십시오."
+
+#~ msgid "Region"
+#~ msgstr "지역"
+
+#~ msgid "Zone"
+#~ msgstr "구역"
+
+#, fuzzy
+#~| msgid "Try Vanilla OS"
+#~ msgid "Welcome to Vanilla OS!"
+#~ msgstr "바닐라 OS 사용해보기"
+
+#, fuzzy
+#~ msgid "Home Partition"
+#~ msgstr "파티션"
+
+#, fuzzy
+#~ msgid "Vanilla OS Recovery"
+#~ msgstr "바닐라 OS 설치 프로그램"
+
+#~ msgid "Select a Disk"
+#~ msgstr "디스크 선택하기"
+
+#, fuzzy
+#~ msgid "Select the disk where you want to install Vanilla OS"
+#~ msgstr "바닐라 OS를 설치할 디스크 선택하기"
+
+#~ msgid "Configure"
+#~ msgstr "구성하기"
+
+#~ msgid "Disk Allocation"
+#~ msgstr "디스크 할당"
+
+#, fuzzy
+#~ msgid "Choose how to install Vanilla OS on your drive."
+#~ msgstr "바닐라 OS를 설치할 디스크 선택하기"
+
+#~ msgid "This will erase all data on the disk."
+#~ msgstr "디스크의 모든 데이터가 지워집니다."
+
+#, fuzzy
+#~ msgid "Manual Partitioning"
+#~ msgstr "파티션"
+
+#~ msgid ""
+#~ "Select which partitions to use for installation. Incorrect configuration "
+#~ "can lead to data loss, corruption, and/or an unbootable system."
+#~ msgstr ""
+#~ "설치를 위하여 사용할 파티션을 선택하십시요. 잘못된 구성은 데이터 유실, 오"
+#~ "염, 또는 시동할 수 없는 시스템을 만들 수 있습니다."
+
+#~ msgid "This is the only disk available and cannot be deselected!"
+#~ msgstr "이 디스크만 사용할 수 있으며 선택을 취소할 수 없습니다!"
+
+#~ msgid "Welcome"
+#~ msgstr "환영합니다"
+
+#~ msgid "This software will guide you through the installation process."
+#~ msgstr "이 소프트웨어는 설치 과정을 통해 당신을 안내합니다."
+
+#~ msgid "The following partitions were found on the disk"
+#~ msgstr "디스크에서 다음 파티션이 발견되었습니다"
+
+#~ msgid "Format"
+#~ msgstr "포멧"
+
+#~ msgid "Choose a new file system or leave as is"
+#~ msgstr "새 파일 시스템을 선택하거나 그대로 둡니다"
+
+#~ msgid "Mount Point"
+#~ msgstr "마운트 지점"
+
+#~ msgid "Choose a mount point for the partition"
+#~ msgstr "파티션의 마운트 지점 고르기"
diff --git a/vanilla-os/installer/po/vanilla-installer.pot b/vanilla-os/installer/po/vanilla-installer.pot
new file mode 100644
index 0000000000000000000000000000000000000000..e6cb005df53091d44f6f0a0e6d9005c647bef007
--- /dev/null
+++ b/vanilla-os/installer/po/vanilla-installer.pot
@@ -0,0 +1,617 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the vanilla-installer package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: vanilla-installer\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-11-22 10:57+0530\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: data/org.vanillaos.Installer.desktop.in:3 vanilla_installer/gtk/window.ui:8
+msgid "Vanilla OS Installer"
+msgstr ""
+
+#: data/org.vanillaos.Installer.appdata.xml.in:7
+msgid "Tweak your Vanilla OS installation."
+msgstr ""
+
+#: data/org.vanillaos.Installer.appdata.xml.in:10
+msgid "No description"
+msgstr ""
+
+#: data/org.vanillaos.Installer.appdata.xml.in:26
+msgid "First release"
+msgstr ""
+
+#: vanilla_installer/gtk/confirm.ui:10
+msgid "Confirm Installation"
+msgstr ""
+
+#: vanilla_installer/gtk/confirm.ui:11
+msgid "The following changes will be made to your system:"
+msgstr ""
+
+#: vanilla_installer/gtk/confirm.ui:28
+msgid "Install Vanilla OS"
+msgstr ""
+
+#: vanilla_installer/gtk/default-disk.ui:19
+#: vanilla_installer/gtk/default-encryption.ui:18
+#: vanilla_installer/gtk/default-keyboard.ui:30
+#: vanilla_installer/gtk/default-language.ui:18
+#: vanilla_installer/gtk/default-theme.ui:49
+#: vanilla_installer/gtk/default-timezone.ui:18
+#: vanilla_installer/gtk/default-users.ui:19
+#: vanilla_installer/gtk/layout-preferences.ui:29
+msgid "Next"
+msgstr ""
+
+#: vanilla_installer/gtk/default-disk.ui:29
+msgid "Install Location"
+msgstr ""
+
+#: vanilla_installer/gtk/default-disk.ui:30
+msgid ""
+"Select the disk where you want to install Vanilla OS. Alternatively, you can "
+"select one or more disks to configure manually."
+msgstr ""
+
+#: vanilla_installer/gtk/default-disk.ui:44
+msgid "Use entire disk"
+msgstr ""
+
+#: vanilla_installer/gtk/default-disk.ui:56
+msgid "Manual"
+msgstr ""
+
+#: vanilla_installer/gtk/default-disk.ui:86
+msgid "You need at least %s of disk space to proceed with the installation."
+msgstr ""
+
+#: vanilla_installer/gtk/default-encryption.ui:28
+msgid "Device Encryption"
+msgstr ""
+
+#: vanilla_installer/gtk/default-encryption.ui:29
+msgid ""
+"Vanilla OS provides full-disk encryption through LUKS2 to protect your "
+"personal information in case your device gets stolen."
+msgstr ""
+
+#: vanilla_installer/gtk/default-encryption.ui:36
+msgid "Encrypt device"
+msgstr ""
+
+#: vanilla_installer/gtk/default-encryption.ui:37
+msgid "Use a memorable password to encrypt your data"
+msgstr ""
+
+#: vanilla_installer/gtk/default-encryption.ui:49
+#: vanilla_installer/gtk/default-users.ui:60
+msgid "Password"
+msgstr ""
+
+#: vanilla_installer/gtk/default-encryption.ui:55
+#: vanilla_installer/gtk/default-users.ui:66
+msgid "Confirm Password"
+msgstr ""
+
+#: vanilla_installer/gtk/default-keyboard.ui:40
+msgid "Keyboard Layout"
+msgstr ""
+
+#: vanilla_installer/gtk/default-keyboard.ui:41
+msgid "Select your preferred keyboard layout"
+msgstr ""
+
+#: vanilla_installer/gtk/default-keyboard.ui:51
+msgid "Search for a Keyboard Layout"
+msgstr ""
+
+#: vanilla_installer/gtk/default-language.ui:28
+#: vanilla_installer/views/confirm.py:75
+msgid "Language"
+msgstr ""
+
+#: vanilla_installer/gtk/default-language.ui:29
+msgid "Select your language"
+msgstr ""
+
+#: vanilla_installer/gtk/default-language.ui:39
+msgid "Search for a language"
+msgstr ""
+
+#: vanilla_installer/gtk/default-nvidia.ui:14
+msgid "NVIDIA® Drivers"
+msgstr ""
+
+#: vanilla_installer/gtk/default-nvidia.ui:15
+msgid ""
+"Choose whether to install proprietary NVIDIA drivers for better "
+"compatibility and performance."
+msgstr ""
+
+#: vanilla_installer/gtk/default-nvidia.ui:29
+msgid "Don't install"
+msgstr ""
+
+#: vanilla_installer/gtk/default-nvidia.ui:38
+msgid "Install  (recommended)"
+msgstr ""
+
+#: vanilla_installer/gtk/default-nvidia.ui:70
+msgid "About Proprietary Drivers"
+msgstr ""
+
+#: vanilla_installer/gtk/default-nvidia.ui:78
+msgid ""
+"A proprietary driver has private code that neither Vanilla OS nor Debian "
+"developers can review.\n"
+"\n"
+"Security and other updates are dependent on the driver vendor."
+msgstr ""
+
+#: vanilla_installer/gtk/default-theme.ui:17
+msgid "Default"
+msgstr ""
+
+#: vanilla_installer/gtk/default-theme.ui:29
+msgid "Dark"
+msgstr ""
+
+#: vanilla_installer/gtk/default-theme.ui:42
+msgid "Color Scheme"
+msgstr ""
+
+#: vanilla_installer/gtk/default-theme.ui:43
+msgid "Choose a color scheme for your system"
+msgstr ""
+
+#: vanilla_installer/gtk/default-timezone.ui:28
+msgid "Date & Time"
+msgstr ""
+
+#: vanilla_installer/gtk/default-timezone.ui:29
+msgid "Select your preferred timezone"
+msgstr ""
+
+#: vanilla_installer/gtk/default-timezone.ui:39
+msgid "Search for a Timezone"
+msgstr ""
+
+#: vanilla_installer/gtk/default-users.ui:40
+msgid "Create User"
+msgstr ""
+
+#: vanilla_installer/gtk/default-users.ui:41
+msgid "Provide details for your user account"
+msgstr ""
+
+#: vanilla_installer/gtk/default-users.ui:48
+msgid "Name"
+msgstr ""
+
+#: vanilla_installer/gtk/default-users.ui:54
+msgid "Username"
+msgstr ""
+
+#: vanilla_installer/gtk/default-welcome.ui:17
+msgid "Install"
+msgstr ""
+
+#: vanilla_installer/gtk/default-welcome.ui:34
+#: vanilla_installer/gtk/dialog-recovery.ui:6
+msgid "Recovery"
+msgstr ""
+
+#: vanilla_installer/gtk/default-welcome.ui:51
+#: vanilla_installer/gtk/dialog-poweroff.ui:6
+#: vanilla_installer/gtk/dialog-poweroff.ui:26
+msgid "Power Off"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog.ui:6
+msgid "Showing Information"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-disk.ui:5
+msgid "Configure Disk"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-disk.ui:17
+#: vanilla_installer/gtk/dialog-disk-confirm.ui:18
+msgid "Cancel"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-disk.ui:22
+msgid "Apply"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-disk-confirm.ui:6
+#: vanilla_installer/gtk/dialog-disk-confirm.ui:25
+#: vanilla_installer/gtk/dialog-disk-confirm.ui:36
+msgid "Confirm Changes"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-disk-confirm.ui:26
+msgid ""
+"The following changes will be made to your disk. Please review them "
+"carefully."
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-output.ui:6
+msgid "Log"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-poweroff.ui:42
+msgid "Restart"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-poweroff.ui:58
+msgid "Restart into Firmware Setup"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-recovery.ui:26
+msgid "Console"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-recovery.ui:27
+msgid "Open a Terminal"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-recovery.ui:43
+msgid "Documentation"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-recovery.ui:44
+msgid "Read the Vanilla OS Documentation"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-recovery.ui:60
+msgid "Gparted"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-recovery.ui:61
+msgid "Manage disks and partitions"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-recovery.ui:77
+msgid "Handbook"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-recovery.ui:78
+msgid "Read tutorials and guides about Vanilla OS."
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-recovery.ui:94
+msgid "Web Browser"
+msgstr ""
+
+#: vanilla_installer/gtk/dialog-recovery.ui:95
+msgid "Search online for help"
+msgstr ""
+
+#: vanilla_installer/gtk/done.ui:12
+msgid "All done!"
+msgstr ""
+
+#: vanilla_installer/gtk/done.ui:13
+msgid "Restart your device to enjoy your Vanilla OS experience"
+msgstr ""
+
+#: vanilla_installer/gtk/done.ui:23
+msgid "Show Log"
+msgstr ""
+
+#: vanilla_installer/gtk/done.ui:32
+msgid "Reboot Now"
+msgstr ""
+
+#: vanilla_installer/gtk/done.ui:42
+msgid "Close"
+msgstr ""
+
+#: vanilla_installer/gtk/layout-yes-no.ui:36
+msgid "Yes, enable it"
+msgstr ""
+
+#: vanilla_installer/gtk/progress.ui:70
+msgid "Installing..."
+msgstr ""
+
+#: vanilla_installer/gtk/progress.ui:91
+msgid "Show Console output"
+msgstr ""
+
+#: vanilla_installer/gtk/progress.ui:106
+msgid "Show Slideshow"
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:10
+msgid "Open GParted"
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:11
+msgid "Open GParted to manually partition the disk"
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:29
+msgid "Boot Partition"
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:30
+msgid ""
+"The partition to mount under “/boot”. This directory stores files for "
+"booting into Vanilla OS."
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:33
+#: vanilla_installer/gtk/widget-partition.ui:54
+#: vanilla_installer/gtk/widget-partition.ui:75
+#: vanilla_installer/gtk/widget-partition.ui:96
+#: vanilla_installer/gtk/widget-partition.ui:117
+#: vanilla_installer/gtk/widget-partition.ui:151
+#: vanilla_installer/defaults/disk.py:402
+msgid "No partition selected"
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:34
+#: vanilla_installer/gtk/widget-partition.ui:55
+#: vanilla_installer/gtk/widget-partition.ui:76
+#: vanilla_installer/gtk/widget-partition.ui:97
+#: vanilla_installer/gtk/widget-partition.ui:118
+#: vanilla_installer/gtk/widget-partition.ui:152
+#: vanilla_installer/defaults/disk.py:404
+msgid "Please select a partition from the options below"
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:45
+msgid "Boot partition is too small."
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:50
+msgid "EFI Partition"
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:51
+msgid ""
+"The partition to mount under “/boot/efi”. This directory stores files for "
+"booting in the bootloader."
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:66
+msgid "EFI partition is too small."
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:71
+msgid "BIOS Boot Partition"
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:72
+msgid ""
+"The partition required by GPT-formatted disks to support booting from BIOS "
+"systems. It must be located in the first 2 TB of the disk and must be "
+"exactly 1 Mebibyte (1 MiB)."
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:87
+msgid "BIOS partition must be exactly 1 MiB."
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:92
+msgid "Root Partition"
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:93
+msgid ""
+"The partition to mount under “/”. It will be automatically converted into an "
+"LVM thin pool during installation."
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:108
+msgid "Root partition is too small."
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:113
+msgid "Var Partition"
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:114
+msgid ""
+"The partition to mount under “/var”. This directory stores all user data "
+"like personal documents and system-wide configuration."
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:129
+msgid "Home partition is too small."
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:134
+#: vanilla_installer/gtk/widget-partition.ui:138
+msgid "Swap Partition"
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:135
+msgid ""
+"Swap acts as a virtual extension of your RAM and enables hibernation. "
+"Vanilla OS already uses zram to provide swapping at no storage cost."
+msgstr ""
+
+#: vanilla_installer/gtk/widget-partition.ui:139
+msgid ""
+"Choose a partition to use for swap alongside zram. This is not required for "
+"hibernation."
+msgstr ""
+
+#: vanilla_installer/gtk/window.ui:37
+msgid "Back"
+msgstr ""
+
+#: vanilla_installer/gtk/wireless-row.ui:33
+#: vanilla_installer/defaults/network.py:374
+msgid "Connected"
+msgstr ""
+
+#: vanilla_installer/defaults/disk.py:298
+msgid "GParted is already running. Only one instance of GParted is permitted."
+msgstr ""
+
+#: vanilla_installer/defaults/disk.py:363
+msgid "Partition must be at least {}"
+msgstr ""
+
+#: vanilla_installer/defaults/disk.py:387
+msgid "Partition must EXACTLY {}"
+msgstr ""
+
+#: vanilla_installer/defaults/disk.py:500
+msgid "Partitions have changed. Current selections have been cleared."
+msgstr ""
+
+#: vanilla_installer/defaults/disk.py:558
+msgid "Entire disk will be used."
+msgstr ""
+
+#: vanilla_installer/defaults/disk.py:565
+msgid "Will be formatted in {} and mounted in {}"
+msgstr ""
+
+#: vanilla_installer/defaults/network.py:37
+msgid "Insecure network (WEP)"
+msgstr ""
+
+#: vanilla_installer/defaults/network.py:38
+msgid "Secure network (WPA)"
+msgstr ""
+
+#: vanilla_installer/defaults/network.py:39
+msgid "Secure network (WPA2)"
+msgstr ""
+
+#: vanilla_installer/defaults/network.py:40
+msgid "Secure network (WPA3)"
+msgstr ""
+
+#: vanilla_installer/defaults/network.py:377
+msgid "Authentication required"
+msgstr ""
+
+#: vanilla_installer/defaults/network.py:385
+msgid "Connecting"
+msgstr ""
+
+#: vanilla_installer/defaults/network.py:387
+msgid "Disconnected"
+msgstr ""
+
+#: vanilla_installer/defaults/network.py:389
+msgid "Disconnecting"
+msgstr ""
+
+#: vanilla_installer/defaults/network.py:391
+msgid "Connection Failed"
+msgstr ""
+
+#: vanilla_installer/defaults/network.py:393
+msgid "Status Unknown"
+msgstr ""
+
+#: vanilla_installer/defaults/network.py:395
+msgid "Unmanaged"
+msgstr ""
+
+#: vanilla_installer/defaults/network.py:397
+msgid "Unavailable"
+msgstr ""
+
+#: vanilla_installer/defaults/network.py:411
+msgid "Cable Unplugged"
+msgstr ""
+
+#: vanilla_installer/layouts/preferences.py:67
+msgid "Please select at least one option."
+msgstr ""
+
+#: vanilla_installer/utils/builder.py:71
+msgid "Missing 'log_file' in the recipe."
+msgstr ""
+
+#: vanilla_installer/utils/builder.py:80
+#, python-format
+msgid "failed to create log file: %s"
+msgstr ""
+
+#: vanilla_installer/utils/builder.py:81
+msgid "No log will be stored."
+msgstr ""
+
+#: vanilla_installer/utils/builder.py:88
+#, python-format
+msgid "Performing display-condition: %s"
+msgstr ""
+
+#: vanilla_installer/utils/builder.py:97 vanilla_installer/utils/builder.py:102
+#, python-format
+msgid "Step %s skipped due to display-conditions"
+msgstr ""
+
+#: vanilla_installer/utils/recipe.py:43
+msgid "Invalid recipe file"
+msgstr ""
+
+#: vanilla_installer/utils/recipe.py:52
+msgid "Recipe is not a dictionary"
+msgstr ""
+
+#: vanilla_installer/utils/recipe.py:57
+#, python-brace-format
+msgid "Recipe is missing the '{key}' key"
+msgstr ""
+
+#: vanilla_installer/utils/recipe.py:61
+msgid "Recipe steps is not a list"
+msgstr ""
+
+#: vanilla_installer/utils/recipe.py:66
+#, python-brace-format
+msgid "Step {step} is not a dictionary"
+msgstr ""
+
+#: vanilla_installer/views/confirm.py:81
+msgid "Keyboard"
+msgstr ""
+
+#: vanilla_installer/views/confirm.py:87
+msgid "Timezone"
+msgstr ""
+
+#: vanilla_installer/views/confirm.py:95
+msgid "Users"
+msgstr ""
+
+#: vanilla_installer/views/confirm.py:104
+#: vanilla_installer/views/confirm.py:120
+msgid "Disk"
+msgstr ""
+
+#: vanilla_installer/views/done.py:40
+msgid "Restart your device to enjoy your {} experience."
+msgstr ""
+
+#: vanilla_installer/views/done.py:54
+msgid "Something went wrong"
+msgstr ""
+
+#: vanilla_installer/views/done.py:56
+msgid "Please contact the distribution developers."
+msgstr ""
diff --git a/vanilla-os/vanilla-drivers-utility/po/drivers_utility.pot b/vanilla-os/vanilla-drivers-utility/po/drivers_utility.pot
new file mode 100644
index 0000000000000000000000000000000000000000..8df7802e1e678cd7cf969aa2628a805fe7c518d6
--- /dev/null
+++ b/vanilla-os/vanilla-drivers-utility/po/drivers_utility.pot
@@ -0,0 +1,176 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the drivers_utility package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: drivers_utility\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-02-19 10:14+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: data/org.vanillaos.DriversUtility.desktop.in:3
+msgid "Drivers Utility"
+msgstr ""
+
+#: data/org.vanillaos.DriversUtility.appdata.xml.in:7
+msgid "No description"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/driver.ui:22
+#: vanilla_drivers_utility/gtk/window-installation.ui:60
+msgid "Restart Now"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/help-overlay.ui:11
+msgctxt "shortcut window"
+msgid "General"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/help-overlay.ui:14
+msgctxt "shortcut window"
+msgid "Show Shortcuts"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/help-overlay.ui:20
+msgctxt "shortcut window"
+msgid "Quit"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-installation.ui:6
+msgid "\"Installing new Drivers…\""
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-installation.ui:22
+msgid "Installation in Progress…"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-installation.ui:23
+msgid "This may take a while."
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-installation.ui:52
+msgid "Installation Complete"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-installation.ui:53
+msgid "Restart your device to start using the new drivers."
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:16
+msgid "Cancel"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:30
+msgid "Transactions are locked. Please try again later or restart your device."
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:47
+msgid "Loading drivers…"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:48
+msgid "Please wait while the available drivers are being loaded."
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:57
+msgid "No Drivers Available"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:58
+msgid "There are no extra drivers available for your system."
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:78
+msgid "_Preferences"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:82
+msgid "_Keyboard Shortcuts"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:86
+msgid "_About drivers_utility"
+msgstr ""
+
+#: vanilla_drivers_utility/utils/wrapper.py:67
+#, python-format
+msgid "Install command: %s"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:45
+msgid "Free"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:45
+msgid "Proprietary"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:46
+msgid ", recommended"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:47
+msgid ", builtin"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:48
+msgid ", installed"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:49
+msgid ", Waiting for restart"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:63
+msgid ""
+"It is not possible to install this driver now. Please restart your device "
+"and try again."
+msgstr ""
+
+#: vanilla_drivers_utility/windows/installation_window.py:38
+msgid "Installing '{}'…"
+msgstr ""
+
+#: vanilla_drivers_utility/windows/installation_window.py:110
+#: vanilla_drivers_utility/windows/installation_window.py:111
+msgid "Installation Failed"
+msgstr ""
+
+#: vanilla_drivers_utility/windows/installation_window.py:112
+msgid "The installation of the driver failed. Please try again later."
+msgstr ""
+
+#: vanilla_drivers_utility/windows/main_window.py:107
+msgid "Do you want to install the selected driver?"
+msgstr ""
+
+#: vanilla_drivers_utility/windows/main_window.py:108
+msgid ""
+"This will install the '{}' package in your system and possibly remove other "
+"versions."
+msgstr ""
+
+#: vanilla_drivers_utility/windows/main_window.py:110
+msgid "_Cancel"
+msgstr ""
+
+#: vanilla_drivers_utility/windows/main_window.py:111
+msgid "Install"
+msgstr ""
+
+#: vanilla_drivers_utility/windows/main_window.py:118
+msgid "Driver {} installed successfully!"
+msgstr ""
+
+#: vanilla_drivers_utility/windows/main_window.py:123
+msgid "Driver {} installation failed!"
+msgstr ""
diff --git a/vanilla-os/vanilla-drivers-utility/po/ko.po b/vanilla-os/vanilla-drivers-utility/po/ko.po
new file mode 100644
index 0000000000000000000000000000000000000000..c3d5c23fa5c436ab21c64ef41a627ea1a988da90
--- /dev/null
+++ b/vanilla-os/vanilla-drivers-utility/po/ko.po
@@ -0,0 +1,181 @@
+# Korean translations for drivers_utility package.
+# Copyright (C) 2023 THE drivers_utility'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the drivers_utility package.
+# Automatically generated, 2023.
+#
+# MJKim <kmj10727@gmail.com>, 2023.
+# lmj0927 <lmjj0927@naver.com>, 2023.
+msgid ""
+msgstr ""
+"Project-Id-Version: drivers_utility\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-02-19 10:14+0100\n"
+"PO-Revision-Date: 2023-12-21 19:35+0000\n"
+"Last-Translator: lmj0927 <lmjj0927@naver.com>\n"
+"Language-Team: Korean <https://hosted.weblate.org/projects/vanilla-os/"
+"vanilla-drivers-utility/ko/>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 5.4-dev\n"
+
+#: data/org.vanillaos.DriversUtility.desktop.in:3
+msgid "Drivers Utility"
+msgstr ""
+
+#: data/org.vanillaos.DriversUtility.appdata.xml.in:7
+msgid "No description"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/driver.ui:22
+#: vanilla_drivers_utility/gtk/window-installation.ui:60
+msgid "Restart Now"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/help-overlay.ui:11
+msgctxt "shortcut window"
+msgid "General"
+msgstr "일반"
+
+#: vanilla_drivers_utility/gtk/help-overlay.ui:14
+msgctxt "shortcut window"
+msgid "Show Shortcuts"
+msgstr "바로가기 표시하기"
+
+#: vanilla_drivers_utility/gtk/help-overlay.ui:20
+msgctxt "shortcut window"
+msgid "Quit"
+msgstr "끝내기"
+
+#: vanilla_drivers_utility/gtk/window-installation.ui:6
+msgid "\"Installing new Drivers…\""
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-installation.ui:22
+msgid "Installation in Progress…"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-installation.ui:23
+msgid "This may take a while."
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-installation.ui:52
+msgid "Installation Complete"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-installation.ui:53
+msgid "Restart your device to start using the new drivers."
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:16
+msgid "Cancel"
+msgstr "취소"
+
+#: vanilla_drivers_utility/gtk/window-main.ui:30
+msgid "Transactions are locked. Please try again later or restart your device."
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:47
+msgid "Loading drivers…"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:48
+msgid "Please wait while the available drivers are being loaded."
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:57
+msgid "No Drivers Available"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:58
+msgid "There are no extra drivers available for your system."
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:78
+msgid "_Preferences"
+msgstr ""
+
+#: vanilla_drivers_utility/gtk/window-main.ui:82
+msgid "_Keyboard Shortcuts"
+msgstr "키보드 바로 가기(_K)"
+
+#: vanilla_drivers_utility/gtk/window-main.ui:86
+msgid "_About drivers_utility"
+msgstr ""
+
+#: vanilla_drivers_utility/utils/wrapper.py:67
+#, python-format
+msgid "Install command: %s"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:45
+msgid "Free"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:45
+msgid "Proprietary"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:46
+msgid ", recommended"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:47
+msgid ", builtin"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:48
+msgid ", installed"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:49
+msgid ", Waiting for restart"
+msgstr ""
+
+#: vanilla_drivers_utility/widgets/driver.py:63
+msgid ""
+"It is not possible to install this driver now. Please restart your device "
+"and try again."
+msgstr ""
+
+#: vanilla_drivers_utility/windows/installation_window.py:38
+msgid "Installing '{}'…"
+msgstr ""
+
+#: vanilla_drivers_utility/windows/installation_window.py:110
+#: vanilla_drivers_utility/windows/installation_window.py:111
+msgid "Installation Failed"
+msgstr ""
+
+#: vanilla_drivers_utility/windows/installation_window.py:112
+msgid "The installation of the driver failed. Please try again later."
+msgstr ""
+
+#: vanilla_drivers_utility/windows/main_window.py:107
+msgid "Do you want to install the selected driver?"
+msgstr ""
+
+#: vanilla_drivers_utility/windows/main_window.py:108
+msgid ""
+"This will install the '{}' package in your system and possibly remove other "
+"versions."
+msgstr ""
+
+#: vanilla_drivers_utility/windows/main_window.py:110
+msgid "_Cancel"
+msgstr ""
+
+#: vanilla_drivers_utility/windows/main_window.py:111
+#, fuzzy
+msgid "Install"
+msgstr "설치하는 중..."
+
+#: vanilla_drivers_utility/windows/main_window.py:118
+msgid "Driver {} installed successfully!"
+msgstr ""
+
+#: vanilla_drivers_utility/windows/main_window.py:123
+msgid "Driver {} installation failed!"
+msgstr ""
diff --git a/vanilla-os/vanilla-prime-utility/po/ko.po b/vanilla-os/vanilla-prime-utility/po/ko.po
new file mode 100644
index 0000000000000000000000000000000000000000..eff6964e454c6fa463b8da986e7d8fb4498a0b0e
--- /dev/null
+++ b/vanilla-os/vanilla-prime-utility/po/ko.po
@@ -0,0 +1,200 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the prime_utility package.
+# MJKim <kmj10727@gmail.com>, 2023.
+msgid ""
+msgstr ""
+"Project-Id-Version: prime_utility\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-02-19 10:20+0100\n"
+"PO-Revision-Date: 2023-07-09 22:50+0000\n"
+"Last-Translator: MJKim <kmj10727@gmail.com>\n"
+"Language-Team: Korean <https://hosted.weblate.org/projects/vanilla-os/"
+"vanilla-prime-utility/ko/>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 5.0-dev\n"
+
+#: data/org.vanillaos.PrimeUtility.desktop.in:3
+msgid "PRIME Utility"
+msgstr ""
+
+#: data/org.vanillaos.PrimeUtility.appdata.xml.in:7
+msgid "No description"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/help-overlay.ui:11
+msgctxt "shortcut window"
+msgid "General"
+msgstr "일반"
+
+#: vanilla_prime_utility/gtk/help-overlay.ui:14
+msgctxt "shortcut window"
+msgid "Show Shortcuts"
+msgstr "바로가기 표시하기"
+
+#: vanilla_prime_utility/gtk/help-overlay.ui:20
+msgctxt "shortcut window"
+msgid "Quit"
+msgstr "끝내기"
+
+#: vanilla_prime_utility/gtk/profile.ui:17
+#: vanilla_prime_utility/gtk/window-switch.ui:60
+msgid "Restart Now"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:16
+msgid "Cancel"
+msgstr "취소"
+
+#: vanilla_prime_utility/gtk/window-main.ui:30
+msgid "Transactions are locked. Please try again later or restart your device."
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:47
+msgid "Not Supported"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:48
+msgid "Your device does not support PRIME switching."
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:55
+msgid "Active Profile"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:56
+msgid "Select the PRIME profile to use."
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:71
+msgid "_Preferences"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:75
+msgid "_Keyboard Shortcuts"
+msgstr "키보드 바로 가기(_K)"
+
+#: vanilla_prime_utility/gtk/window-main.ui:79
+msgid "_About prime_utility"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-switch.ui:6
+#: vanilla_prime_utility/gtk/window-switch.ui:22
+msgid "Switching PRIME Profile…"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-switch.ui:23
+msgid "This may take a while."
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-switch.ui:52
+msgid "Profile Switched"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-switch.ui:53
+msgid "Restart your device to apply the changes."
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:42
+msgid "PRIME module disabled"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:46
+msgid "prime-select not found"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:50
+msgid "prime-select not supported for this device"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:56
+msgid "prime-select is not supported for this setup"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:66
+msgid "Discrete GPU"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:67
+msgid "Use the discrete GPU for all applications."
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:71
+msgid "Integrated GPU"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:72
+msgid "Use the integrated GPU for all applications."
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:76
+msgid "On-demand"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:77
+msgid ""
+"Use the integrated GPU for all applications, and the discrete GPU on demand."
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:105
+msgid "Invalid profile name"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:128
+#: vanilla_prime_utility/utils/wrapper.py:131
+#: vanilla_prime_utility/utils/wrapper.py:134
+msgid "integrated"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:129
+#: vanilla_prime_utility/utils/wrapper.py:132
+#: vanilla_prime_utility/utils/wrapper.py:135
+msgid "discrete"
+msgstr ""
+
+#: vanilla_prime_utility/widgets/profile.py:52
+msgid ""
+"It is not possible to switch the PRIME profile now. Please restart your "
+"device and try again."
+msgstr ""
+
+#: vanilla_prime_utility/windows/main_window.py:95
+msgid "Do you want to switch to the '{}' profile?"
+msgstr ""
+
+#: vanilla_prime_utility/windows/main_window.py:96
+msgid "This will require a restart to apply the changes."
+msgstr ""
+
+#: vanilla_prime_utility/windows/main_window.py:98
+msgid "_Cancel"
+msgstr ""
+
+#: vanilla_prime_utility/windows/main_window.py:99
+msgid "Switch to '{}'"
+msgstr ""
+
+#: vanilla_prime_utility/windows/main_window.py:106
+msgid "Profile switched to {}!"
+msgstr ""
+
+#: vanilla_prime_utility/windows/main_window.py:111
+msgid "Profile switch failed!"
+msgstr ""
+
+#: vanilla_prime_utility/windows/switch_window.py:38
+msgid "Switching to '{}'…"
+msgstr ""
+
+#: vanilla_prime_utility/windows/switch_window.py:110
+#: vanilla_prime_utility/windows/switch_window.py:111
+msgid "Switch Failed"
+msgstr ""
+
+#: vanilla_prime_utility/windows/switch_window.py:112
+msgid "Something went wrong. Please try again later."
+msgstr ""
diff --git a/vanilla-os/vanilla-prime-utility/po/prime_utility.pot b/vanilla-os/vanilla-prime-utility/po/prime_utility.pot
new file mode 100644
index 0000000000000000000000000000000000000000..2688e8e51b160304e3d9f4b04dd74cb5c9c0e615
--- /dev/null
+++ b/vanilla-os/vanilla-prime-utility/po/prime_utility.pot
@@ -0,0 +1,199 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the prime_utility package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: prime_utility\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-02-19 10:20+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: data/org.vanillaos.PrimeUtility.desktop.in:3
+msgid "PRIME Utility"
+msgstr ""
+
+#: data/org.vanillaos.PrimeUtility.appdata.xml.in:7
+msgid "No description"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/help-overlay.ui:11
+msgctxt "shortcut window"
+msgid "General"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/help-overlay.ui:14
+msgctxt "shortcut window"
+msgid "Show Shortcuts"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/help-overlay.ui:20
+msgctxt "shortcut window"
+msgid "Quit"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/profile.ui:17
+#: vanilla_prime_utility/gtk/window-switch.ui:60
+msgid "Restart Now"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:16
+msgid "Cancel"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:30
+msgid "Transactions are locked. Please try again later or restart your device."
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:47
+msgid "Not Supported"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:48
+msgid "Your device does not support PRIME switching."
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:55
+msgid "Active Profile"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:56
+msgid "Select the PRIME profile to use."
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:71
+msgid "_Preferences"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:75
+msgid "_Keyboard Shortcuts"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-main.ui:79
+msgid "_About prime_utility"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-switch.ui:6
+#: vanilla_prime_utility/gtk/window-switch.ui:22
+msgid "Switching PRIME Profile…"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-switch.ui:23
+msgid "This may take a while."
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-switch.ui:52
+msgid "Profile Switched"
+msgstr ""
+
+#: vanilla_prime_utility/gtk/window-switch.ui:53
+msgid "Restart your device to apply the changes."
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:42
+msgid "PRIME module disabled"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:46
+msgid "prime-select not found"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:50
+msgid "prime-select not supported for this device"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:56
+msgid "prime-select is not supported for this setup"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:66
+msgid "Discrete GPU"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:67
+msgid "Use the discrete GPU for all applications."
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:71
+msgid "Integrated GPU"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:72
+msgid "Use the integrated GPU for all applications."
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:76
+msgid "On-demand"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:77
+msgid ""
+"Use the integrated GPU for all applications, and the discrete GPU on demand."
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:105
+msgid "Invalid profile name"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:128
+#: vanilla_prime_utility/utils/wrapper.py:131
+#: vanilla_prime_utility/utils/wrapper.py:134
+msgid "integrated"
+msgstr ""
+
+#: vanilla_prime_utility/utils/wrapper.py:129
+#: vanilla_prime_utility/utils/wrapper.py:132
+#: vanilla_prime_utility/utils/wrapper.py:135
+msgid "discrete"
+msgstr ""
+
+#: vanilla_prime_utility/widgets/profile.py:52
+msgid ""
+"It is not possible to switch the PRIME profile now. Please restart your "
+"device and try again."
+msgstr ""
+
+#: vanilla_prime_utility/windows/main_window.py:95
+msgid "Do you want to switch to the '{}' profile?"
+msgstr ""
+
+#: vanilla_prime_utility/windows/main_window.py:96
+msgid "This will require a restart to apply the changes."
+msgstr ""
+
+#: vanilla_prime_utility/windows/main_window.py:98
+msgid "_Cancel"
+msgstr ""
+
+#: vanilla_prime_utility/windows/main_window.py:99
+msgid "Switch to '{}'"
+msgstr ""
+
+#: vanilla_prime_utility/windows/main_window.py:106
+msgid "Profile switched to {}!"
+msgstr ""
+
+#: vanilla_prime_utility/windows/main_window.py:111
+msgid "Profile switch failed!"
+msgstr ""
+
+#: vanilla_prime_utility/windows/switch_window.py:38
+msgid "Switching to '{}'…"
+msgstr ""
+
+#: vanilla_prime_utility/windows/switch_window.py:110
+#: vanilla_prime_utility/windows/switch_window.py:111
+msgid "Switch Failed"
+msgstr ""
+
+#: vanilla_prime_utility/windows/switch_window.py:112
+msgid "Something went wrong. Please try again later."
+msgstr ""
diff --git a/vanilla-os/vanilla-system-operator/locales/en.yml b/vanilla-os/vanilla-system-operator/locales/en.yml
new file mode 100644
index 0000000000000000000000000000000000000000..aa0bbadd5e377f47c0c58d266abd3d9cb481003d
--- /dev/null
+++ b/vanilla-os/vanilla-system-operator/locales/en.yml
@@ -0,0 +1,281 @@
+vso:
+  description: "The Vanilla System Operator is a package manager, a system updater and a task automator."
+  errors:
+    unknownCommand: "Unknown command: %s"
+    invalidInput: "Invalid input."
+    invalidChoice: "Invalid choice."
+  info:
+    aborting: "Aborting as requested."
+  terminal:
+    yes: "yes"
+    no: "no"
+
+config:
+  description: "Manage the system configuration."
+  get:
+    description: "Get the system configuration"
+    error:
+      noKey: "No key specified."
+      noValue: "No value found for key: %s"
+    options:
+      key:
+        description: "retrieve configuration value by using its key"
+  set:
+    description: "Set the system configuration"
+    error:
+      noKey: "No key specified."
+      noValue: "No value specified."
+    options:
+      key: "key of the configuration to set"
+      value: "value of the configuration to set"
+    success: "Configuration updated successfully."
+  show:
+    description: "Show the system configuration"
+
+pico:
+  description: "Manage the Pico subsystem"
+  error:
+    notInitialized: "The Pico subsystem is not initialized. Please run `vso pico-init` to initialize it."
+    alreadyInitialized: "The Pico subsystem is already initialized. Use the --force flag to force the initialization."
+    noAppNameOrBin: "--app-name or --bin must be specified."
+    sameAppOrBin: "--app-name and --bin cannot be both specified."
+    exportingApp: "An error occurred while exporting the application: %s"
+    exportingBin: "An error occurred while exporting the binary: %s"
+    unexportingApp: "An error occurred while unexporting the application: %s"
+    unexportingBin: "An error occurred while unexporting the binary: %s"
+    unknownCommand: "Unknown command: %s"
+  info:
+    initialized: "The Pico subsystem has been initialized."
+    exported: "Exported %s\n"
+    unexported: "Unexported %s\n"
+    exportedApps: "Exported %d applications"
+    unexportedApps: "Unexported %d applications"
+  export:
+    description: "Export an application or binary from the subsystem"
+    options:
+      app:
+        description: "the name of the application to export"
+      bin:
+        description: "the name of the binary to export"
+      binOutput:
+        description: "path of the binary output (default: ~/.local/bin/)"
+  unexport:
+    description: "Unexport an application or binary from the subsystem"
+    options:
+      app:
+        description: "the name of the application to unexport"
+      bin:
+        description: "the name of the binary to unexport"
+      binOutput:
+        description: "path of the binary output (default: ~/.local/bin/)"
+  init:
+    description: "Initialize the Pico subsystem, used for package management"
+    options:
+      force:
+        description: "force the initialization if the subsystem is already initialized"
+  install:
+    description: "Install an application inside the subsystem"
+  remove:
+    description: "Remove an application from the subsystem"
+  run:
+    description: "Run an application from the subsystem"
+  search:
+    description: "Search for an application to install inside the subsystem"
+  shell:
+    description: "Enter the subsystem environment"
+  update:
+    description: "Update the subsystem's package repository"
+  upgrade:
+    description: "Upgrade the packages inside the subsystem"
+
+sysUpgrade:
+  description: "Upgrade the system"
+  check:
+    asExitCode: "checks for upgrade but doesn't print anything. Return exit code 0 if no upgrade is available and 1 otherwise."
+    description: "Check for system updates"
+    error:
+      asExitCodeAndJson: "An error occured when checking for updates. See the JSON output for more details."
+    info:
+      checking: "Checking for updates..."
+      noUpdates: "No updates available."
+      updatesAvailable: "Updates available."
+    json:
+      description: "output the result in JSON format"
+  sysUpgrade:
+    description: "Upgrade the system"
+    error:
+      updating: "An error occured when updating the system."
+    info:
+      updating: "Updating the system..."
+    now: "Trigger a system upgrade now"
+
+tasks:
+  description:  "Create and manage tasks"
+  stacks:
+    new:
+      error:
+        emptyCommand: "The command cannot be empty."
+        emptyDescription: "The description cannot be empty."
+        emptyName: "The name cannot be empty."
+        noCommand: "No command specified."
+        noDescription: "No description specified."
+        noName: "No name specified."
+      info:
+        askCommand: "Command: "
+        askDescription: "Description: "
+        askName: "Name: "
+        taskCreated: "Task has been created successfully."
+  list:
+    description: "List all tasks"
+    noTasks: "No tasks found."
+    info:
+      foundTasks: "Found %d tasks."
+    options:
+      json:
+        description: "output the tasks in JSON format"
+  new:
+   description: "Create a new task"
+   options:
+      assumeYes:
+        description: "assume yes for all prompts"
+      at:
+        description: "schedule the task to execute at a specific time (hh:mm)"
+      command:
+        description: "specify the command to execute"
+      description:
+        description: "specify the task's description"
+      every:
+        description: "schedule the task to execute every X time (minutes, hours, days)"
+      name:
+        description: "specify the task's name"
+      needConfirm:
+        description: "ask for confirmation before executing the task"
+      onBattery:
+        description: "execute the task only when the system is on battery"
+      onCharge:
+        description: "execute the task only when the system is charging"
+      onConditionCommand:
+        description: "execute the task on condition command"
+      onCpuTemp:
+        description: "execute the task when CPU temperature is higher than 60°C"
+      onCpuUsage:
+        description: "execute the task when CPU usage is higher than X%"
+      onDeviceConnect:
+        description: "execute the task when a device is connected"
+      onDeviceDisconnect:
+        description: "execute the task when a device is disconnected"
+      onDisconnect:
+        description: "execute the task when the system is disconnected from the network"
+      onFullBattery:
+        description: "execute the task when the system is fully charged"
+      onHighCpuUsage:
+        description: "execute the task when CPU usage is higher than 50%"
+      onHighInternetUsage:
+        description: "execute the task when internet usage is higher than 500Kb/s"
+      onHighMemoryUsage:
+        description: "execute the task when memory usage is higher than 50%"
+      onInternetUsage:
+        description: "execute the task when internet usage is higher than XKb/s"
+      onLowBattery:
+        description: "execute the task when the system is low on battery (20%)"
+      onMemoryUsage:
+        description: "execute the task when memory usage is higher than X%"
+      onNetwork:
+        description: "execute the task when the system is connected to the network"
+      onProcess:
+        description: "execute the task when a process starts"
+  rm:
+    description: "Remove a task"
+    error:
+      cannotDelete: "Cannot delete task: %s"
+      noName: "No task name specified."
+      notFound: "Task not found."
+    info:
+      askConfirmation: "Are you sure you want to delete the task %s? [y/N]"
+      taskDeleted: "Task has been deleted successfully."
+    options:
+      force:
+        description: "force the deletion of the task"
+      name:
+        description: "specify the task's name"
+  rotate:
+    description: "Rotate tasks"
+    options:
+      privateEvent:
+       description: "specify private event to rotate tasks for boot, shutdown, login, logout"
+
+waydroid:
+  description: "Manage the vso waydroid subsystem"
+  downloadIndex: "Downloading index for repository %s"
+  clean:
+    description: "Cleans the waydroid vso cache"
+    info:
+      index: "Deleting index cache"
+      apk: "Deleting apk cache"
+      success: "Successfully deleted waydroid vso cache"
+    error:
+      index: "Failed to delete index cache"
+      apk: "Failed to delete apk cache"
+  delete:
+    description: "Delete the waydroid subsystem"
+    confirmation: "Deleting the waydroid subsystem will delete any data stored in it. Continue?"
+    cancelled: "Cancelled removal of subsystem."
+  error:
+    noArguments: "No arguments provided."
+  install:
+    description: "Install an application"
+    options:
+      local:
+        description: "Install a local apk"
+    info:
+      PackageInCache: "Application found in cache, not downloading again."
+      ConfirmInstall: "Install application %s?"
+      DownloadingPackage: "Downloading apk from %s"
+      PackageSelection: "Pick application to install"
+    error:
+      NotFound: "Application %s was not found."
+      InstallCancelled: "Installation Cancelled"
+  init:
+    description: "Initialize the waydroid subsystem"
+    options:
+      force:
+        description: "Force the initialization"
+      noconfirm:
+        description: "Do not ask for confirmation during installation"
+  launch:
+    description: "Launch an installed application"
+  launcher:
+    description: "Show the waydroid launcher"
+  remove:
+    description: "Uninstall an application"
+    info:
+      RemovePackage: "Removing package %s"
+      PackageSelection: "Pick application to remove"
+      ConfirmRemove: "Remove application %s?"
+    error:
+      NoMatches: "Application %s not found"
+      RemoveCancelled: "Removal Cancelled"
+  search:
+    description: "Search for an application"
+  sync:
+    description: "Sync the repositories"
+  update:
+    description: "Update installed applications"
+    finished: "Finished updating applications"
+    error:
+      FailGetVersion: "Failed to get version code for %s"
+      FailUpdatePackageDownload: "Failed to download APK for %s"
+      FailUpdatePackageDatabase: "Failed to update database entry for %s"
+      FailUpdatePackageInstall: "Failed to install update for %s"
+    info:
+      NoUpdates: "Nothing to update"
+  info:
+    description: "Display information about an application"
+    info:
+      PackageSelection: "Select application to display information from"
+    PackageName: "Name: %s"
+    InternalName: "Internal name: %s"
+    Summary: "Summary: %s"
+    Author: "Author: %s"
+    License: "License: %s"
+    Repository: "Repository: %s"
\ No newline at end of file
diff --git a/vanilla-os/vanilla-system-operator/locales/ko.yml b/vanilla-os/vanilla-system-operator/locales/ko.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6a2e24a0ec2ae48c57e548866ab38047d16152ac
--- /dev/null
+++ b/vanilla-os/vanilla-system-operator/locales/ko.yml
@@ -0,0 +1,288 @@
+vso:
+  description: "The Vanilla System Operator is a package manager, a system updater
+    and a task automator."
+  errors:
+    unknownCommand: "Unknown command: %s"
+    invalidInput: "Invalid input."
+    invalidChoice: "Invalid choice."
+  info:
+    aborting: "Aborting as requested."
+  terminal:
+    yes: "yes"
+    no: "no"
+
+config:
+  description: "Manage the system configuration."
+  get:
+    description: "Get the system configuration"
+    error:
+      noKey: "No key specified."
+      noValue: "No value found for key: %s"
+    options:
+      key:
+        description: "retrieve configuration value by using its key"
+  set:
+    description: "Set the system configuration"
+    error:
+      noKey: "No key specified."
+      noValue: "No value specified."
+    options:
+      key: "key of the configuration to set"
+      value: "value of the configuration to set"
+    success: "Configuration updated successfully."
+  show:
+    description: "Show the system configuration"
+
+pico:
+  description: "Manage the Pico subsystem"
+  error:
+    notInitialized: "The Pico subsystem is not initialized. Please run `vso pico-init`
+      to initialize it."
+    alreadyInitialized: "The Pico subsystem is already initialized. Use the --force
+      flag to force the initialization."
+    noAppNameOrBin: "--app-name or --bin must be specified."
+    sameAppOrBin: "--app-name and --bin cannot be both specified."
+    exportingApp: "An error occurred while exporting the application: %s"
+    exportingBin: "An error occurred while exporting the binary: %s"
+    unexportingApp: "An error occurred while unexporting the application: %s"
+    unexportingBin: "An error occurred while unexporting the binary: %s"
+    unknownCommand: 'Unknown command: %s'
+  info:
+    initialized: "The Pico subsystem has been initialized."
+    exported: "Exported %s\n"
+    unexported: "Unexported %s\n"
+    exportedApps: "Exported %d applications"
+    unexportedApps: "Unexported %d applications"
+  export:
+    description: "Export an application or binary from the subsystem"
+    options:
+      app:
+        description: "the name of the application to export"
+      bin:
+        description: "the name of the binary to export"
+      binOutput:
+        description: "path of the binary output (default: ~/.local/bin/)"
+  unexport:
+    description: "Unexport an application or binary from the subsystem"
+    options:
+      app:
+        description: "the name of the application to unexport"
+      bin:
+        description: "the name of the binary to unexport"
+      binOutput:
+        description: "path of the binary output (default: ~/.local/bin/)"
+  init:
+    description: "Initialize the Pico subsystem, used for package management"
+    options:
+      force:
+        description: "force the initialization if the subsystem is already initialized"
+  install:
+    description: "Install an application inside the subsystem"
+  remove:
+    description: "Remove an application from the subsystem"
+  run:
+    description: "Run an application from the subsystem"
+  search:
+    description: "Search for an application to install inside the subsystem"
+  shell:
+    description: "Enter the subsystem environment"
+  update:
+    description: "Update the subsystem's package repository"
+  upgrade:
+    description: "Upgrade the packages inside the subsystem"
+
+sysUpgrade:
+  description: "Upgrade the system"
+  check:
+    asExitCode: "checks for upgrade but doesn't print anything. Return exit code 0
+      if no upgrade is available and 1 otherwise."
+    description: "Check for system updates"
+    error:
+      asExitCodeAndJson: "An error occured when checking for updates. See the JSON
+        output for more details."
+    info:
+      checking: "Checking for updates..."
+      noUpdates: "No updates available."
+      updatesAvailable: "Updates available."
+    json:
+      description: "output the result in JSON format"
+  sysUpgrade:
+    description: "Upgrade the system"
+    error:
+      updating: "An error occured when updating the system."
+    info:
+      updating: "Updating the system..."
+    now: "Trigger a system upgrade now"
+
+tasks:
+  description: "Create and manage tasks"
+  stacks:
+    new:
+      error:
+        emptyCommand: "The command cannot be empty."
+        emptyDescription: "The description cannot be empty."
+        emptyName: "The name cannot be empty."
+        noCommand: "No command specified."
+        noDescription: "No description specified."
+        noName: "No name specified."
+      info:
+        askCommand: "Command: "
+        askDescription: "Description: "
+        askName: "Name: "
+        taskCreated: "Task has been created successfully."
+  list:
+    description: "List all tasks"
+    noTasks: "No tasks found."
+    info:
+      foundTasks: "Found %d tasks."
+    options:
+      json:
+        description: "output the tasks in JSON format"
+  new:
+    description: "Create a new task"
+    options:
+      assumeYes:
+        description: "assume yes for all prompts"
+      at:
+        description: "schedule the task to execute at a specific time (hh:mm)"
+      command:
+        description: "specify the command to execute"
+      description:
+        description: "specify the task's description"
+      every:
+        description: "schedule the task to execute every X time (minutes, hours, days)"
+      name:
+        description: "specify the task's name"
+      needConfirm:
+        description: "ask for confirmation before executing the task"
+      onBattery:
+        description: "execute the task only when the system is on battery"
+      onCharge:
+        description: "execute the task only when the system is charging"
+      onConditionCommand:
+        description: "execute the task on condition command"
+      onCpuTemp:
+        description: "execute the task when CPU temperature is higher than 60°C"
+      onCpuUsage:
+        description: "execute the task when CPU usage is higher than X%"
+      onDeviceConnect:
+        description: "execute the task when a device is connected"
+      onDeviceDisconnect:
+        description: "execute the task when a device is disconnected"
+      onDisconnect:
+        description: "execute the task when the system is disconnected from the network"
+      onFullBattery:
+        description: "execute the task when the system is fully charged"
+      onHighCpuUsage:
+        description: "execute the task when CPU usage is higher than 50%"
+      onHighInternetUsage:
+        description: "execute the task when internet usage is higher than 500Kb/s"
+      onHighMemoryUsage:
+        description: "execute the task when memory usage is higher than 50%"
+      onInternetUsage:
+        description: "execute the task when internet usage is higher than XKb/s"
+      onLowBattery:
+        description: "execute the task when the system is low on battery (20%)"
+      onMemoryUsage:
+        description: "execute the task when memory usage is higher than X%"
+      onNetwork:
+        description: "execute the task when the system is connected to the network"
+      onProcess:
+        description: "execute the task when a process starts"
+  rm:
+    description: "Remove a task"
+    error:
+      cannotDelete: "Cannot delete task: %s"
+      noName: "No task name specified."
+      notFound: "Task not found."
+    info:
+      askConfirmation: "Are you sure you want to delete the task %s? [y/N]"
+      taskDeleted: "Task has been deleted successfully."
+    options:
+      force:
+        description: "force the deletion of the task"
+      name:
+        description: "specify the task's name"
+  rotate:
+    description: "Rotate tasks"
+    options:
+      privateEvent:
+        description: "specify private event to rotate tasks for boot, shutdown, login,
+          logout"
+
+waydroid:
+  description: "Manage the vso waydroid subsystem"
+  downloadIndex: "Downloading index for repository %s"
+  clean:
+    description: "Cleans the waydroid vso cache"
+    info:
+      index: "Deleting index cache"
+      apk: "Deleting apk cache"
+      success: "Successfully deleted waydroid vso cache"
+    error:
+      index: "Failed to delete index cache"
+      apk: "Failed to delete apk cache"
+  delete:
+    description: "Delete the waydroid subsystem"
+    confirmation: "Deleting the waydroid subsystem will delete any data stored in
+      it. Continue?"
+    cancelled: "Cancelled removal of subsystem."
+  error:
+    noArguments: "No arguments provided."
+  install:
+    description: "Install an application"
+    options:
+      local:
+        description: "Install a local apk"
+    info:
+      PackageInCache: "Application found in cache, not downloading again."
+      ConfirmInstall: "Install application %s?"
+      DownloadingPackage: "Downloading apk from %s"
+      PackageSelection: "Pick application to install"
+    error:
+      NotFound: "Application %s was not found."
+      InstallCancelled: "Installation Cancelled"
+  init:
+    description: "Initialize the waydroid subsystem"
+    options:
+      force:
+        description: "Force the initialization"
+      noconfirm:
+        description: "Do not ask for confirmation during installation"
+  launch:
+    description: "Launch an installed application"
+  launcher:
+    description: "Show the waydroid launcher"
+  remove:
+    description: "Uninstall an application"
+    info:
+      RemovePackage: "Removing package %s"
+      PackageSelection: "Pick application to remove"
+      ConfirmRemove: "Remove application %s?"
+    error:
+      NoMatches: "Application %s not found"
+      RemoveCancelled: "Removal Cancelled"
+  search:
+    description: "Search for an application"
+  sync:
+    description: "Sync the repositories"
+  update:
+    description: "Update installed applications"
+    finished: "Finished updating applications"
+    error:
+      FailGetVersion: "Failed to get version code for %s"
+      FailUpdatePackageDownload: "Failed to download APK for %s"
+      FailUpdatePackageDatabase: "Failed to update database entry for %s"
+      FailUpdatePackageInstall: "Failed to install update for %s"
+    info:
+      NoUpdates: "Nothing to update"
+  info:
+    description: "Display information about an application"
+    info:
+      PackageSelection: "Select application to display information from"
+    PackageName: "Name: %s"
+    InternalName: "Internal name: %s"
+    Summary: "Summary: %s"
+    Author: "Author: %s"
+    License: "License: %s"
+    Repository: "Repository: %s"