diff --git a/src/i18n/i18n.js b/src/i18n/i18n.js index 9e8100af..785524d4 100644 --- a/src/i18n/i18n.js +++ b/src/i18n/i18n.js @@ -45,6 +45,7 @@ import { ml, malayalam } from "./locales/ml"; import { nl, dutch } from "./locales/nl"; import { sd, sindhi } from "./locales/sd"; import { th, thai } from "./locales/th"; +import { ms, malay } from "./locales/ms"; export const languages = [ english, @@ -91,6 +92,7 @@ export const languages = [ dutch, sindhi, thai, + malay, ].sort((a, b) => a.name.localeCompare(b.name)); i18n @@ -147,7 +149,8 @@ i18n nl, sd, th, + ms, }, }); -export default i18n; \ No newline at end of file +export default i18n; diff --git a/src/i18n/locales/ms.js b/src/i18n/locales/ms.js new file mode 100644 index 00000000..3baf65f9 --- /dev/null +++ b/src/i18n/locales/ms.js @@ -0,0 +1,289 @@ +const malay = { + name: "Malay", + native_name: "Bahasa Melayu", + code: "ms", +}; + +const ms = { + translation: { + report_bug: "Laporkan pepijat", + import_from: "Import dari", + import: "Import", + file: "Fail", + new: "Baru", + new_window: "Tetingkap baru", + open: "Buka", + open_recent: "Buka terkini", + no_saved_diagrams: "Anda tiada rajah yang disimpan", + save: "Simpan", + save_as: "Simpan sebagai", + save_as_template: "Simpan sebagai templat", + template_saved: "Templat disimpan!", + rename: "Namakan semula", + delete_diagram: "Padam rajah", + are_you_sure_delete_diagram: + "Adakah anda pasti mahu memadam rajah ini? Tindakan ini tidak boleh dipulihkan.", + oops_smth_went_wrong: "Ooops! Ada sesuatu yang tidak kena.", + import_diagram: "Import rajah", + import_from_source: "Import dari SQL", + export_as: "Eksport sebagai", + export_source: "Eksport SQL", + models: "Model", + exit: "Keluar", + edit: "Sunting", + undo: "Batal", + redo: "Ulang", + clear: "Kosongkan", + are_you_sure_clear: + "Adakah anda pasti mahu mengosongkan rajah ini? Tindakan ini tidak boleh dipulihkan.", + cut: "Potong", + copy: "Salin", + paste: "Tampal", + duplicate: "Duplikat", + delete: "Padam", + copy_as_image: "Salin sebagai imej", + view: "Paparan", + header: "Bar menu", + sidebar: "Bar sisi", + issues: "Isu", + presentation_mode: "Mod pembentangan", + strict_mode: "Mod ketat", + field_details: "Butiran medan", + reset_view: "Set semula paparan", + show_grid: "Tunjuk grid", + snap_to_grid: "Lekat pada grid", + show_datatype: "Tunjuk jenis data", + show_cardinality: "Tunjuk kardinaliti", + theme: "Tema", + light: "Terang", + dark: "Gelap", + zoom_in: "Zum masuk", + zoom_out: "Zum keluar", + fullscreen: "Skrin penuh", + settings: "Tetapan", + show_timeline: "Tunjuk garis masa", + autosave: "Simpan automatik", + panning: "Seret (panning)", + show_debug_coordinates: "Tunjuk koordinat penyahpepijat", + transform: "Transformasi", + viewbox: "Kotak pandang", + cursor_coordinates: "Koordinat kursor", + coordinate_space: "Ruang koordinat", + coordinate_space_screen: "Skrin", + coordinate_space_diagram: "Rajah", + table_width: "Lebar jadual", + language: "Bahasa", + flush_storage: "Kosongkan storan", + are_you_sure_flush_storage: + "Adakah anda pasti mahu kosongkan storan? Ini akan memadamkan semua rajah dan templat tersuai anda secara kekal.", + storage_flushed: "Storan dikosongkan", + help: "Bantuan", + shortcuts: "Pintas kekunci", + ask_on_discord: "Tanya kami di Discord", + feedback: "Maklum balas", + no_changes: "Tiada perubahan", + loading: "Memuatkan...", + last_saved: "Terakhir disimpan", + saving: "Menyimpan...", + failed_to_save: "Gagal menyimpan", + fit_window_reset: "Sesuaikan / set semula tingkap", + zoom: "Zum", + add_table: "Tambah jadual", + add_area: "Tambah kawasan", + add_note: "Tambah nota", + add_type: "Tambah jenis", + to_do: "Perkara perlu dibuat", + tables: "Jadual", + relationships: "Perhubungan", + subject_areas: "Kawasan subjek", + notes: "Nota", + types: "Jenis", + search: "Cari...", + no_tables: "Tiada jadual", + no_tables_text: "Mulakan dengan mencipta rajah anda!", + no_relationships: "Tiada perhubungan", + no_relationships_text: "Seret untuk sambungkan medan dan bina perhubungan!", + no_subject_areas: "Tiada kawasan subjek", + no_subject_areas_text: "Tambah kawasan subjek untuk kumpulkan jadual!", + no_notes: "Tiada nota", + no_notes_text: "Gunakan nota untuk maklumat tambahan", + no_types: "Tiada jenis", + no_types_text: "Cipta jenis data tersuai anda sendiri", + no_issues: "Tiada isu ditemui.", + strict_mode_is_on_no_issues: + "Mod ketat diaktifkan, jadi isu tidak akan dipaparkan.", + name: "Nama", + type: "Jenis", + null: "Null", + not_null: "Not Null", + primary: "Utama", + unique: "Unik", + autoincrement: "Auto-increment", + default_value: "Nilai lalai", + check: "Ungkapan semakan", + this_will_appear_as_is: + "*Ini akan dipaparkan seperti sedia ada dalam skrip yang dijana.", + comment: "Komen", + add_field: "Tambah medan", + values: "Nilai", + size: "Saiz", + precision: "Ketepatan", + set_precision: "Tetapkan ketepatan: (saiz, digit)", + use_for_batch_input: "Gunakan untuk input berkelompok", + indices: "Indeks", + add_index: "Tambah indeks", + select_fields: "Pilih medan", + title: "Tajuk", + not_set: "Belum ditetapkan", + foreign: "Luaran", + cardinality: "Kardinaliti", + on_update: "Semasa kemas kini", + on_delete: "Semasa padam", + swap: "Tukar", + one_to_one: "Satu kepada satu", + one_to_many: "Satu kepada banyak", + many_to_one: "Banyak kepada satu", + content: "Kandungan", + types_info: + "Ciri ini untuk DBMS berorientasikan objek seperti PostgreSQL.\nUntuk MySQL/MariaDB, jenis JSON akan dijana dengan pemeriksaan kesahihan JSON.\nUntuk SQLite ia akan ditukar kepada BLOB.\nUntuk MSSQL alias jenis akan dijana untuk medan pertama.", + table_deleted: "Jadual dipadam", + area_deleted: "Kawasan dipadam", + note_deleted: "Nota dipadam", + relationship_deleted: "Perhubungan dipadam", + type_deleted: "Jenis dipadam", + cannot_connect: "Tidak boleh sambung — jenis lajur berbeza", + copied_to_clipboard: "Disalin ke papan klip", + create_new_diagram: "Cipta rajah baru", + cancel: "Batal", + open_diagram: "Buka rajah", + rename_diagram: "Namakan semula rajah", + export: "Eksport", + export_image: "Eksport imej", + create: "Cipta", + confirm: "Sahkan", + last_modified: "Terakhir diubah", + drag_and_drop_files: + "Seret dan lepaskan fail di sini atau klik untuk muat naik.", + upload_sql_to_generate_diagrams: + "Muat naik fail SQL untuk jana automatik jadual dan lajur anda.", + overwrite_existing_diagram: "Tulis ganti rajah sedia ada", + only_mysql_supported: + "*Buangan skrip hanya menyokong muatan skrip MySQL buat masa ini.", + blank: "Kosong", + filename: "Nama fail", + table_w_no_name: "Jadual diisytiharkan tanpa nama", + duplicate_table_by_name: "Duplikasi jadual dengan nama '{{tableName}}'", + empty_field_name: "Nama medan kosong dalam jadual '{{tableName}}'", + empty_field_type: "Jenis medan kosong dalam jadual '{{tableName}}'", + no_values_for_field: + "Medan '{{fieldName}}' dalam jadual '{{tableName}}' mempunyai jenis '{{type}}' tetapi tiada nilai ditetapkan", + default_doesnt_match_type: + "Nilai lalai untuk medan '{{fieldName}}' dalam jadual '{{tableName}}' tidak padan dengan jenisnya", + not_null_is_null: + "Medan '{{fieldName}}' dalam jadual '{{tableName}}' ditetapkan NOT NULL tetapi nilai lalai adalah NULL", + duplicate_fields: + "Medan berganda bernama '{{fieldName}}' dalam jadual '{{tableName}}'", + duplicate_index: + "Indeks berganda bernama '{{indexName}}' dalam jadual '{{tableName}}'", + empty_index: "Indeks dalam jadual '{{tableName}}' tiada lajur", + no_primary_key: "Tiada kekunci primer dalam jadual '{{tableName}}'", + type_with_no_name: "Jenis diisytiharkan tanpa nama", + duplicate_types: "Jenis berganda bernama '{{typeName}}'", + type_w_no_fields: "Jenis '{{typeName}}' diisytiharkan tanpa medan", + empty_type_field_name: "Nama medan jenis kosong dalam jenis '{{typeName}}'", + empty_type_field_type: + "Jenis medan jenis kosong dalam jenis '{{typeName}}'", + no_values_for_type_field: + "Medan '{{fieldName}}' jenis '{{typeName}}' mempunyai jenis '{{type}}' tetapi tiada nilai ditetapkan", + duplicate_type_fields: + "Medan jenis berganda bernama '{{fieldName}}' dalam jenis '{{typeName}}'", + duplicate_reference: "Rujukan berganda bernama '{{refName}}'", + circular_dependency: "Kebergantungan berputar dalam jadual '{{refName}}'", + timeline: "Garis masa", + priority: "Keutamaan", + none: "Tiada", + low: "Rendah", + medium: "Sederhana", + high: "Tinggi", + sort_by: "Susun mengikut", + my_order: "Susunan saya", + completed: "Selesai", + alphabetically: "Secara abjad", + add_task: "Tambah tugasan", + details: "Perincian", + no_tasks: "Anda belum mempunyai tugasan.", + no_activity: "Tiada aktiviti lagi.", + move_element: "Pindahkan {{name}} ke {{coords}}", + edit_area: "{{extra}} Edit kawasan {{areaName}}", + delete_area: "Padam kawasan {{areaName}}", + edit_note: "{{extra}} Edit nota {{noteTitle}}", + delete_note: "Padam nota {{noteTitle}}", + edit_table: "{{extra}} Edit jadual {{tableName}}", + delete_table: "Padam jadual {{tableName}}", + edit_type: "{{extra}} Edit jenis {{typeName}}", + delete_type: "Padam jenis {{typeName}}", + add_relationship: "Tambah perhubungan", + edit_relationship: "{{extra}} Edit perhubungan {{refName}}", + delete_relationship: "Padam perhubungan {{refName}}", + pick_db: "Pilih pangkalan data", + generic: "Generik", + generic_description: + "Rajah generik boleh dieksport ke mana-mana dialek SQL, tetapi tidak semua jenis data disokong.", + enums: "Enum", + add_enum: "Tambah enum", + edit_enum: "{{extra}} Edit enum {{enumName}}", + delete_enum: "Padam enum", + enum_w_no_name: "Ditemui enum tanpa nama", + enum_w_no_values: "Tiada nilai untuk enum '{{enumName}}'", + duplicate_enums: "Enum berganda bernama '{{enumName}}'", + enum_deleted: "Enum dipadam", + no_enums: "Tiada enum", + no_enums_text: "Tentukan enum di sini", + declare_array: "Isytihar tatasusunan", + empty_index_name: + "Indeks diisytiharkan tanpa nama dalam jadual '{{tableName}}'", + didnt_find_diagram: "Ooops! Rajah tidak dijumpai.", + unsigned: "Tanpa tanda", + share: "Kongsi", + unshare: "Batalkan kongsi", + copy_link: "Salin pautan", + readme: "README", + failed_to_load: "Gagal memuatkan. Sila pastikan pautan betul.", + share_info: + "* Kongsi pautan ini tidak mewujudkan sesi kolaborasi masa nyata.", + show_relationship_labels: "Tunjuk label perhubungan", + docs: "Dokumentasi", + supported_types: "Jenis fail yang disokong:", + bulk_update: "Kemas kini besar-besaran", + multiselect: "Pemilihan berbilang", + export_saved_data: "Eksport data tersimpan", + dbml_view: "Paparan DBML", + tab_view: "Paparan tab", + label: "Label", + many_side_label: "Label sisi banyak (n)", + version: "Versi", + versions: "Versi", + no_saved_versions: "Tiada versi disimpan", + record_version: "Rekod versi", + commited_at: "Dikomit pada", + read_only: "Baca sahaja", + continue: "Teruskan", + restore_version: "Pulihkan versi", + restore_warning: + "Memuatkan versi lain akan menulis ganti sebarang perubahan.", + return_to_current: "Kembali ke rajah semasa", + no_changes_to_record: "Tiada perubahan untuk direkod", + click_to_view: "Klik untuk lihat", + load_more: "Muatkan lagi", + clear_cache: "Kosongkan cache", + cache_cleared: "Cache dikosongkan", + failed_to_record_version: "Gagal merekod versi", + failed_to_load_diagram: "Gagal memuatkan rajah", + see_all: "Lihat semua", + insert_sql: "Masukkan SQL", + upload_file: "Muat naik fail", + not_found: "Tidak dijumpai", + }, +}; + +export { ms, malay };