@authrim/setup 0.1.89 → 0.1.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/cli/commands/init.d.ts.map +1 -1
  2. package/dist/cli/commands/init.js +58 -11
  3. package/dist/cli/commands/init.js.map +1 -1
  4. package/dist/core/lock.d.ts +16 -16
  5. package/dist/core/wrangler.d.ts.map +1 -1
  6. package/dist/core/wrangler.js +21 -2
  7. package/dist/core/wrangler.js.map +1 -1
  8. package/dist/i18n/index.d.ts.map +1 -1
  9. package/dist/i18n/index.js +14 -3
  10. package/dist/i18n/index.js.map +1 -1
  11. package/dist/i18n/locales/de.d.ts +8 -0
  12. package/dist/i18n/locales/de.d.ts.map +1 -0
  13. package/dist/i18n/locales/de.js +894 -0
  14. package/dist/i18n/locales/de.js.map +1 -0
  15. package/dist/i18n/locales/es.d.ts +8 -0
  16. package/dist/i18n/locales/es.d.ts.map +1 -0
  17. package/dist/i18n/locales/es.js +894 -0
  18. package/dist/i18n/locales/es.js.map +1 -0
  19. package/dist/i18n/locales/fr.d.ts +8 -0
  20. package/dist/i18n/locales/fr.d.ts.map +1 -0
  21. package/dist/i18n/locales/fr.js +894 -0
  22. package/dist/i18n/locales/fr.js.map +1 -0
  23. package/dist/i18n/locales/id.d.ts +8 -0
  24. package/dist/i18n/locales/id.d.ts.map +1 -0
  25. package/dist/i18n/locales/id.js +894 -0
  26. package/dist/i18n/locales/id.js.map +1 -0
  27. package/dist/i18n/locales/ko.d.ts +8 -0
  28. package/dist/i18n/locales/ko.d.ts.map +1 -0
  29. package/dist/i18n/locales/ko.js +894 -0
  30. package/dist/i18n/locales/ko.js.map +1 -0
  31. package/dist/i18n/locales/pt.d.ts +8 -0
  32. package/dist/i18n/locales/pt.d.ts.map +1 -0
  33. package/dist/i18n/locales/pt.js +894 -0
  34. package/dist/i18n/locales/pt.js.map +1 -0
  35. package/dist/i18n/locales/ru.d.ts +8 -0
  36. package/dist/i18n/locales/ru.d.ts.map +1 -0
  37. package/dist/i18n/locales/ru.js +894 -0
  38. package/dist/i18n/locales/ru.js.map +1 -0
  39. package/dist/i18n/locales/zh-CN.d.ts +8 -0
  40. package/dist/i18n/locales/zh-CN.d.ts.map +1 -0
  41. package/dist/i18n/locales/zh-CN.js +894 -0
  42. package/dist/i18n/locales/zh-CN.js.map +1 -0
  43. package/dist/i18n/locales/zh-TW.d.ts +8 -0
  44. package/dist/i18n/locales/zh-TW.d.ts.map +1 -0
  45. package/dist/i18n/locales/zh-TW.js +894 -0
  46. package/dist/i18n/locales/zh-TW.js.map +1 -0
  47. package/dist/i18n/types.d.ts +1 -1
  48. package/dist/i18n/types.d.ts.map +1 -1
  49. package/dist/i18n/types.js +1 -0
  50. package/dist/i18n/types.js.map +1 -1
  51. package/dist/web/ui.d.ts.map +1 -1
  52. package/dist/web/ui.js +7 -2
  53. package/dist/web/ui.js.map +1 -1
  54. package/package.json +1 -1
