diff --git a/src/i18n/i18n.ts b/src/i18n/i18n.ts
index d944c40a..950ec43a 100644
--- a/src/i18n/i18n.ts
+++ b/src/i18n/i18n.ts
@@ -17,6 +17,7 @@ import { zh_TW, zh_TWMetadata } from './locales/zh_TW';
import { ne, neMetadata } from './locales/ne';
import { mr, mrMetadata } from './locales/mr';
import { tr, trMetadata } from './locales/tr';
+import { id_ID, id_IDMetadata } from './locales/id_ID.ts';
export const languages: LanguageMetadata[] = [
enMetadata,
@@ -34,6 +35,7 @@ export const languages: LanguageMetadata[] = [
neMetadata,
mrMetadata,
trMetadata,
+ id_IDMetadata,
];
const resources = {
@@ -52,6 +54,7 @@ const resources = {
ne,
mr,
tr,
+ id_ID,
};
i18n.use(LanguageDetector)
diff --git a/src/i18n/locales/id_ID.ts b/src/i18n/locales/id_ID.ts
new file mode 100644
index 00000000..af90be6b
--- /dev/null
+++ b/src/i18n/locales/id_ID.ts
@@ -0,0 +1,402 @@
+import type { LanguageMetadata, LanguageTranslation } from '../types';
+
+export const id_ID: LanguageTranslation = {
+ translation: {
+ menu: {
+ file: {
+ file: 'Berkas',
+ new: 'Buat Baru',
+ open: 'Buka',
+ save: 'Simpan',
+ import_database: 'Impor Database',
+ export_sql: 'Ekspor SQL',
+ export_as: 'Ekspor Sebagai',
+ delete_diagram: 'Hapus Diagram',
+ exit: 'Keluar',
+ },
+ edit: {
+ edit: 'Ubah',
+ undo: 'Undo',
+ redo: 'Redo',
+ clear: 'Bersihkan',
+ },
+ view: {
+ view: 'Tampilan',
+ show_sidebar: 'Tampilkan Sidebar',
+ hide_sidebar: 'Sembunyikan Sidebar',
+ hide_cardinality: 'Sembunyikan Kardinalitas',
+ show_cardinality: 'Tampilkan Kardinalitas',
+ zoom_on_scroll: 'Perbesar saat Scroll',
+ theme: 'Tema',
+ show_dependencies: 'Tampilkan Dependensi',
+ hide_dependencies: 'Sembunyikan Dependensi',
+ },
+ // TODO: Translate
+ share: {
+ share: 'Share',
+ export_diagram: 'Export Diagram',
+ import_diagram: 'Import Diagram',
+ },
+ help: {
+ help: 'Bantuan',
+ visit_website: 'Kunjungi ChartDB',
+ join_discord: 'Bergabunglah di Discord kami',
+ schedule_a_call: 'Berbicara dengan kami!',
+ },
+ },
+
+ delete_diagram_alert: {
+ title: 'Hapus Diagram',
+ description:
+ 'Tindakan ini tidak dapat dibatalkan. Diagram akan dihapus secara permanen.',
+ cancel: 'Batal',
+ delete: 'Hapus',
+ },
+
+ clear_diagram_alert: {
+ title: 'Bersihkan Diagram',
+ description:
+ 'Tindakan ini tidak dapat dibatalkan. Semua data di diagram akan dihapus secara permanen.',
+ cancel: 'Batal',
+ clear: 'Bersihkan',
+ },
+
+ reorder_diagram_alert: {
+ title: 'Atur Ulang Diagram',
+ description:
+ 'Tindakan ini akan mengatur ulang semua tabel di diagram. Apakah Anda ingin melanjutkan?',
+ reorder: 'Atur Ulang',
+ cancel: 'Batal',
+ },
+
+ multiple_schemas_alert: {
+ title: 'Schema Lebih dari satu',
+ description:
+ '{{schemasCount}} schema di diagram ini. Sedang ditampilkan: {{formattedSchemas}}.',
+ dont_show_again: 'Jangan tampilkan lagi',
+ change_schema: 'Ubah',
+ none: 'Tidak ada',
+ },
+
+ theme: {
+ system: 'Sistem',
+ light: 'Terang',
+ dark: 'Gelap',
+ },
+
+ zoom: {
+ on: 'Aktif',
+ off: 'Nonaktif',
+ },
+
+ last_saved: 'Terakhir disimpan',
+ saved: 'Tersimpan',
+ diagrams: 'Diagram',
+ loading_diagram: 'Memuat diagram...',
+ deselect_all: 'Batalkan Semua',
+ select_all: 'Pilih Semua',
+ clear: 'Bersihkan',
+ show_more: 'Tampilkan Lebih Banyak',
+ show_less: 'Tampilkan Lebih Sedikit',
+ copy_to_clipboard: 'Salin ke Clipboard',
+ copied: 'Tersalin!',
+
+ side_panel: {
+ schema: 'Skema:',
+ filter_by_schema: 'Saring berdasarkan skema',
+ search_schema: 'Cari skema...',
+ no_schemas_found: 'Tidak ada skema yang ditemukan.',
+ view_all_options: 'Tampilkan Semua Pilihan...',
+ tables_section: {
+ tables: 'Tabel',
+ add_table: 'Tambah Tabel',
+ filter: 'Saring',
+ collapse: 'Lipat Semua',
+
+ table: {
+ fields: 'Kolom',
+ nullable: 'Bisa Kosong?',
+ primary_key: 'Kunci Utama',
+ indexes: 'Indeks',
+ comments: 'Komentar',
+ no_comments: 'Tidak ada komentar',
+ add_field: 'Tambah Kolom',
+ add_index: 'Tambah Indeks',
+ index_select_fields: 'Pilih kolom',
+ no_types_found: 'Tidak ada tipe yang ditemukan',
+ field_name: 'Nama',
+ field_type: 'Tipe',
+ field_actions: {
+ title: 'Atribut Kolom',
+ unique: 'Unik',
+ comments: 'Komentar',
+ no_comments: 'Tidak ada komentar',
+ delete_field: 'Hapus Kolom',
+ },
+ index_actions: {
+ title: 'Atribut Indeks',
+ name: 'Nama',
+ unique: 'Unik',
+ delete_index: 'Hapus Indeks',
+ },
+ table_actions: {
+ title: 'Aksi Tabel',
+ change_schema: 'Ubah Skema',
+ add_field: 'Tambah Kolom',
+ add_index: 'Tambah Indeks',
+ duplicate_table: 'Duplikat Tabel',
+ delete_table: 'Hapus Tabel',
+ },
+ },
+ empty_state: {
+ title: 'Tidak ada tabel',
+ description: 'Buat tabel untuk memulai',
+ },
+ },
+ relationships_section: {
+ relationships: 'Hubungan',
+ filter: 'Saring',
+ add_relationship: 'Tambah Hubungan',
+ collapse: 'Lipat Semua',
+ relationship: {
+ primary: 'Tabel Primer',
+ foreign: 'Tabel Referensi',
+ cardinality: 'Kardinalitas',
+ delete_relationship: 'Hapus',
+ relationship_actions: {
+ title: 'Aksi',
+ delete_relationship: 'Hapus',
+ },
+ },
+ empty_state: {
+ title: 'Tidak ada hubungan',
+ description: 'Buat hubungan untuk menghubungkan tabel',
+ },
+ },
+ dependencies_section: {
+ dependencies: 'Dependensi',
+ filter: 'Saring',
+ collapse: 'Lipat Semua',
+ dependency: {
+ table: 'Tabel',
+ dependent_table: 'Tampilan Dependen',
+ delete_dependency: 'Hapus',
+ dependency_actions: {
+ title: 'Aksi',
+ delete_dependency: 'Hapus',
+ },
+ },
+ empty_state: {
+ title: 'Tidak ada dependensi',
+ description: 'Buat tampilan untuk memulai',
+ },
+ },
+ },
+
+ toolbar: {
+ zoom_in: 'Perbesar',
+ zoom_out: 'Perkecil',
+ save: 'Simpan',
+ show_all: 'Tampilkan Semua',
+ undo: 'Undo',
+ redo: 'Redo',
+ reorder_diagram: 'Atur Ulang Diagram',
+ highlight_overlapping_tables: 'Sorot Tabel yang Tumpang Tindih',
+ },
+
+ new_diagram_dialog: {
+ database_selection: {
+ title: 'Apakah Database Anda?',
+ description:
+ 'Setiap database memiliki fitur dan kemampuan unik.',
+ check_examples_long: 'Lihat Contoh',
+ check_examples_short: 'Contoh',
+ },
+
+ import_database: {
+ title: 'Impor Database Anda',
+ database_edition: 'Edisi Database:',
+ step_1: 'Jalankan skrip ini di database Anda:',
+ step_2: 'Tempel hasil skrip di sini:',
+ script_results_placeholder: 'Hasil skrip di sini...',
+ ssms_instructions: {
+ button_text: 'Instruksi SSMS',
+ title: 'Instruksi',
+ step_1: 'Pergi ke Alat > Opsi > Hasil Kueri > SQL Server.',
+ step_2: 'Jika Anda menggunakan "Hasil ke Grid," ubah Jumlah Karakter yang Diterima untuk Data Non-XML (disetel ke 9999999).',
+ },
+ instructions_link: 'Butuh Bantuan? Tonton caranya',
+ check_script_result: 'Periksa Hasil Skrip',
+ },
+
+ cancel: 'Batal',
+ import_from_file: 'Impor dari file',
+ back: 'Kembali',
+ empty_diagram: 'Diagram Kosong',
+ continue: 'Lanjutkan',
+ import: 'Impor',
+ },
+
+ open_diagram_dialog: {
+ title: 'Buka Diagram',
+ description: 'Pilih diagram untuk dibuka dari daftar di bawah.',
+ table_columns: {
+ name: 'Name',
+ created_at: 'Dibuat pada',
+ last_modified: 'Terakhir diubah',
+ tables_count: 'Tabel',
+ },
+ cancel: 'Batal',
+ open: 'Buka',
+ },
+
+ export_sql_dialog: {
+ title: 'Ekspor SQL',
+ description: 'Ekspor skema diagram Anda ke skrip {{databaseType}}',
+ close: 'Tutup',
+ loading: {
+ text: 'AI sedang membuat SQL untuk {{databaseType}}...',
+ description: 'Ini akan memakan waktu hingga 30 detik.',
+ },
+ error: {
+ message:
+ 'Kesalahan saat menghasilkan skrip SQL. Silakan coba lagi nanti atau <0>hubungi kami0>.',
+ description:
+ 'Silakan gunakan OPENAI_TOKEN Anda, lihat petunjuk <0>di sini0>.',
+ },
+ },
+
+ create_relationship_dialog: {
+ title: 'Buat Hubungan',
+ primary_table: 'Tabel Primer',
+ primary_field: 'Kolom Primer',
+ referenced_table: 'Tabel Referensi',
+ referenced_field: 'Kolom Referensi',
+ primary_table_placeholder: 'Pilih tabel',
+ primary_field_placeholder: 'Pilih kolom',
+ referenced_table_placeholder: 'Pilih tabel',
+ referenced_field_placeholder: 'Pilih kolom',
+ no_tables_found: 'Tidak ada tabel yang ditemukan',
+ no_fields_found: 'Tidak ada kolom yang ditemukan',
+ create: 'Buat',
+ cancel: 'Batal',
+ },
+
+ import_database_dialog: {
+ title: 'Impor ke Diagram Saat Ini',
+ override_alert: {
+ title: 'Impor Database',
+ content: {
+ alert: 'Mengimpor diagram ini akan memengaruhi tabel dan hubungan yang ada.',
+ new_tables:
+ '{{newTablesNumber}} tabel baru akan ditambahkan.',
+ new_relationships:
+ '{{newRelationshipsNumber}} hubungan baru akan dibuat.',
+ tables_override:
+ '{{tablesOverrideNumber}} tabel akan ditimpa.',
+ proceed: 'Apakah Anda ingin melanjutkan?',
+ },
+ import: 'Impor',
+ cancel: 'Batal',
+ },
+ },
+
+ export_image_dialog: {
+ title: 'Ekspor Gambar',
+ description: 'Pilih faktor skala untuk ekspor:',
+ scale_1x: '1x Biasa',
+ scale_2x: '2x (Disarankan)',
+ scale_3x: '3x',
+ scale_4x: '4x',
+ cancel: 'Batal',
+ export: 'Ekspor',
+ },
+
+ new_table_schema_dialog: {
+ title: 'Pilih Skema',
+ description:
+ 'Skema yang sedang ditampilkan. Pilih salah satu untuk tabel baru.',
+ cancel: 'Batal',
+ confirm: 'Konfirmasi',
+ },
+
+ update_table_schema_dialog: {
+ title: 'Ubah Skema',
+ description: 'Perbarui skema tabel "{{tableName}}"',
+ cancel: 'Batal',
+ confirm: 'Ubah',
+ },
+
+ star_us_dialog: {
+ title: 'Bantu kami meningkatkan!',
+ description:
+ 'Apakah Anda ingin menambahkan bintang di GitHub? Cukup klik!',
+ close: 'Tidak sekarang',
+ confirm: 'Tentu saja!',
+ },
+
+ // TODO: Translate
+ export_diagram_dialog: {
+ title: 'Export Diagram',
+ description: 'Choose the format for export:',
+ format_json: 'JSON',
+ cancel: 'Cancel',
+ export: 'Export',
+ error: {
+ title: 'Error exporting diagram',
+ description:
+ 'Something went wrong. Need help? chartdb.io@gmail.com',
+ },
+ },
+
+ // TODO: Translate
+ import_diagram_dialog: {
+ title: 'Import Diagram',
+ description: 'Paste the diagram JSON below:',
+ cancel: 'Cancel',
+ import: 'Import',
+ error: {
+ title: 'Error importing diagram',
+ description:
+ 'The diagram JSON is invalid. Please check the JSON and try again. Need help? chartdb.io@gmail.com',
+ },
+ },
+
+ relationship_type: {
+ one_to_one: 'Satu ke Satu',
+ one_to_many: 'Satu ke Banyak',
+ many_to_one: 'Banyak ke Satu',
+ many_to_many: 'Banyak ke Banyak',
+ },
+
+ canvas_context_menu: {
+ new_table: 'Tabel Baru',
+ new_relationship: 'Hubungan Baru',
+ },
+
+ table_node_context_menu: {
+ edit_table: 'Ubah Tabel',
+ delete_table: 'Hapus Tabel',
+ // TODO: Translate
+ duplicate_table: 'Duplicate Table',
+ },
+
+ // TODO: Translate
+ snap_to_grid_tooltip: 'Snap to Grid (Hold {{key}})',
+
+ // TODO: Translate
+ tool_tips: {
+ double_click_to_edit: 'Double-click to edit',
+ },
+
+ language_select: {
+ change_language: 'Bahasa',
+ },
+ },
+};
+
+export const id_IDMetadata: LanguageMetadata = {
+ name: 'Indonesian',
+ nativeName: 'Indonesia',
+ code: 'id_ID',
+};