@intlayer/docs 8.1.6 → 8.1.7

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 (81) hide show
  1. package/README.md +18 -9
  2. package/dist/cjs/generated/docs.entry.cjs +1 -1
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/generated/docs.entry.mjs +1 -1
  5. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  6. package/dist/types/generated/docs.entry.d.ts +2 -0
  7. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  8. package/docs/ar/compiler.md +26 -0
  9. package/docs/ar/intlayer_with_nextjs_compiler.md +481 -0
  10. package/docs/ar/intlayer_with_vite+react_compiler.md +369 -0
  11. package/docs/ar/readme.md +138 -110
  12. package/docs/de/compiler.md +26 -0
  13. package/docs/de/intlayer_with_nextjs_compiler.md +481 -0
  14. package/docs/de/intlayer_with_vite+react_compiler.md +369 -0
  15. package/docs/de/readme.md +152 -124
  16. package/docs/en/compiler.md +27 -0
  17. package/docs/en/intlayer_with_nextjs_compiler.md +481 -0
  18. package/docs/en/intlayer_with_vite+react_compiler.md +368 -0
  19. package/docs/en/readme.md +129 -105
  20. package/docs/en-GB/compiler.md +26 -0
  21. package/docs/en-GB/intlayer_with_nextjs_compiler.md +481 -0
  22. package/docs/en-GB/intlayer_with_vite+react_compiler.md +369 -0
  23. package/docs/en-GB/readme.md +134 -108
  24. package/docs/es/compiler.md +26 -0
  25. package/docs/es/intlayer_with_nextjs_compiler.md +481 -0
  26. package/docs/es/intlayer_with_vite+react_compiler.md +369 -0
  27. package/docs/es/readme.md +149 -121
  28. package/docs/fr/compiler.md +26 -0
  29. package/docs/fr/intlayer_with_nextjs_compiler.md +481 -0
  30. package/docs/fr/intlayer_with_vite+react_compiler.md +369 -0
  31. package/docs/fr/readme.md +150 -122
  32. package/docs/hi/compiler.md +26 -0
  33. package/docs/hi/intlayer_with_nextjs_compiler.md +481 -0
  34. package/docs/hi/intlayer_with_vite+react_compiler.md +370 -0
  35. package/docs/hi/readme.md +153 -125
  36. package/docs/id/compiler.md +26 -0
  37. package/docs/id/intlayer_with_nextjs_compiler.md +481 -0
  38. package/docs/id/intlayer_with_vite+react_compiler.md +369 -0
  39. package/docs/id/readme.md +133 -105
  40. package/docs/it/compiler.md +26 -0
  41. package/docs/it/intlayer_with_nextjs_compiler.md +481 -0
  42. package/docs/it/intlayer_with_vite+react_compiler.md +374 -0
  43. package/docs/it/readme.md +155 -127
  44. package/docs/ja/compiler.md +26 -0
  45. package/docs/ja/intlayer_with_nextjs_compiler.md +481 -0
  46. package/docs/ja/intlayer_with_vite+react_compiler.md +369 -0
  47. package/docs/ja/readme.md +152 -126
  48. package/docs/ko/compiler.md +26 -0
  49. package/docs/ko/intlayer_with_nextjs_compiler.md +481 -0
  50. package/docs/ko/intlayer_with_vite+react_compiler.md +369 -0
  51. package/docs/ko/readme.md +154 -126
  52. package/docs/pl/compiler.md +26 -0
  53. package/docs/pl/intlayer_with_nextjs_compiler.md +481 -0
  54. package/docs/pl/intlayer_with_vite+react_compiler.md +369 -0
  55. package/docs/pl/readme.md +134 -106
  56. package/docs/pt/compiler.md +27 -1
  57. package/docs/pt/intlayer_with_nextjs_compiler.md +481 -0
  58. package/docs/pt/intlayer_with_vite+react_compiler.md +374 -0
  59. package/docs/pt/readme.md +154 -126
  60. package/docs/ru/compiler.md +26 -0
  61. package/docs/ru/intlayer_with_nextjs_compiler.md +481 -0
  62. package/docs/ru/intlayer_with_vite+react_compiler.md +369 -0
  63. package/docs/ru/readme.md +137 -109
  64. package/docs/tr/compiler.md +26 -0
  65. package/docs/tr/intlayer_with_nextjs_compiler.md +481 -0
  66. package/docs/tr/intlayer_with_vite+react_compiler.md +375 -0
  67. package/docs/tr/readme.md +139 -111
  68. package/docs/uk/compiler.md +26 -0
  69. package/docs/uk/intlayer_with_nextjs_compiler.md +481 -0
  70. package/docs/uk/intlayer_with_vite+react_compiler.md +369 -0
  71. package/docs/uk/readme.md +133 -109
  72. package/docs/vi/compiler.md +27 -1
  73. package/docs/vi/intlayer_with_nextjs_compiler.md +481 -0
  74. package/docs/vi/intlayer_with_vite+react_compiler.md +369 -0
  75. package/docs/vi/readme.md +138 -110
  76. package/docs/zh/compiler.md +26 -0
  77. package/docs/zh/intlayer_with_nextjs_compiler.md +481 -0
  78. package/docs/zh/intlayer_with_vite+react_compiler.md +372 -0
  79. package/docs/zh/readme.md +148 -120
  80. package/package.json +7 -8
  81. package/src/generated/docs.entry.ts +40 -0
