diff --git a/README.md b/README.md
index 05b05381..10e37143 100644
--- a/README.md
+++ b/README.md
@@ -160,6 +160,7 @@ This repository, including all its contents, sub-projects, modules, and componen
- [Italian / Italiano](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.it.md)
- [Japanese / 日本語](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.jp.md)
- [Korean / 한국어](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ko.md)
+- [Malay / Bahasa Malaysia](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.my.md)
- [Malayalam / മലയാളം](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ml.md)
- [Polish / Polski](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pl.md)
- [Portuguese / Português](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pt.md)
diff --git a/doc/i18n/README.my.md b/doc/i18n/README.my.md
new file mode 100644
index 00000000..769ab090
--- /dev/null
+++ b/doc/i18n/README.my.md
@@ -0,0 +1,127 @@
+

+
+Sistem Operasi Internet! Percuma, Sumber Terbuka, dan Boleh Dihoskan Sendiri.
+
+
+
+
+
+ « DEMO SECARA LANGSUNG »
+
+
+ Puter.com
+ ·
+ SDK
+ ·
+ Discord
+ ·
+ Reddit
+ ·
+ X (Twitter)
+
+
+
+
+
+
+## Puter
+
+Puter ialah sistem operasi internet sumber terbuka yang maju dan direka untuk kaya dengan ciri kefungsian, kepantasan luar biasa dan kebolehluasan yang tinggi. Puter boleh digunakan sebagai:
+
+- Storan awan peribadi yang mendahulukan privasi untuk menyimpan semua fail, aplikasi dan permainan anda di satu tempat yang selamat dan boleh diakses dari mana sahaja pada bila-bila masa.
+- Platform untuk membina dan menerbitkan laman web, aplikasi web dan permainan.
+- Alternatif kepada Dropbox, Google Drive, OneDrive, dan lain-lain dengan antara muka yang baharu dan ciri kefungsian berkuasa tinggi.
+- Persekitaran desktop awan untuk server dan stesen kerja.
+- Projek dan komuniti sumber terbuka yang mesra untuk mempelajari pembangunan laman web, pengkomputeran awan, sistem teragih, dan banyak lagi!
+
+
+
+## Mulakan
+
+
+### 💻 Pembangunan Lokal
+
+```bash
+git clone https://github.com/HeyPuter/puter
+cd puter
+npm install
+npm start
+```
+
+Ini akan melancarkan Puter di http://puter.localhost:4100 (atau port seterusnya yang tersedia).
+
+
+
+### 🐳 Docker
+
+
+```bash
+mkdir puter && cd puter && mkdir -p puter/config puter/data && sudo chown -R 1000:1000 puter && docker run --rm -p 4100:4100 -v `pwd`/puter/config:/etc/puter -v `pwd`/puter/data:/var/puter ghcr.io/heyputer/puter
+```
+
+
+
+
+### 🐙 Docker Compose
+
+
+#### Linux/macOS
+```bash
+mkdir -p puter/config puter/data
+sudo chown -R 1000:1000 puter
+wget https://raw.githubusercontent.com/HeyPuter/puter/main/docker-compose.yml
+docker compose up
+```
+
+
+### Windows
+
+
+```powershell
+mkdir -p puter
+cd puter
+New-Item -Path "puter\config" -ItemType Directory -Force
+New-Item -Path "puter\data" -ItemType Directory -Force
+Invoke-WebRequest -Uri "https://raw.githubusercontent.com/HeyPuter/puter/main/docker-compose.yml" -OutFile "docker-compose.yml"
+docker compose up
+```
+
+
+### ☁️ Puter.com
+
+Puter tersedia sebagai perkhidmatan terhos di [**puter.com**](https://puter.com).
+
+
+
+## Keperluan Sistem
+
+- **Sistem Operasi:** Linux, macOS, Windows
+- **RAM:** Minimum 2GB (sebaiknya 4GB)
+- **Ruang Storan:** 1GB ruang kosong
+- **Node.js:** Versi 16+ (sebaiknya Versi 22+)
+- **npm:** Versi stabil yang terkini
+
+
+
+## Sokongan
+
+Berhubung dengan penyelenggara dan komuniti melalui saluran berikut:
+
+- Laporan pepijat atau permintaan ciri? Sila [buka isu baharu](https://github.com/HeyPuter/puter/issues/new/choose).
+- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
+- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
+- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
+- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
+- Isu keselamatan? [security@puter.com](mailto:security@puter.com)
+- Emel penyelenggara melalui [hi@puter.com](mailto:hi@puter.com)
+
+Kami sentiasa gembira untuk membantu anda dengan apa-apa soalan. Jangan takut untuk bertanya!
+
+
+
+
+## Lesen
+
+Repositori ini, termasuklah kandungannya, subprojek, modul dan komponen, dilesenkan di bawah [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) melainkan dinyatakan sebaliknya. *Library* pihak ketiga yang terkandung dalam repositori ini tertakluk kepada lesen mereka sendiri.
+
+
diff --git a/src/gui/src/i18n/translations/my.js b/src/gui/src/i18n/translations/my.js
new file mode 100644
index 00000000..11712833
--- /dev/null
+++ b/src/gui/src/i18n/translations/my.js
@@ -0,0 +1,521 @@
+/**
+ * Copyright (C) 2024-present Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+/**
+ * Translation notes:
+ * - "default", "authenticator" and "worker" are kept unchanged as it is more commonly used in Tech context compared to its Malay translations.
+ * - plural_suffix: 's' has no direct translation to Malay. In Malay, we may pronounce plural form by reduplication. For instance, "files" (English) may be translated to as "fail-fail" (Malay).
+ * - In certain cases, reduplication is not used based on the context.
+ */
+
+const my = {
+ name: 'Bahasa Malaysia',
+ english_name: 'Malay',
+ code: 'my',
+ dictionary: {
+ about: 'Tentang',
+ account: 'Akaun',
+ account_password: 'Sahkan Kata Laluan Akaun',
+ access_granted_to: 'Akses Diberikan Kepada',
+ add_existing_account: 'Tambah Akaun Sedia Ada',
+ all_fields_required: 'Semua medan diperlukan.',
+ allow: 'Benarkan',
+ apply: 'Tetapkan',
+ ascending: 'Menaik',
+ associated_websites: 'Laman Web Berkaitan',
+ auto_arrange: 'Susunan Automatik',
+ background: 'Latar Belakang',
+ browse: 'Carian',
+ cancel: 'Batal',
+ center: 'Tengah',
+ change: 'Ubah',
+ change_desktop_background: 'Tukar latar belakang desktop…',
+ change_email: 'Tukar Emel',
+ change_language: 'Tukar Bahasa',
+ change_password: 'Tukar Kata Laluan',
+ change_ui_colors: 'Tukar Warna UI',
+ change_username: 'Tukar Nama Pengguna',
+ clock_visibility: 'Keterlihatan Jam',
+ close: 'Tutup',
+ close_all_windows: 'Tutup Semua Tetingkap',
+ close_all_windows_confirm: 'Adakah anda yakin mahu menutup semua tetingkap?',
+ close_all_windows_and_log_out: 'Tutup Tetingkap dan Keluar',
+ change_always_open_with: 'Adakah anda mahu sentiasa membuka jenis fail ini dengan',
+ color: 'Warna',
+ confirm: 'Sahkan',
+ // Note: `authenticator` is taken directly from the English language as it is more commonly used than its direct Malay translation `pengesahan`
+ confirm_2fa_setup: 'Saya telah menambah kod ke aplikasi authenticator saya',
+ confirm_2fa_recovery: 'Saya telah menyimpan kod pemulihan saya di lokasi yang selamat',
+ confirm_account_for_free_referral_storage_c2a:
+ 'Cipta akaun dan sahkan alamat emel anda untuk menerima 1 GB storan percuma. Rakan anda juga akan menerima 1 GB storan percuma.',
+ confirm_code_generic_incorrect: 'Kod Salah.',
+ confirm_code_generic_too_many_requests:
+ 'Terlalu banyak permintaan. Sila tunggu beberapa minit.',
+ confirm_code_generic_submit: 'Hantar Kod',
+ confirm_code_generic_try_again: 'Cuba Lagi',
+ confirm_code_generic_title: 'Masukkan Kod Pengesahan',
+ confirm_code_2fa_instruction:
+ 'Masukkan kod 6 digit daripada aplikasi authenticator anda.',
+ confirm_code_2fa_submit_btn: 'Hantar',
+ confirm_code_2fa_title: 'Masukkan Kod 2FA',
+ confirm_delete_multiple_items:
+ 'Adakah anda yakin mahu menghapuskan item-item ini buat selamanya?',
+ confirm_delete_single_item: 'Adakah anda mahu menghapuskan item ini buat selamanya?',
+ confirm_open_apps_log_out:
+ 'Anda memiliki aplikasi yang terbuka. Adakah anda yakin mahu keluar?',
+ confirm_new_password: 'Sahkan Kata Laluan Baharu',
+ confirm_delete_user:
+ 'Adakah anda yakin mahu menghapuskan akaun anda? Semua fail dan data anda akan dihapuskan buat selamanya. Tindakan ini tidak dapat dibatalkan.',
+ confirm_delete_user_title: 'Hapus Akaun?',
+ confirm_session_revoke: 'Adakah anda yakin mahu menamatkan sesi ini?',
+ confirm_your_email_address: 'Sahkan Alamat Emel Anda',
+ choose_publishing_option: 'Pilih cara untuk menerbitkan laman web anda:',
+ contact_us: 'Hubungi Kami',
+ contact_us_verification_required:
+ 'Anda perlu memiliki alamat emel yang sah untuk menggunakan ini.',
+ contain: 'Mengandungi',
+ continue: 'Teruskan',
+ copy: 'Salin',
+ copy_link: 'Salin Pautan',
+ copying: 'Menyalin',
+ copying_file: 'Menyalin %%',
+ cover: 'Pemuka',
+ create_account: 'Cipta Akaun',
+ create_free_account: 'Cipta Akaun Percuma',
+ create_desktop_shortcut: 'Buat Pintasan (Desktop)',
+ create_desktop_shortcut_s: 'Buat Pintasan (Desktop)',
+ create_shortcut: 'Buat Pintasan',
+ create_shortcut_s: 'Buat Pintasan',
+ credits: 'Kredit',
+ current_password: 'Kata Laluan Terkini',
+ cut: 'Potong',
+ clock: 'Jam',
+ clock_visible_hide: 'Sorok - Sentiasa tersembunyi',
+ clock_visible_show: 'Tunjuk - Sentiasa dilihat',
+ clock_visible_auto: 'Auto - Default, dilihat dalam mod skrin penuh sahaja.',
+ close_all: 'Tutup Semua',
+ created: 'Dibuat',
+ date_modified: 'Tarikh diubah suai',
+ default: 'Default',
+ delete: 'Hapus',
+ delete_account: 'Hapus Akaun',
+ delete_permanently: 'Hapus Buat Selamanya',
+ deleting_file: 'Menghapuskan %%',
+ deploy_as_app: 'Jalankan sebagai aplikasi',
+ descending: 'Menurun',
+ desktop: 'Desktop',
+ desktop_background_fit: 'Suaikan',
+ developers: 'Pembangun',
+ dir_published_as_website: '%strong% telah diterbitkan di:',
+ disable_2fa: 'Menyahaktifkan 2FA',
+ disable_2fa_confirm: 'Adakah anda yakin mahu menyahaktifkan 2FA?',
+ disable_2fa_instructions: 'Masukkan kata laluan anda untuk menyahaktifkan 2FA.',
+ disassociate_dir: 'Pisahkan Direktori',
+ documents: 'Dokumen',
+ dont_allow: 'Tidak Izinkan',
+ download: 'Muat Naik',
+ download_file: 'Muat Naik Fail',
+ downloading: 'Memuat Naik',
+ email: 'Emel',
+ email_change_confirmation_sent:
+ 'Emel pengesahan telah dihantar ke alamat emel baharu anda. Sila semak peti emel anda dan ikut arahan terbabit bagi menyelesaikan proses ini.',
+ email_invalid: 'Emel tidak sah.',
+ email_or_username: 'Emel atau Nama Pengguna',
+ email_required: 'Emel diperlukan.',
+ empty_trash: 'Kosongkan Bakul Sampah',
+ empty_trash_confirmation: 'Adakah anda yakin mahu menghapuskan item-item di dalam Bakul Sampah buat selamanya?',
+ emptying_trash: 'Mengosongkan Bakul Sampah…',
+ enable_2fa: 'Aktifkan 2FA',
+ end_hard: 'Hentikan Secara Paksa',
+ end_process_force_confirm: 'Adakah anda yakin mahu menghentikan proses ini secara paksaan?',
+ end_soft: 'Hentikan Secara Lembut',
+ enlarged_qr_code: 'Kod QR Dibesarkan',
+ enter_password_to_confirm_delete_user: 'Masukkan kata laluan anda untuk mengesahkan penghapusan akaun',
+ error_message_is_missing: 'Mesej ralat tiada.',
+ error_unknown_cause: 'Ralat tidak diketahui telah berlaku.',
+ error_uploading_files: 'Gagal memuat naik fail',
+ favorites: 'Kegemaran',
+ feedback: 'Maklum Balas',
+ feedback_c2a: 'Sila gunakan borang di bawah untuk menghantar maklum balas, komen dan laporan ralat kepada kami.',
+ feedback_sent_confirmation: 'Terima kasih kerana menghubungi kami. Jika anda mempunyai emel yang dikaitkan dengan akaun anda, anda akan mendengar daripada kami secepat mungkin.',
+ fit: 'Suaikan',
+ folder: 'Folder',
+ force_quit: 'Keluar Paksa',
+ forgot_pass_c2a: 'Lupa kata laluan?',
+ from: 'Dari',
+ general: 'Umum',
+ get_a_copy_of_on_puter: 'Dapatkan salinan \'%%\' di Puter.com!',
+ get_copy_link: 'Dapatkan Salinan Pautan',
+ hide_all_windows: 'Sorok Semua Tetingkap',
+ home: 'Laman Utama',
+ html_document: 'Dokumen HTML',
+ hue: 'Hue',
+ image: 'Imej',
+ incorrect_password: 'Kata laluan salah',
+ invite_link: 'Pautan Jemputan',
+ item: 'item',
+ items_in_trash_cannot_be_renamed: 'Item ini tidak boleh dinamakan semula kerana berada dalam tong sampah. Untuk menamakan semula item ini, tariknya keluar dari Tong Sampah terlebih dahulu.',
+ jpeg_image: 'Imej JPEG',
+ keep_in_taskbar: 'Kekal dalam Bar Tugas',
+ language: 'Bahasa',
+ license: 'Lesen',
+ lightness: 'Kecerahan',
+ link_copied: 'Pautan disalin',
+ loading: 'Memuatkan',
+ log_in: 'Log Masuk',
+ log_into_another_account_anyway: 'Log masuk ke akaun lain juga',
+ log_out: 'Log Keluar',
+ looks_good: 'Nampak baik!',
+ manage_sessions: 'Urus Sesi',
+ modified: 'Diubah suai',
+ move: 'Pindah',
+ moving_file: 'Memindahkan %%',
+ my_websites: 'Laman Web Saya',
+ minimize: 'Minimumkan',
+ reload_app: 'Muat Semula Aplikasi',
+ name: 'Nama',
+ name_cannot_be_empty: 'Nama tidak boleh kosong.',
+ name_cannot_contain_double_period: 'Nama tidak boleh mengandungi huruf \'..\'.',
+ name_cannot_contain_period: 'Nama tidak boleh mengandungi huruf \'.\'.',
+ name_cannot_contain_slash: 'Nama tidak boleh mengandungi huruf \'/\'.',
+ name_must_be_string: 'Nama hanya boleh menjadi rentetan huruf.',
+ name_too_long: 'Nama tidak boleh lebih panjang daripada %% huruf.',
+ new: 'Baru',
+ new_email: 'Emel Baru',
+ new_folder: 'Folder baru',
+ new_password: 'Kata Laluan Baru',
+ new_username: 'Nama Pengguna Baru',
+ no: 'Tidak',
+ no_dir_associated_with_site: 'Tiada direktori yang dikaitkan dengan alamat ini.',
+ no_websites_published: 'Anda belum menerbitkan sebarang laman web lagi. Klik kanan pada folder untuk bermula.',
+ ok: 'OK',
+ open: 'Buka',
+ new_window: 'Tetingkap Baru',
+ open_in_new_tab: 'Buka dalam Tab Baru',
+ open_in_new_window: 'Buka dalam Tetingkap Baru',
+ open_trash: 'Buka Tong Sampah',
+ open_with: 'Buka Dengan',
+ original_name: 'Nama Asal',
+ original_path: 'Laluan Asal',
+ oss_code_and_content: 'Perisian dan Kandungan Sumber Terbuka',
+ password: 'Kata Laluan',
+ password_changed: 'Kata laluan ditukar.',
+ password_recovery_rate_limit: 'Anda telah mencapai had kadar kami; sila tunggu beberapa minit. Untuk mengelakkan hal ini pada masa hadapan, elakkan memuat semula halaman terlalu banyak kali.',
+ password_recovery_token_invalid: 'Token pemulihan kata laluan ini tidak lagi sah.',
+ password_recovery_unknown_error: 'Ralat tidak diketahui telah berlaku. Sila cuba sebentar lagi.',
+ password_required: 'Kata laluan diperlukan.',
+ password_strength_error: 'Kata laluan mesti mengandungi sekurang-kurangnya 8 huruf dan mengandungi sekurang-kurangnya satu huruf besar, satu huruf kecil, satu nombor dan satu aksara khas.',
+ passwords_do_not_match: '`Kata Laluan Baru` dan `Sahkan Kata Laluan Baru` tidak sepadan.',
+ paste: 'Tampal',
+ paste_into_folder: 'Tampal Ke Dalam Folder',
+ path: 'Laluan',
+ personalization: 'Pemperibadian',
+ pick_name_for_website: 'Pilih nama laman web anda:',
+ pick_name_for_worker: 'Pilih nama worker anda:',
+ picture: 'Gambar',
+ pictures: 'Gambar',
+ plural_suffix: 's',
+ powered_by_puter_js: 'Dikuasakan oleh {{link=docs}}Puter.js{{/link}}',
+ preparing: 'Menyediakan...',
+ preparing_for_upload: 'Menyediakan untuk muat naik...',
+ print: 'Cetak',
+ privacy: 'Privasi',
+ proceed_to_login: 'Teruskan untuk log masuk',
+ proceed_with_account_deletion: 'Teruskan dengan Penghapusan Akaun',
+ process_status_initializing: 'Memulakan',
+ process_status_running: 'Berjalan',
+ process_type_app: 'Aplikasi',
+ process_type_init: 'Permulaan',
+ process_type_ui: 'UI',
+ properties: 'Ciri-ciri',
+ public: 'Publik',
+ publish: 'Terbitkan',
+ publish_as_website: 'Terbitkan sebagai laman web',
+ publish_as_serverless_worker: 'Terbitkan sebagai Worker',
+ puter_description: 'Puter ialah storan awan peribadi yang mendahulukan privasi untuk menyimpan semua fail, aplikasi dan permainan anda di satu tempat yang selamat, boleh diakses dari mana sahaja dan pada bila-bila masa.',
+ reading: 'Membaca %strong%',
+ writing: 'Menulis %strong%',
+ recent: 'Terkini',
+ recommended: 'Disyorkan',
+ recover_password: 'Pulihkan Kata Laluan',
+ refer_friends_c2a: 'Dapatkan 1 GB untuk setiap rakan yang membuat dan mengesahkan akaun di Puter. Rakan anda juga akan mendapat 1 GB!',
+ refer_friends_social_media_c2a: 'Dapatkan 1 GB storan percuma di Puter.com!',
+ refresh: 'Muat Semula',
+ release_address_confirmation: 'Adakah anda pasti mahu melepaskan alamat ini?',
+ remove_from_taskbar: 'Keluarkan dari Bar Tugas',
+ rename: 'Namakan Semula',
+ repeat: 'Ulang',
+ replace: 'Ganti',
+ replace_all: 'Ganti Semua',
+ resend_confirmation_code: 'Hantar Semula Kod Pengesahan',
+ reset_colors: 'Set Semula Warna',
+ restart_puter_confirm: 'Adakah anda pasti mahu memulakan semula Puter?',
+ restore: 'Pulihkan',
+ save: 'Simpan',
+ saturation: 'Ketepuan',
+ save_account: 'Simpan akaun',
+ save_account_to_get_copy_link: 'Sila buat akaun untuk meneruskan.',
+ save_account_to_publish: 'Sila buat akaun untuk meneruskan.',
+ save_session: 'Simpan sesi',
+ save_session_c2a: 'Buat akaun untuk menyimpan sesi ini dan mengelakkan kehilangan kerja anda.',
+ scan_qr_c2a: 'Imbas kod di bawah\nuntuk log masuk ke sesi ini dari peranti lain',
+ scan_qr_2fa: 'Imbas kod QR dengan aplikasi authenticator anda',
+ scan_qr_generic: 'Imbas kod QR ini menggunakan telefon atau peranti lain anda',
+ search: 'Cari',
+ seconds: 'saat',
+ security: 'Keselamatan',
+ select: 'Pilih',
+ selected: 'dipilih',
+ select_color: 'Pilih warna…',
+ sessions: 'Sesi',
+ send: 'Hantar',
+ send_password_recovery_email: 'Hantar Emel Pemulihan Kata Laluan',
+ session_saved: 'Terima kasih kerana membuat akaun. Sesi ini telah disimpan.',
+ settings: 'Tetapan',
+ set_new_password: 'Tetapkan Kata Laluan Baru',
+ share: 'Kongsi',
+ share_to: 'Kongsi kepada',
+ share_with: 'Kongsi dengan:',
+ shortcut_to: 'Pintasan ke',
+ show_all_windows: 'Tunjukkan Semua Tetingkap',
+ show_hidden: 'Tunjukkan yang tersembunyi',
+ sign_in_with_puter: 'Daftar masuk dengan Puter',
+ sign_up: 'Daftar',
+ signing_in: 'Mendaftar masuk…',
+ size: 'Saiz',
+ skip: 'Langkau',
+ something_went_wrong: 'Sesuatu telah berlaku.',
+ sort_by: 'Susun mengikut',
+ start: 'Mula',
+ status: 'Status',
+ storage_usage: 'Penggunaan Storan',
+ storage_puter_used: 'digunakan oleh Puter',
+ taking_longer_than_usual: 'Mengambil masa lebih lama daripada biasa. Sila tunggu...',
+ task_manager: 'Pengurus Tugas',
+ taskmgr_header_name: 'Nama',
+ taskmgr_header_status: 'Status',
+ taskmgr_header_type: 'Jenis',
+ terms: 'Terma',
+ text_document: 'Dokumen teks',
+ 'toolbar.enter_fullscreen': 'Masuk Skrin Penuh',
+ 'toolbar.github': 'GitHub',
+ 'toolbar.refer': 'Rujuk',
+ 'toolbar.save_account': 'Simpan Akaun',
+ 'toolbar.search': 'Cari',
+ 'toolbar.qrcode': 'Kod QR',
+ tos_fineprint: 'Dengan mengklik \'Buat Akaun Percuma\' anda bersetuju dengan {{link=terms}}Terma Perkhidmatan{{/link}} dan {{link=privacy}}Dasar Privasi{{/link}} Puter.',
+ transparency: 'Ketelusan',
+ trash: 'Tong Sampah',
+ two_factor: 'Pengesahan Dua Faktor',
+ two_factor_disabled: '2FA Dinyahaktifkan',
+ two_factor_enabled: '2FA Diaktifkan',
+ type: 'Jenis',
+ type_confirm_to_delete_account: 'Taip \'sahkan\' untuk memadam akaun anda.',
+ ui_colors: 'Warna UI',
+ ui_manage_sessions: 'Pengurus Sesi',
+ ui_revoke: 'Tarik balik',
+ undo: 'Buat asal',
+ unlimited: 'Tidak terhad',
+ unzip: 'Nyahzip',
+ unzipping: 'Menyahzip %strong%',
+ upload: 'Muat naik',
+ upload_here: 'Muat naik di sini',
+ used_of: '{{used}} digunakan daripada {{available}}',
+ usage: 'Penggunaan',
+ username: 'Nama Pengguna',
+ username_changed: 'Nama pengguna dikemas kini dengan jayanya.',
+ username_required: 'Nama pengguna diperlukan.',
+ versions: 'Versi',
+ videos: 'Video',
+ visibility: 'Keterlihatan',
+ yes: 'Ya',
+ yes_release_it: 'Ya, Lepaskannya',
+ you_have_been_referred_to_puter_by_a_friend: 'Anda telah dirujuk ke Puter oleh rakan!',
+ zip: 'Zip',
+ sequencing: 'Penyusunan %strong%',
+ worker: 'Worker',
+ zipping: 'Menzip %strong%',
+
+ // === 2FA Setup ===
+ setup2fa_1_step_heading: 'Buka aplikasi authenticator anda',
+ setup2fa_1_instructions: `
+ Anda boleh menggunakan sebarang aplikasi authenticator yang menyokong protokol Kata Laluan Sekali Guna Berasaskan Masa (TOTP).
+ Terdapat banyak untuk dipilih, tetapi jika anda tidak pasti
+ Authy
+ adalah pilihan yang kukuh untuk Android dan iOS.
+ `,
+ setup2fa_2_step_heading: 'Imbas kod QR',
+ setup2fa_3_step_heading: 'Masukkan kod 6 digit',
+ setup2fa_4_step_heading: 'Salin kod pemulihan anda',
+ setup2fa_4_instructions: `
+ Kod pemulihan ini adalah satu-satunya cara untuk mengakses akaun anda jika anda kehilangan telefon atau tidak boleh menggunakan aplikasi authenticator anda.
+ Pastikan anda menyimpannya di tempat yang selamat.
+ `,
+ setup2fa_5_step_heading: 'Sahkan persediaan 2FA',
+ setup2fa_5_confirmation_1: 'Saya telah menyimpan kod pemulihan saya di lokasi yang selamat',
+ setup2fa_5_confirmation_2: 'Saya bersedia untuk mengaktifkan 2FA',
+ setup2fa_5_button: 'Aktifkan 2FA',
+
+ // === 2FA Login ===
+ login2fa_otp_title: 'Masukkan Kod 2FA',
+ login2fa_otp_instructions: 'Masukkan kod 6 digit daripada aplikasi authenticator anda.',
+ login2fa_recovery_title: 'Masukkan kod pemulihan',
+ login2fa_recovery_instructions: 'Masukkan salah satu kod pemulihan anda untuk mengakses akaun anda.',
+ login2fa_use_recovery_code: 'Gunakan kod pemulihan',
+ login2fa_recovery_back: 'Kembali',
+ login2fa_recovery_placeholder: 'XXXXXXXX',
+
+ // Sharing
+ 'Editor': 'Editor',
+ 'Viewer': 'Pemerhati',
+ 'People with access': 'Orang dengan akses',
+ 'Share With…': 'Kongsi Dengan…',
+ 'Owner': 'Pemilik',
+ 'You can\'t share with yourself.': 'Anda tidak boleh berkongsi dengan diri sendiri.',
+ 'This user already has access to this item': 'Pengguna ini sudah mempunyai akses kepada item ini',
+
+ // Billing
+ 'billing.change_payment_method': 'Tukar',
+ 'billing.cancel': 'Batal',
+ 'billing.download_invoice': 'Muat turun',
+ 'billing.payment_method': 'Kaedah Pembayaran',
+ 'billing.payment_method_updated': 'Kaedah pembayaran dikemas kini!',
+ 'billing.confirm_payment_method': 'Sahkan Kaedah Pembayaran',
+ 'billing.payment_history': 'Sejarah Pembayaran',
+ 'billing.refunded': 'Bayaran Balik',
+ 'billing.paid': 'Dibayar',
+ 'billing.ok': 'OK',
+ 'billing.resume_subscription': 'Sambung Semula Langganan',
+ 'billing.subscription_cancelled': 'Langganan anda telah dibatalkan.',
+ 'billing.subscription_cancelled_description': 'Anda masih akan mempunyai akses kepada langganan anda sehingga akhir tempoh pengebilan ini.',
+ 'billing.offering.free': 'Percuma',
+ 'billing.offering.basic': 'Asas',
+ 'billing.offering.pro': 'Profesional',
+ 'billing.offering.professional': 'Profesional',
+ 'billing.offering.business': 'Perniagaan',
+ 'billing.cloud_storage': 'Storan Awan',
+ 'billing.ai_access': 'Akses AI',
+ 'billing.bandwidth': 'Lebar jalur',
+ 'billing.apps_and_games': 'Aplikasi & Permainan',
+ 'billing.upgrade_to_pro': 'Naik taraf kepada %strong%',
+ 'billing.switch_to': 'Tukar kepada %strong%',
+ 'billing.payment_setup': 'Persediaan Pembayaran',
+ 'billing.back': 'Kembali',
+ 'billing.you_are_now_subscribed_to': 'Anda kini dilanggan kepada peringkat %strong%.',
+ 'billing.you_are_now_subscribed_to_without_tier': 'Anda kini dilanggan',
+ 'billing.subscription_cancellation_confirmation': 'Adakah anda pasti mahu membatalkan langganan anda?',
+ 'billing.subscription_setup': 'Persediaan Langganan',
+ 'billing.cancel_it': 'Batalkannya',
+ 'billing.keep_it': 'Kekalkannya',
+ 'billing.subscription_resumed': 'Langganan %strong% anda telah disambung semula!',
+ 'billing.upgrade_now': 'Naik Taraf Sekarang',
+ 'billing.upgrade': 'Naik Taraf',
+ 'billing.currently_on_free_plan': 'Anda kini dalam pelan percuma.',
+ 'billing.download_receipt': 'Muat Turun Resit',
+ 'billing.subscription_check_error': 'Masalah berlaku semasa menyemak status langganan anda.',
+ 'billing.email_confirmation_needed': 'Emel anda belum disahkan. Kami akan menghantar kod kepada anda untuk mengesahkannya sekarang.',
+ 'billing.sub_cancelled_but_valid_until': 'Anda telah membatalkan langganan anda dan ia akan secara automatik bertukar kepada peringkat percuma pada akhir tempoh pengebilan. Anda tidak akan dikenakan caj lagi melainkan anda melanggan semula.',
+ 'billing.current_plan_until_end_of_period': 'Pelan semasa anda sehingga akhir tempoh pengebilan ini.',
+ 'billing.current_plan': 'Pelan semasa',
+ 'billing.cancelled_subscription_tier': 'Langganan Dibatalkan (%%)',
+ 'billing.manage': 'Urus',
+ 'billing.limited': 'Terhad',
+ 'billing.expanded': 'Diperluas',
+ 'billing.accelerated': 'Dipercepatkan',
+ 'billing.enjoy_msg': 'Nikmati %% Storan Awan ditambah faedah lain.',
+ 'too_many_attempts': 'Terlalu banyak percubaan. Sila cuba lagi kemudian.',
+ 'server_timeout': 'Server mengambil masa terlalu lama untuk bertindak balas. Sila cuba lagi.',
+ 'signup_error': 'Ralat berlaku semasa pendaftaran. Sila cuba lagi.',
+
+ // Welcome Window
+ 'welcome_title': 'Selamat datang ke Komputer Internet Peribadi Anda',
+ 'welcome_description': 'Simpan fail, main permainan, cari aplikasi hebat, dan banyak lagi! Semua dalam satu tempat, boleh diakses dari mana sahaja pada bila-bila masa.',
+ 'welcome_get_started': 'Mula',
+ 'welcome_terms': 'Terma',
+ 'welcome_privacy': 'Privasi',
+ 'welcome_developers': 'Pembangun',
+ 'welcome_open_source': 'Sumber Terbuka',
+ 'welcome_instant_login_title': 'Log Masuk Segera!',
+
+ // Alert Window
+ 'alert_error_title': 'Ralat!',
+ 'alert_warning_title': 'Amaran!',
+ 'alert_info_title': 'Maklumat',
+ 'alert_success_title': 'Berjaya!',
+ 'alert_confirm_title': 'Adakah anda pasti?',
+ 'alert_yes': 'Ya',
+ 'alert_no': 'Tidak',
+ 'alert_retry': 'Cuba Semula',
+ 'alert_cancel': 'Batal',
+
+ // Signup Window
+ 'signup_confirm_password': 'Sahkan Kata Laluan',
+
+ // Login Window
+ 'login_email_username_required': 'Emel atau nama pengguna diperlukan',
+ 'login_password_required': 'Kata laluan diperlukan',
+
+ // Various Window Titles
+ 'window_title_open': 'Buka',
+ 'window_title_change_password': 'Tukar Kata Laluan',
+ 'window_title_select_font': 'Pilih fon huruf…',
+ 'window_title_session_list': 'Senarai Sesi!',
+ 'window_title_set_new_password': 'Tetapkan Kata Laluan Baru',
+ 'window_title_instant_login': 'Log Masuk Segera!',
+ 'window_title_publish_website': 'Terbitkan Laman Web',
+ 'window_title_publish_worker': 'Terbitkan Worker',
+ 'window_title_authenticating': 'Mengesahkan...',
+ 'window_title_refer_friend': 'Rujuk rakan!',
+
+ // Desktop UI
+ 'desktop_show_desktop': 'Tunjukkan Desktop',
+ 'desktop_show_open_windows': 'Tunjukkan Tetingkap Terbuka',
+ 'desktop_exit_full_screen': 'Keluar Skrin Penuh',
+ 'desktop_enter_full_screen': 'Masuk Skrin Penuh',
+ 'desktop_position': 'Kedudukan',
+ 'desktop_position_left': 'Kiri',
+ 'desktop_position_bottom': 'Bawah',
+ 'desktop_position_right': 'Kanan',
+
+ // Item UI
+ 'item_shared_with_you': 'Pengguna telah berkongsi item ini dengan anda.',
+ 'item_shared_by_you': 'Anda telah berkongsi item ini dengan sekurang-kurangnya satu pengguna lain.',
+ 'item_shortcut': 'Pintasan',
+ 'item_associated_websites': 'Laman web berkaitan',
+ 'item_associated_websites_plural': 'Laman web berkaitan',
+ 'no_suitable_apps_found': 'Tiada aplikasi sesuai ditemui',
+
+ // Window UI
+ 'window_click_to_go_back': 'Klik untuk kembali.',
+ 'window_click_to_go_forward': 'Klik untuk maju.',
+ 'window_click_to_go_up': 'Klik untuk naik satu direktori.',
+ 'window_title_public': 'Publik',
+ 'window_title_videos': 'Video',
+ 'window_title_pictures': 'Gambar',
+ 'window_title_puter': 'Puter',
+ 'window_folder_empty': 'Folder ini kosong',
+
+ // Website Management
+ 'manage_your_subdomains': 'Urus Subdomain Anda',
+
+ 'open_containing_folder': 'Buka Folder Yang Mengandungi',
+ },
+};
+
+export default my;
\ No newline at end of file
diff --git a/src/gui/src/i18n/translations/translations.js b/src/gui/src/i18n/translations/translations.js
index cfc0b11f..eeb12a0c 100644
--- a/src/gui/src/i18n/translations/translations.js
+++ b/src/gui/src/i18n/translations/translations.js
@@ -38,6 +38,7 @@ import ig from './ig.js';
import ja from './ja.js';
import ko from './ko.js';
import ku from './ku.js';
+import my from './my.js';
import nb from './nb.js';
import nl from './nl.js';
import nn from './nn.js';
@@ -78,6 +79,7 @@ export default {
ja,
ko,
ku,
+ my,
nb,
nl,
nn,