chore(i18n): add Indonesian docs, data dictionary, and Meilisearch translations

This commit is contained in:
Gilas Amalanda
2026-10-05 02:22:38 +08:00
committed by GitHub
parent 95138e5a68
commit a919333418
5 changed files with 360 additions and 0 deletions
@@ -2,6 +2,7 @@ import { describe, expect, it } from "vitest";
import az from "../locales/docs/az";
import en from "../locales/docs/en";
import es from "../locales/docs/es";
import id from "../locales/docs/id";
import it_ from "../locales/docs/it";
import ja from "../locales/docs/ja";
import ko from "../locales/docs/ko";
@@ -21,6 +22,7 @@ import zhTW from "../locales/docs/zh-TW";
const locales: Array<[string, Record<string, unknown>]> = [
["az", az],
["es", es],
["id", id],
["it", it_],
["ja", ja],
["ko", ko],
@@ -1108,6 +1108,117 @@ export const dataDictionaryRu = {
previewFailed: "Could not preview: {error}",
};
export const dataDictionaryId = {
title: "Ekspor Kamus Data",
includeIndexes: "Sertakan indeks dan kunci asing",
loading: "Membaca struktur…",
exporting: "Mengekspor…",
exportFailed: "Tidak dapat mengekspor: {error}",
loadFailed: "Tidak dapat membaca struktur: {error}",
warningTableSkipped: "{table} dilewati: {reason}",
objectUnavailable: "Objek tidak ditemukan saat ekspor.",
warningNoForeignKeys: "{engine} tidak melaporkan kunci asing.",
warningCommentsUnsupported: "{engine} tidak mendukung komentar tabel atau kolom.",
empty: "Tidak ada tabel untuk diekspor.",
column: "Kolom",
type: "Tipe",
length: "Panjang",
precision: "Presisi",
scale: "Skala",
primaryKey: "Kunci utama",
nullable: "Nullable",
unique: "Unik",
defaultValue: "Default",
extra: "Ekstra",
comment: "Komentar",
indexName: "Indeks",
indexColumns: "Kolom",
indexType: "Tipe",
constraintName: "Batasan",
refSchema: "Skema rujukan",
refTable: "Tabel rujukan",
refColumn: "Kolom rujukan",
onUpdate: "ON UPDATE",
onDelete: "ON DELETE",
yes: "Ya",
no: "Tidak",
indexesHeading: "Indeks",
foreignKeysHeading: "Kunci asing",
stepDatabases: "Pilih database dan skema",
stepObjects: "Pilih objek dan urutan",
stepTemplate: "Pilih templat",
stepLayout: "Sesuaikan tata letak",
stepFile: "Jalur file dan buat",
next: "Berikutnya",
back: "Kembali",
start: "Mulai",
databases: "Database",
schemasHeading: "Skema",
noSchemaLevel: "Database ini tidak memiliki skema terpisah.",
searchObjects: "Cari objek",
selectAll: "Semua",
selectNone: "Tidak Ada",
selectedCount: "Urutan ekspor ({count})",
moveUp: "Naik",
moveDown: "Turun",
templateStandard: "Standar",
templateStandardHint: "Sampul, daftar isi, pendahuluan, dan indeks.",
templateDetailed: "Rinci",
templateDetailedHint: "Halaman lanskap dengan indeks, kunci asing, dan pendahuluan yang lebih panjang.",
templateCompact: "Ringkas",
templateCompactHint: "Hanya kolom, tanpa sampul atau daftar isi.",
templateCatalog: "Katalog",
templateCatalogHint: "Sampul dan daftar isi, tanpa indeks.",
templateReference: "Referensi",
templateReferenceHint: "Halaman lanskap besar dengan indeks dan daftar isi.",
includeCover: "Sertakan sampul",
header: "Header",
dictionaryTitle: "Judul",
subtitle: "Subjudul",
remarks: "Catatan",
coverFooter: "Footer sampul",
includeToc: "Sertakan daftar isi",
includeBreadcrumbs: "Sertakan header breadcrumb",
includeLeftFooter: "Sertakan footer kiri",
includePageNumber: "Sertakan nomor halaman",
includeIntroduction: "Sertakan pendahuluan",
introductionDefault: "Kamus data adalah kumpulan metadata seperti nama objek, tipe data, ukuran, dan relasi dengan aset data lainnya.",
detailedIntroduction: "Properti rinci (tipe data, ukuran, nullability, indeks, kunci asing, dan batasan) disusun dalam tabel.",
paper: "Kertas",
orientation: "Orientasi",
portrait: "Potret",
landscape: "Lanskap",
margin: "Margin (cm)",
fontSize: "Ukuran font",
fontSmall: "Kecil",
fontMedium: "Sedang",
fontLarge: "Besar",
exportToFile: "Ekspor ke file",
browse: "Jelajahi",
appendTimestamp: "Tambahkan stempel waktu ke nama file",
overwriteExisting: "Timpa file yang sudah ada",
continueOnError: "Lanjutkan jika terjadi galat",
phasePreparing: "Menyiapkan objek",
phaseCollecting: "Membaca metadata",
phaseGenerating: "Membuat PDF",
phaseSaving: "Menyimpan file",
warningCount: "{count} peringatan",
alreadyRunning: "Ekspor sudah berjalan untuk koneksi ini.",
backgroundStarted: "Ekspor dimulai di tugas latar belakang.",
backgroundDone: "Kamus data diekspor: {path}",
backgroundFailed: "Ekspor kamus data gagal: {error}",
fileExists: "File sudah ada.",
contentsHeading: "Daftar Isi",
kindTable: "Tabel",
kindView: "Tampilan",
kindMaterializedView: "Tampilan terwujud",
loadProfile: "Muat profil",
saveProfile: "Simpan profil",
profileInvalid: "Profil ini tidak dapat dibaca.",
preview: "Pratinjau",
previewFailed: "Tidak dapat menampilkan pratinjau: {error}",
};
export const dataDictionaryAz = {
title: "Məlumat lüğətini ixrac et",
includeIndexes: "İndeksləri və xarici açarları daxil et",
+69
View File
@@ -0,0 +1,69 @@
export default {
title: "Dokumentasi",
groupBySchema: "Skema",
groupByTableGroup: "Grup Tabel",
noGroup: "(tanpa grup)",
noSchema: "(tanpa skema)",
search: "Cari tabel, kolom, grup…",
columns: "Kolom",
indexes: "Indeks",
references: "Referensi",
referencedBy: "Dirujuk oleh",
localNote: "LOKAL",
shadowedComment: "Komentar database: {comment}",
addNote: "Tambah catatan",
editNote: "Edit catatan",
newGroup: "Grup baru…",
groupName: "Nama grup",
groupColour: "Warna",
deleteGroup: "Hapus grup",
enumValues: "Nilai",
usedBy: "Digunakan oleh",
openDiagram: "Buka diagram skema",
saving: "Menyimpan…",
saved: "Tersimpan",
saveFailed: "Tidak dapat menyimpan catatan: {error}",
overview: "Ringkasan",
groupBy: "Kelompokkan berdasarkan",
searchLabel: "Cari",
groups: "Grup",
relationships: "Relasi",
columnHeader: "Kolom",
typeHeader: "Tipe",
settingsHeader: "Pengaturan",
noteHeader: "Catatan",
nameHeader: "Nama",
definitionHeader: "Definisi",
noOutgoingRelationships: "Tabel ini tidak merujuk tabel lain.",
noIncomingRelationships: "Tidak ada tabel yang merujuk ke tabel ini.",
diagram: "Diagram",
language: "Bahasa",
theme: "Tema",
themeLight: "Terang",
themeDark: "Gelap",
exportHtml: "Ekspor HTML…",
exporting: "Mengekspor…",
exportFailed: "Tidak dapat mengekspor: {error}",
warnings: {
tableSkipped: {
title: "Satu tabel tidak dapat didokumentasikan",
detail: "{table} dilewati: {reason}. Tabel ini tidak ada dalam dokumentasi ini.",
},
noForeignKeyMetadata: {
title: "Tidak ada relasi yang tersedia",
detail: "{engine} tidak melaporkan metadata kunci asing, sehingga tidak ada garis relasi yang dapat diturunkan. Diagram ini sudah lengkap untuk mesin database ini.",
},
commentsUnsupported: {
title: "Komentar database tidak tersedia",
detail: "{engine} tidak mendukung komentar tabel atau kolom, sehingga setiap deskripsi di sini berasal dari catatan proyek ini sendiri.",
},
orphanedNotes: {
title: "Beberapa catatan tidak lagi cocok dengan apa pun",
detail: "{count} catatan merujuk ke tabel atau kolom yang sudah tidak ada. Tidak ada yang dihapus — petakan ulang atau hapus catatan tersebut di file catatan.",
},
dbmlOmitted: {
title: "Tidak dapat direpresentasikan dalam DBML",
detail: "{item} pada {table} didokumentasikan di sini tetapi tidak disertakan dalam DBML yang diekspor: {reason}.",
},
},
};
+70
View File
@@ -1,6 +1,9 @@
import { withEnglishFallback } from "./fallback";
import docs from "./docs/id";
import { dataDictionaryId as dataDictionary } from "./dataDictionaryMessages";
import { consulIdMessages as consul } from "./consulId";
import { sqlServerTraceMessages as sqlServerTrace } from "./sqlServerTraceMessages";
import { meilisearchManagementId } from "./meilisearchManagement";
export default withEnglishFallback({
cellTransform: {
@@ -84,6 +87,8 @@ export default withEnglishFallback({
incomplete: "DDL yang dihasilkan tidak lengkap dan tidak disalin. Buka detail tipe untuk melihat peringatannya.",
},
},
docs,
dataDictionary,
pluginPlatform: {
dataAccessConsent: '"{name}" ingin membaca data dari koneksi "{connection}". Selama koneksi tersebut terbuka, plugin dapat menjalankan kueri read-only pada koneksi itu hingga Anda mencabut aksesnya di Plugin Center. Izinkan?',
dataAccessConsentTitle: "Permintaan Akses Data",
@@ -6222,6 +6227,71 @@ export default withEnglishFallback({
partialFailure: "Driver MongoDB Legacy menolak {failed} dari {total} dokumen: {message}",
},
},
meilisearch: {
...meilisearchManagementId,
documents: "Dokumen",
settings: "Pengaturan",
search: "Cari",
keywordPlaceholder: "Cari dokumen...",
filter: "Filter",
filterPlaceholder: 'status = "published"',
sort: "Urutkan",
sortPlaceholder: "field:asc",
sortHint: "Pisahkan beberapa ekspresi pengurutan dengan koma (,)",
sortNoAttributes: "Tidak ada atribut yang dapat diurutkan dikonfigurasi untuk indeks ini",
sortAsc: "Naik",
sortDesc: "Turun",
limit: "Batas",
offset: "Offset",
resultSummary: "Sekitar {count} hasil · {duration}",
viewJson: "JSON",
viewTable: "Tabel",
viewGrid: "Grid",
empty: "Tidak ada dokumen ditemukan",
editDocument: "Edit dokumen",
deleteDocument: "Hapus dokumen",
deleteDocumentMessage: "Hapus dokumen ini? Tindakan ini tidak dapat dibatalkan.",
documentDeleted: "Dokumen dihapus",
documentSaved: "Dokumen disimpan",
settingsSaved: "Pengaturan disimpan",
invalidJson: "JSON tidak valid",
settingsJson: "JSON Pengaturan",
dangerZone: "Zona berbahaya",
clearDocuments: "Hapus semua dokumen",
clearDocumentsConfirmMessage: "Ini akan menghapus setiap dokumen dari indeks. Tindakan ini tidak dapat dibatalkan.",
documentsCleared: "Semua dokumen dihapus",
deleteIndex: "Hapus indeks",
deleteIndexConfirmMessage: "Ini akan menghapus indeks beserta semua dokumennya secara permanen.",
indexDeleted: "Indeks dihapus",
isIndexing: "Mengindeks",
uid: "UID",
updatedAt: "Diperbarui",
primaryKey: "Kunci utama",
documentCountLabel: "Dokumen",
databaseSize: "Ukuran database",
documentSize: "Ukuran dokumen",
avgDocumentSize: "Rata-rata ukuran dokumen",
instanceDatabaseSize: "Ukuran database instance",
copyDocument: "Salin JSON",
copied: "Disalin",
autoRefresh: "Segarkan otomatis",
hybrid: "Pencarian hibrida",
hybridEmbedder: "Embedder",
hybridSemanticRatio: "Rasio semantik",
hybridNoEmbedders: "Tidak ada embedder yang dikonfigurasi di pengaturan indeks; masukkan secara manual.",
showRankingScore: "Skor peringkat",
rankingScoreThreshold: "Ambang skor",
results: "Hasil",
exportResults: "Ekspor hasil",
exportFiltered: "Ekspor hasil yang difilter",
exportAll: "Ekspor semua dokumen",
exportLimitReached: "Hanya {count} dari {total} hasil yang tersedia; batas Meilisearch mencegah ekspor penuh.",
importResults: "Impor JSON",
importSuccess: "{count} dokumen diimpor",
importFailed: "Impor gagal: {message}",
importInvalidJson: "JSON harus berisi objek atau array objek",
exportSearchUnsupported: "Ekspor penuh tidak tersedia untuk pencarian teks, hibrida, atau ambang skor karena Meilisearch membatasi paginasi pencarian. Hapus opsi tersebut untuk mengekspor semua dokumen yang difilter.",
},
dynamodb: {
tableMetadataUnavailable: "Metadata tabel DynamoDB belum dimuat. Segarkan dan coba lagi.",
keyRequired: "Item DynamoDB memerlukan atribut kunci {key}",
@@ -527,6 +527,113 @@ export const meilisearchManagementMessages = {
createIndexPrimaryKeyPlaceholder: "Необязательный первичный ключ",
createIndexPrimaryKeyHelp: "Оставьте пустым, чтобы задать первичный ключ при добавлении первого документа.",
},
id: {
...en,
systemManagement: "Manajemen sistem",
overview: "Ringkasan",
overviewDescription: "Status kesehatan, kapasitas, indeks, kunci, dan aktivitas tugas secara langsung.",
apiKeys: "Kunci API",
keysDescription: "Buat dan kelola kunci API Meilisearch dengan cakupan tertentu.",
tasks: "Tugas",
tasksDescription: "Periksa operasi asinkron, batalkan tugas aktif, dan bersihkan riwayat yang selesai.",
health: "Kesehatan",
version: "Versi",
indexCount: "Indeks",
totalDocuments: "Total dokumen",
indexingCount: "Mengindeks",
keyCount: "Kunci",
storage: "Penyimpanan",
usedDatabaseSize: "Ukuran database terpakai",
lastUpdate: "Pembaruan terakhir",
taskStatusDistribution: "Distribusi status tugas",
topIndexes: "Indeks teratas berdasarkan dokumen",
status: "Status",
idle: "Diam",
sectionStatus: { available: "Tersedia", forbidden: "Izin ditolak", unsupported: "Tidak didukung server ini", error: "Tidak tersedia" },
refresh: "Segarkan",
rowActions: "Tindakan",
previous: "Sebelumnya",
next: "Berikutnya",
name: "Nama",
key: "Kunci",
description: "Deskripsi",
actions: "Tindakan",
indexes: "Indeks",
expiresAt: "Berakhir pada",
never: "Tidak pernah",
createKey: "Buat kunci",
editKey: "Edit kunci",
deleteKey: "Hapus kunci",
keyDetails: "Detail kunci",
keyCreated: "Kunci API dibuat",
keyUpdated: "Kunci API diperbarui",
keyDeleted: "Kunci API dihapus",
noKeys: "Tidak ada kunci API ditemukan",
deleteKeyConfirm: "Hapus kunci API {uid}? Tindakan ini tidak dapat dibatalkan.",
deleteKeyTypePrompt: "Masukkan UID kunci lengkap untuk mengonfirmasi penghapusan.",
deleteKeyTypePlaceholder: "Masukkan UID kunci",
immutableKeyFields: "Tindakan, indeks, kedaluwarsa, UID, dan secret bersifat tetap. Buat ulang kunci untuk mengubahnya.",
secretShownOnce: "Salin secret ini sekarang. DBX tidak pernah menyimpan nilai kunci API.",
actionsIndexesRequired: "Diperlukan minimal satu tindakan dan satu indeks.",
uidPlaceholder: "Biarkan kosong untuk membuat UID acak",
uidHelp: "Opsional. Jika kosong, Meilisearch akan membuat UID acak.",
namePlaceholder: "Beri nama kunci Anda",
nameHelp: "Nama opsional untuk mengenali kunci ini.",
descriptionPlaceholder: "Tambahkan deskripsi opsional",
descriptionHelp: "Catatan opsional yang menjelaskan di mana atau mengapa kunci ini digunakan.",
indexesPlaceholder: "Pilih indeks yang diizinkan",
indexesHelp: "Pilih satu atau beberapa indeks yang dapat diakses. * memberi akses ke semua indeks.",
actionsPlaceholder: "Pilih tindakan yang diizinkan",
actionsHelp: "Pilih operasi API yang diizinkan untuk kunci ini.",
expiresAtPlaceholder: "Pilih atau masukkan tanggal dan waktu",
expiresAtHelp: "Opsional. Biarkan kosong agar tidak pernah kedaluwarsa, atau masukkan tanggal dan waktu yang valid.",
openDateTimePicker: "Buka pemilih tanggal dan waktu",
invalidExpiresAt: "Masukkan tanggal dan waktu kedaluwarsa yang valid.",
copyKeyValue: "Salin kunci API",
paginationSummary: "{start}-{end} dari {total}",
readOnlyDisabled: "Koneksi ini bersifat baca saja; tindakan manajemen dinonaktifkan.",
resetFilters: "Atur ulang filter",
uidFilter: "Filter UID",
searchUid: "Cari UID",
allIndexes: "Semua indeks",
allStatuses: "Semua status",
indexListUnavailable: "Tidak dapat memuat daftar indeks yang dapat diakses",
columnSettings: "Atur kolom",
index: "Indeks",
type: "Tipe",
details: "Detail",
receivedDocuments: "Dokumen diterima",
indexedDocuments: "Dokumen diindeks",
enqueuedAt: "Dimasukkan antrean",
startedAt: "Dimulai",
finishedAt: "Selesai",
duration: "Durasi",
indexTasks: "Tugas · {index}",
noTasks: "Tidak ada tugas ditemukan",
taskCount: "{count} tugas cocok",
taskDetails: "Detail tugas",
cancelTask: "Batalkan tugas",
cancelTasks: "Batalkan tugas",
deleteTaskHistory: "Hapus riwayat tugas",
cancelFilteredTasks: "Batalkan tugas aktif yang difilter",
deleteFilteredHistory: "Hapus riwayat selesai yang difilter",
noAllowedTaskStatuses: "Filter yang diterapkan tidak berisi status tugas yang diizinkan untuk operasi ini.",
countingMatchingTasks: "Menghitung tugas yang cocok...",
cancelTasksConfirm: "Batalkan tugas aktif yang cocok dengan filter ini ({count} cocok saat ini)?",
deleteTasksConfirm: "Hapus riwayat tugas selesai yang cocok dengan filter ini ({count} cocok saat ini)?",
waitingForTask: "Menunggu tugas manajemen #{uid}",
taskOperationCompleted: "Operasi tugas selesai",
taskOperationFinished: "Operasi tugas selesai dengan status {status}",
taskPollingTimeout: "Tugas #{uid} masih tertunda setelah 60 detik. Segarkan secara manual untuk memeriksanya.",
createIndex: "Buat indeks",
createIndexUid: "UID indeks",
createIndexPrimaryKey: "Kunci utama",
indexCreated: "Indeks dibuat",
createIndexUidRequired: "UID indeks wajib diisi.",
createIndexUidPlaceholder: "Masukkan UID indeks",
createIndexPrimaryKeyPlaceholder: "Kunci utama opsional",
createIndexPrimaryKeyHelp: "Biarkan kosong untuk menetapkan kunci utama saat menambahkan dokumen pertama.",
},
} as const;
export const meilisearchManagementAz = meilisearchManagementMessages.az;
@@ -540,3 +647,4 @@ export const meilisearchManagementIt = meilisearchManagementMessages.it;
export const meilisearchManagementPtBR = meilisearchManagementMessages["pt-BR"];
export const meilisearchManagementTr = meilisearchManagementMessages.tr;
export const meilisearchManagementRu = meilisearchManagementMessages.ru;
export const meilisearchManagementId = meilisearchManagementMessages.id;