@intlayer/docs 8.4.5 → 8.4.6
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.
- package/dist/cjs/generated/docs.entry.cjs +20 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +20 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/configuration.md +520 -722
- package/docs/ar/intlayer_with_storybook.md +521 -0
- package/docs/bn/configuration.md +922 -0
- package/docs/bn/intlayer_with_hono.md +428 -0
- package/docs/de/configuration.md +369 -743
- package/docs/de/intlayer_with_storybook.md +521 -0
- package/docs/en/configuration.md +181 -507
- package/docs/en/intlayer_with_storybook.md +521 -0
- package/docs/en-GB/configuration.md +456 -657
- package/docs/en-GB/intlayer_with_storybook.md +521 -0
- package/docs/es/configuration.md +379 -754
- package/docs/es/intlayer_with_storybook.md +521 -0
- package/docs/fr/configuration.md +376 -757
- package/docs/fr/intlayer_with_storybook.md +521 -0
- package/docs/hi/configuration.md +532 -728
- package/docs/hi/intlayer_with_storybook.md +521 -0
- package/docs/id/configuration.md +371 -684
- package/docs/id/intlayer_with_storybook.md +521 -0
- package/docs/it/configuration.md +397 -775
- package/docs/it/intlayer_with_storybook.md +521 -0
- package/docs/ja/configuration.md +525 -724
- package/docs/ja/intlayer_with_storybook.md +521 -0
- package/docs/ko/configuration.md +525 -724
- package/docs/ko/intlayer_with_storybook.md +521 -0
- package/docs/pl/configuration.md +430 -734
- package/docs/pl/intlayer_with_storybook.md +521 -0
- package/docs/pt/configuration.md +375 -746
- package/docs/pt/intlayer_with_storybook.md +521 -0
- package/docs/ru/configuration.md +532 -701
- package/docs/ru/intlayer_with_storybook.md +521 -0
- package/docs/tr/configuration.md +527 -719
- package/docs/tr/intlayer_with_storybook.md +521 -0
- package/docs/uk/configuration.md +425 -744
- package/docs/uk/intlayer_with_storybook.md +521 -0
- package/docs/ur/configuration.md +922 -0
- package/docs/ur/intlayer_with_hono.md +428 -0
- package/docs/vi/configuration.md +412 -753
- package/docs/vi/intlayer_with_storybook.md +521 -0
- package/docs/zh/configuration.md +521 -714
- package/docs/zh/intlayer_with_storybook.md +521 -0
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +20 -0
package/docs/id/configuration.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
|
-
updatedAt: 2026-03-
|
|
4
|
-
title: Konfigurasi
|
|
3
|
+
updatedAt: 2026-03-20
|
|
4
|
+
title: Konfigurasi (Configuration)
|
|
5
5
|
description: Pelajari cara mengonfigurasi Intlayer untuk aplikasi Anda. Pahami berbagai pengaturan dan opsi yang tersedia untuk menyesuaikan Intlayer sesuai kebutuhan Anda.
|
|
6
6
|
keywords:
|
|
7
7
|
- Konfigurasi
|
|
@@ -14,30 +14,42 @@ slugs:
|
|
|
14
14
|
- concept
|
|
15
15
|
- configuration
|
|
16
16
|
history:
|
|
17
|
+
- version: 8.4.0
|
|
18
|
+
date: 2026-03-20
|
|
19
|
+
changes: Menambahkan notasi objek per-locale untuk 'compiler.output' dan 'dictionary.fill'
|
|
17
20
|
- version: 8.3.0
|
|
18
21
|
date: 2026-03-11
|
|
19
|
-
changes:
|
|
22
|
+
changes: Memindahkan 'baseDir' dari konfigurasi 'content' ke konfigurasi 'system'
|
|
20
23
|
- version: 8.2.0
|
|
21
24
|
date: 2026-03-09
|
|
22
|
-
changes:
|
|
25
|
+
changes: Memperbarui opsi kompiler (compiler), menambahkan dukungan untuk 'output' dan 'noMetadata'
|
|
23
26
|
- version: 8.1.7
|
|
24
27
|
date: 2026-02-25
|
|
25
|
-
changes:
|
|
28
|
+
changes: Memperbarui opsi kompiler
|
|
29
|
+
- version: 8.1.5
|
|
30
|
+
date: 2026-02-23
|
|
31
|
+
changes: Menambahkan opsi kompiler 'build-only' dan awalan kamus
|
|
26
32
|
- version: 8.0.6
|
|
27
33
|
date: 2026-02-12
|
|
28
|
-
changes:
|
|
34
|
+
changes: Menambahkan dukungan untuk penyedia Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face, dan Together.ai
|
|
29
35
|
- version: 8.0.5
|
|
30
36
|
date: 2026-02-06
|
|
31
|
-
changes:
|
|
37
|
+
changes: Menambahkan `dataSerialization` ke konfigurasi AI
|
|
38
|
+
- version: 8.0.0
|
|
39
|
+
date: 2026-01-24
|
|
40
|
+
changes: Mengubah nama mode impor `live` menjadi `fetch` untuk mendeskripsikan mekanisme dasarnya dengan lebih baik.
|
|
41
|
+
- version: 8.0.0
|
|
42
|
+
date: 2026-01-22
|
|
43
|
+
changes: Memindahkan konfigurasi build `importMode` ke konfigurasi `dictionary`.
|
|
32
44
|
- version: 8.0.0
|
|
33
45
|
date: 2026-01-22
|
|
34
|
-
changes:
|
|
46
|
+
changes: Menambahkan opsi `rewrite` ke konfigurasi routing
|
|
35
47
|
- version: 8.0.0
|
|
36
48
|
date: 2026-01-18
|
|
37
|
-
changes:
|
|
49
|
+
changes: Memisahkan konfigurasi sistem dari konfigurasi konten. Memindahkan jalur internal ke properti `system`. Menambahkan `codeDir` untuk memisahkan file konten dan transformasi kode.
|
|
38
50
|
- version: 8.0.0
|
|
39
51
|
date: 2026-01-18
|
|
40
|
-
changes:
|
|
52
|
+
changes: Menambahkan opsi kamus `location` dan `schema`
|
|
41
53
|
- version: 7.5.1
|
|
42
54
|
date: 2026-01-10
|
|
43
55
|
changes: Menambahkan dukungan untuk format file JSON5 dan JSONC
|
|
@@ -49,7 +61,7 @@ history:
|
|
|
49
61
|
changes: Menambahkan konfigurasi `dictionary`
|
|
50
62
|
- version: 7.0.0
|
|
51
63
|
date: 2025-10-21
|
|
52
|
-
changes: Mengganti
|
|
64
|
+
changes: Mengganti `middleware` dengan konfigurasi `routing`
|
|
53
65
|
- version: 7.0.0
|
|
54
66
|
date: 2025-10-12
|
|
55
67
|
changes: Menambahkan opsi `formatCommand`
|
|
@@ -64,7 +76,7 @@ history:
|
|
|
64
76
|
changes: Menghapus field `dictionaryOutput` dan field `i18nextResourcesDir`
|
|
65
77
|
- version: 6.0.0
|
|
66
78
|
date: 2025-09-16
|
|
67
|
-
changes: Menambahkan mode
|
|
79
|
+
changes: Menambahkan mode impor `live`
|
|
68
80
|
- version: 6.0.0
|
|
69
81
|
date: 2025-09-04
|
|
70
82
|
changes: Mengganti field `hotReload` dengan `liveSync` dan menambahkan field `liveSyncPort` serta `liveSyncURL`
|
|
@@ -81,9 +93,9 @@ history:
|
|
|
81
93
|
|
|
82
94
|
# Dokumentasi Konfigurasi Intlayer
|
|
83
95
|
|
|
84
|
-
##
|
|
96
|
+
## Ringkasan
|
|
85
97
|
|
|
86
|
-
File konfigurasi Intlayer memungkinkan
|
|
98
|
+
File konfigurasi Intlayer memungkinkan Anda untuk menyesuaikan berbagai aspek plugin, seperti internasionalisasi (internationalization), middleware, dan penanganan konten. Dokumentasi ini memberikan deskripsi mendalam tentang setiap properti dalam konfigurasi.
|
|
87
99
|
|
|
88
100
|
---
|
|
89
101
|
|
|
@@ -93,7 +105,7 @@ File konfigurasi Intlayer memungkinkan kustomisasi berbagai aspek plugin, sepert
|
|
|
93
105
|
|
|
94
106
|
---
|
|
95
107
|
|
|
96
|
-
##
|
|
108
|
+
## Format File Konfigurasi yang Didukung
|
|
97
109
|
|
|
98
110
|
Intlayer menerima format file konfigurasi JSON, JS, MJS, dan TS:
|
|
99
111
|
|
|
@@ -108,7 +120,7 @@ Intlayer menerima format file konfigurasi JSON, JS, MJS, dan TS:
|
|
|
108
120
|
|
|
109
121
|
---
|
|
110
122
|
|
|
111
|
-
## Contoh
|
|
123
|
+
## Contoh File Konfigurasi
|
|
112
124
|
|
|
113
125
|
````typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
114
126
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -116,108 +128,108 @@ import { nextjsRewrite } from "intlayer/routing";
|
|
|
116
128
|
import { z } from "zod";
|
|
117
129
|
|
|
118
130
|
/**
|
|
119
|
-
*
|
|
131
|
+
* Contoh file konfigurasi Intlayer yang menampilkan semua opsi yang tersedia.
|
|
120
132
|
*/
|
|
121
133
|
const config: IntlayerConfig = {
|
|
122
134
|
/**
|
|
123
|
-
*
|
|
135
|
+
* Konfigurasi pengaturan internasionalisasi.
|
|
124
136
|
*/
|
|
125
137
|
internationalization: {
|
|
126
138
|
/**
|
|
127
|
-
*
|
|
139
|
+
* Daftar locale yang didukung dalam aplikasi.
|
|
128
140
|
* Default: [Locales.ENGLISH]
|
|
129
141
|
*/
|
|
130
142
|
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
131
143
|
|
|
132
144
|
/**
|
|
133
|
-
*
|
|
134
|
-
*
|
|
145
|
+
* Daftar locale wajib yang harus didefinisikan dalam setiap kamus.
|
|
146
|
+
* Jika kosong, semua locale bersifat wajib dalam mode `strict`.
|
|
135
147
|
* Default: []
|
|
136
148
|
*/
|
|
137
149
|
requiredLocales: [Locales.ENGLISH],
|
|
138
150
|
|
|
139
151
|
/**
|
|
140
|
-
*
|
|
141
|
-
* - "strict":
|
|
142
|
-
* - "inclusive":
|
|
143
|
-
* - "loose":
|
|
152
|
+
* Tingkat keketatan untuk konten yang diinternasionalisasi.
|
|
153
|
+
* - "strict": Error jika locale yang dideklarasikan hilang atau tidak dideklarasikan.
|
|
154
|
+
* - "inclusive": Peringatan jika locale yang dideklarasikan hilang.
|
|
155
|
+
* - "loose": Menerima locale apa pun yang ada.
|
|
144
156
|
* Default: "inclusive"
|
|
145
157
|
*/
|
|
146
158
|
strictMode: "inclusive",
|
|
147
159
|
|
|
148
160
|
/**
|
|
149
|
-
*
|
|
161
|
+
* Locale default yang digunakan sebagai fallback jika locale yang diminta tidak ditemukan.
|
|
150
162
|
* Default: Locales.ENGLISH
|
|
151
163
|
*/
|
|
152
164
|
defaultLocale: Locales.ENGLISH,
|
|
153
165
|
},
|
|
154
166
|
|
|
155
167
|
/**
|
|
156
|
-
*
|
|
168
|
+
* Pengaturan yang mengontrol operasi kamus dan perilaku fallback.
|
|
157
169
|
*/
|
|
158
170
|
dictionary: {
|
|
159
171
|
/**
|
|
160
|
-
*
|
|
161
|
-
* - "static":
|
|
162
|
-
* - "dynamic":
|
|
163
|
-
* - "fetch":
|
|
172
|
+
* Mengontrol bagaimana kamus diimpor.
|
|
173
|
+
* - "static": Diimpor secara statis saat waktu build.
|
|
174
|
+
* - "dynamic": Diimpor secara dinamis menggunakan Suspense.
|
|
175
|
+
* - "fetch": Diambil secara dinamis melalui API sinkronisasi langsung (live sync).
|
|
164
176
|
* Default: "static"
|
|
165
177
|
*/
|
|
166
178
|
importMode: "static",
|
|
167
179
|
|
|
168
180
|
/**
|
|
169
|
-
*
|
|
170
|
-
*
|
|
181
|
+
* Strategi untuk mengisi terjemahan yang hilang secara otomatis menggunakan AI.
|
|
182
|
+
* Dapat berupa nilai boolean atau pola jalur untuk menyimpan konten yang diisi.
|
|
171
183
|
* Default: true
|
|
172
184
|
*/
|
|
173
185
|
fill: true,
|
|
174
186
|
|
|
175
187
|
/**
|
|
176
|
-
*
|
|
177
|
-
* - "local":
|
|
178
|
-
* - "remote":
|
|
179
|
-
* - "hybrid":
|
|
180
|
-
* - "plugin" (
|
|
188
|
+
* Lokasi fisik file kamus.
|
|
189
|
+
* - "local": Disimpan dalam sistem file lokal.
|
|
190
|
+
* - "remote": Disimpan di Intlayer CMS.
|
|
191
|
+
* - "hybrid": Disimpan di lokal dan di Intlayer CMS.
|
|
192
|
+
* - "plugin" (atau string kustom apa pun): Disediakan oleh plugin atau sumber kustom.
|
|
181
193
|
* Default: "local"
|
|
182
194
|
*/
|
|
183
195
|
location: "local",
|
|
184
196
|
|
|
185
197
|
/**
|
|
186
|
-
*
|
|
198
|
+
* Apakah konten harus ditransformasi secara otomatis (misalnya Markdown ke HTML).
|
|
187
199
|
* Default: false
|
|
188
200
|
*/
|
|
189
201
|
contentAutoTransformation: false,
|
|
190
202
|
},
|
|
191
203
|
|
|
192
204
|
/**
|
|
193
|
-
*
|
|
205
|
+
* Konfigurasi routing dan middleware.
|
|
194
206
|
*/
|
|
195
207
|
routing: {
|
|
196
208
|
/**
|
|
197
|
-
*
|
|
198
|
-
* - "prefix-no-default":
|
|
199
|
-
* - "prefix-all":
|
|
200
|
-
* - "no-prefix":
|
|
201
|
-
* - "search-params":
|
|
209
|
+
* Strategi routing locale.
|
|
210
|
+
* - "prefix-no-default": Menambahkan awalan ke semua kecuali locale default (misalnya /dashboard, /fr/dashboard).
|
|
211
|
+
* - "prefix-all": Menambahkan awalan ke semua locale (misalnya /en/dashboard, /fr/dashboard).
|
|
212
|
+
* - "no-prefix": Tidak ada locale di URL.
|
|
213
|
+
* - "search-params": Menggunakan ?locale=...
|
|
202
214
|
* Default: "prefix-no-default"
|
|
203
215
|
*/
|
|
204
216
|
mode: "prefix-no-default",
|
|
205
217
|
|
|
206
218
|
/**
|
|
207
|
-
*
|
|
208
|
-
*
|
|
219
|
+
* Tempat menyimpan locale yang dipilih pengguna.
|
|
220
|
+
* Opsi: 'cookie', 'localStorage', 'sessionStorage', 'header', atau array dari opsi-opsi tersebut.
|
|
209
221
|
* Default: ['cookie', 'header']
|
|
210
222
|
*/
|
|
211
223
|
storage: ["cookie", "header"],
|
|
212
224
|
|
|
213
225
|
/**
|
|
214
|
-
*
|
|
226
|
+
* Jalur dasar untuk URL aplikasi.
|
|
215
227
|
* Default: ""
|
|
216
228
|
*/
|
|
217
229
|
basePath: "",
|
|
218
230
|
|
|
219
231
|
/**
|
|
220
|
-
*
|
|
232
|
+
* Aturan penulisan ulang (rewrite) URL kustom untuk jalur spesifik per-locale.
|
|
221
233
|
*/
|
|
222
234
|
rewrite: nextjsRewrite({
|
|
223
235
|
"/[locale]/about": {
|
|
@@ -228,128 +240,130 @@ const config: IntlayerConfig = {
|
|
|
228
240
|
},
|
|
229
241
|
|
|
230
242
|
/**
|
|
231
|
-
*
|
|
243
|
+
* Pengaturan yang berkaitan dengan pencarian dan pemrosesan file konten.
|
|
232
244
|
*/
|
|
233
245
|
content: {
|
|
234
246
|
/**
|
|
235
|
-
*
|
|
236
|
-
* Default: ['.content.ts', '.content.js', '.content.json',
|
|
247
|
+
* Ekstensi file untuk memindai kamus.
|
|
248
|
+
* Default: ['.content.ts', '.content.js', '.content.json', dll]
|
|
237
249
|
*/
|
|
238
250
|
fileExtensions: [".content.ts", ".content.js", ".content.json"],
|
|
239
251
|
|
|
240
252
|
/**
|
|
241
|
-
*
|
|
253
|
+
* Direktori tempat file .content berada.
|
|
242
254
|
* Default: ["."]
|
|
243
255
|
*/
|
|
244
256
|
contentDir: ["src"],
|
|
245
257
|
|
|
246
258
|
/**
|
|
247
|
-
*
|
|
248
|
-
*
|
|
259
|
+
* Direktori tempat kode sumber berada.
|
|
260
|
+
* Digunakan untuk optimasi build dan transformasi kode.
|
|
249
261
|
* Default: ["."]
|
|
250
262
|
*/
|
|
251
263
|
codeDir: ["src"],
|
|
252
264
|
|
|
253
265
|
/**
|
|
254
|
-
*
|
|
255
|
-
* Default: ['node_modules', '.intlayer',
|
|
266
|
+
* Pola yang dikecualikan dari pemindaian.
|
|
267
|
+
* Default: ['node_modules', '.intlayer', dll]
|
|
256
268
|
*/
|
|
257
269
|
excludedPath: ["node_modules"],
|
|
258
270
|
|
|
259
271
|
/**
|
|
260
|
-
*
|
|
261
|
-
* Default: true
|
|
272
|
+
* Apakah akan memantau perubahan dan membangun kembali kamus selama pengembangan.
|
|
273
|
+
* Default: true dalam pengembangan
|
|
262
274
|
*/
|
|
263
275
|
watch: true,
|
|
264
276
|
|
|
265
277
|
/**
|
|
266
|
-
*
|
|
278
|
+
* Perintah yang digunakan untuk memformat file .content yang baru dibuat / diperbarui.
|
|
267
279
|
*/
|
|
268
280
|
formatCommand: 'npx prettier --write "{{file}}"',
|
|
269
281
|
},
|
|
270
282
|
|
|
271
283
|
/**
|
|
272
|
-
* Visual Editor
|
|
284
|
+
* Konfigurasi Visual Editor.
|
|
273
285
|
*/
|
|
274
286
|
editor: {
|
|
275
287
|
/**
|
|
276
|
-
*
|
|
288
|
+
* Apakah visual editor diaktifkan.
|
|
277
289
|
* Default: false
|
|
278
290
|
*/
|
|
279
291
|
enabled: true,
|
|
280
292
|
|
|
281
293
|
/**
|
|
282
|
-
* URL
|
|
294
|
+
* URL aplikasi Anda untuk validasi asal (origin validation).
|
|
283
295
|
* Default: ""
|
|
284
296
|
*/
|
|
285
297
|
applicationURL: "http://localhost:3000",
|
|
286
298
|
|
|
287
299
|
/**
|
|
288
|
-
* Port
|
|
300
|
+
* Port untuk server editor lokal.
|
|
289
301
|
* Default: 8000
|
|
290
302
|
*/
|
|
291
303
|
port: 8000,
|
|
292
304
|
|
|
293
305
|
/**
|
|
294
|
-
*
|
|
306
|
+
* URL publik untuk editor.
|
|
295
307
|
* Default: "http://localhost:8000"
|
|
296
308
|
*/
|
|
297
309
|
editorURL: "http://localhost:8000",
|
|
298
310
|
|
|
299
311
|
/**
|
|
300
|
-
* Intlayer CMS
|
|
312
|
+
* URL Intlayer CMS.
|
|
301
313
|
* Default: "https://app.intlayer.org"
|
|
302
314
|
*/
|
|
303
315
|
cmsURL: "https://app.intlayer.org",
|
|
304
316
|
|
|
305
317
|
/**
|
|
306
|
-
*
|
|
318
|
+
* URL API Backend.
|
|
307
319
|
* Default: "https://back.intlayer.org"
|
|
308
320
|
*/
|
|
309
321
|
backendURL: "https://back.intlayer.org",
|
|
310
322
|
|
|
311
323
|
/**
|
|
312
|
-
*
|
|
324
|
+
* Apakah akan mengaktifkan sinkronisasi konten secara real-time.
|
|
313
325
|
* Default: false
|
|
314
326
|
*/
|
|
315
327
|
liveSync: true,
|
|
316
328
|
},
|
|
317
329
|
|
|
318
330
|
/**
|
|
319
|
-
*
|
|
331
|
+
* Pengaturan terjemahan dan pembuatan konten berbasis AI.
|
|
320
332
|
*/
|
|
321
333
|
ai: {
|
|
322
334
|
/**
|
|
323
|
-
* AI
|
|
324
|
-
*
|
|
335
|
+
* Penyedia AI yang akan digunakan.
|
|
336
|
+
* Opsi: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
|
|
325
337
|
* Default: 'openai'
|
|
326
338
|
*/
|
|
327
339
|
provider: "openai",
|
|
328
340
|
|
|
329
341
|
/**
|
|
330
|
-
* Model
|
|
342
|
+
* Model dari penyedia yang dipilih untuk digunakan.
|
|
331
343
|
*/
|
|
332
344
|
model: "gpt-4o",
|
|
333
345
|
|
|
334
346
|
/**
|
|
335
|
-
*
|
|
347
|
+
* Kunci API penyedia.
|
|
336
348
|
*/
|
|
337
349
|
apiKey: process.env.OPENAI_API_KEY,
|
|
338
350
|
|
|
339
351
|
/**
|
|
340
|
-
*
|
|
352
|
+
* Konteks global untuk memandu AI dalam menghasilkan terjemahan.
|
|
341
353
|
*/
|
|
342
|
-
applicationContext: "
|
|
354
|
+
applicationContext: "Ini adalah aplikasi pemesanan perjalanan.",
|
|
343
355
|
|
|
344
356
|
/**
|
|
345
|
-
*
|
|
357
|
+
* URL dasar untuk API AI.
|
|
346
358
|
*/
|
|
359
|
+
baseURL: "http://localhost:3000",
|
|
360
|
+
|
|
347
361
|
/**
|
|
348
|
-
* Data
|
|
362
|
+
* Serialisasi Data (Data Serialization)
|
|
349
363
|
*
|
|
350
364
|
* Opsi:
|
|
351
|
-
* - "json":
|
|
352
|
-
* - "toon":
|
|
365
|
+
* - "json": Default, kuat; menggunakan lebih banyak token.
|
|
366
|
+
* - "toon": Menggunakan lebih sedikit token, kurang konsisten dibandingkan JSON.
|
|
353
367
|
*
|
|
354
368
|
* Default: "json"
|
|
355
369
|
*/
|
|
@@ -357,142 +371,142 @@ const config: IntlayerConfig = {
|
|
|
357
371
|
},
|
|
358
372
|
|
|
359
373
|
/**
|
|
360
|
-
*
|
|
374
|
+
* Pengaturan build dan optimasi.
|
|
361
375
|
*/
|
|
362
376
|
build: {
|
|
363
377
|
/**
|
|
364
|
-
*
|
|
365
|
-
* - "auto":
|
|
366
|
-
* - "manual":
|
|
378
|
+
* Mode eksekusi build.
|
|
379
|
+
* - "auto": Build secara otomatis selama build aplikasi.
|
|
380
|
+
* - "manual": Memerlukan perintah build eksplisit.
|
|
367
381
|
* Default: "auto"
|
|
368
382
|
*/
|
|
369
383
|
mode: "auto",
|
|
370
384
|
|
|
371
385
|
/**
|
|
372
|
-
*
|
|
373
|
-
* Default: true
|
|
386
|
+
* Apakah akan mengoptimalkan bundle akhir dengan menghapus kamus yang tidak digunakan.
|
|
387
|
+
* Default: true dalam produksi
|
|
374
388
|
*/
|
|
375
389
|
optimize: true,
|
|
376
390
|
|
|
377
391
|
/**
|
|
378
|
-
*
|
|
379
|
-
* Default: ['
|
|
392
|
+
* Format output untuk file kamus yang dihasilkan.
|
|
393
|
+
* Default: ['cjs', 'esm']
|
|
380
394
|
*/
|
|
381
|
-
outputFormat: ["esm"],
|
|
395
|
+
outputFormat: ["cjs", "esm"],
|
|
382
396
|
|
|
383
397
|
/**
|
|
384
|
-
*
|
|
398
|
+
* Menunjukkan apakah build harus memeriksa tipe TypeScript.
|
|
385
399
|
* Default: false
|
|
386
400
|
*/
|
|
387
401
|
checkTypes: false,
|
|
388
402
|
},
|
|
389
403
|
|
|
390
404
|
/**
|
|
391
|
-
* Logger
|
|
405
|
+
* Konfigurasi Logger.
|
|
392
406
|
*/
|
|
393
407
|
log: {
|
|
394
408
|
/**
|
|
395
|
-
*
|
|
396
|
-
* - "default":
|
|
397
|
-
* - "verbose":
|
|
398
|
-
* - "disabled":
|
|
409
|
+
* Tingkat logging.
|
|
410
|
+
* - "default": Logging standar.
|
|
411
|
+
* - "verbose": Logging debug mendalam.
|
|
412
|
+
* - "disabled": Menonaktifkan logging.
|
|
399
413
|
* Default: "default"
|
|
400
414
|
*/
|
|
401
415
|
mode: "default",
|
|
402
416
|
|
|
403
417
|
/**
|
|
404
|
-
*
|
|
418
|
+
* Awalan untuk semua pesan log.
|
|
405
419
|
* Default: "[intlayer]"
|
|
406
420
|
*/
|
|
407
421
|
prefix: "[intlayer]",
|
|
408
422
|
},
|
|
409
423
|
|
|
410
424
|
/**
|
|
411
|
-
*
|
|
425
|
+
* Konfigurasi Sistem (Untuk penggunaan tingkat lanjut)
|
|
412
426
|
*/
|
|
413
427
|
system: {
|
|
414
428
|
/**
|
|
415
|
-
*
|
|
429
|
+
* Direktori untuk menyimpan kamus yang dilokalisasi.
|
|
416
430
|
*/
|
|
417
431
|
dictionariesDir: ".intlayer/dictionary",
|
|
418
432
|
|
|
419
433
|
/**
|
|
420
|
-
*
|
|
434
|
+
* Direktori untuk augmentasi modul TypeScript.
|
|
421
435
|
*/
|
|
422
436
|
moduleAugmentationDir: ".intlayer/types",
|
|
423
437
|
|
|
424
438
|
/**
|
|
425
|
-
*
|
|
439
|
+
* Direktori untuk menyimpan kamus yang belum digabungkan.
|
|
426
440
|
*/
|
|
427
441
|
unmergedDictionariesDir: ".intlayer/unmerged_dictionary",
|
|
428
442
|
|
|
429
443
|
/**
|
|
430
|
-
*
|
|
444
|
+
* Direktori untuk menyimpan tipe kamus.
|
|
431
445
|
*/
|
|
432
446
|
typesDir: ".intlayer/types",
|
|
433
447
|
|
|
434
448
|
/**
|
|
435
|
-
*
|
|
449
|
+
* Direktori tempat file aplikasi utama disimpan.
|
|
436
450
|
*/
|
|
437
451
|
mainDir: ".intlayer/main",
|
|
438
452
|
|
|
439
453
|
/**
|
|
440
|
-
*
|
|
454
|
+
* Direktori tempat file konfigurasi disimpan.
|
|
441
455
|
*/
|
|
442
456
|
configDir: ".intlayer/config",
|
|
443
457
|
|
|
444
458
|
/**
|
|
445
|
-
*
|
|
459
|
+
* Direktori tempat file cache disimpan.
|
|
446
460
|
*/
|
|
447
461
|
cacheDir: ".intlayer/cache",
|
|
448
462
|
},
|
|
449
463
|
|
|
450
464
|
/**
|
|
451
|
-
*
|
|
465
|
+
* Konfigurasi Kompiler (Compiler) (Untuk penggunaan tingkat lanjut)
|
|
452
466
|
*/
|
|
453
467
|
compiler: {
|
|
454
468
|
/**
|
|
455
469
|
* Menunjukkan apakah kompiler harus diaktifkan.
|
|
456
470
|
*
|
|
457
|
-
* - false
|
|
458
|
-
* - true
|
|
459
|
-
* - "build-only"
|
|
471
|
+
* - false: Menonaktifkan kompiler.
|
|
472
|
+
* - true: Mengaktifkan kompiler.
|
|
473
|
+
* - "build-only": Melewati kompiler selama pengembangan dan mempercepat waktu startup.
|
|
460
474
|
*
|
|
461
|
-
*
|
|
475
|
+
* Default: false
|
|
462
476
|
*/
|
|
463
477
|
enabled: true,
|
|
464
478
|
|
|
465
479
|
/**
|
|
466
|
-
* Mendefinisikan jalur file output. Menggantikan `outputDir`.
|
|
480
|
+
* Mendefinisikan jalur untuk file output. Menggantikan `outputDir`.
|
|
467
481
|
*
|
|
468
|
-
* - Jalur
|
|
469
|
-
* - Jalur
|
|
482
|
+
* - Jalur `./` diselesaikan relatif terhadap direktori komponen.
|
|
483
|
+
* - Jalur `/` diselesaikan relatif terhadap akar proyek (`baseDir`).
|
|
470
484
|
*
|
|
471
|
-
* - Menyertakan variabel `{{locale}}` dalam jalur akan
|
|
485
|
+
* - Menyertakan variabel `{{locale}}` dalam jalur akan memicu pembuatan kamus terpisah per-bahasa.
|
|
472
486
|
*
|
|
473
487
|
* Contoh:
|
|
474
488
|
* ```ts
|
|
475
489
|
* {
|
|
476
|
-
* // Buat file .content.ts
|
|
490
|
+
* // Buat file .content.ts multilingual di sebelah komponen
|
|
477
491
|
* output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
478
492
|
*
|
|
479
|
-
* // output: './{{fileName}}{{extension}}', //
|
|
493
|
+
* // output: './{{fileName}}{{extension}}', // Setara menggunakan template string
|
|
480
494
|
* }
|
|
481
495
|
* ```
|
|
482
496
|
*
|
|
483
497
|
* ```ts
|
|
484
498
|
* {
|
|
485
|
-
* // Buat
|
|
499
|
+
* // Buat JSON terpusat per-bahasa di akar proyek
|
|
486
500
|
* output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
|
|
487
501
|
*
|
|
488
|
-
* // output: '/locales/{{locale}}/{{key}}.content.json', //
|
|
502
|
+
* // output: '/locales/{{locale}}/{{key}}.content.json', // Setara menggunakan template string
|
|
489
503
|
* }
|
|
490
504
|
* ```
|
|
491
505
|
*
|
|
492
506
|
* Daftar variabel:
|
|
493
507
|
* - `fileName`: Nama file.
|
|
494
508
|
* - `key`: Kunci konten.
|
|
495
|
-
* - `locale`:
|
|
509
|
+
* - `locale`: Locale konten.
|
|
496
510
|
* - `extension`: Ekstensi file.
|
|
497
511
|
* - `componentFileName`: Nama file komponen.
|
|
498
512
|
* - `componentExtension`: Ekstensi file komponen.
|
|
@@ -504,23 +518,23 @@ const config: IntlayerConfig = {
|
|
|
504
518
|
|
|
505
519
|
/**
|
|
506
520
|
* Menunjukkan apakah komponen harus disimpan setelah ditransformasi.
|
|
507
|
-
* Dengan
|
|
521
|
+
* Dengan cara ini, kompiler dapat dijalankan sekali saja untuk mentransformasi aplikasi dan kemudian dapat dihapus.
|
|
508
522
|
*/
|
|
509
523
|
saveComponents: false,
|
|
510
524
|
|
|
511
525
|
/**
|
|
512
|
-
*
|
|
526
|
+
* Hanya menyisipkan konten ke dalam file yang dihasilkan. Berguna untuk output JSON per-bahasa untuk i18next atau ICU MessageFormat.
|
|
513
527
|
*/
|
|
514
528
|
noMetadata: false,
|
|
515
529
|
|
|
516
530
|
/**
|
|
517
531
|
* Awalan kunci kamus
|
|
518
532
|
*/
|
|
519
|
-
dictionaryKeyPrefix: "", // Tambahkan awalan opsional
|
|
533
|
+
dictionaryKeyPrefix: "", // Tambahkan awalan opsional ke kunci kamus yang diekstrak
|
|
520
534
|
},
|
|
521
535
|
|
|
522
536
|
/**
|
|
523
|
-
*
|
|
537
|
+
* Schema kustom untuk memvalidasi konten kamus.
|
|
524
538
|
*/
|
|
525
539
|
schemas: {
|
|
526
540
|
"my-schema": z.object({
|
|
@@ -529,7 +543,7 @@ const config: IntlayerConfig = {
|
|
|
529
543
|
},
|
|
530
544
|
|
|
531
545
|
/**
|
|
532
|
-
*
|
|
546
|
+
* Konfigurasi plugin.
|
|
533
547
|
*/
|
|
534
548
|
plugins: [],
|
|
535
549
|
};
|
|
@@ -537,248 +551,114 @@ const config: IntlayerConfig = {
|
|
|
537
551
|
export default config;
|
|
538
552
|
````
|
|
539
553
|
|
|
540
|
-
|
|
554
|
+
---
|
|
555
|
+
|
|
556
|
+
## Referensi Konfigurasi (Configuration Reference)
|
|
541
557
|
|
|
542
|
-
Bagian berikut menjelaskan berbagai pengaturan konfigurasi yang tersedia
|
|
558
|
+
Bagian berikut menjelaskan berbagai pengaturan konfigurasi yang tersedia di Intlayer.
|
|
543
559
|
|
|
544
560
|
---
|
|
545
561
|
|
|
546
|
-
### Konfigurasi Internasionalisasi
|
|
547
|
-
|
|
548
|
-
Mendefinisikan pengaturan yang
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
- _Contoh_: `['en', 'fr', 'es']`
|
|
557
|
-
|
|
558
|
-
- **requiredLocales**:
|
|
559
|
-
- _Tipe_: `string[]`
|
|
560
|
-
- _Default_: `[]`
|
|
561
|
-
- _Deskripsi_: Daftar locale yang wajib ada dalam aplikasi.
|
|
562
|
-
- _Contoh_: `[]`
|
|
563
|
-
- _Catatan_: Jika kosong, semua locale diwajibkan dalam mode `strict`.
|
|
564
|
-
- _Catatan_: Pastikan locale yang wajib juga didefinisikan dalam field `locales`.
|
|
565
|
-
- **strictMode**:
|
|
566
|
-
- _Tipe_: `string`
|
|
567
|
-
- _Default_: `inclusive`
|
|
568
|
-
- _Deskripsi_: Menjamin implementasi konten internasionalisasi yang kuat menggunakan typescript.
|
|
569
|
-
- _Catatan_: Jika diatur ke "strict", fungsi terjemahan `t` akan mengharuskan setiap locale yang dideklarasikan untuk didefinisikan. Jika satu locale hilang, atau jika locale tidak dideklarasikan dalam konfigurasi Anda, maka akan menghasilkan error.
|
|
570
|
-
- _Catatan_: Jika diatur ke "inclusive", fungsi terjemahan `t` akan mengharuskan setiap locale yang dideklarasikan untuk didefinisikan. Jika satu locale hilang, akan memberikan peringatan. Namun akan menerima jika locale tidak dideklarasikan dalam konfigurasi Anda, tetapi ada.
|
|
571
|
-
- _Catatan_: Jika diatur ke "loose", fungsi terjemahan `t` akan menerima locale yang ada.
|
|
572
|
-
|
|
573
|
-
- **defaultLocale**:
|
|
574
|
-
- _Tipe_: `string`
|
|
575
|
-
- _Default_: `'en'`
|
|
576
|
-
- _Deskripsi_: Locale default yang digunakan sebagai fallback jika locale yang diminta tidak ditemukan.
|
|
577
|
-
- _Contoh_: `'en'`
|
|
578
|
-
- _Catatan_: Ini digunakan untuk menentukan locale ketika tidak ada yang ditentukan dalam URL, cookie, atau header.
|
|
562
|
+
### Konfigurasi Internasionalisasi (Internationalization Configuration)
|
|
563
|
+
|
|
564
|
+
Mendefinisikan pengaturan yang berkaitan dengan internasionalisasi, termasuk locale yang tersedia dan locale default untuk aplikasi.
|
|
565
|
+
|
|
566
|
+
| Field | Tipe | Deskripsi | Contoh | Catatan |
|
|
567
|
+
| ----------------- | ---------- | ------------------------------------------------------------------------------------------------------------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
568
|
+
| `locales` | `string[]` | Daftar locale yang didukung dalam aplikasi. Default: `[Locales.ENGLISH]` | `['en', 'fr', 'es']` | |
|
|
569
|
+
| `requiredLocales` | `string[]` | Daftar locale wajib dalam aplikasi. Default: `[]` | `[]` | Jika kosong, semua locale bersifat wajib dalam mode `strict`. Pastikan locale wajib juga didefinisikan dalam field `locales`. |
|
|
570
|
+
| `strictMode` | `string` | Menjamin implementasi konten internasionalisasi yang kuat menggunakan TypeScript. Default: `inclusive` | | Jika `"strict"`: fungsi `t` mengharuskan setiap locale yang dideklarasikan untuk didefinisikan — melemparkan error jika ada yang hilang atau tidak dideklarasikan. Jika `"inclusive"`: memperingatkan tentang locale yang hilang tetapi menerima locale yang ada namun tidak dideklarasikan. Jika `"loose"`: menerima locale apa pun yang ada. |
|
|
571
|
+
| `defaultLocale` | `string` | Locale default yang digunakan sebagai fallback jika locale yang diminta tidak ditemukan. Default: `Locales.ENGLISH` | `'en'` | Digunakan untuk menentukan locale ketika tidak ada locale yang ditentukan dalam URL, cookie, atau header. |
|
|
579
572
|
|
|
580
573
|
---
|
|
581
574
|
|
|
582
|
-
### Konfigurasi Editor
|
|
583
|
-
|
|
584
|
-
Mendefinisikan pengaturan
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
- **editorURL**:
|
|
604
|
-
- _Tipe_: `string`
|
|
605
|
-
- _Default_: `'http://localhost:8000'`
|
|
606
|
-
- _Deskripsi_: URL server editor. Digunakan untuk membatasi asal editor demi alasan keamanan.
|
|
607
|
-
- `'http://localhost:3000'`
|
|
608
|
-
- `'https://example.com'`
|
|
609
|
-
- `process.env.INTLAYER_EDITOR_URL`
|
|
610
|
-
- _Catatan_: URL server editor yang dapat diakses dari aplikasi. Digunakan untuk membatasi asal yang dapat berinteraksi dengan aplikasi demi alasan keamanan. Jika diatur ke `'*'`, editor dapat diakses dari asal mana pun. Harus diatur jika port diubah, atau jika editor dihosting di domain yang berbeda.
|
|
611
|
-
|
|
612
|
-
- **cmsURL**:
|
|
613
|
-
- _Tipe_: `string`
|
|
614
|
-
- _Default_: `'https://intlayer.org'`
|
|
615
|
-
- _Deskripsi_: URL dari Intlayer CMS.
|
|
616
|
-
- _Contoh_: `'https://intlayer.org'`
|
|
617
|
-
- _Catatan_: URL dari Intlayer CMS.
|
|
618
|
-
|
|
619
|
-
- **backendURL**:
|
|
620
|
-
- _Tipe_: `string`
|
|
621
|
-
- _Default_: `https://back.intlayer.org`
|
|
622
|
-
- _Deskripsi_: URL dari server backend.
|
|
623
|
-
- _Contoh_: `http://localhost:4000`
|
|
624
|
-
|
|
625
|
-
- **enabled**:
|
|
626
|
-
- _Tipe_: `boolean`
|
|
627
|
-
- _Default_: `true`
|
|
628
|
-
- _Deskripsi_: Menunjukkan apakah aplikasi berinteraksi dengan visual editor.
|
|
629
|
-
- _Contoh_: `process.env.NODE_ENV !== 'production'`
|
|
630
|
-
- _Catatan_: Jika true, editor akan dapat berinteraksi dengan aplikasi. Jika false, editor tidak akan dapat berinteraksi dengan aplikasi. Dalam hal apa pun, editor hanya dapat diaktifkan oleh visual editor. Menonaktifkan editor untuk lingkungan tertentu adalah cara untuk menegakkan keamanan.
|
|
631
|
-
|
|
632
|
-
- **clientId**:
|
|
633
|
-
- _Tipe_: `string` | `undefined`
|
|
634
|
-
- _Default_: `undefined`
|
|
635
|
-
- _Deskripsi_: clientId dan clientSecret memungkinkan paket intlayer untuk melakukan autentikasi dengan backend menggunakan autentikasi oAuth2. Token akses digunakan untuk mengautentikasi pengguna yang terkait dengan proyek. Untuk mendapatkan token akses, kunjungi https://app.intlayer.org/project dan buat akun.
|
|
636
|
-
- _Contoh_: `true`
|
|
637
|
-
- _Catatan_: Penting: clientId dan clientSecret harus dijaga kerahasiaannya dan tidak dibagikan secara publik. Pastikan untuk menyimpannya di lokasi yang aman, seperti variabel lingkungan.
|
|
638
|
-
|
|
639
|
-
- **clientSecret**:
|
|
640
|
-
- _Tipe_: `string` | `undefined`
|
|
641
|
-
- _Default_: `undefined`
|
|
642
|
-
- _Deskripsi_: clientId dan clientSecret memungkinkan paket intlayer untuk melakukan autentikasi dengan backend menggunakan autentikasi oAuth2. Token akses digunakan untuk mengautentikasi pengguna yang terkait dengan proyek. Untuk mendapatkan token akses, kunjungi https://app.intlayer.org/project dan buat akun.
|
|
643
|
-
- _Contoh_: `true`
|
|
644
|
-
- _Catatan_: Penting: clientId dan clientSecret harus dijaga kerahasiaannya dan tidak dibagikan secara publik. Pastikan untuk menyimpannya di lokasi yang aman, seperti variabel lingkungan.
|
|
645
|
-
|
|
646
|
-
- **dictionaryPriorityStrategy**:
|
|
647
|
-
- _Tipe_: `string`
|
|
648
|
-
- _Default_: `'local_first'`
|
|
649
|
-
- _Deskripsi_: Strategi untuk memprioritaskan kamus dalam kasus adanya kamus lokal dan jauh. Jika diatur ke `'distant_first'`, aplikasi akan memprioritaskan kamus jauh dibandingkan kamus lokal. Jika diatur ke `'local_first'`, aplikasi akan memprioritaskan kamus lokal dibandingkan kamus jauh.
|
|
650
|
-
- _Contoh_: `'distant_first'`
|
|
651
|
-
|
|
652
|
-
- **liveSync**:
|
|
653
|
-
- _Tipe_: `boolean`
|
|
654
|
-
- _Default_: `false`
|
|
655
|
-
- _Deskripsi_: Menunjukkan apakah server aplikasi harus melakukan hot reload konten aplikasi ketika perubahan terdeteksi pada CMS / Visual Editor / Backend.
|
|
656
|
-
- _Contoh_: `true`
|
|
657
|
-
- _Catatan_: Misalnya, ketika kamus baru ditambahkan atau diperbarui, aplikasi akan memperbarui konten yang ditampilkan di halaman.
|
|
658
|
-
- _Catatan_: Live sync membutuhkan eksternalisasi konten aplikasi ke server lain. Itu berarti dapat sedikit memengaruhi performa aplikasi. Untuk membatasi hal ini, kami menyarankan untuk meng-host aplikasi dan server live sync pada mesin yang sama. Selain itu, kombinasi live sync dan `optimize` dapat menghasilkan sejumlah besar permintaan ke server live sync. Tergantung pada infrastruktur Anda, kami menyarankan untuk menguji kedua opsi dan kombinasi keduanya.
|
|
659
|
-
|
|
660
|
-
- **liveSyncPort**:
|
|
661
|
-
- _Tipe_: `number`
|
|
662
|
-
- _Default_: `4000`
|
|
663
|
-
- _Deskripsi_: Port dari server live sync.
|
|
664
|
-
- _Contoh_: `4000`
|
|
665
|
-
- _Catatan_: Port dari server live sync.
|
|
666
|
-
|
|
667
|
-
- **liveSyncURL**:
|
|
668
|
-
- _Tipe_: `string`
|
|
669
|
-
- _Default_: `'http://localhost:{liveSyncPort}'`
|
|
670
|
-
- _Deskripsi_: URL dari server live sync.
|
|
671
|
-
- _Contoh_: `'https://example.com'`
|
|
672
|
-
- _Catatan_: Mengarah ke localhost secara default tetapi dapat diubah ke URL mana pun dalam kasus server live sync jarak jauh.
|
|
673
|
-
|
|
674
|
-
### Konfigurasi Routing
|
|
575
|
+
### Konfigurasi Editor (Editor Configuration)
|
|
576
|
+
|
|
577
|
+
Mendefinisikan pengaturan yang berkaitan dengan editor terintegrasi, termasuk port server dan status aktivitas.
|
|
578
|
+
|
|
579
|
+
| Field | Tipe | Deskripsi | Contoh | Catatan |
|
|
580
|
+
| ---------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
581
|
+
| `applicationURL` | `string` | URL aplikasi Anda. Default: `''` | `'http://localhost:3000'`, `'https://example.com'`, `process.env.INTLAYER_EDITOR_URL` | Digunakan untuk membatasi asal (origin) editor demi alasan keamanan. Jika disetel ke `'*'`, editor dapat diakses dari asal mana pun. |
|
|
582
|
+
| `port` | `number` | Port yang digunakan oleh server Visual Editor. Default: `8000` | | |
|
|
583
|
+
| `editorURL` | `string` | URL server editor. Default: `'http://localhost:8000'` | `'http://localhost:3000'`, `'https://example.com'`, `process.env.INTLAYER_EDITOR_URL` | Digunakan untuk membatasi asal yang dapat berinteraksi dengan aplikasi. Jika disetel ke `'*'`, dapat diakses dari asal mana pun. Harus disetel jika mengubah port atau jika editor di-host di domain yang berbeda. |
|
|
584
|
+
| `cmsURL` | `string` | URL Intlayer CMS. Default: `'https://intlayer.org'` | `'https://intlayer.org'` | |
|
|
585
|
+
| `backendURL` | `string` | URL server backend. Default: `https://back.intlayer.org` | `http://localhost:4000` | |
|
|
586
|
+
| `enabled` | `boolean` | Menunjukkan apakah aplikasi akan berinteraksi dengan visual editor. Default: `true` | `process.env.NODE_ENV !== 'production'` | Jika `false`, editor tidak dapat berinteraksi dengan aplikasi. Menonaktifkannya untuk lingkungan tertentu akan meningkatkan keamanan. |
|
|
587
|
+
| `clientId` | `string | undefined` | Memungkinkan paket intlayer untuk melakukan autentikasi dengan backend menggunakan oAuth2. Untuk mendapatkan token akses, buka [intlayer.org/project](https://app.intlayer.org/project). Default: `undefined` | | Jaga kerahasiaannya; simpan dalam variabel lingkungan. |
|
|
588
|
+
| `clientSecret` | `string | undefined` | Memungkinkan paket intlayer untuk melakukan autentikasi dengan backend menggunakan oAuth2. Untuk mendapatkan token akses, buka [intlayer.org/project](https://app.intlayer.org/project). Default: `undefined` | | Jaga kerahasiaannya; simpan dalam variabel lingkungan. |
|
|
589
|
+
| `dictionaryPriorityStrategy` | `string` | Strategi untuk memprioritaskan kamus ketika kamus lokal dan jarak jauh ada. Default: `'local_first'` | `'distant_first'` | `'distant_first'`: memprioritaskan jarak jauh daripada lokal. `'local_first'`: memprioritaskan lokal daripada jarak jauh. |
|
|
590
|
+
| `liveSync` | `boolean` | Menunjukkan apakah server aplikasi harus memuat ulang konten secara panas (hot-reload) ketika perubahan terdeteksi pada CMS / Visual Editor / Backend. Default: `true` | `true` | Ketika kamus ditambahkan/diperbarui, aplikasi memperbarui konten halaman. Sinkronisasi langsung mengalihdayakan konten ke server lain, yang mungkin sedikit memengaruhi performa. Disarankan untuk menghosting keduanya di mesin yang sama. |
|
|
591
|
+
| `liveSyncPort` | `number` | Port server sinkronisasi langsung. Default: `4000` | `4000` | |
|
|
592
|
+
| `liveSyncURL` | `string` | URL server sinkronisasi langsung. Default: `'http://localhost:{liveSyncPort}'` | `'https://example.com'` | Menunjuk ke localhost secara default; dapat diubah ke server sinkronisasi langsung jarak jauh. |
|
|
593
|
+
|
|
594
|
+
### Konfigurasi Routing (Routing Configuration)
|
|
675
595
|
|
|
676
596
|
Pengaturan yang mengontrol perilaku routing, termasuk struktur URL, penyimpanan locale, dan penanganan middleware.
|
|
677
597
|
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
- _Catatan_: Nama header dapat disesuaikan jika diatur sebagai StorageAttributes (`{ type: 'header', name: 'custom-locale' }`).
|
|
718
|
-
|
|
719
|
-
- **basePath**:
|
|
720
|
-
- _Tipe_: `string`
|
|
721
|
-
- _Default_: `''`
|
|
722
|
-
- _Deskripsi_: Jalur dasar untuk URL aplikasi.
|
|
723
|
-
- _Contoh_: `'/my-app'`
|
|
724
|
-
- _Catatan_:
|
|
725
|
-
- Jika aplikasi dihosting di `https://example.com/my-app`
|
|
726
|
-
- Jalur dasar adalah `'/my-app'`
|
|
727
|
-
- URL akan menjadi `https://example.com/my-app/en`
|
|
728
|
-
- Jika jalur dasar tidak diatur, URL akan menjadi `https://example.com/en`
|
|
729
|
-
|
|
730
|
-
- **rewrite**:
|
|
731
|
-
- _Tipe_: `Record<string, StrictModeLocaleMap<string>>`
|
|
732
|
-
- _Default_: `undefined`
|
|
733
|
-
- _Deskripsi_: Aturan penulisan ulang URL khusus yang menggantikan mode routing default untuk jalur tertentu. Memungkinkan Anda untuk mendefinisikan jalur khusus bahasa yang berbeda dari perilaku routing standar. Mendukung parameter rute dinamis menggunakan sintaks `[param]`.
|
|
734
|
-
- _Contoh_:
|
|
735
|
-
```typescript
|
|
736
|
-
routing: {
|
|
737
|
-
mode: "prefix-no-default", // Strategi fallback
|
|
738
|
-
rewrite: nextjsRewrite({
|
|
739
|
-
"/[locale]/about": {
|
|
740
|
-
en: "/[locale]/about",
|
|
741
|
-
fr: "/[locale]/a-propos",
|
|
742
|
-
},
|
|
743
|
-
"/[locale]/product/[slug]": {
|
|
744
|
-
en: "/[locale]/product/[slug]",
|
|
745
|
-
fr: "/[locale]/produit/[slug]",
|
|
746
|
-
},
|
|
747
|
-
"/[locale]/blog/[category]/[id]": {
|
|
748
|
-
en: "/[locale]/blog/[category]/[id]",
|
|
749
|
-
fr: "/[locale]/journal/[category]/[id]",
|
|
750
|
-
},
|
|
751
|
-
}),
|
|
752
|
-
}
|
|
753
|
-
```
|
|
754
|
-
- _Catatan_: Aturan penulisan ulang memiliki prioritas di atas perilaku `mode` default. Jika jalur cocok dengan aturan penulisan ulang, jalur yang dilokalisasi dari konfigurasi penulisan ulang akan digunakan alih-alih prefiks bahasa standar.
|
|
755
|
-
- _Catatan_: Parameter rute dinamis didukung menggunakan notasi kurung siku (misalnya, `[slug]`, `[id]`). Nilai parameter secara otomatis diekstrak dari URL dan diinterpolasi ke dalam jalur yang ditulis ulang.
|
|
756
|
-
- _Catatan_: Bekerja dengan aplikasi Next.js dan Vite. Middleware/proxy akan secara otomatis menulis ulang permintaan masuk untuk mencocokkan struktur rute internal.
|
|
757
|
-
- _Catatan_: Saat menghasilkan URL dengan `getLocalizedUrl()`, aturan penulisan ulang secara otomatis diterapkan jika cocok dengan jalur yang disediakan.
|
|
758
|
-
- _Referensi_: Untuk informasi lebih lanjut, lihat [Penulisan Ulang URL Kustom](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/custom_url_rewrites.md).
|
|
759
|
-
|
|
760
|
-
#### Atribut Cookie
|
|
598
|
+
| Field | Tipe | Deskripsi | Contoh | Catatan |
|
|
599
|
+
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
600
|
+
| `mode` | `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'` | Mode routing URL untuk penanganan locale. Default: `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) atau `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: locale ditangani dengan cara lain. `'search-params'`: `/dashboard?locale=fr` | Tidak memengaruhi manajemen cookie atau penyimpanan locale. |
|
|
601
|
+
| `storage` | `false | 'cookie' | 'localStorage' | 'sessionStorage' | 'header' | CookiesAttributes | StorageAttributes | Array` | Konfigurasi untuk menyimpan locale pada klien. Default: `['cookie', 'header']` | `'localStorage'`, `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | Lihat tabel Opsi Penyimpanan di bawah. |
|
|
602
|
+
| `basePath` | `string` | Jalur dasar untuk URL aplikasi. Default: `''` | `'/my-app'` | Jika aplikasi berada di `https://example.com/my-app`, basePath adalah `'/my-app'` dan URL menjadi `https://example.com/my-app/en`. |
|
|
603
|
+
| `rewrite` | `Record<string, StrictModeLocaleMap<string>>` | Aturan penulisan ulang URL kustom yang menggantikan mode routing default untuk jalur tertentu. Mendukung parameter dinamis `[param]`. Default: `undefined` | Lihat contoh di bawah | Aturan penulisan ulang memiliki prioritas di atas `mode`. Berfungsi dengan Next.js dan Vite. `getLocalizedUrl()` secara otomatis menerapkan aturan yang sesuai. Lihat [Penulisan Ulang URL Kustom](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/custom_url_rewrites.md). |
|
|
604
|
+
|
|
605
|
+
**Contoh `rewrite`**:
|
|
606
|
+
|
|
607
|
+
```typescript
|
|
608
|
+
routing: {
|
|
609
|
+
mode: "prefix-no-default", // Strategi fallback
|
|
610
|
+
rewrite: nextjsRewrite({
|
|
611
|
+
"/about": {
|
|
612
|
+
en: "/about",
|
|
613
|
+
fr: "/a-propos",
|
|
614
|
+
},
|
|
615
|
+
"/product/[slug]": {
|
|
616
|
+
en: "/product/[slug]",
|
|
617
|
+
fr: "/produit/[slug]",
|
|
618
|
+
},
|
|
619
|
+
"/blog/[category]/[id]": {
|
|
620
|
+
en: "/blog/[category]/[id]",
|
|
621
|
+
fr: "/journal/[category]/[id]",
|
|
622
|
+
},
|
|
623
|
+
}),
|
|
624
|
+
}
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
#### Opsi Penyimpanan (Storage Options)
|
|
628
|
+
|
|
629
|
+
| Nilai | Deskripsi | Catatan |
|
|
630
|
+
| ------------------ | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
631
|
+
| `'cookie'` | Menyimpan locale dalam cookie — dapat diakses oleh sisi klien dan server. | Untuk kepatuhan GDPR, pastikan mendapatkan persetujuan pengguna yang sesuai. Dapat disesuaikan melalui `CookiesAttributes` (`{ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }`). |
|
|
632
|
+
| `'localStorage'` | Menyimpan locale di browser tanpa batas waktu — hanya sisi klien. | Tidak berakhir kecuali dihapus secara eksplisit. Proksi Intlayer tidak dapat mengaksesnya. Dapat disesuaikan melalui `StorageAttributes` (`{ type: 'localStorage', name: 'custom-locale' }`). |
|
|
633
|
+
| `'sessionStorage'` | Menyimpan locale selama durasi sesi halaman — hanya sisi klien. | Dihapus saat tab/jendela ditutup. Proksi Intlayer tidak dapat mengaksesnya. Dapat disesuaikan melalui `StorageAttributes` (`{ type: 'sessionStorage', name: 'custom-locale' }`). |
|
|
634
|
+
| `'header'` | Menyimpan atau mentransmisikan locale melalui header HTTP — hanya sisi server. | Berguna untuk panggilan API. Sisi klien tidak dapat mengaksesnya. Dapat disesuaikan melalui `StorageAttributes` (`{ type: 'header', name: 'custom-locale' }`). |
|
|
635
|
+
|
|
636
|
+
#### Atribut Cookie (Cookie Attributes)
|
|
761
637
|
|
|
762
638
|
Saat menggunakan penyimpanan cookie, Anda dapat mengonfigurasi atribut cookie tambahan:
|
|
763
639
|
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
640
|
+
| Field | Tipe | Deskripsi |
|
|
641
|
+
| ---------- | ------------------------------------- | ---------------------------------------------------------- |
|
|
642
|
+
| `name` | `string` | Nama cookie. Default: `'INTLAYER_LOCALE'` |
|
|
643
|
+
| `domain` | `string` | Domain cookie. Default: `undefined` |
|
|
644
|
+
| `path` | `string` | Jalur cookie. Default: `undefined` |
|
|
645
|
+
| `secure` | `boolean` | Memerlukan HTTPS. Default: `undefined` |
|
|
646
|
+
| `httpOnly` | `boolean` | Flag HTTP-only. Default: `undefined` |
|
|
647
|
+
| `sameSite` | `'strict' | 'lax' | 'none'` | Kebijakan SameSite. |
|
|
648
|
+
| `expires` | `Date | number` | Tanggal kedaluwarsa atau jumlah hari. Default: `undefined` |
|
|
771
649
|
|
|
772
|
-
#### Atribut Penyimpanan Locale
|
|
650
|
+
#### Atribut Penyimpanan Locale (Locale Storage Attributes)
|
|
773
651
|
|
|
774
652
|
Saat menggunakan localStorage atau sessionStorage:
|
|
775
653
|
|
|
776
|
-
|
|
777
|
-
|
|
654
|
+
| Field | Tipe | Deskripsi |
|
|
655
|
+
| ------ | ---------------------------------------- | ---------------------------------------------------- |
|
|
656
|
+
| `type` | `'localStorage' | 'sessionStorage'` | Tipe penyimpanan. |
|
|
657
|
+
| `name` | `string` | Nama kunci penyimpanan. Default: `'INTLAYER_LOCALE'` |
|
|
778
658
|
|
|
779
|
-
#### Contoh Konfigurasi
|
|
659
|
+
#### Contoh Konfigurasi (Configuration Examples)
|
|
780
660
|
|
|
781
|
-
Berikut beberapa contoh konfigurasi umum untuk struktur routing v7 yang baru:
|
|
661
|
+
Berikut adalah beberapa contoh konfigurasi umum untuk struktur routing v7 yang baru:
|
|
782
662
|
|
|
783
663
|
**Konfigurasi Dasar (Default)**:
|
|
784
664
|
|
|
@@ -793,7 +673,6 @@ const config: IntlayerConfig = {
|
|
|
793
673
|
routing: {
|
|
794
674
|
mode: "prefix-no-default",
|
|
795
675
|
storage: "localStorage",
|
|
796
|
-
headerName: "x-intlayer-locale",
|
|
797
676
|
basePath: "",
|
|
798
677
|
},
|
|
799
678
|
};
|
|
@@ -801,7 +680,7 @@ const config: IntlayerConfig = {
|
|
|
801
680
|
export default config;
|
|
802
681
|
```
|
|
803
682
|
|
|
804
|
-
**Konfigurasi
|
|
683
|
+
**Konfigurasi Patuh GDPR**:
|
|
805
684
|
|
|
806
685
|
```typescript
|
|
807
686
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -826,7 +705,6 @@ const config: IntlayerConfig = {
|
|
|
826
705
|
httpOnly: false,
|
|
827
706
|
},
|
|
828
707
|
],
|
|
829
|
-
headerName: "x-intlayer-locale",
|
|
830
708
|
basePath: "",
|
|
831
709
|
},
|
|
832
710
|
};
|
|
@@ -834,7 +712,7 @@ const config: IntlayerConfig = {
|
|
|
834
712
|
export default config;
|
|
835
713
|
```
|
|
836
714
|
|
|
837
|
-
**Mode Parameter Pencarian**:
|
|
715
|
+
**Mode Parameter Pencarian (Search Parameters Mode)**:
|
|
838
716
|
|
|
839
717
|
```typescript
|
|
840
718
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -847,7 +725,6 @@ const config: IntlayerConfig = {
|
|
|
847
725
|
routing: {
|
|
848
726
|
mode: "search-params",
|
|
849
727
|
storage: "localStorage",
|
|
850
|
-
headerName: "x-intlayer-locale",
|
|
851
728
|
basePath: "",
|
|
852
729
|
},
|
|
853
730
|
};
|
|
@@ -855,7 +732,7 @@ const config: IntlayerConfig = {
|
|
|
855
732
|
export default config;
|
|
856
733
|
```
|
|
857
734
|
|
|
858
|
-
**Mode Tanpa Prefix dengan Penyimpanan Kustom**:
|
|
735
|
+
**Mode Tanpa Awalan (No Prefix Mode) dengan Penyimpanan Kustom**:
|
|
859
736
|
|
|
860
737
|
```typescript
|
|
861
738
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -871,7 +748,6 @@ const config: IntlayerConfig = {
|
|
|
871
748
|
type: "sessionStorage",
|
|
872
749
|
name: "app-locale",
|
|
873
750
|
},
|
|
874
|
-
headerName: "x-custom-locale",
|
|
875
751
|
basePath: "/my-app",
|
|
876
752
|
},
|
|
877
753
|
};
|
|
@@ -879,357 +755,168 @@ const config: IntlayerConfig = {
|
|
|
879
755
|
export default config;
|
|
880
756
|
```
|
|
881
757
|
|
|
882
|
-
|
|
758
|
+
**Penulisan Ulang URL Kustom dengan Jalur Dinamis**:
|
|
883
759
|
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
#### Properti
|
|
889
|
-
|
|
890
|
-
- **watch**:
|
|
891
|
-
- _Tipe_: `boolean`
|
|
892
|
-
- _Default_: `process.env.NODE_ENV === 'development'`
|
|
893
|
-
- _Deskripsi_: Menunjukkan apakah Intlayer harus memantau perubahan pada file deklarasi konten dalam aplikasi untuk membangun kembali kamus terkait.
|
|
894
|
-
|
|
895
|
-
- **fileExtensions**:
|
|
896
|
-
- _Tipe_: `string[]`
|
|
897
|
-
- _Default_: `['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.tsx', '.content.jsx']`
|
|
898
|
-
- _Deskripsi_: Ekstensi file yang dicari saat membangun kamus.
|
|
899
|
-
- _Contoh_: `['.data.ts', '.data.js', '.data.json']`
|
|
900
|
-
- _Catatan_: Menyesuaikan ekstensi file dapat membantu menghindari konflik.
|
|
901
|
-
|
|
902
|
-
- **contentDir**:
|
|
903
|
-
- _Tipe_: `string[]`
|
|
904
|
-
- _Default_: `['.']`
|
|
905
|
-
- _Contoh_: `['src', '../../ui-library', require.resolve("@my-package/content")]`
|
|
906
|
-
- _Deskripsi_: Jalur direktori tempat file definisi konten (`.content.*`) disimpan.
|
|
907
|
-
- _Catatan_: Ini digunakan untuk memantau file konten untuk membangun ulang kamus.
|
|
908
|
-
|
|
909
|
-
- **codeDir**:
|
|
910
|
-
- _Tipe_: `string[]`
|
|
911
|
-
- _Default_: `['.']`
|
|
912
|
-
- _Contoh_: `['src', '../../ui-library']`
|
|
913
|
-
- _Deskripsi_: Jalur direktori tempat kode disimpan, relatif terhadap direktori dasar.
|
|
914
|
-
- _Catatan_: Ini digunakan untuk memantau file kode untuk ditransformasikan (pemangkasan, optimasi). Menjaga ini terpisah dari `contentDir` dapat meningkatkan kinerja build dengan menghindari pemindaian yang tidak perlu pada file konten.
|
|
915
|
-
|
|
916
|
-
- **dictionariesDir**:
|
|
917
|
-
- _Tipe_: `string`
|
|
918
|
-
- _Default_: `'.intlayer/dictionary'`
|
|
919
|
-
- _Deskripsi_: Jalur direktori untuk menyimpan hasil sementara atau output.
|
|
920
|
-
|
|
921
|
-
- **moduleAugmentationDir**:
|
|
922
|
-
- _Tipe_: `string`
|
|
923
|
-
- _Default_: `'.intlayer/types'`
|
|
924
|
-
- _Deskripsi_: Direktori untuk augmentasi modul, memungkinkan saran IDE yang lebih baik dan pengecekan tipe.
|
|
925
|
-
- _Contoh_: `'intlayer-types'`
|
|
926
|
-
- _Catatan_: Pastikan untuk memasukkan ini dalam `tsconfig.json`.
|
|
927
|
-
|
|
928
|
-
- **unmergedDictionariesDir**:
|
|
929
|
-
- _Tipe_: `string`
|
|
930
|
-
- _Default_: `'.intlayer/unmerged_dictionary'`
|
|
931
|
-
- _Deskripsi_: Direktori untuk menyimpan kamus yang belum digabungkan.
|
|
932
|
-
- _Contoh_: `'translations'`
|
|
933
|
-
|
|
934
|
-
- **typesDir**:
|
|
935
|
-
- _Tipe_: `string`
|
|
936
|
-
- _Default_: `'types'`
|
|
937
|
-
- _Deskripsi_: Direktori untuk menyimpan tipe kamus.
|
|
938
|
-
- _Contoh_: `'intlayer-types'`
|
|
939
|
-
|
|
940
|
-
- **mainDir**:
|
|
941
|
-
- _Tipe_: `string`
|
|
942
|
-
- _Default_: `'main'`
|
|
943
|
-
- _Deskripsi_: Direktori tempat file aplikasi utama disimpan.
|
|
944
|
-
- _Contoh_: `'intlayer-main'`
|
|
945
|
-
|
|
946
|
-
- **excludedPath**:
|
|
947
|
-
- _Tipe_: `string[]`
|
|
948
|
-
- _Default_: `['**/node_modules/**', '**/dist/**', '**/build/**', '**/.intlayer/**', '**/.next/**', '**/.nuxt/**', '**/.expo/**', '**/.vercel/**', '**/.turbo/**', '**/.tanstack/**']`
|
|
949
|
-
- _Deskripsi_: Direktori yang dikecualikan dari pencarian konten.
|
|
950
|
-
- _Catatan_: Pengaturan ini belum digunakan, tetapi direncanakan untuk implementasi di masa depan.
|
|
760
|
+
```typescript
|
|
761
|
+
// intlayer.config.ts
|
|
762
|
+
import { nextjsRewrite } from "intlayer/routing";
|
|
951
763
|
|
|
952
|
-
|
|
764
|
+
const config: IntlayerConfig = {
|
|
765
|
+
internationalization: {
|
|
766
|
+
locales: ["en", "fr"],
|
|
767
|
+
defaultLocale: "en",
|
|
768
|
+
},
|
|
769
|
+
routing: {
|
|
770
|
+
mode: "prefix-no-default", // Fallback untuk jalur yang tidak ditulis ulang
|
|
771
|
+
storage: "cookie",
|
|
772
|
+
rewrite: nextjsRewrite({
|
|
773
|
+
"/about": {
|
|
774
|
+
en: "/about",
|
|
775
|
+
fr: "/a-propos",
|
|
776
|
+
},
|
|
777
|
+
"/product/[slug]": {
|
|
778
|
+
en: "/product/[slug]",
|
|
779
|
+
fr: "/produit/[slug]",
|
|
780
|
+
},
|
|
781
|
+
"/blog/[category]/[id]": {
|
|
782
|
+
en: "/blog/[category]/[id]",
|
|
783
|
+
fr: "/journal/[category]/[id]",
|
|
784
|
+
},
|
|
785
|
+
}),
|
|
786
|
+
},
|
|
787
|
+
};
|
|
953
788
|
|
|
954
|
-
|
|
789
|
+
export default config;
|
|
790
|
+
```
|
|
955
791
|
|
|
956
|
-
|
|
792
|
+
---
|
|
957
793
|
|
|
958
|
-
|
|
794
|
+
### Konfigurasi Konten (Content Configuration)
|
|
959
795
|
|
|
960
|
-
|
|
961
|
-
- _Tipe_: `string`
|
|
962
|
-
- _Default_: `process.cwd()`
|
|
963
|
-
- _Deskripsi_: Direktori dasar untuk proyek.
|
|
964
|
-
- _Contoh_: `'/path/to/project'`
|
|
965
|
-
- _Catatan_: Ini digunakan untuk menyelesaikan semua direktori terkait Intlayer.
|
|
796
|
+
Pengaturan yang berkaitan dengan pemrosesan konten di dalam aplikasi (nama direktori, ekstensi file, dan konfigurasi turunan).
|
|
966
797
|
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
- _Catatan_: Jika tidak diatur, Intlayer akan mencoba mendeteksi perintah format secara otomatis dengan mencoba menyelesaikan perintah berikut: prettier, biome, eslint.
|
|
798
|
+
| Field | Tipe | Deskripsi | Contoh | Catatan |
|
|
799
|
+
| ---------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
800
|
+
| `watch` | `boolean` | Menunjukkan apakah Intlayer harus memantau perubahan dalam file deklarasi konten untuk membangun kembali kamus. Default: `process.env.NODE_ENV === 'development'` | | |
|
|
801
|
+
| `fileExtensions` | `string[]` | Ekstensi file yang digunakan untuk memindai file deklarasi konten. Default: `['.content.ts', '.content.js', '.content.mjs', '.content.cjs', '.content.json', '.content.json5', '.content.jsonc']` | `['.content.ts', '.content.js']` | |
|
|
802
|
+
| `contentDir` | `string[]` | Jalur ke direktori tempat file deklarasi konten berada. Default: `['.']` | `['src/content']` | |
|
|
803
|
+
| `codeDir` | `string[]` | Jalur ke direktori tempat file kode sumber aplikasi Anda berada. Default: `['.']` | `['src']` | Digunakan untuk mengoptimalkan build dan memastikan transformasi kode serta pemuatan ulang panas hanya berlaku untuk file yang diperlukan. |
|
|
804
|
+
| `excludedPath` | `string[]` | Jalur yang dikecualikan dari pemindaian konten. Default: `['node_modules', '.intlayer', '.next', 'dist', 'build']` | `['src/styles']` | |
|
|
805
|
+
| `formatCommand` | `string` | Perintah yang akan dijalankan untuk memformat file konten yang baru dibuat atau diperbarui. Default: `undefined` | `'npx prettier --write "{{file}}"'` | Digunakan selama ekstraksi konten atau melalui visual editor. |
|
|
976
806
|
|
|
977
|
-
|
|
807
|
+
---
|
|
808
|
+
|
|
809
|
+
### Konfigurasi Kamus (Dictionary Configuration)
|
|
978
810
|
|
|
979
811
|
Pengaturan yang mengontrol operasi kamus, termasuk perilaku pengisian otomatis dan pembuatan konten.
|
|
980
812
|
|
|
981
813
|
Konfigurasi kamus ini memiliki dua tujuan utama:
|
|
982
814
|
|
|
983
|
-
1. **Nilai
|
|
984
|
-
2. **Perilaku
|
|
815
|
+
1. **Nilai default**: Menentukan nilai default saat membuat file deklarasi konten.
|
|
816
|
+
2. **Perilaku fallback**: Memungkinkan pengaturan perilaku operasi kamus secara global, memberikan nilai fallback ketika field tertentu tidak didefinisikan.
|
|
817
|
+
|
|
818
|
+
Untuk informasi lebih lanjut tentang bagaimana file deklarasi konten dan nilai konfigurasi diterapkan, lihat [dokumentasi file konten](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/dictionary/content_file.md).
|
|
819
|
+
|
|
820
|
+
| Field | Tipe | Deskripsi | Contoh | Catatan |
|
|
821
|
+
| --------------------------- | ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
822
|
+
| `fill` | `boolean | FilePathPattern | Partial<Record<Locale, boolean | FilePathPattern>>` | Mengontrol bagaimana file output pengisian otomatis (terjemahan AI) dihasilkan. Default: `true` | Lihat contoh di bawah | `true`: jalur default (file yang sama dengan sumber). `false`: dinonaktifkan. Pola string/fungsi menghasilkan file per bahasa. Objek per bahasa: setiap bahasa dipetakan ke polanya sendiri; `false` melewatkan bahasa tersebut. Menyertakan variabel `{{locale}}` memicu pembuatan per-bahasa. `fill` di tingkat kamus selalu memiliki prioritas di atas konfigurasi global ini. |
|
|
823
|
+
| `importMode` | `'static' | 'dynamic' | 'fetch'` | Mengontrol bagaimana kamus diimpor. Default: `'static'` | `'dynamic'` | `'static'`: Diimpor secara statis. `'dynamic'`: Diimpor secara dinamis melalui 'Suspense'. `'fetch'`: Diambil secara dinamis melalui 'Live Sync API'. Tidak memengaruhi `getIntlayer`, `getDictionary`, `useDictionary`, dll. |
|
|
824
|
+
| `location` | `'local' | 'remote' | 'hybrid' | string` | Tempat kamus disimpan. Default: `'local'` | `'remote'` | `'local'`: sistem file. `'remote'`: Intlayer CMS. `'hybrid'`: keduanya. |
|
|
825
|
+
| `contentAutoTransformation` | `boolean` | Menunjukkan apakah file konten harus ditransformasi secara otomatis (misalnya dari Markdown ke HTML). Default: `false` | `true` | Berguna untuk memproses field Markdown melalui @intlayer/markdown. |
|
|
826
|
+
|
|
827
|
+
**Contoh `fill`**:
|
|
828
|
+
|
|
829
|
+
```ts
|
|
830
|
+
dictionary: {
|
|
831
|
+
fill: {
|
|
832
|
+
en: '/locales/en/{{key}}.content.json',
|
|
833
|
+
fr: ({ key }) => `/locales/fr/${key}.content.json`,
|
|
834
|
+
es: false,
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
```
|
|
838
|
+
|
|
839
|
+
---
|
|
840
|
+
|
|
841
|
+
### Konfigurasi AI (AI Configuration)
|
|
842
|
+
|
|
843
|
+
Mendefinisikan pengaturan untuk fitur berkekuatan AI Intlayer, seperti pembuatan terjemahan.
|
|
844
|
+
|
|
845
|
+
| Field | Tipe | Deskripsi | Contoh | Catatan |
|
|
846
|
+
| -------------------- | ---------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
|
847
|
+
| `provider` | `string` | Penyedia AI yang akan digunakan. | `'openai'`, `'anthropic'`, `'googlevertex'` | |
|
|
848
|
+
| `model` | `string` | Model AI yang akan digunakan. | `'gpt-4o'`, `'claude-3-5-sonnet-20240620'` | |
|
|
849
|
+
| `apiKey` | `string` | Kunci API untuk penyedia yang dipilih. | `process.env.OPENAI_API_KEY` | |
|
|
850
|
+
| `applicationContext` | `string` | Konteks tambahan tentang aplikasi Anda untuk meningkatkan akurasi terjemahan AI. | `'Sebuah platform pembelajaran untuk anak-anak.'` | |
|
|
851
|
+
| `baseURL` | `string` | URL dasar opsional untuk panggilan API. | | Berguna jika Anda menggunakan proksi atau penyebaran AI lokal. |
|
|
852
|
+
| `dataSerialization` | `'json' | 'toon'` | Mendefinisikan bagaimana data dikirim ke AI. Default: `'json'` | `'json'` | `'json'`: lebih kuat dan akurat. `'toon'`: menggunakan lebih sedikit token tetapi mungkin kurang stabil. |
|
|
853
|
+
|
|
854
|
+
---
|
|
855
|
+
|
|
856
|
+
### Konfigurasi Build (Build Configuration)
|
|
857
|
+
|
|
858
|
+
Pengaturan untuk proses build dan optimasi Intlayer.
|
|
859
|
+
|
|
860
|
+
| Field | Tipe | Deskripsi | Contoh | Catatan |
|
|
861
|
+
| -------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------- | ------ | ------- |
|
|
862
|
+
| `mode` | `'auto' | 'manual'` | Menunjukkan apakah Intlayer harus berjalan secara otomatis selama langkah-langkah pre-build aplikasi. Default: `'auto'` | | |
|
|
863
|
+
| `optimize` | `boolean` | Menunjukkan apakah kamus yang dikompilasi harus dioptimalkan untuk runtime. Default: `true` dalam produksi | | |
|
|
864
|
+
| `outputFormat` | `('cjs' | 'esm')[]` | Format output untuk file kamus yang dihasilkan. Default: `['cjs', 'esm']` | | |
|
|
865
|
+
| `checkTypes` | `boolean` | Menunjukkan apakah Intlayer harus memeriksa tipe dalam file yang dihasilkan. Default: `false` | | |
|
|
866
|
+
|
|
867
|
+
---
|
|
868
|
+
|
|
869
|
+
### Konfigurasi Sistem (System Configuration)
|
|
870
|
+
|
|
871
|
+
Pengaturan ini untuk penggunaan tingkat lanjut dan konfigurasi internal Intlayer.
|
|
872
|
+
|
|
873
|
+
| Field | Tipe | Deskripsi | Default |
|
|
874
|
+
| ------------------------- | -------- | -------------------------------------------- | --------------------------------- |
|
|
875
|
+
| `dictionariesDir` | `string` | Direktori kamus yang dikompilasi. | `'.intlayer/dictionary'` |
|
|
876
|
+
| `moduleAugmentationDir` | `string` | Direktori augmentasi modul TypeScript. | `'.intlayer/types'` |
|
|
877
|
+
| `unmergedDictionariesDir` | `string` | Direktori kamus yang belum digabungkan. | `'.intlayer/unmerged_dictionary'` |
|
|
878
|
+
| `typesDir` | `string` | Direktori tipe yang dihasilkan. | `'.intlayer/types'` |
|
|
879
|
+
| `mainDir` | `string` | Direktori file Intlayer utama. | `'.intlayer/main'` |
|
|
880
|
+
| `configDir` | `string` | Direktori file konfigurasi yang dikompilasi. | `'.intlayer/config'` |
|
|
881
|
+
| `cacheDir` | `string` | Direktori file cache. | `'.intlayer/cache'` |
|
|
985
882
|
|
|
986
|
-
|
|
883
|
+
---
|
|
884
|
+
|
|
885
|
+
### Konfigurasi Kompiler (Compiler Configuration)
|
|
987
886
|
|
|
988
|
-
|
|
887
|
+
Pengaturan untuk kompiler Intlayer (`intlayer compiler`).
|
|
989
888
|
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
- **title**
|
|
998
|
-
- **tags**
|
|
999
|
-
- **version**
|
|
889
|
+
| Field | Tipe | Deskripsi | Default |
|
|
890
|
+
| --------------------- | ------------------------ | ----------------------------------------------------------------------------------- | ------- |
|
|
891
|
+
| `enabled` | `boolean` | Menunjukkan apakah kompiler aktif. | `false` |
|
|
892
|
+
| `output` | `string | Function` | Jalur output untuk kamus yang diekstrak. | |
|
|
893
|
+
| `saveComponents` | `boolean` | Menunjukkan apakah file sumber asli harus ditimpa dengan versi yang ditransformasi. | `false` |
|
|
894
|
+
| `noMetadata` | `boolean` | Jika `true`, kompiler tidak akan menyertakan metadata dalam file yang dihasilkan. | `false` |
|
|
895
|
+
| `dictionaryKeyPrefix` | `string` | Awalan kunci kamus opsional. | `''` |
|
|
1000
896
|
|
|
1001
897
|
---
|
|
1002
898
|
|
|
1003
|
-
### Konfigurasi Logger
|
|
1004
|
-
|
|
1005
|
-
Pengaturan
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
- _Default_: `default`
|
|
1012
|
-
- _Deskripsi_: Menunjukkan mode dari logger.
|
|
1013
|
-
- _Opsi_: `default`, `verbose`, `disabled`
|
|
1014
|
-
- _Contoh_: `default`
|
|
1015
|
-
- _Catatan_: Mode dari logger. Mode verbose akan mencatat lebih banyak informasi, tetapi dapat digunakan untuk tujuan debugging. Mode disabled akan menonaktifkan logger.
|
|
1016
|
-
|
|
1017
|
-
- **prefix**:
|
|
1018
|
-
- _Tipe_: `string`
|
|
1019
|
-
- _Default_: `'[intlayer] '`
|
|
1020
|
-
- _Deskripsi_: Prefix dari logger.
|
|
1021
|
-
- _Contoh_: `'[my custom prefix] '`
|
|
1022
|
-
- _Catatan_: Prefix dari logger.
|
|
1023
|
-
|
|
1024
|
-
### Konfigurasi AI
|
|
1025
|
-
|
|
1026
|
-
Pengaturan yang mengontrol fitur AI dari Intlayer, termasuk provider, model, dan API key.
|
|
1027
|
-
|
|
1028
|
-
Konfigurasi ini bersifat opsional jika Anda terdaftar di [Intlayer Dashboard](https://app.intlayer.org/project) menggunakan access key. Intlayer akan secara otomatis mengelola solusi AI yang paling efisien dan hemat biaya untuk kebutuhan Anda. Menggunakan opsi default memastikan pemeliharaan jangka panjang yang lebih baik karena Intlayer terus diperbarui untuk menggunakan model yang paling relevan.
|
|
1029
|
-
|
|
1030
|
-
Jika Anda lebih memilih menggunakan API key sendiri atau model tertentu, Anda dapat mendefinisikan konfigurasi AI kustom Anda.
|
|
1031
|
-
Konfigurasi AI ini akan digunakan secara global di seluruh lingkungan Intlayer Anda. Perintah CLI akan menggunakan pengaturan ini sebagai default untuk perintah (misalnya `fill`), serta SDK, Visual Editor, dan CMS. Anda dapat menimpa nilai default ini untuk kasus penggunaan tertentu dengan menggunakan parameter perintah.
|
|
1032
|
-
|
|
1033
|
-
Intlayer mendukung beberapa provider AI untuk fleksibilitas dan pilihan yang lebih baik. Provider yang saat ini didukung adalah:
|
|
1034
|
-
|
|
1035
|
-
- **OpenAI** (default)
|
|
1036
|
-
- **Anthropic Claude**
|
|
1037
|
-
- **Mistral AI**
|
|
1038
|
-
- **DeepSeek**
|
|
1039
|
-
- **Google Gemini**
|
|
1040
|
-
- **Meta Llama**
|
|
1041
|
-
- **Ollama**
|
|
1042
|
-
- **OpenRouter**
|
|
1043
|
-
- **Alibaba Cloud**
|
|
1044
|
-
- **Fireworks**
|
|
1045
|
-
- **Hugging Face**
|
|
1046
|
-
- **Groq**
|
|
1047
|
-
- **Amazon Bedrock**
|
|
1048
|
-
- **Google AI Studio**
|
|
1049
|
-
- **Google Vertex**
|
|
1050
|
-
- **Together.ai**
|
|
1051
|
-
- **ollama**
|
|
1052
|
-
|
|
1053
|
-
#### Properti
|
|
1054
|
-
|
|
1055
|
-
- **provider**:
|
|
1056
|
-
- _Tipe_: `string`
|
|
1057
|
-
- _Default_: `'openai'`
|
|
1058
|
-
- _Deskripsi_: Provider yang digunakan untuk fitur AI dari Intlayer.
|
|
1059
|
-
- _Opsi_: `'openai'`, `'anthropic'`, `'mistral'`, `'deepseek'`, `'gemini'`, `'ollama'`, `'openrouter'`, `'alibaba'`, `'fireworks'`, `'groq'`, `'huggingface'`, `'bedrock'`, `'googleaistudio'`, `'googlevertex'`, `'togetherai'`
|
|
1060
|
-
- _Contoh_: `'anthropic'`
|
|
1061
|
-
- _Catatan_: Penyedia yang berbeda mungkin memerlukan kunci API yang berbeda dan memiliki model harga yang berbeda.
|
|
1062
|
-
|
|
1063
|
-
- **model**:
|
|
1064
|
-
- _Tipe_: `string`
|
|
1065
|
-
- _Default_: Tidak ada
|
|
1066
|
-
- _Deskripsi_: Model yang digunakan untuk fitur AI di Intlayer.
|
|
1067
|
-
- _Contoh_: `'gpt-4o-2024-11-20'`
|
|
1068
|
-
- _Catatan_: Model spesifik yang digunakan bervariasi tergantung penyedia.
|
|
1069
|
-
|
|
1070
|
-
- **temperature**:
|
|
1071
|
-
- _Tipe_: `number`
|
|
1072
|
-
- _Default_: Tidak ada
|
|
1073
|
-
- _Deskripsi_: Temperature mengontrol tingkat keacakan respons AI.
|
|
1074
|
-
- _Contoh_: `0.1`
|
|
1075
|
-
- _Catatan_: Temperature yang lebih tinggi akan membuat AI lebih kreatif dan kurang dapat diprediksi.
|
|
1076
|
-
|
|
1077
|
-
- **apiKey**:
|
|
1078
|
-
- _Tipe_: `string`
|
|
1079
|
-
- _Default_: Tidak ada
|
|
1080
|
-
- _Deskripsi_: Kunci API Anda untuk penyedia yang dipilih.
|
|
1081
|
-
- _Contoh_: `process.env.OPENAI_API_KEY`
|
|
1082
|
-
- _Catatan_: Penting: Kunci API harus dijaga kerahasiaannya dan tidak dibagikan secara publik. Pastikan untuk menyimpannya di lokasi yang aman, seperti variabel lingkungan.
|
|
1083
|
-
|
|
1084
|
-
- **applicationContext**:
|
|
1085
|
-
- _Tipe_: `string`
|
|
1086
|
-
- _Default_: Tidak ada
|
|
1087
|
-
- _Deskripsi_: Memberikan konteks tambahan tentang aplikasi Anda kepada model AI, membantu menghasilkan terjemahan yang lebih akurat dan sesuai konteks. Ini dapat mencakup informasi tentang domain aplikasi Anda, audiens target, nada, atau terminologi khusus.
|
|
1088
|
-
|
|
1089
|
-
- **baseURL**:
|
|
1090
|
-
- _Tipe_: `string`
|
|
1091
|
-
- _Default_: Tidak ada
|
|
1092
|
-
- _Deskripsi_: URL dasar untuk API AI.
|
|
1093
|
-
- _Contoh_: `'https://api.openai.com/v1'`
|
|
1094
|
-
- _Catatan_: Dapat digunakan untuk menunjuk ke endpoint API AI lokal atau kustom.
|
|
1095
|
-
|
|
1096
|
-
- **dataSerialization**:
|
|
1097
|
-
- _Tipe_: `'json' | 'toon'`
|
|
1098
|
-
- _Default_: `'json'`
|
|
1099
|
-
- _Deskripsi_: Format serialisasi data yang digunakan untuk fitur AI Intlayer.
|
|
1100
|
-
- _Contoh_: `'toon'`
|
|
1101
|
-
- _Catatan_: `json`: Standar, andal; menggunakan lebih banyak token. `toon`: Lebih sedikit token, kurang konsisten dibandingkan JSON.
|
|
1102
|
-
|
|
1103
|
-
### Konfigurasi Build
|
|
1104
|
-
|
|
1105
|
-
Pengaturan yang mengontrol bagaimana Intlayer mengoptimalkan dan membangun internasionalisasi aplikasi Anda.
|
|
1106
|
-
|
|
1107
|
-
Opsi build berlaku untuk plugin `@intlayer/babel` dan `@intlayer/swc`.
|
|
1108
|
-
|
|
1109
|
-
> Dalam mode pengembangan, Intlayer menggunakan impor statis untuk kamus agar pengalaman pengembangan menjadi lebih sederhana.
|
|
1110
|
-
|
|
1111
|
-
> Saat dioptimalkan, Intlayer akan mengganti panggilan kamus untuk mengoptimalkan chunking, sehingga bundel akhir hanya mengimpor kamus yang benar-benar digunakan.
|
|
1112
|
-
|
|
1113
|
-
#### Properti
|
|
1114
|
-
|
|
1115
|
-
- **mode**:
|
|
1116
|
-
- _Tipe_: `'auto' | 'manual'`
|
|
1117
|
-
- _Default_: `'auto'`
|
|
1118
|
-
- _Deskripsi_: Mengontrol mode build.
|
|
1119
|
-
- _Contoh_: `'manual'`
|
|
1120
|
-
- _Catatan_: Jika 'auto', build akan diaktifkan secara otomatis saat aplikasi dibangun.
|
|
1121
|
-
- _Catatan_: Jika 'manual', build akan disetel hanya ketika perintah build dieksekusi.
|
|
1122
|
-
- _Catatan_: Dapat digunakan untuk menonaktifkan build kamus, misalnya ketika eksekusi di lingkungan Node.js harus dihindari.
|
|
1123
|
-
|
|
1124
|
-
- **optimize**:
|
|
1125
|
-
- _Tipe_: `boolean`
|
|
1126
|
-
- _Default_: `process.env.NODE_ENV === 'production'`
|
|
1127
|
-
- _Deskripsi_: Mengontrol apakah build harus dioptimalkan.
|
|
1128
|
-
- _Contoh_: `true`
|
|
1129
|
-
- _Catatan_: Saat diaktifkan, Intlayer akan mengganti semua panggilan kamus untuk mengoptimalkan chunking. Dengan begitu, bundel akhir hanya akan mengimpor kamus yang digunakan. Semua impor akan tetap sebagai impor statis untuk menghindari pemrosesan async saat memuat kamus.
|
|
1130
|
-
- _Catatan_: Intlayer akan mengganti semua panggilan `useIntlayer` dengan mode yang ditentukan oleh opsi `importMode` dan `getIntlayer` dengan `getDictionary`.
|
|
1131
|
-
- _Catatan_: Opsi ini bergantung pada plugin `@intlayer/babel` dan `@intlayer/swc`.
|
|
1132
|
-
- _Catatan_: Pastikan semua kunci dideklarasikan secara statis dalam panggilan `useIntlayer`. Contoh: `useIntlayer('navbar')`.
|
|
1133
|
-
|
|
1134
|
-
- **checkTypes**:
|
|
1135
|
-
- _Tipe_: `boolean`
|
|
1136
|
-
- _Default_: `false`
|
|
1137
|
-
- _Deskripsi_: Menunjukkan apakah build harus memeriksa tipe TypeScript dan mencatat kesalahan.
|
|
1138
|
-
- _Catatan_: Hal ini dapat memperlambat proses build.
|
|
1139
|
-
|
|
1140
|
-
- **outputFormat**:
|
|
1141
|
-
- _Tipe_: `'esm' | 'cjs'`
|
|
1142
|
-
- _Default_: `'esm'`
|
|
1143
|
-
- _Deskripsi_: Mengontrol format output dari kamus.
|
|
1144
|
-
- _Contoh_: `'cjs'`
|
|
1145
|
-
- _Catatan_: Format output dari kamus.
|
|
1146
|
-
|
|
1147
|
-
- **traversePattern**:
|
|
1148
|
-
- _Tipe_: `string[]`
|
|
1149
|
-
- _Default_: `['**\/*.{js,ts,mjs,cjs,jsx,tsx}', '!**\/node_modules/**']`
|
|
1150
|
-
- _Deskripsi_: Pola yang menentukan file mana yang harus dilalui selama optimasi.
|
|
1151
|
-
- _Contoh_: `['src/**\/*.{ts,tsx}', '../ui-library/**\/*.{ts,tsx}', '!**/node_modules/**']`
|
|
1152
|
-
- _Catatan_: Gunakan ini untuk membatasi optimasi hanya pada file kode yang relevan dan meningkatkan performa build.
|
|
1153
|
-
- _Catatan_: Opsi ini akan diabaikan jika `optimize` dinonaktifkan.
|
|
1154
|
-
- _Catatan_: Gunakan pola glob.
|
|
899
|
+
### Konfigurasi Logger (Logger Configuration)
|
|
900
|
+
|
|
901
|
+
Pengaturan untuk menyesuaikan output log Intlayer.
|
|
902
|
+
|
|
903
|
+
| Field | Tipe | Deskripsi | Default |
|
|
904
|
+
| -------- | ---------------------------------------------- | ----------------------- | -------------- |
|
|
905
|
+
| `mode` | `'default' | 'verbose' | 'disabled'` | Mode logging. | `'default'` |
|
|
906
|
+
| `prefix` | `string` | Awalan untuk pesan log. | `'[intlayer]'` |
|
|
1155
907
|
|
|
1156
908
|
---
|
|
1157
909
|
|
|
1158
|
-
###
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
- **dictionaryKeyPrefix**:
|
|
1172
|
-
- _Tipe_: `string`
|
|
1173
|
-
- _Default_: `''`
|
|
1174
|
-
- _Deskripsi_: Awalan untuk kunci kamus yang diekstrak.
|
|
1175
|
-
- _Contoh_: `'my-key-'`
|
|
1176
|
-
- _Catatan_: Saat kamus diekstrak, kunci dihasilkan berdasarkan nama file. Awalan ini ditambahkan ke kunci yang dihasilkan untuk mencegah konflik.
|
|
1177
|
-
|
|
1178
|
-
- **saveComponents**:
|
|
1179
|
-
- _Tipe_: `boolean`
|
|
1180
|
-
- _Default_: `false`
|
|
1181
|
-
- _Deskripsi_: Menunjukkan apakah komponen harus disimpan setelah diubah.
|
|
1182
|
-
- _Catatan_: Jika true, kompiler akan mengganti file asli dengan file yang diubah. Dengan begitu, kompiler hanya dapat dijalankan sekali untuk mengubah aplikasi, dan kemudian dapat dihapus.
|
|
1183
|
-
|
|
1184
|
-
- **transformPattern**:
|
|
1185
|
-
- _Tipe_: `string | string[]`
|
|
1186
|
-
- _Default_: `['**/*.{ts,tsx,jsx,js,cjs,mjs,svelte,vue}', '!**/node_modules/**']`
|
|
1187
|
-
- _Deskripsi_: Pola yang menentukan file mana yang harus dilalui selama optimasi.
|
|
1188
|
-
- _Contoh_: `['src/**/*.{ts,tsx}', '!**/node_modules/**']`
|
|
1189
|
-
- _Catatan_: Gunakan ini untuk membatasi optimasi hanya pada file kode yang relevan dan meningkatkan performa build.
|
|
1190
|
-
|
|
1191
|
-
- **excludePattern**:
|
|
1192
|
-
- _Tipe_: `string | string[]`
|
|
1193
|
-
- _Default_: `['**/node_modules/**']`
|
|
1194
|
-
- _Deskripsi_: Pola yang menentukan file mana yang harus dikecualikan selama optimasi.
|
|
1195
|
-
- _Contoh_: `['**/node_modules/**', '!**/node_modules/react/**']`
|
|
1196
|
-
|
|
1197
|
-
- **output**:
|
|
1198
|
-
- _Tipe_: `FilePathPattern`
|
|
1199
|
-
- _Default_: `undefined`
|
|
1200
|
-
- _Deskripsi_: Mendefinisikan jalur file output. Menggantikan `outputDir`. Menangani variabel dinamis melalui string template atau fungsi. Variabel yang didukung: `{{fileName}}`, `{{key}}`, `{{locale}}`, `{{extension}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{format}}`, `{{componentFormat}}`, dan `{{componentDirPath}}`.
|
|
1201
|
-
- _Catatan_: Jalur yang dimulai dengan `./` diselesaikan relatif terhadap direktori komponen. Jalur yang dimulai dengan `/` diselesaikan relatif terhadap root proyek (`baseDir`).
|
|
1202
|
-
- _Catatan_: Menyertakan variabel `{{locale}}` dalam jalur akan mengaktifkan pembuatan kamus yang dipisahkan berdasarkan bahasa.
|
|
1203
|
-
- _Contoh_:
|
|
1204
|
-
- **Buat file multi-bahasa di samping komponen**:
|
|
1205
|
-
- String: `'./{{fileName}}{{extension}}'`
|
|
1206
|
-
- Fungsi: `({ fileName, extension }) => \`./${fileName}${extension}\``
|
|
1207
|
-
|
|
1208
|
-
- **Output file JSON terpusat per bahasa**:
|
|
1209
|
-
- String: `'/locales/{{locale}}/{{key}}.content.json'`
|
|
1210
|
-
- Fungsi: `({ key, locale }) => \`/locales/${locale}/${key}.content.json\``
|
|
1211
|
-
|
|
1212
|
-
- **noMetadata**:
|
|
1213
|
-
- _Tipe_: `boolean`
|
|
1214
|
-
- _Default_: `false`
|
|
1215
|
-
- _Deskripsi_: Menunjukkan apakah metadata harus disimpan dalam file. Jika benar, kompiler tidak akan menyimpan metadata kamus (kunci, pembungkus konten).
|
|
1216
|
-
- _Catatan_: Berguna jika digunakan dengan plugin `loadJSON`. Berguna untuk output JSON i18next atau ICU MessageFormat per bahasa.
|
|
1217
|
-
- _Contoh_:
|
|
1218
|
-
Jika `true` :
|
|
1219
|
-
|
|
1220
|
-
```json
|
|
1221
|
-
{
|
|
1222
|
-
"key": "value"
|
|
1223
|
-
}
|
|
1224
|
-
```
|
|
1225
|
-
|
|
1226
|
-
Jika `false`:
|
|
1227
|
-
|
|
1228
|
-
```json
|
|
1229
|
-
{
|
|
1230
|
-
"key": "value",
|
|
1231
|
-
"content": {
|
|
1232
|
-
"key": "value"
|
|
1233
|
-
}
|
|
1234
|
-
}
|
|
1235
|
-
```
|
|
910
|
+
### Schema Kustom (Custom Schemas)
|
|
911
|
+
|
|
912
|
+
| Field | Tipe | Deskripsi |
|
|
913
|
+
| --------- | --------------------------- | ---------------------------------------------------------------------------- |
|
|
914
|
+
| `schemas` | `Record<string, ZodSchema>` | Memungkinkan pendefinisian schema Zod untuk memvalidasi struktur kamus Anda. |
|
|
915
|
+
|
|
916
|
+
---
|
|
917
|
+
|
|
918
|
+
### Plugin
|
|
919
|
+
|
|
920
|
+
| Field | Tipe | Deskripsi |
|
|
921
|
+
| --------- | ------------------ | -------------------------------------------- |
|
|
922
|
+
| `plugins` | `IntlayerPlugin[]` | Daftar plugin Intlayer yang akan diaktifkan. |
|