@@ -0,0 +1,894 @@
1
+ /**
2
+ * Indonesian Translations for Authrim Setup Tool
3
+ * Terjemahan Bahasa Indonesia (formal)
4
+ */
5
+ const id = {
6
+ // Language selection
7
+ 'language.select': 'Select language / Pilih bahasa / 言語を選択',
8
+ 'language.selected': 'Bahasa: {{language}}',
9
+ // Banner
10
+ 'banner.title': 'Pengaturan Authrim',
11
+ 'banner.subtitle': 'Penyedia OIDC di Cloudflare Workers',
12
+ 'banner.warning': 'PERINGATAN: Dalam Pengembangan!',
13
+ 'banner.warningDetail': 'Proyek ini belum berfungsi dengan benar.',
14
+ 'banner.adminWarning': 'UI Admin belum lengkap dan tidak mendukung login.',
15
+ 'banner.exitHint': 'Tekan Ctrl+C kapan saja untuk keluar',
16
+ // Mode selection
17
+ 'mode.prompt': 'Pilih metode pengaturan',
18
+ 'mode.quick': 'UI Web (Disarankan)',
19
+ 'mode.quickDesc': 'Pengaturan interaktif di browser Anda',
20
+ 'mode.advanced': 'Mode CLI',
21
+ 'mode.advancedDesc': 'Pengaturan interaktif di terminal',
22
+ // Startup menu
23
+ 'startup.description': 'Siapkan Penyedia OIDC Authrim di Cloudflare Workers.',
24
+ 'startup.cancel': 'Batal',
25
+ 'startup.cancelDesc': 'Keluar dari pengaturan',
26
+ 'startup.cancelled': 'Pengaturan dibatalkan.',
27
+ 'startup.resumeLater': 'Untuk melanjutkan nanti:',
28
+ // Main menu
29
+ 'menu.prompt': 'Apa yang ingin Anda lakukan?',
30
+ 'menu.quick': 'Pengaturan Cepat (5 menit)',
31
+ 'menu.quickDesc': 'Deploy Authrim dengan konfigurasi minimal',
32
+ 'menu.custom': 'Pengaturan Kustom',
33
+ 'menu.customDesc': 'Konfigurasikan semua opsi langkah demi langkah',
34
+ // Setup titles
35
+ 'quick.title': '⚡ Pengaturan Cepat',
36
+ 'custom.title': '🔧 Pengaturan Kustom',
37
+ 'menu.manage': 'Lihat Environment yang Ada',
38
+ 'menu.manageDesc': 'Lihat, periksa, atau hapus environment yang ada',
39
+ 'menu.load': 'Muat Konfigurasi yang Ada',
40
+ 'menu.loadDesc': 'Lanjutkan pengaturan dari authrim-config.json',
41
+ 'menu.exit': 'Keluar',
42
+ 'menu.exitDesc': 'Keluar dari pengaturan',
43
+ 'menu.goodbye': 'Sampai jumpa!',
44
+ // Update check
45
+ 'update.checking': 'Memeriksa pembaruan...',
46
+ 'update.available': 'Pembaruan tersedia: {{localVersion}} → {{remoteVersion}}',
47
+ 'update.prompt': 'Apa yang ingin Anda lakukan?',
48
+ 'update.continue': 'Lanjutkan dengan versi saat ini ({{version}})',
49
+ 'update.continueDesc': 'Gunakan kode sumber yang ada',
50
+ 'update.update': 'Perbarui ke versi terbaru ({{version}})',
51
+ 'update.updateDesc': 'Unduh dan ganti dengan versi baru',
52
+ 'update.cancel': 'Batal',
53
+ 'update.cancelled': 'Dibatalkan.',
54
+ 'update.current': 'Menggunakan sumber Authrim (v{{version}})',
55
+ // Source download
56
+ 'source.downloading': 'Mengunduh kode sumber...',
57
+ 'source.downloaded': 'Kode sumber diunduh ({{version}})',
58
+ 'source.extracting': 'Mengekstrak kode sumber...',
59
+ 'source.installing': 'Menginstal dependensi (ini mungkin memerlukan beberapa menit)...',
60
+ 'source.installed': 'Dependensi terinstal',
61
+ 'source.installFailed': 'Gagal menginstal dependensi',
62
+ 'source.installManually': 'Anda dapat mencoba menginstal secara manual:',
63
+ 'source.notInSourceDir': 'Kode sumber Authrim tidak ditemukan',
64
+ 'source.downloadPrompt': 'Unduh kode sumber ke {{path}}?',
65
+ 'source.downloadOption': 'Unduh kode sumber',
66
+ 'source.downloadOptionDesc': 'Unduh versi terbaru',
67
+ 'source.exitOption': 'Keluar',
68
+ 'source.exitOptionDesc': 'Keluar dari pengaturan',
69
+ 'source.cloneManually': 'Untuk clone secara manual:',
70
+ 'source.directoryExists': 'Direktori {{path}} ada tetapi bukan sumber Authrim yang valid',
71
+ 'source.replaceOption': 'Ganti dengan unduhan baru',
72
+ 'source.replaceOptionDesc': 'Hapus {{path}} dan unduh yang terbaru',
73
+ 'source.differentOption': 'Gunakan direktori lain',
74
+ 'source.differentOptionDesc': 'Tentukan lokasi lain',
75
+ 'source.enterPath': 'Masukkan path direktori:',
76
+ 'source.updateFailed': 'Pembaruan gagal',
77
+ 'source.downloadFailed': 'Unduhan gagal',
78
+ 'source.verificationWarnings': 'Peringatan verifikasi struktur sumber:',
79
+ // Prerequisites
80
+ 'prereq.checking': 'Memeriksa status wrangler...',
81
+ 'prereq.wranglerNotInstalled': 'wrangler tidak terinstal',
82
+ 'prereq.wranglerInstallHint': 'Jalankan perintah berikut untuk menginstal:',
83
+ 'prereq.notLoggedIn': 'Belum masuk ke Cloudflare',
84
+ 'prereq.loginHint': 'Jalankan perintah berikut untuk autentikasi:',
85
+ 'prereq.loggedInAs': 'Terhubung ke Cloudflare ({{email}})',
86
+ 'prereq.accountId': 'ID Akun: {{accountId}}',
87
+ // Environment
88
+ 'env.prompt': 'Masukkan nama environment',
89
+ 'env.prod': 'Produksi',
90
+ 'env.prodDesc': 'Untuk penggunaan produksi',
91
+ 'env.staging': 'Staging',
92
+ 'env.stagingDesc': 'Untuk pengujian sebelum produksi',
93
+ 'env.dev': 'Development',
94
+ 'env.devDesc': 'Untuk pengembangan lokal',
95
+ 'env.custom': 'Kustom',
96
+ 'env.customDesc': 'Masukkan nama environment kustom',
97
+ 'env.customPrompt': 'Masukkan nama environment kustom',
98
+ 'env.customValidation': 'Hanya huruf kecil, angka, dan tanda hubung yang diizinkan (contoh: prod, staging, dev)',
99
+ 'env.detected': 'Environment yang Terdeteksi:',
100
+ 'env.selectExisting': 'Pilih environment yang ada',
101
+ 'env.createNew': 'Buat environment baru',
102
+ 'env.createNewDesc': 'Siapkan environment baru',
103
+ 'env.checking': 'Memeriksa environment yang ada...',
104
+ 'env.alreadyExists': 'Environment "{{env}}" sudah ada',
105
+ 'env.existingResources': 'Sumber daya yang ada:',
106
+ 'env.workers': 'Workers: {{count}}',
107
+ 'env.d1Databases': 'Database D1: {{count}}',
108
+ 'env.kvNamespaces': 'KV Namespace: {{count}}',
109
+ 'env.chooseAnother': 'Silakan pilih nama lain atau gunakan "npx @authrim/setup manage" untuk menghapusnya terlebih dahulu.',
110
+ 'env.available': 'Nama environment tersedia',
111
+ 'env.checkFailed': 'Tidak dapat memeriksa environment yang ada (melanjutkan)',
112
+ 'env.noEnvFound': 'Tidak ada environment Authrim yang ditemukan.',
113
+ // Region
114
+ 'region.prompt': 'Pilih wilayah',
115
+ 'region.auto': 'Otomatis (terdekat dengan Anda)',
116
+ 'region.autoDesc': 'Biarkan Cloudflare memilih wilayah terdekat',
117
+ 'region.wnam': 'Amerika Utara (Barat)',
118
+ 'region.wnamDesc': 'Amerika Utara Barat',
119
+ 'region.enam': 'Amerika Utara (Timur)',
120
+ 'region.enamDesc': 'Amerika Utara Timur',
121
+ 'region.weur': 'Eropa (Barat)',
122
+ 'region.weurDesc': 'Eropa Barat',
123
+ 'region.eeur': 'Eropa (Timur)',
124
+ 'region.eeurDesc': 'Eropa Timur',
125
+ 'region.apac': 'Asia Pasifik',
126
+ 'region.apacDesc': 'Wilayah Asia Pasifik',
127
+ 'region.oceania': 'Oseania',
128
+ 'region.oceaniaDesc': 'Australia dan Kepulauan Pasifik',
129
+ 'region.euJurisdiction': 'Yurisdiksi EU (kepatuhan GDPR)',
130
+ 'region.euJurisdictionDesc': 'Data disimpan di dalam EU',
131
+ // UI deployment
132
+ 'ui.prompt': 'Metode deployment UI',
133
+ 'ui.pagesOption': 'Cloudflare Pages',
134
+ 'ui.pagesDesc': 'Deploy ke Cloudflare Pages (disarankan)',
135
+ 'ui.customOption': 'Domain kustom',
136
+ 'ui.customDesc': 'Gunakan hosting Anda sendiri',
137
+ 'ui.skipOption': 'Lewati',
138
+ 'ui.skipDesc': 'Lewati deployment UI',
139
+ 'ui.customPrompt': 'Masukkan URL UI kustom',
140
+ // Domain
141
+ 'domain.prompt': 'Konfigurasikan domain kustom?',
142
+ 'domain.workersDevOption': 'Gunakan domain workers.dev',
143
+ 'domain.workersDevDesc': 'Gunakan domain default Cloudflare',
144
+ 'domain.customOption': 'Konfigurasikan domain kustom',
145
+ 'domain.customDesc': 'Gunakan domain Anda sendiri',
146
+ 'domain.customPrompt': 'Masukkan domain kustom (contoh: auth.example.com)',
147
+ 'domain.customValidation': 'Silakan masukkan domain yang valid (contoh: auth.example.com)',
148
+ 'domain.issuerUrl': 'URL Issuer: {{url}}',
149
+ 'domain.apiDomain': 'Domain API / Issuer (contoh: auth.example.com)',
150
+ 'domain.loginUiDomain': 'Domain UI Login (Enter untuk lewati)',
151
+ 'domain.adminUiDomain': 'Domain UI Admin (Enter untuk lewati)',
152
+ 'domain.enterDomains': 'Masukkan domain kustom (kosongkan untuk menggunakan default Cloudflare)',
153
+ 'domain.singleTenantNote': 'Dalam mode single-tenant, URL Issuer = domain API',
154
+ 'domain.usingWorkersDev': '(menggunakan domain Cloudflare workers.dev)',
155
+ // Database
156
+ 'db.title': 'Konfigurasi Database',
157
+ 'db.regionWarning': 'Wilayah database tidak dapat diubah setelah dibuat.',
158
+ 'db.coreDescription': 'Core DB: Menyimpan klien OAuth, token, sesi, log audit',
159
+ 'db.coreRegion': 'Wilayah Database Core',
160
+ 'db.piiDescription': 'PII DB: Menyimpan profil pengguna, kredensial, data pribadi',
161
+ 'db.piiNote': 'Pertimbangkan persyaratan perlindungan data Anda.',
162
+ 'db.piiRegion': 'Wilayah Database PII',
163
+ 'db.creating': 'Membuat database...',
164
+ 'db.created': 'Database dibuat: {{name}}',
165
+ 'db.existing': 'Menggunakan database yang ada: {{name}}',
166
+ 'db.error': 'Gagal membuat database',
167
+ 'db.locationHints': 'Petunjuk Lokasi',
168
+ 'db.jurisdictionCompliance': 'Yurisdiksi (Kepatuhan)',
169
+ // KV
170
+ 'kv.creating': 'Membuat KV namespace...',
171
+ 'kv.created': 'KV namespace dibuat: {{name}}',
172
+ 'kv.existing': 'Menggunakan KV namespace yang ada: {{name}}',
173
+ 'kv.error': 'Gagal membuat KV namespace',
174
+ // Queue
175
+ 'queue.creating': 'Membuat queue...',
176
+ 'queue.created': 'Queue dibuat: {{name}}',
177
+ 'queue.existing': 'Menggunakan queue yang ada: {{name}}',
178
+ 'queue.error': 'Gagal membuat queue',
179
+ // R2
180
+ 'r2.creating': 'Membuat bucket R2...',
181
+ 'r2.created': 'Bucket R2 dibuat: {{name}}',
182
+ 'r2.existing': 'Menggunakan bucket R2 yang ada: {{name}}',
183
+ 'r2.error': 'Gagal membuat bucket R2',
184
+ // Keys
185
+ 'keys.generating': 'Menghasilkan kunci kriptografi...',
186
+ 'keys.generated': 'Kunci dihasilkan ({{path}})',
187
+ 'keys.existing': 'Kunci sudah ada untuk environment "{{env}}"',
188
+ 'keys.existingWarning': 'Kunci yang ada akan ditimpa.',
189
+ 'keys.error': 'Gagal menghasilkan kunci',
190
+ 'keys.regeneratePrompt': 'Regenerasi kunci?',
191
+ 'keys.regenerateWarning': 'Ini akan membatalkan semua token yang ada!',
192
+ // Config
193
+ 'config.saving': 'Menyimpan konfigurasi...',
194
+ 'config.saved': 'Konfigurasi disimpan ke {{path}}',
195
+ 'config.error': 'Gagal menyimpan konfigurasi',
196
+ 'config.path': 'Path konfigurasi',
197
+ 'config.summary': 'Ringkasan Konfigurasi',
198
+ 'config.infrastructure': 'Infrastruktur:',
199
+ 'config.environment': 'Environment:',
200
+ 'config.workerPrefix': 'Prefix Worker:',
201
+ 'config.profile': 'Profil:',
202
+ 'config.tenantIssuer': 'Tenant & Issuer:',
203
+ 'config.mode': 'Mode:',
204
+ 'config.multiTenant': 'Multi-tenant',
205
+ 'config.singleTenant': 'Single-tenant',
206
+ 'config.baseDomain': 'Domain Dasar:',
207
+ 'config.issuerFormat': 'Format Issuer:',
208
+ 'config.issuerUrl': 'URL Issuer:',
209
+ 'config.defaultTenant': 'Tenant Default:',
210
+ 'config.displayName': 'Nama Tampilan:',
211
+ 'config.publicUrls': 'URL Publik:',
212
+ 'config.apiRouter': 'Router API:',
213
+ 'config.loginUi': 'UI Login:',
214
+ 'config.adminUi': 'UI Admin:',
215
+ 'config.components': 'Komponen:',
216
+ 'config.featureFlags': 'Feature Flags:',
217
+ 'config.emailSettings': 'Email:',
218
+ 'config.oidcSettings': 'Pengaturan OIDC:',
219
+ 'config.accessTtl': 'TTL Access:',
220
+ 'config.refreshTtl': 'TTL Refresh:',
221
+ 'config.authCodeTtl': 'TTL Auth Code:',
222
+ 'config.pkceRequired': 'PKCE Diperlukan:',
223
+ 'config.sharding': 'Sharding:',
224
+ 'config.authCodeShards': 'Auth Code:',
225
+ 'config.refreshTokenShards': 'Refresh Token:',
226
+ 'config.database': 'Database:',
227
+ 'config.coreDb': 'Core DB:',
228
+ 'config.piiDb': 'PII DB:',
229
+ 'config.enabled': 'Diaktifkan',
230
+ 'config.disabled': 'Dinonaktifkan',
231
+ 'config.standard': '(standar)',
232
+ 'config.notConfigured': 'Tidak dikonfigurasi (konfigurasikan nanti)',
233
+ 'config.yes': 'Ya',
234
+ 'config.no': 'Tidak',
235
+ 'config.shards': 'shard',
236
+ 'config.sec': 'detik',
237
+ 'config.automatic': 'Otomatis',
238
+ // Deploy
239
+ 'deploy.prompt': 'Mulai pengaturan dengan konfigurasi ini?',
240
+ 'deploy.starting': 'Menjalankan Pengaturan...',
241
+ 'deploy.building': 'Membangun paket...',
242
+ 'deploy.deploying': 'Mendeploy ke Cloudflare...',
243
+ 'deploy.success': 'Pengaturan selesai!',
244
+ 'deploy.error': 'Gagal mendeploy',
245
+ 'deploy.skipped': 'Deployment dilewati',
246
+ 'deploy.component': 'Mendeploy {{component}}...',
247
+ 'deploy.uploadingSecrets': 'Mengunggah secrets...',
248
+ 'deploy.secretsUploaded': 'Secrets diunggah',
249
+ 'deploy.runningMigrations': 'Menjalankan migrasi database...',
250
+ 'deploy.migrationsComplete': 'Migrasi selesai',
251
+ 'deploy.deployingWorker': 'Mendeploy worker {{name}}...',
252
+ 'deploy.workerDeployed': 'Worker dideploy: {{name}}',
253
+ 'deploy.deployingUI': 'Mendeploy UI...',
254
+ 'deploy.uiDeployed': 'UI dideploy',
255
+ 'deploy.creatingResources': 'Membuat sumber daya Cloudflare...',
256
+ 'deploy.resourcesFailed': 'Gagal membuat sumber daya',
257
+ 'deploy.continueWithout': 'Lanjutkan tanpa provisioning? (Anda perlu membuat sumber daya secara manual)',
258
+ 'deploy.emailSecretsSaved': 'Secret email disimpan ke {{path}}',
259
+ 'deploy.confirmStart': 'Mulai deployment?',
260
+ 'deploy.confirmDryRun': 'Jalankan deployment dalam mode dry-run?',
261
+ 'deploy.cancelled': 'Deployment dibatalkan.',
262
+ 'deploy.wranglerChanged': 'Bagaimana Anda ingin menangani perubahan ini?',
263
+ 'deploy.wranglerKeep': '📝 Simpan perubahan manual (deploy apa adanya)',
264
+ 'deploy.wranglerBackup': '💾 Backup dan timpa dengan master',
265
+ 'deploy.wranglerOverwrite': '⚠️ Timpa dengan master (kehilangan perubahan)',
266
+ // Email provider
267
+ 'email.title': 'Penyedia Email',
268
+ 'email.description': 'Konfigurasikan pengiriman email untuk magic link dan kode verifikasi.',
269
+ 'email.prompt': 'Konfigurasikan penyedia email sekarang?',
270
+ 'email.resendOption': 'Resend',
271
+ 'email.resendDesc': 'API email modern untuk developer',
272
+ 'email.sesOption': 'AWS SES',
273
+ 'email.sesDesc': 'Amazon Simple Email Service',
274
+ 'email.smtpOption': 'SMTP',
275
+ 'email.smtpDesc': 'Server SMTP umum',
276
+ 'email.skipOption': 'Tidak (konfigurasikan nanti)',
277
+ 'email.skipDesc': 'Lewati konfigurasi email',
278
+ 'email.apiKeyPrompt': 'API key Resend',
279
+ 'email.apiKeyHint': 'Dapatkan API key Anda di: https://resend.com/api-keys',
280
+ 'email.domainHint': 'Siapkan domain di: https://resend.com/domains',
281
+ 'email.apiKeyRequired': 'API key diperlukan',
282
+ 'email.apiKeyWarning': 'Peringatan: API key Resend biasanya dimulai dengan "re_"',
283
+ 'email.fromAddressPrompt': 'Alamat email pengirim',
284
+ 'email.fromAddressValidation': 'Silakan masukkan alamat email yang valid',
285
+ 'email.fromNamePrompt': 'Nama tampilan pengirim (opsional)',
286
+ 'email.domainVerificationRequired': 'Verifikasi domain diperlukan untuk mengirim dari domain Anda sendiri.',
287
+ 'email.seeDocumentation': 'Lihat: https://resend.com/docs/dashboard/domains/introduction',
288
+ 'email.provider': 'Penyedia:',
289
+ 'email.fromAddress': 'Alamat Pengirim:',
290
+ 'email.fromName': 'Nama Pengirim:',
291
+ // SMS provider
292
+ 'sms.prompt': 'Konfigurasikan penyedia SMS?',
293
+ 'sms.twilioOption': 'Twilio',
294
+ 'sms.twilioDesc': 'SMS via Twilio',
295
+ 'sms.skipOption': 'Tidak (konfigurasikan nanti)',
296
+ 'sms.skipDesc': 'Lewati konfigurasi SMS',
297
+ 'sms.accountSidPrompt': 'Twilio Account SID',
298
+ 'sms.authTokenPrompt': 'Twilio Auth Token',
299
+ 'sms.fromNumberPrompt': 'Nomor telepon pengirim',
300
+ // Social providers
301
+ 'social.prompt': 'Konfigurasikan penyedia login sosial?',
302
+ 'social.googleOption': 'Google',
303
+ 'social.googleDesc': 'Masuk dengan Google',
304
+ 'social.githubOption': 'GitHub',
305
+ 'social.githubDesc': 'Masuk dengan GitHub',
306
+ 'social.appleOption': 'Apple',
307
+ 'social.appleDesc': 'Masuk dengan Apple',
308
+ 'social.microsoftOption': 'Microsoft',
309
+ 'social.microsoftDesc': 'Masuk dengan Microsoft',
310
+ 'social.skipOption': 'Tidak (konfigurasikan nanti)',
311
+ 'social.skipDesc': 'Lewati konfigurasi login sosial',
312
+ 'social.clientIdPrompt': 'Client ID',
313
+ 'social.clientSecretPrompt': 'Client Secret',
314
+ // Cloudflare API Token
315
+ 'cf.apiTokenPrompt': 'Masukkan Token API Cloudflare',
316
+ 'cf.apiTokenValidation': 'Silakan masukkan Token API yang valid',
317
+ // OIDC Profile
318
+ 'profile.prompt': 'Pilih profil OIDC',
319
+ 'profile.basicOp': 'Basic OP (Penyedia OIDC Standar)',
320
+ 'profile.basicOpDesc': 'Fitur OIDC standar',
321
+ 'profile.fapiRw': 'FAPI Read-Write (Tingkat Finansial)',
322
+ 'profile.fapiRwDesc': 'Sesuai dengan Profil Keamanan FAPI 1.0 Read-Write',
323
+ 'profile.fapi2Security': 'FAPI 2.0 Security Profile',
324
+ 'profile.fapi2SecurityDesc': 'Sesuai dengan Profil Keamanan FAPI 2.0 (keamanan tertinggi)',
325
+ // Tenant configuration
326
+ 'tenant.title': 'Mode Tenant',
327
+ 'tenant.multiTenantPrompt': 'Aktifkan mode multi-tenant? (isolasi tenant berbasis subdomain)',
328
+ 'tenant.multiTenantTitle': 'Konfigurasi URL Multi-tenant',
329
+ 'tenant.multiTenantNote1': 'Dalam mode multi-tenant:',
330
+ 'tenant.multiTenantNote2': 'Setiap tenant memiliki subdomain: https://{tenant}.{base-domain}',
331
+ 'tenant.multiTenantNote3': 'Domain dasar mengarah ke Worker router',
332
+ 'tenant.multiTenantNote4': 'URL Issuer dibangun secara dinamis dari header Host',
333
+ 'tenant.baseDomainPrompt': 'Domain dasar (contoh: authrim.com)',
334
+ 'tenant.baseDomainRequired': 'Domain dasar diperlukan untuk mode multi-tenant',
335
+ 'tenant.baseDomainValidation': 'Silakan masukkan domain yang valid (contoh: authrim.com)',
336
+ 'tenant.issuerFormat': 'Format URL Issuer: https://{tenant}.{{domain}}',
337
+ 'tenant.issuerExample': 'Contoh: https://acme.{{domain}}',
338
+ 'tenant.defaultTenantPrompt': 'Nama tenant default (identifier)',
339
+ 'tenant.defaultTenantValidation': 'Hanya huruf kecil, angka, dan tanda hubung yang diizinkan',
340
+ 'tenant.displayNamePrompt': 'Nama tampilan tenant default',
341
+ 'tenant.singleTenantTitle': 'Konfigurasi URL Single-tenant',
342
+ 'tenant.singleTenantNote1': 'Dalam mode single-tenant:',
343
+ 'tenant.singleTenantNote2': 'URL Issuer = domain kustom API (atau fallback workers.dev)',
344
+ 'tenant.singleTenantNote3': 'Semua klien berbagi issuer yang sama',
345
+ 'tenant.organizationName': 'Nama organisasi (nama tampilan)',
346
+ 'tenant.uiDomainTitle': 'Konfigurasi Domain UI',
347
+ 'tenant.customUiDomainPrompt': 'Konfigurasikan domain UI kustom?',
348
+ 'tenant.loginUiDomain': 'Domain UI Login (contoh: login.example.com)',
349
+ 'tenant.adminUiDomain': 'Domain UI Admin (contoh: admin.example.com)',
350
+ // Optional components
351
+ 'components.title': 'Komponen Opsional',
352
+ 'components.note': 'Catatan: Login Sosial dan Policy Engine adalah komponen standar',
353
+ 'components.samlPrompt': 'Aktifkan dukungan SAML?',
354
+ 'components.vcPrompt': 'Aktifkan Verifiable Credentials?',
355
+ 'components.saml': 'SAML:',
356
+ 'components.vc': 'VC:',
357
+ 'components.socialLogin': 'Login Sosial:',
358
+ 'components.policyEngine': 'Policy Engine:',
359
+ // Feature flags
360
+ 'features.title': 'Feature Flags',
361
+ 'features.queuePrompt': 'Aktifkan Cloudflare Queues? (untuk log audit)',
362
+ 'features.r2Prompt': 'Aktifkan Cloudflare R2? (untuk avatar)',
363
+ 'features.queue': 'Queue:',
364
+ 'features.r2': 'R2:',
365
+ // OIDC settings
366
+ 'oidc.configurePrompt': 'Konfigurasikan pengaturan OIDC? (TTL token, dll.)',
367
+ 'oidc.title': 'Pengaturan OIDC',
368
+ 'oidc.accessTokenTtl': 'TTL Access Token (detik)',
369
+ 'oidc.refreshTokenTtl': 'TTL Refresh Token (detik)',
370
+ 'oidc.authCodeTtl': 'TTL Authorization Code (detik)',
371
+ 'oidc.pkceRequired': 'Wajibkan PKCE?',
372
+ 'oidc.positiveInteger': 'Silakan masukkan bilangan bulat positif',
373
+ // Sharding settings
374
+ 'sharding.configurePrompt': 'Konfigurasikan sharding? (untuk environment beban tinggi)',
375
+ 'sharding.title': 'Pengaturan Sharding',
376
+ 'sharding.note': 'Catatan: Disarankan pangkat 2 untuk jumlah shard (8, 16, 32, 64, 128)',
377
+ 'sharding.authCodeShards': 'Jumlah shard Auth Code',
378
+ 'sharding.refreshTokenShards': 'Jumlah shard Refresh Token',
379
+ // Infrastructure
380
+ 'infra.title': 'Infrastruktur (Dibuat Otomatis)',
381
+ 'infra.workersNote': 'Workers berikut akan dideploy:',
382
+ 'infra.router': 'Router:',
383
+ 'infra.auth': 'Auth:',
384
+ 'infra.token': 'Token:',
385
+ 'infra.management': 'Management:',
386
+ 'infra.otherWorkers': '... dan worker pendukung lainnya',
387
+ 'infra.defaultEndpoints': 'Endpoint default (tanpa domain kustom):',
388
+ 'infra.api': 'API:',
389
+ 'infra.ui': 'UI:',
390
+ 'infra.workersToDeploy': 'Workers untuk dideploy: {{workers}}',
391
+ 'infra.defaultApi': 'API Default: {{url}}',
392
+ // Completion
393
+ 'complete.title': 'Pengaturan Selesai!',
394
+ 'complete.summary': 'Penyedia OIDC Authrim Anda telah dideploy.',
395
+ 'complete.issuerUrl': 'URL Issuer: {{url}}',
396
+ 'complete.adminUrl': 'Panel Admin: {{url}}',
397
+ 'complete.uiUrl': 'UI Login: {{url}}',
398
+ 'complete.nextSteps': 'Langkah Selanjutnya:',
399
+ 'complete.nextStep1': '1. Verifikasi deployment dengan mengunjungi URL issuer',
400
+ 'complete.nextStep2': '2. Konfigurasikan klien OAuth di Panel Admin',
401
+ 'complete.nextStep3': '3. Siapkan domain kustom jika diperlukan',
402
+ 'complete.warning': 'Ingat untuk menjaga kunci Anda tetap aman dan dicadangkan!',
403
+ 'complete.success': 'Pengaturan berhasil diselesaikan!',
404
+ 'complete.urls': 'URL:',
405
+ 'complete.configLocation': 'Konfigurasi:',
406
+ 'complete.keysLocation': 'Kunci:',
407
+ // Resource provisioning
408
+ 'resource.provisioning': 'Menyediakan {{resource}}...',
409
+ 'resource.provisioned': '{{resource}} berhasil disediakan',
410
+ 'resource.failed': 'Gagal menyediakan {{resource}}',
411
+ 'resource.skipped': 'Dilewati {{resource}}',
412
+ // Manage environments
413
+ 'manage.title': 'Environment yang Ada',
414
+ 'manage.loading': 'Memuat...',
415
+ 'manage.detecting': 'Mendeteksi environment...',
416
+ 'manage.detected': 'Environment yang Terdeteksi:',
417
+ 'manage.noEnvs': 'Tidak ada environment Authrim yang ditemukan.',
418
+ 'manage.selectAction': 'Pilih aksi',
419
+ 'manage.viewDetails': 'Lihat Detail',
420
+ 'manage.viewDetailsDesc': 'Tampilkan informasi sumber daya terperinci',
421
+ 'manage.deleteEnv': 'Hapus Environment',
422
+ 'manage.deleteEnvDesc': 'Hapus environment dan sumber daya',
423
+ 'manage.backToMenu': 'Kembali ke Menu Utama',
424
+ 'manage.backToMenuDesc': 'Kembali ke menu utama',
425
+ 'manage.selectEnv': 'Pilih environment',
426
+ 'manage.back': 'Kembali',
427
+ 'manage.continueManaging': 'Lanjutkan mengelola environment?',
428
+ // Load config
429
+ 'loadConfig.title': 'Muat Konfigurasi yang Ada',
430
+ 'loadConfig.found': 'Ditemukan {{count}} konfigurasi:',
431
+ 'loadConfig.new': '(baru)',
432
+ 'loadConfig.legacy': '(legacy)',
433
+ 'loadConfig.legacyDetected': 'Struktur Legacy Terdeteksi',
434
+ 'loadConfig.legacyFiles': 'File legacy:',
435
+ 'loadConfig.newBenefits': 'Manfaat struktur baru:',
436
+ 'loadConfig.benefit1': 'Portabilitas environment (zip .authrim/prod/)',
437
+ 'loadConfig.benefit2': 'Pelacakan versi per environment',
438
+ 'loadConfig.benefit3': 'Struktur proyek yang lebih bersih',
439
+ 'loadConfig.migratePrompt': 'Apakah Anda ingin bermigrasi ke struktur baru?',
440
+ 'loadConfig.migrateOption': 'Migrasi ke struktur baru (.authrim/{env}/)',
441
+ 'loadConfig.continueOption': 'Lanjutkan dengan struktur legacy',
442
+ 'loadConfig.migrationComplete': 'Migrasi berhasil diselesaikan!',
443
+ 'loadConfig.validationPassed': 'Validasi berhasil',
444
+ 'loadConfig.validationIssues': 'Masalah validasi:',
445
+ 'loadConfig.newLocation': 'Lokasi konfigurasi baru:',
446
+ 'loadConfig.migrationFailed': 'Migrasi gagal:',
447
+ 'loadConfig.continuingLegacy': 'Melanjutkan dengan struktur legacy...',
448
+ 'loadConfig.loadThis': 'Muat konfigurasi ini',
449
+ 'loadConfig.specifyOther': 'Tentukan file lain',
450
+ 'loadConfig.noConfigFound': 'Tidak ada konfigurasi yang ditemukan di direktori saat ini.',
451
+ 'loadConfig.tip': 'Tips: Anda dapat menentukan file konfigurasi dengan:',
452
+ 'loadConfig.specifyPath': 'Tentukan path file',
453
+ 'loadConfig.enterPath': 'Masukkan path file konfigurasi',
454
+ 'loadConfig.pathRequired': 'Silakan masukkan path',
455
+ 'loadConfig.fileNotFound': 'File tidak ditemukan: {{path}}',
456
+ 'loadConfig.selectConfig': 'Pilih konfigurasi untuk dimuat',
457
+ // Common
458
+ 'common.yes': 'Ya',
459
+ 'common.no': 'Tidak',
460
+ 'common.continue': 'Lanjutkan',
461
+ 'common.cancel': 'Batal',
462
+ 'common.skip': 'Lewati',
463
+ 'common.back': 'Kembali',
464
+ 'common.confirm': 'Konfirmasi',
465
+ 'common.error': 'Error',
466
+ 'common.warning': 'Peringatan',
467
+ 'common.success': 'Berhasil',
468
+ 'common.info': 'Info',
469
+ 'common.loading': 'Memuat...',
470
+ 'common.saving': 'Menyimpan...',
471
+ 'common.processing': 'Memproses...',
472
+ 'common.done': 'Selesai',
473
+ 'common.required': 'Wajib',
474
+ 'common.optional': 'Opsional',
475
+ // Errors
476
+ 'error.generic': 'Terjadi kesalahan',
477
+ 'error.network': 'Kesalahan jaringan',
478
+ 'error.timeout': 'Waktu permintaan habis',
479
+ 'error.invalidInput': 'Input tidak valid',
480
+ 'error.fileNotFound': 'File tidak ditemukan',
481
+ 'error.permissionDenied': 'Izin ditolak',
482
+ 'error.configNotFound': 'Konfigurasi tidak ditemukan',
483
+ 'error.configInvalid': 'Konfigurasi tidak valid',
484
+ 'error.deployFailed': 'Deployment gagal',
485
+ 'error.resourceCreationFailed': 'Gagal membuat sumber daya',
486
+ // Validation
487
+ 'validation.required': 'Field ini wajib diisi',
488
+ 'validation.invalidFormat': 'Format tidak valid',
489
+ 'validation.tooShort': 'Terlalu pendek',
490
+ 'validation.tooLong': 'Terlalu panjang',
491
+ 'validation.invalidDomain': 'Domain tidak valid',
492
+ 'validation.invalidEmail': 'Alamat email tidak valid',
493
+ 'validation.invalidUrl': 'URL tidak valid',
494
+ // Delete command
495
+ 'delete.title': 'Hapus Environment',
496
+ 'delete.prompt': 'Pilih sumber daya untuk dihapus',
497
+ 'delete.confirm': 'Apakah Anda yakin ingin menghapus "{{env}}"?',
498
+ 'delete.confirmPermanent': '⚠️ Ini akan menghapus semua sumber daya untuk "{{env}}" secara permanen. Lanjutkan?',
499
+ 'delete.confirmWarning': 'Tindakan ini tidak dapat dibatalkan!',
500
+ 'delete.deleting': 'Menghapus {{resource}}...',
501
+ 'delete.deleted': '{{resource}} dihapus',
502
+ 'delete.error': 'Gagal menghapus {{resource}}',
503
+ 'delete.cancelled': 'Penghapusan dibatalkan',
504
+ 'delete.noEnvFound': 'Tidak ada environment yang ditemukan',
505
+ 'delete.selectEnv': 'Pilih environment untuk dihapus',
506
+ 'delete.workers': 'Workers',
507
+ 'delete.databases': 'Database D1',
508
+ 'delete.kvNamespaces': 'KV Namespace',
509
+ 'delete.queues': 'Queue',
510
+ 'delete.r2Buckets': 'Bucket R2',
511
+ // Info command
512
+ 'info.title': 'Informasi Environment',
513
+ 'info.loading': 'Memuat informasi environment...',
514
+ 'info.noResources': 'Tidak ada sumber daya yang ditemukan',
515
+ 'info.environment': 'Environment',
516
+ 'info.issuer': 'Issuer',
517
+ 'info.workers': 'Workers',
518
+ 'info.databases': 'Database',
519
+ 'info.kvNamespaces': 'KV Namespace',
520
+ 'info.queues': 'Queue',
521
+ 'info.r2Buckets': 'Bucket R2',
522
+ 'info.status': 'Status',
523
+ 'info.deployed': 'Dideploy',
524
+ 'info.notDeployed': 'Tidak dideploy',
525
+ // Config command
526
+ 'configCmd.title': 'Konfigurasi',
527
+ 'configCmd.showing': 'Menampilkan konfigurasi',
528
+ 'configCmd.validating': 'Memvalidasi konfigurasi...',
529
+ 'configCmd.valid': 'Konfigurasi valid',
530
+ 'configCmd.invalid': 'Konfigurasi tidak valid',
531
+ 'configCmd.notFound': 'Konfigurasi tidak ditemukan',
532
+ 'configCmd.error': 'Error membaca konfigurasi',
533
+ // Migrate command
534
+ 'migrate.title': 'Migrasi ke Struktur Baru',
535
+ 'migrate.checking': 'Memeriksa status migrasi...',
536
+ 'migrate.noLegacyFound': 'Tidak ada struktur legacy yang ditemukan',
537
+ 'migrate.legacyFound': 'Struktur legacy terdeteksi',
538
+ 'migrate.prompt': 'Migrasi ke struktur baru?',
539
+ 'migrate.migrating': 'Melakukan migrasi...',
540
+ 'migrate.success': 'Migrasi berhasil',
541
+ 'migrate.cancelled': 'Migrasi dibatalkan.',
542
+ 'migrate.error': 'Migrasi gagal',
543
+ 'migrate.dryRun': 'Dry run - tidak ada perubahan yang dibuat',
544
+ 'migrate.backup': 'Membuat backup...',
545
+ 'migrate.backupCreated': 'Backup dibuat di {{path}}',
546
+ // Manage command
547
+ 'manage.commandTitle': 'Manajer Environment Authrim',
548
+ // Web UI specific
549
+ 'web.title': 'Pengaturan Authrim',
550
+ 'web.subtitle': 'Penyedia OIDC di Cloudflare Workers',
551
+ 'web.loading': 'Memuat...',
552
+ 'web.error': 'Terjadi kesalahan',
553
+ 'web.retry': 'Coba lagi',
554
+ 'web.languageSelector': 'Bahasa',
555
+ 'web.darkMode': 'Gelap',
556
+ 'web.lightMode': 'Terang',
557
+ 'web.systemMode': 'Sistem',
558
+ // Web UI Prerequisites
559
+ 'web.prereq.title': 'Prasyarat',
560
+ 'web.prereq.checking': 'Memeriksa...',
561
+ 'web.prereq.checkingRequirements': 'Memeriksa persyaratan sistem...',
562
+ 'web.prereq.ready': 'Siap',
563
+ 'web.prereq.wranglerInstalled': 'Wrangler terinstal',
564
+ 'web.prereq.loggedInAs': 'Masuk sebagai {{email}}',
565
+ // Web UI Top Menu
566
+ 'web.menu.title': 'Mulai',
567
+ 'web.menu.subtitle': 'Pilih opsi untuk melanjutkan:',
568
+ 'web.menu.newSetup': 'Pengaturan Baru',
569
+ 'web.menu.newSetupDesc': 'Buat deployment Authrim baru dari awal',
570
+ 'web.menu.loadConfig': 'Muat Konfigurasi',
571
+ 'web.menu.loadConfigDesc': 'Lanjutkan atau deploy ulang menggunakan konfigurasi yang ada',
572
+ 'web.menu.manageEnv': 'Kelola Environment',
573
+ 'web.menu.manageEnvDesc': 'Lihat, periksa, atau hapus environment yang ada',
574
+ // Web UI Setup Mode
575
+ 'web.mode.title': 'Mode Pengaturan',
576
+ 'web.mode.subtitle': 'Pilih cara Anda ingin mengatur Authrim:',
577
+ 'web.mode.quick': 'Pengaturan Cepat',
578
+ 'web.mode.quickDesc': 'Mulai dalam ~5 menit',
579
+ 'web.mode.quickEnv': 'Pemilihan environment',
580
+ 'web.mode.quickDomain': 'Domain kustom opsional',
581
+ 'web.mode.quickDefault': 'Komponen default',
582
+ 'web.mode.recommended': 'Disarankan',
583
+ 'web.mode.custom': 'Pengaturan Kustom',
584
+ 'web.mode.customDesc': 'Kontrol penuh atas konfigurasi',
585
+ 'web.mode.customComp': 'Pemilihan komponen',
586
+ 'web.mode.customUrl': 'Konfigurasi URL',
587
+ 'web.mode.customAdvanced': 'Pengaturan lanjutan',
588
+ // Web UI Load Config
589
+ 'web.loadConfig.title': 'Muat Konfigurasi',
590
+ 'web.loadConfig.subtitle': 'Pilih file authrim-config.json Anda:',
591
+ 'web.loadConfig.chooseFile': 'Pilih File',
592
+ 'web.loadConfig.preview': 'Pratinjau Konfigurasi',
593
+ 'web.loadConfig.validationFailed': 'Validasi Konfigurasi Gagal',
594
+ 'web.loadConfig.valid': 'Konfigurasi valid',
595
+ 'web.loadConfig.loadContinue': 'Muat & Lanjutkan',
596
+ // Web UI Configuration
597
+ 'web.config.title': 'Konfigurasi',
598
+ 'web.config.components': 'Komponen',
599
+ 'web.config.apiRequired': 'API (wajib)',
600
+ 'web.config.apiDesc': 'Endpoint Penyedia OIDC: authorize, token, userinfo, discovery, management API.',
601
+ 'web.config.saml': 'SAML IdP',
602
+ 'web.config.deviceFlow': 'Device Flow / CIBA',
603
+ 'web.config.vcSdJwt': 'VC SD-JWT',
604
+ 'web.config.loginUi': 'UI Login',
605
+ 'web.config.loginUiDesc': 'UI autentikasi siap pakai yang dideploy ke Cloudflare Pages.',
606
+ 'web.config.adminUi': 'UI Admin',
607
+ 'web.config.adminUiDesc': 'Dashboard manajemen untuk pengguna, klien, dan pengaturan.',
608
+ // Web UI URLs
609
+ 'web.url.title': 'Konfigurasi URL',
610
+ 'web.url.apiDomain': 'Domain API',
611
+ 'web.url.apiDomainHint': 'Kosongkan untuk menggunakan subdomain workers.dev',
612
+ 'web.url.loginDomain': 'Domain UI Login',
613
+ 'web.url.loginDomainHint': 'Kosongkan untuk menggunakan subdomain pages.dev',
614
+ 'web.url.adminDomain': 'Domain UI Admin',
615
+ 'web.url.adminDomainHint': 'Kosongkan untuk menggunakan subdomain pages.dev',
616
+ // Web UI Database
617
+ 'web.db.title': 'Konfigurasi Database',
618
+ 'web.db.coreTitle': 'Database Core',
619
+ 'web.db.coreSubtitle': '(Non-PII)',
620
+ 'web.db.coreDesc': 'Menyimpan klien, kode otorisasi, token, sesi. Dapat direplikasi secara global.',
621
+ 'web.db.piiTitle': 'Database PII',
622
+ 'web.db.piiSubtitle': '(Informasi Identitas Pribadi)',
623
+ 'web.db.piiDesc': 'Menyimpan profil pengguna, kredensial, PII. Harus berada dalam satu yurisdiksi untuk kepatuhan.',
624
+ 'web.db.name': 'Nama',
625
+ 'web.db.region': 'Wilayah',
626
+ 'web.db.regionAuto': 'Otomatis (terdekat)',
627
+ // Web UI Email
628
+ 'web.email.title': 'Penyedia Email',
629
+ 'web.email.subtitle': 'Pilih layanan email untuk reset password dan email verifikasi:',
630
+ 'web.email.none': 'Tidak ada',
631
+ 'web.email.noneDesc': 'Fitur email dinonaktifkan',
632
+ 'web.email.resend': 'Resend',
633
+ 'web.email.resendDesc': 'API email ramah developer',
634
+ 'web.email.sendgrid': 'SendGrid',
635
+ 'web.email.sendgridDesc': 'Pengiriman email yang skalabel',
636
+ 'web.email.ses': 'Amazon SES',
637
+ 'web.email.sesDesc': 'AWS Simple Email Service',
638
+ 'web.email.resendConfig': 'Konfigurasi Resend',
639
+ 'web.email.apiKey': 'API Key',
640
+ 'web.email.apiKeyPlaceholder': 're_xxxxxxxx',
641
+ 'web.email.fromAddress': 'Alamat Pengirim',
642
+ 'web.email.fromAddressPlaceholder': 'noreply@yourdomain.com',
643
+ // Web UI Provision
644
+ 'web.provision.title': 'Buat Sumber Daya Cloudflare',
645
+ 'web.provision.ready': 'Siap untuk provisioning',
646
+ 'web.provision.desc': 'Sumber daya berikut akan dibuat di akun Cloudflare Anda:',
647
+ 'web.provision.createResources': 'Buat Sumber Daya',
648
+ 'web.provision.saveConfig': 'Simpan Konfigurasi',
649
+ 'web.provision.continueDeploy': 'Lanjutkan ke Deploy →',
650
+ // Web UI Deploy
651
+ 'web.deploy.title': 'Deploy',
652
+ 'web.deploy.desc': 'Deploy workers dan UI ke Cloudflare:',
653
+ 'web.deploy.startDeploy': 'Mulai Deploy',
654
+ 'web.deploy.deploying': 'Mendeploy...',
655
+ // Web UI Complete
656
+ 'web.complete.title': 'Pengaturan Selesai!',
657
+ 'web.complete.desc': 'Deployment Authrim Anda siap.',
658
+ 'web.complete.issuerUrl': 'URL Issuer',
659
+ 'web.complete.loginUrl': 'URL Login',
660
+ 'web.complete.adminUrl': 'URL Admin',
661
+ 'web.complete.nextSteps': 'Langkah Selanjutnya:',
662
+ 'web.complete.step1': 'Selesaikan pengaturan admin awal menggunakan tombol di atas',
663
+ 'web.complete.step2': 'Konfigurasikan klien OAuth pertama Anda di UI Admin',
664
+ 'web.complete.step3': 'Integrasikan dengan aplikasi Anda',
665
+ 'web.complete.saveConfig': 'Simpan Konfigurasi',
666
+ 'web.complete.backToMain': 'Kembali ke Utama',
667
+ 'web.complete.canClose': 'Pengaturan selesai. Anda dapat menutup jendela ini dengan aman.',
668
+ // Web UI Environment Management
669
+ 'web.env.title': 'Environment',
670
+ 'web.env.loading': 'Memuat environment...',
671
+ 'web.env.noEnvFound': 'Tidak ada environment yang ditemukan',
672
+ 'web.env.refresh': 'Segarkan',
673
+ 'web.env.adminSetup': 'Pengaturan Admin Awal',
674
+ 'web.env.adminSetupDesc': 'Klik untuk membuat akun admin untuk',
675
+ 'web.env.openSetup': 'Buka Pengaturan',
676
+ 'web.env.copyUrl': 'Salin',
677
+ 'web.env.deleteTitle': 'Hapus Environment',
678
+ 'web.env.deleteWarning': 'Tindakan ini tidak dapat dibatalkan. Sumber daya berikut akan dihapus secara permanen:',
679
+ 'web.env.confirmDelete': 'Hapus yang Dipilih',
680
+ 'web.env.cancel': 'Batal',
681
+ // Web UI Common buttons
682
+ 'web.btn.back': 'Kembali',
683
+ 'web.btn.continue': 'Lanjutkan',
684
+ 'web.btn.cancel': 'Batal',
685
+ 'web.btn.save': 'Simpan',
686
+ 'web.btn.skip': 'Lewati',
687
+ // Web UI Save Modal
688
+ 'web.modal.saveTitle': 'Simpan Konfigurasi?',
689
+ 'web.modal.saveDesc': 'Simpan konfigurasi ke mesin lokal Anda untuk penggunaan di masa depan.',
690
+ 'web.modal.skipSave': 'Lewati',
691
+ 'web.modal.saveConfig': 'Simpan Konfigurasi',
692
+ // Web UI steps
693
+ 'web.step.environment': 'Environment',
694
+ 'web.step.region': 'Wilayah',
695
+ 'web.step.domain': 'Domain',
696
+ 'web.step.email': 'Email',
697
+ 'web.step.sms': 'SMS',
698
+ 'web.step.social': 'Sosial',
699
+ 'web.step.advanced': 'Lanjutan',
700
+ 'web.step.review': 'Tinjau',
701
+ 'web.step.deploy': 'Deploy',
702
+ // Web UI forms
703
+ 'web.form.submit': 'Kirim',
704
+ 'web.form.next': 'Selanjutnya',
705
+ 'web.form.previous': 'Sebelumnya',
706
+ 'web.form.reset': 'Reset',
707
+ 'web.form.validation': 'Silakan perbaiki kesalahan di atas',
708
+ // Web UI progress
709
+ 'web.progress.preparing': 'Menyiapkan deployment...',
710
+ 'web.progress.creatingResources': 'Membuat sumber daya Cloudflare...',
711
+ 'web.progress.generatingKeys': 'Menghasilkan kunci kriptografi...',
712
+ 'web.progress.configuringWorkers': 'Mengkonfigurasi workers...',
713
+ 'web.progress.deployingWorkers': 'Mendeploy workers...',
714
+ 'web.progress.deployingUI': 'Mendeploy UI...',
715
+ 'web.progress.runningMigrations': 'Menjalankan migrasi database...',
716
+ 'web.progress.complete': 'Deployment selesai!',
717
+ 'web.progress.failed': 'Deployment gagal',
718
+ // Web UI Form Labels
719
+ 'web.form.envName': 'Nama Environment',
720
+ 'web.form.envNamePlaceholder': 'contoh: prod, staging, dev',
721
+ 'web.form.envNameHint': 'Hanya huruf kecil, angka, dan tanda hubung',
722
+ 'web.form.baseDomain': 'Domain Dasar (Domain API)',
723
+ 'web.form.baseDomainPlaceholder': 'oidc.example.com',
724
+ 'web.form.baseDomainHint': 'Domain kustom untuk Authrim. Kosongkan untuk menggunakan workers.dev',
725
+ 'web.form.nakedDomain': 'Kecualikan nama tenant dari URL',
726
+ 'web.form.nakedDomainHint': 'Gunakan https://example.com alih-alih https://{tenant}.example.com',
727
+ 'web.form.nakedDomainWarning': 'Subdomain tenant memerlukan domain kustom. Workers.dev tidak mendukung subdomain wildcard.',
728
+ 'web.form.tenantId': 'ID Tenant Default',
729
+ 'web.form.tenantIdPlaceholder': 'default',
730
+ 'web.form.tenantIdHint': 'Identifier tenant pertama (huruf kecil, tanpa spasi)',
731
+ 'web.form.tenantIdWorkerNote': '(ID Tenant digunakan secara internal. Subdomain URL memerlukan domain kustom.)',
732
+ 'web.form.tenantDisplay': 'Nama Tampilan Tenant',
733
+ 'web.form.tenantDisplayPlaceholder': 'Perusahaan Saya',
734
+ 'web.form.tenantDisplayHint': 'Nama yang ditampilkan di halaman login dan layar persetujuan',
735
+ 'web.form.loginDomainPlaceholder': 'login.example.com',
736
+ 'web.form.adminDomainPlaceholder': 'admin.example.com',
737
+ // Web UI Section Headers
738
+ 'web.section.apiDomain': 'Domain API / Issuer',
739
+ 'web.section.uiDomains': 'Domain UI (Opsional)',
740
+ 'web.section.uiDomainsHint': 'Domain kustom untuk UI Login/Admin. Masing-masing dapat diatur secara independen. Kosongkan untuk menggunakan default Cloudflare Pages.',
741
+ 'web.section.corsHint': 'CORS: Permintaan cross-origin dari UI Login/Admin ke API diizinkan secara otomatis.',
742
+ 'web.section.configPreview': 'Pratinjau Konfigurasi',
743
+ 'web.section.resourceNames': 'Nama Sumber Daya',
744
+ // Web UI Preview Labels
745
+ 'web.preview.components': 'Komponen:',
746
+ 'web.preview.workers': 'Workers:',
747
+ 'web.preview.issuerUrl': 'URL Issuer:',
748
+ 'web.preview.loginUi': 'UI Login:',
749
+ 'web.preview.adminUi': 'UI Admin:',
750
+ // Web UI Component Labels
751
+ 'web.comp.loginUi': 'UI Login',
752
+ 'web.comp.loginUiDesc': 'Halaman login, registrasi, persetujuan, dan manajemen akun untuk pengguna.',
753
+ 'web.comp.adminUi': 'UI Admin',
754
+ 'web.comp.adminUiDesc': 'Dashboard admin untuk mengelola tenant, klien, pengguna, dan pengaturan sistem.',
755
+ // Web UI Domain Row Labels
756
+ 'web.domain.loginUi': 'UI Login',
757
+ 'web.domain.adminUi': 'UI Admin',
758
+ // Web UI Database Section
759
+ 'web.db.introDesc': 'Authrim menggunakan dua database D1 terpisah untuk mengisolasi data pribadi dari data aplikasi.',
760
+ 'web.db.regionNote': 'Catatan: Wilayah database tidak dapat diubah setelah dibuat.',
761
+ 'web.db.coreNonPii': 'Non-PII',
762
+ 'web.db.coreDataDesc': 'Menyimpan data aplikasi non-pribadi termasuk:',
763
+ 'web.db.coreData1': 'Klien OAuth dan konfigurasinya',
764
+ 'web.db.coreData2': 'Kode otorisasi dan token akses',
765
+ 'web.db.coreData3': 'Sesi pengguna dan status login',
766
+ 'web.db.coreData4': 'Pengaturan dan konfigurasi tenant',
767
+ 'web.db.coreData5': 'Log audit dan event keamanan',
768
+ 'web.db.coreHint': 'Database ini menangani semua alur autentikasi dan harus ditempatkan dekat dengan basis pengguna utama Anda.',
769
+ 'web.db.piiLabel': 'Informasi Identitas Pribadi',
770
+ 'web.db.piiDataDesc': 'Menyimpan data pengguna pribadi termasuk:',
771
+ 'web.db.piiData1': 'Profil pengguna (nama, email, telepon)',
772
+ 'web.db.piiData2': 'Kredensial Passkey/WebAuthn',
773
+ 'web.db.piiData3': 'Preferensi dan pengaturan pengguna',
774
+ 'web.db.piiData4': 'Atribut pengguna kustom apa pun',
775
+ 'web.db.piiHint': 'Database ini berisi data pribadi. Pertimbangkan untuk menempatkannya di wilayah yang sesuai dengan persyaratan perlindungan data Anda.',
776
+ 'web.db.locationHints': 'Petunjuk Lokasi',
777
+ 'web.db.jurisdiction': 'Yurisdiksi (Kepatuhan)',
778
+ 'web.db.autoNearest': 'Otomatis (terdekat dengan Anda)',
779
+ 'web.db.northAmericaWest': 'Amerika Utara (Barat)',
780
+ 'web.db.northAmericaEast': 'Amerika Utara (Timur)',
781
+ 'web.db.europeWest': 'Eropa (Barat)',
782
+ 'web.db.europeEast': 'Eropa (Timur)',
783
+ 'web.db.asiaPacific': 'Asia Pasifik',
784
+ 'web.db.oceania': 'Oseania',
785
+ 'web.db.euJurisdiction': 'Yurisdiksi EU (kepatuhan GDPR)',
786
+ // Web UI Email Section
787
+ 'web.email.introDesc': 'Digunakan untuk mengirim OTP email dan verifikasi alamat email. Anda dapat mengkonfigurasi ini nanti jika Anda mau.',
788
+ 'web.email.configureLater': 'Konfigurasikan nanti',
789
+ 'web.email.configureLaterHint': 'Lewati untuk sekarang dan konfigurasikan nanti.',
790
+ 'web.email.configureResend': 'Konfigurasikan Resend',
791
+ 'web.email.configureResendHint': 'Siapkan pengiriman email dengan Resend (disarankan untuk produksi).',
792
+ 'web.email.resendSetup': 'Konfigurasi Resend',
793
+ 'web.email.beforeBegin': 'Sebelum Anda mulai:',
794
+ 'web.email.step1': 'Buat akun Resend di',
795
+ 'web.email.step2': 'Tambahkan dan verifikasi domain Anda di',
796
+ 'web.email.step3': 'Buat API key di',
797
+ 'web.email.resendApiKey': 'API Key Resend',
798
+ 'web.email.resendApiKeyHint': 'API key Anda dimulai dengan "re_"',
799
+ 'web.email.fromEmailAddress': 'Alamat Email Pengirim',
800
+ 'web.email.fromEmailHint': 'Harus dari domain yang terverifikasi di akun Resend Anda',
801
+ 'web.email.fromDisplayName': 'Nama Tampilan Pengirim (opsional)',
802
+ 'web.email.fromDisplayHint': 'Ditampilkan sebagai nama pengirim di klien email',
803
+ 'web.email.domainVerificationTitle': 'Verifikasi Domain Diperlukan',
804
+ 'web.email.domainVerificationDesc': 'Sebelum domain Anda diverifikasi, email hanya dapat dikirim dari onboarding@resend.dev (untuk pengujian).',
805
+ 'web.email.learnMore': 'Pelajari lebih lanjut tentang verifikasi domain →',
806
+ // Web UI Provision Section
807
+ 'web.provision.resourcePreview': 'Nama Sumber Daya:',
808
+ 'web.provision.d1Databases': 'Database D1:',
809
+ 'web.provision.kvNamespaces': 'KV Namespace:',
810
+ 'web.provision.cryptoKeys': 'Kunci Kriptografi:',
811
+ 'web.provision.initializing': 'Menginisialisasi...',
812
+ 'web.provision.showLog': 'Tampilkan log detail',
813
+ 'web.provision.hideLog': 'Sembunyikan log detail',
814
+ 'web.provision.keysSavedTo': 'Kunci disimpan ke:',
815
+ 'web.provision.keepSafe': 'Jaga direktori ini tetap aman dan tambahkan ke .gitignore',
816
+ // Web UI Deploy Section
817
+ 'web.deploy.readyText': 'Siap untuk mendeploy workers Authrim ke Cloudflare.',
818
+ // Web UI Environment List
819
+ 'web.env.detectedDesc': 'Environment Authrim yang terdeteksi di akun Cloudflare Anda:',
820
+ 'web.env.noEnvsDetected': 'Tidak ada environment Authrim yang terdeteksi di akun Cloudflare ini.',
821
+ 'web.env.backToList': '← Kembali ke Daftar',
822
+ 'web.env.deleteEnv': 'Hapus Environment...',
823
+ // Web UI Environment Detail
824
+ 'web.envDetail.title': 'Detail Environment',
825
+ 'web.envDetail.adminNotConfigured': 'Akun Admin Belum Dikonfigurasi',
826
+ 'web.envDetail.adminNotConfiguredDesc': 'Administrator awal belum disiapkan untuk environment ini.',
827
+ 'web.envDetail.startPasskey': 'Mulai Pengaturan Akun Admin dengan Passkey',
828
+ 'web.envDetail.setupUrlGenerated': 'URL Pengaturan Dibuat:',
829
+ 'web.envDetail.copyBtn': 'Salin',
830
+ 'web.envDetail.openSetup': 'Buka Pengaturan',
831
+ 'web.envDetail.urlValidFor': 'URL ini berlaku selama 1 jam. Buka di browser untuk mendaftarkan akun admin pertama.',
832
+ 'web.envDetail.workers': 'Workers',
833
+ 'web.envDetail.d1Databases': 'Database D1',
834
+ 'web.envDetail.kvNamespaces': 'KV Namespace',
835
+ 'web.envDetail.queues': 'Queue',
836
+ 'web.envDetail.r2Buckets': 'Bucket R2',
837
+ 'web.envDetail.pagesProjects': 'Proyek Pages',
838
+ // Web UI Delete Section
839
+ 'web.delete.title': 'Hapus Environment',
840
+ 'web.delete.warning': 'Tindakan ini tidak dapat dibatalkan. Semua sumber daya yang dipilih akan dihapus secara permanen.',
841
+ 'web.delete.environment': 'Environment:',
842
+ 'web.delete.selectResources': 'Pilih sumber daya untuk dihapus:',
843
+ 'web.delete.workers': 'Workers',
844
+ 'web.delete.d1Databases': 'Database D1',
845
+ 'web.delete.kvNamespaces': 'KV Namespace',
846
+ 'web.delete.queues': 'Queue',
847
+ 'web.delete.r2Buckets': 'Bucket R2',
848
+ 'web.delete.pagesProjects': 'Proyek Pages',
849
+ 'web.delete.cancelBtn': 'Batal',
850
+ 'web.delete.confirmBtn': 'Hapus yang Dipilih',
851
+ // Web UI Save Modal
852
+ 'web.modal.saveQuestion': 'Apakah Anda ingin menyimpan konfigurasi Anda ke file sebelum melanjutkan?',
853
+ 'web.modal.saveReason': 'Ini memungkinkan Anda untuk melanjutkan pengaturan nanti atau menggunakan pengaturan yang sama untuk deployment lain.',
854
+ 'web.modal.skipBtn': 'Lewati',
855
+ 'web.modal.saveBtn': 'Simpan Konfigurasi',
856
+ // Web UI Error Messages
857
+ 'web.error.wranglerNotInstalled': 'Wrangler tidak terinstal',
858
+ 'web.error.pleaseInstall': 'Silakan instal wrangler terlebih dahulu:',
859
+ 'web.error.notLoggedIn': 'Belum masuk ke Cloudflare',
860
+ 'web.error.runCommand': 'Silakan jalankan perintah ini di terminal Anda:',
861
+ 'web.error.thenRefresh': 'Kemudian segarkan halaman ini.',
862
+ 'web.error.checkingPrereq': 'Error memeriksa prasyarat:',
863
+ 'web.error.invalidJson': 'JSON tidak valid:',
864
+ 'web.error.validationFailed': 'Permintaan validasi gagal:',
865
+ // Web UI Status Messages
866
+ 'web.status.checking': 'Memeriksa...',
867
+ 'web.status.running': 'Berjalan...',
868
+ 'web.status.deploying': 'Mendeploy...',
869
+ 'web.status.complete': 'Selesai',
870
+ 'web.status.error': 'Error',
871
+ 'web.status.scanning': 'Memindai...',
872
+ 'web.status.saving': 'Menyimpan...',
873
+ 'web.status.notDeployed': '(Tidak dideploy)',
874
+ 'web.status.startingDeploy': 'Memulai deployment...',
875
+ 'web.status.none': 'Tidak ada',
876
+ 'web.status.loading': 'Memuat...',
877
+ 'web.status.failedToLoad': 'Gagal memuat',
878
+ 'web.status.adminNotConfigured': 'Admin Belum Dikonfigurasi',
879
+ 'web.status.initializing': 'Menginisialisasi...',
880
+ 'web.status.found': '{{count}} ditemukan',
881
+ // Web UI Button Labels (dynamic)
882
+ 'web.btn.reprovision': 'Re-provision (Hapus & Buat)',
883
+ 'web.btn.createResources': 'Buat Sumber Daya',
884
+ 'web.btn.saveConfiguration': 'Simpan Konfigurasi',
885
+ // Quick setup specific
886
+ 'quickSetup.title': 'Pengaturan Cepat',
887
+ // Custom setup specific
888
+ 'customSetup.title': 'Pengaturan Kustom',
889
+ 'customSetup.cancelled': 'Pengaturan dibatalkan.',
890
+ // Web UI starting
891
+ 'webUi.starting': 'Memulai UI Web...',
892
+ };
893
+ export default id;
894
+ //# sourceMappingURL=id.js.map