@@ -0,0 +1,369 @@
1
+ ---
2
+ createdAt: 2024-03-07
3
+ updatedAt: 2025-12-30
4
+ title: Vite dan React i18n - Ubah aplikasi yang ada menjadi aplikasi multibahasa (panduan i18n 2026)
5
+ description: Temukan cara membuat aplikasi Vite dan React Anda yang sudah ada menjadi multibahasa menggunakan Intlayer Compiler. Ikuti dokumentasi untuk menginternasionalisasi (i18n) dan menerjemahkannya dengan AI.
6
+ keywords:
7
+ - Internasionalisasi
8
+ - Dokumentasi
9
+ - Intlayer
10
+ - Vite
11
+ - React
12
+ - Kompilator
13
+ - AI
14
+ slugs:
15
+ - doc
16
+ - lingkungan
17
+ - vite-dan-react
18
+ - kompilator
19
+ - AI
20
+ applicationTemplate: https://github.com/aymericzip/intlayer-vite-react-template
21
+ youtubeVideo: https://www.youtube.com/watch?v=dS9L7uJeak4
22
+ history:
23
+ - version: 8.1.6
24
+ date: 2026-02-23
25
+ changes: Rilis awal
26
+ ---
27
+
28
+ # Cara membuat multibahasa (i18n) pada aplikasi Vite dan React yang sudah ada setelahnya (panduan i18n 2026)
29
+
30
+ <Tabs defaultTab="video">
31
+ <Tab label="Video" value="video">
32
+
33
+ <iframe title="Solusi i18n terbaik untuk Vite dan React? Temukan Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?si=VaKmrYMmXjo3xpk2"/>
34
+
35
+ </Tab>
36
+ <Tab label="Kode" value="code">
37
+
38
+ <iframe
39
+ src="https://stackblitz.com/github/aymericzip/intlayer-vite-react-template?embed=1&ctl=1&file=intlayer.config.ts"
40
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
41
+ title="Demo CodeSandbox - Cara Menginternasionalisasi aplikasi Anda menggunakan Intlayer"
42
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
43
+ loading="lazy"
44
+ />
45
+
46
+ </Tab>
47
+ </Tabs>
48
+
49
+ Lihat [Templat Aplikasi](https://github.com/aymericzip/intlayer-vite-react-template) di GitHub.
50
+
51
+ ## Daftar Isi
52
+
53
+ <TOC/>
54
+
55
+ ## Mengapa sulit untuk menginternasionalisasi aplikasi yang sudah ada?
56
+
57
+ Jika Anda pernah mencoba menambahkan banyak bahasa ke aplikasi yang dibuat hanya untuk satu bahasa, Anda pasti tahu betapa sulitnya itu. Bukan hanya "sulit"—tetapi membosankan. Anda harus menyisir setiap file, memburu setiap untaian teks, dan memindahkannya ke file kamus terpisah.
58
+
59
+ Kemudian datanglah bagian yang berisiko: mengganti semua teks tersebut dengan hook kode tanpa merusak tata letak atau logika Anda. Ini adalah jenis pekerjaan yang menghentikan pengembangan fitur baru selama berminggu-minggu dan terasa seperti refactoring tanpa akhir.
60
+
61
+ ## Apa itu Intlayer Compiler?
62
+
63
+ **Intlayer Compiler** dibuat untuk melewati pekerjaan manual yang membosankan itu. Alih-alih Anda mengekstrak string secara manual, kompilator melakukannya untuk Anda. Ia memindai kode Anda, menemukan teks, dan menggunakan AI untuk menghasilkan kamus di balik layar.
64
+ Kemudian, ia memodifikasi kode Anda selama proses build untuk menyuntikkan hook i18n yang diperlukan. Pada dasarnya, Anda terus menulis aplikasi seolah-olah hanya satu bahasa, dan kompilator menangani transformasi multibahasa secara otomatis.
65
+
66
+ > Dok Kompilator: [https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/compiler.md](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/compiler.md)
67
+
68
+ ### Batasan
69
+
70
+ Karena kompilator melakukan analisis dan transformasi kode (memasukkan hook dan menghasilkan kamus) pada **waktu kompilasi**, hal ini dapat **memperlambat proses build** aplikasi Anda.
71
+
72
+ Untuk mengurangi dampak ini selama pengembangan, Anda dapat mengonfigurasi kompilator agar berjalan dalam mode [`'build-only'`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md) atau menonaktifkannya saat tidak diperlukan.
73
+
74
+ ---
75
+
76
+ ## Panduan Langkah-demi-Langkah untuk Menyiapkan Intlayer dalam Aplikasi Vite dan React
77
+
78
+ ### Langkah 1: Instal Dependensi
79
+
80
+ Instal paket-paket yang diperlukan menggunakan npm:
81
+
82
+ ```bash packageManager="npm"
83
+ npm install intlayer react-intlayer
84
+ npm install vite-intlayer --save-dev
85
+ npx intlayer init
86
+ ```
87
+
88
+ ```bash packageManager="pnpm"
89
+ pnpm add intlayer react-intlayer
90
+ pnpm add vite-intlayer --save-dev
91
+ pnpm intlayer init
92
+ ```
93
+
94
+ ```bash packageManager="yarn"
95
+ yarn add intlayer react-intlayer
96
+ yarn add vite-intlayer --save-dev
97
+ yarn intlayer init
98
+ ```
99
+
100
+ ```bash packageManager="bun"
101
+ bun add intlayer react-intlayer
102
+ bun add vite-intlayer --dev
103
+ bunx intlayer init
104
+ ```
105
+
106
+ - **intlayer**
107
+ Paket inti yang menyediakan alat internasionalisasi untuk manajemen konfigurasi, terjemahan, [deklarasi konten](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md), transpilasi, dan [perintah CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/index.md).
108
+
109
+ - **react-intlayer**
110
+ Paket yang mengintegrasikan Intlayer dengan aplikasi React. Ini menyediakan penyedia konteks dan hook untuk internasionalisasi React.
111
+
112
+ - **vite-intlayer**
113
+ Termasuk plugin Vite untuk mengintegrasikan Intlayer dengan [Vite bundler](https://vite.dev/guide/why.html#why-bundle-for-production), serta middleware untuk mendeteksi lokal pilihan pengguna, mengelola cookie, dan menangani pengalihan URL.
114
+
115
+ ### Langkah 2: Konfigurasi Proyek Anda
116
+
117
+ Buat file konfigurasi untuk mengatur bahasa aplikasi Anda:
118
+
119
+ ```typescript fileName="intlayer.config.ts"
120
+ import { Locales, type IntlayerConfig } from "intlayer";
121
+
122
+ const config: IntlayerConfig = {
123
+ internationalization: {
124
+ locales: [Locales.ENGLISH, Locales.INDONESIAN, Locales.FRENCH],
125
+ defaultLocale: Locales.ENGLISH,
126
+ },
127
+ compiler: {
128
+ enabled: true, // Dapat diatur ke 'build-only' untuk membatasi dampak pada mode dev
129
+ outputDir: "i18n",
130
+ dictionaryKeyPrefix: "", // Tidak ada awalan comp-
131
+ },
132
+ ai: {
133
+ provider: "openai",
134
+ model: "gpt-5-mini",
135
+ apiKey: process.env.OPEN_AI_API_KEY,
136
+ applicationContext: "Aplikasi ini adalah aplikasi peta", // Catatan: Anda dapat menyesuaikan deskripsi aplikasi ini
137
+ },
138
+ };
139
+
140
+ export default config;
141
+ ```
142
+
143
+ > **Catatan**: Pastikan Anda telah mengatur `OPEN_AI_API_KEY` di variabel lingkungan Anda.
144
+
145
+ > Melalui file konfigurasi ini, Anda dapat mengatur URL yang dilokalkan, pengalihan middleware, nama cookie, lokasi dan ekstensi deklarasi konten Anda, menonaktifkan log Intlayer di konsol, dan banyak lagi. Untuk daftar lengkap parameter yang tersedia, lihat [dokumentasi konfigurasi](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md).
146
+
147
+ ### Langkah 3: Integrasikan Intlayer dalam Konfigurasi Vite Anda
148
+
149
+ Tambahkan plugin intlayer ke dalam konfigurasi Anda.
150
+
151
+ ```typescript fileName="vite.config.ts"
152
+ import { defineConfig } from "vite";
153
+ import react from "@vitejs/plugin-react-swc";
154
+ import { intlayer, intlayerCompiler } from "vite-intlayer";
155
+
156
+ // https://vitejs.dev/config/
157
+ export default defineConfig({
158
+ plugins: [react(), intlayer(), intlayerCompiler()],
159
+ });
160
+ ```
161
+
162
+ > Plugin Vite `intlayer()` digunakan untuk mengintegrasikan Intlayer dengan Vite. Ini memastikan pembangunan file deklarasi konten dan memantaunya dalam mode pengembangan. Ini mendefinisikan variabel lingkungan Intlayer dalam aplikasi Vite. Selain itu, ia menyediakan alias untuk mengoptimalkan kinerja.
163
+
164
+ > Plugin Vite `intlayerCompiler()` digunakan untuk mengekstrak konten dari komponen dan menulis file `.content`.
165
+
166
+ ### Langkah 4: Kompilasi kode Anda
167
+
168
+ Cukup tulis komponen Anda dengan string yang dikodekan secara keras dalam lokal default Anda. Kompilator menangani sisanya.
169
+
170
+ Contoh bagaimana tampilan halaman Anda mungkin terlihat:
171
+
172
+ <Tabs>
173
+ <Tab value="Kode">
174
+
175
+ ```tsx fileName="src/App.tsx"
176
+ import { useState, type FC } from "react";
177
+ import reactLogo from "./assets/react.svg";
178
+ import viteLogo from "/vite.svg";
179
+ import "./App.css";
180
+ import { IntlayerProvider } from "react-intlayer";
181
+
182
+ const AppContent: FC = () => {
183
+ const [count, setCount] = useState(0);
184
+
185
+ return (
186
+ <>
187
+ <div>
188
+ <a href="https://vitejs.dev" target="_blank">
189
+ <img src={viteLogo} className="logo" alt="Vite logo" />
190
+ </a>
191
+ <a href="https://react.dev" target="_blank">
192
+ <img src={reactLogo} className="logo react" alt="React logo" />
193
+ </a>
194
+ </div>
195
+ <h1>Vite + React</h1>
196
+ <div className="card">
197
+ <button onClick={() => setCount((count) => count + 1)}>
198
+ count is {count}
199
+ </button>
200
+ <p>
201
+ Edit <code>src/App.tsx</code> and save to test HMR
202
+ </p>
203
+ </div>
204
+ <p className="read-the-docs">
205
+ Click on the Vite and React logos to learn more
206
+ </p>
207
+ </>
208
+ );
209
+ };
210
+
211
+ const App: FC = () => (
212
+ <IntlayerProvider>
213
+ <AppContent />
214
+ </IntlayerProvider>
215
+ );
216
+
217
+ export default App;
218
+ ```
219
+
220
+ </Tab>
221
+ <Tab value="Output">
222
+
223
+ ```ts fileName="i18n/app-content.content.json"
224
+ {
225
+ key: "app-content",
226
+ content: {
227
+ nodeType: "translation",
228
+ translation: {
229
+ en: {
230
+ viteLogo: "Vite logo",
231
+ reactLogo: "React logo",
232
+ title: "Vite + React",
233
+ countButton: "count is",
234
+ editMessage: "Edit",
235
+ hmrMessage: "and save to test HMR",
236
+ readTheDocs: "Click on the Vite and React logos to learn more",
237
+ },
238
+ id: {
239
+ viteLogo: "Logo Vite",
240
+ reactLogo: "Logo React",
241
+ title: "Vite + React",
242
+ countButton: "hitungan adalah",
243
+ editMessage: "Ubah",
244
+ hmrMessage: "dan simpan untuk menguji HMR",
245
+ readTheDocs: "Klik pada logo Vite dan React untuk mempelajari lebih lanjut",
246
+ },
247
+ }
248
+ }
249
+ }
250
+ ```
251
+
252
+ ```tsx fileName="src/App.tsx"
253
+ import { useState, type FC } from "react";
254
+ import reactLogo from "./assets/react.svg";
255
+ import viteLogo from "/vite.svg";
256
+ import "./App.css";
257
+ import { IntlayerProvider, useIntlayer } from "react-intlayer";
258
+
259
+ const AppContent: FC = () => {
260
+ const [count, setCount] = useState(0);
261
+ const content = useIntlayer("app-content");
262
+
263
+ return (
264
+ <>
265
+ <div>
266
+ <a href="https://vitejs.dev" target="_blank">
267
+ <img src={viteLogo} className="logo" alt={content.viteLogo.value} />
268
+ </a>
269
+ <a href="https://react.dev" target="_blank">
270
+ <img
271
+ src={reactLogo}
272
+ className="logo react"
273
+ alt={content.reactLogo.value}
274
+ />
275
+ </a>
276
+ </div>
277
+ <h1>{content.title}</h1>
278
+ <div className="card">
279
+ <button onClick={() => setCount((count) => count + 1)}>
280
+ {content.countButton} {count}
281
+ </button>
282
+ <p>
283
+ {content.editMessage} <code>src/App.tsx</code> {content.hmrMessage}
284
+ </p>
285
+ </div>
286
+ <p className="read-the-docs">{content.readTheDocs}</p>
287
+ </>
288
+ );
289
+ };
290
+
291
+ const App: FC = () => (
292
+ <IntlayerProvider>
293
+ <AppContent />
294
+ </IntlayerProvider>
295
+ );
296
+
297
+ export default App;
298
+ ```
299
+
300
+ </Tab>
301
+ </Tabs>
302
+
303
+ - **`IntlayerProvider`** digunakan untuk menyediakan lokal ke komponen bersarang.
304
+
305
+ ### (Opsional) Langkah 6: Ubah bahasa konten Anda
306
+
307
+ Untuk mengubah bahasa konten Anda, Anda dapat menggunakan fungsi `setLocale` yang disediakan oleh hook `useLocale`. Fungsi ini memungkinkan Anda untuk mengatur lokal aplikasi dan memperbarui konten yang sesuai.
308
+
309
+ ```tsx fileName="src/components/LocaleSwitcher.tsx"
310
+ import type { FC } from "react";
311
+ import { Locales } from "intlayer";
312
+ import { useLocale } from "react-intlayer";
313
+
314
+ const LocaleSwitcher: FC = () => {
315
+ const { setLocale } = useLocale();
316
+
317
+ return (
318
+ <button onClick={() => setLocale(Locales.English)}>
319
+ Ubah Bahasa ke Inggris
320
+ </button>
321
+ );
322
+ };
323
+ ```
324
+
325
+ > Untuk mempelajari lebih lanjut tentang hook `useLocale`, lihat [dokumentasi](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/react-intlayer/useLocale.md).
326
+
327
+ ### (Opsional) Langkah 7: Isi terjemahan yang hilang
328
+
329
+ Intlayer menyediakan alat CLI untuk membantu Anda mengisi terjemahan yang hilang. Anda dapat menggunakan perintah `intlayer` untuk menguji dan mengisi terjemahan yang hilang dari kode Anda.
330
+
331
+ ```bash
332
+ npx intlayer test # Uji apakah ada terjemahan yang hilang
333
+ ```
334
+
335
+ ```bash
336
+ npx intlayer fill # Isi terjemahan yang hilang
337
+ ```
338
+
339
+ > Untuk detail lebih lanjut, silakan merujuk ke [dokumentasi CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/ci.md)
340
+
341
+ ### Konfigurasi Git
342
+
343
+ Disarankan untuk mengabaikan file yang dihasilkan oleh Intlayer. Ini memungkinkan Anda untuk menghindari memasukkannya ke dalam repositori Git Anda.
344
+
345
+ Untuk melakukannya, Anda dapat menambahkan instruksi berikut ke file `.gitignore` Anda:
346
+
347
+ ```plaintext fileName=".gitignore"
348
+ # Abaikan file yang dihasilkan oleh Intlayer
349
+ .intlayer
350
+ ```
351
+
352
+ ### Ekstensi VS Code
353
+
354
+ Untuk meningkatkan pengalaman pengembangan Anda dengan Intlayer, Anda dapat menginstal **Ekstensi Intlayer VS Code** resmi.
355
+
356
+ [Instal dari VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
357
+
358
+ Ekstensi ini menyediakan:
359
+
360
+ - **Autocompletion** untuk kunci terjemahan.
361
+ - **Deteksi kesalahan waktu nyata** untuk terjemahan yang hilang.
362
+ - **Pratinjau sebaris** dari konten yang diterjemahkan.
363
+ - **Tindakan cepat** untuk membuat dan memperbarui terjemahan dengan mudah.
364
+
365
+ Untuk detail lebih lanjut tentang cara menggunakan ekstensi, lihat [dokumentasi Ekstensi Intlayer VS Code](https://intlayer.org/doc/vs-code-extension).
366
+
367
+ ### Melangkah Lebih Jauh
368
+
369
+ Untuk melangkah lebih jauh, Anda dapat mengimplementasikan [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md) atau mengeksternalisasi konten Anda menggunakan [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md).