@intlayer/docs 7.3.1 → 7.3.2-canary.1
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/README.md +0 -2
- package/blog/ar/compiler_vs_declarative_i18n.md +1 -2
- package/blog/ar/i18n_using_next-i18next.md +8 -0
- package/blog/ar/i18n_using_next-intl.md +7 -0
- package/blog/ar/intlayer_with_next-intl.md +8 -0
- package/blog/ar/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/de/compiler_vs_declarative_i18n.md +1 -2
- package/blog/de/i18n_using_next-i18next.md +8 -0
- package/blog/de/i18n_using_next-intl.md +7 -0
- package/blog/de/intlayer_with_next-intl.md +8 -0
- package/blog/de/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/en/compiler_vs_declarative_i18n.md +1 -2
- package/blog/en/i18n_using_next-i18next.md +8 -0
- package/blog/en/i18n_using_next-intl.md +7 -0
- package/blog/en/intlayer_with_next-intl.md +8 -0
- package/blog/en/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/en/list_i18n_technologies/frameworks/svelte.md +19 -3
- package/blog/en/list_i18n_technologies/frameworks/vue.md +16 -2
- package/blog/en-GB/compiler_vs_declarative_i18n.md +1 -2
- package/blog/en-GB/i18n_using_next-i18next.md +8 -0
- package/blog/en-GB/i18n_using_next-intl.md +7 -0
- package/blog/en-GB/intlayer_with_next-intl.md +8 -0
- package/blog/en-GB/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/es/compiler_vs_declarative_i18n.md +1 -2
- package/blog/es/i18n_using_next-i18next.md +8 -0
- package/blog/es/i18n_using_next-intl.md +7 -0
- package/blog/es/intlayer_with_next-intl.md +8 -0
- package/blog/es/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/fr/compiler_vs_declarative_i18n.md +1 -2
- package/blog/fr/i18n_using_next-i18next.md +8 -0
- package/blog/fr/i18n_using_next-intl.md +7 -0
- package/blog/fr/intlayer_with_next-intl.md +8 -0
- package/blog/fr/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/hi/compiler_vs_declarative_i18n.md +2 -3
- package/blog/hi/i18n_using_next-i18next.md +8 -0
- package/blog/hi/i18n_using_next-intl.md +7 -0
- package/blog/hi/intlayer_with_next-intl.md +8 -0
- package/blog/hi/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/id/compiler_vs_declarative_i18n.md +1 -2
- package/blog/id/i18n_using_next-i18next.md +8 -0
- package/blog/id/i18n_using_next-intl.md +7 -0
- package/blog/id/intlayer_with_next-intl.md +8 -0
- package/blog/id/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/it/compiler_vs_declarative_i18n.md +1 -2
- package/blog/it/i18n_using_next-i18next.md +8 -0
- package/blog/it/i18n_using_next-intl.md +7 -0
- package/blog/it/intlayer_with_next-intl.md +8 -0
- package/blog/it/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/ja/compiler_vs_declarative_i18n.md +1 -2
- package/blog/ja/i18n_using_next-i18next.md +8 -0
- package/blog/ja/i18n_using_next-intl.md +7 -0
- package/blog/ja/intlayer_with_next-intl.md +8 -0
- package/blog/ja/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/ko/compiler_vs_declarative_i18n.md +2 -3
- package/blog/ko/i18n_using_next-i18next.md +8 -0
- package/blog/ko/i18n_using_next-intl.md +7 -0
- package/blog/ko/intlayer_with_next-intl.md +8 -0
- package/blog/ko/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/pl/compiler_vs_declarative_i18n.md +1 -2
- package/blog/pl/i18n_using_next-i18next.md +8 -0
- package/blog/pl/i18n_using_next-intl.md +7 -0
- package/blog/pl/intlayer_with_next-intl.md +8 -0
- package/blog/pl/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/pt/compiler_vs_declarative_i18n.md +1 -2
- package/blog/pt/i18n_using_next-i18next.md +8 -0
- package/blog/pt/i18n_using_next-intl.md +7 -0
- package/blog/pt/intlayer_with_next-intl.md +8 -0
- package/blog/pt/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/ru/compiler_vs_declarative_i18n.md +1 -2
- package/blog/ru/i18n_using_next-i18next.md +8 -0
- package/blog/ru/i18n_using_next-intl.md +7 -0
- package/blog/ru/intlayer_with_next-intl.md +8 -0
- package/blog/ru/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/tr/compiler_vs_declarative_i18n.md +2 -3
- package/blog/tr/i18n_using_next-i18next.md +8 -0
- package/blog/tr/i18n_using_next-intl.md +7 -0
- package/blog/tr/intlayer_with_next-intl.md +8 -0
- package/blog/tr/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/vi/compiler_vs_declarative_i18n.md +1 -2
- package/blog/vi/i18n_using_next-i18next.md +8 -0
- package/blog/vi/i18n_using_next-intl.md +7 -0
- package/blog/vi/intlayer_with_next-intl.md +8 -0
- package/blog/vi/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/zh/compiler_vs_declarative_i18n.md +1 -2
- package/blog/zh/i18n_using_next-i18next.md +8 -0
- package/blog/zh/i18n_using_next-intl.md +7 -0
- package/blog/zh/intlayer_with_next-intl.md +8 -0
- package/blog/zh/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/dist/cjs/generated/docs.entry.cjs +19 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +19 -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/bundle_optimization.md +6 -2
- package/docs/ar/compiler.md +133 -0
- package/docs/de/bundle_optimization.md +6 -2
- package/docs/de/compiler.md +133 -0
- package/docs/de/intlayer_with_nextjs_15.md +1 -1
- package/docs/de/per_locale_file.md +1 -1
- package/docs/en/bundle_optimization.md +6 -2
- package/docs/en/cli/index.md +2 -2
- package/docs/en/compiler.md +133 -0
- package/docs/en/intlayer_with_nextjs_14.md +0 -1
- package/docs/en-GB/bundle_optimization.md +6 -2
- package/docs/en-GB/compiler.md +133 -0
- package/docs/en-GB/packages/intlayer/getTranslation.md +1 -3
- package/docs/en-GB/packages/react-intlayer/t.md +1 -1
- package/docs/en-GB/packages/react-intlayer/useI18n.md +1 -1
- package/docs/es/bundle_optimization.md +6 -2
- package/docs/es/compiler.md +133 -0
- package/docs/fr/bundle_optimization.md +6 -2
- package/docs/fr/compiler.md +133 -0
- package/docs/fr/packages/react-intlayer/useI18n.md +1 -1
- package/docs/hi/bundle_optimization.md +6 -2
- package/docs/hi/compiler.md +133 -0
- package/docs/id/bundle_optimization.md +6 -2
- package/docs/id/compiler.md +133 -0
- package/docs/id/formatters.md +0 -1
- package/docs/id/intlayer_with_nextjs_14.md +1 -2
- package/docs/id/intlayer_with_nextjs_15.md +1 -1
- package/docs/it/bundle_optimization.md +6 -2
- package/docs/it/compiler.md +133 -0
- package/docs/ja/bundle_optimization.md +6 -2
- package/docs/ja/compiler.md +133 -0
- package/docs/ko/bundle_optimization.md +6 -2
- package/docs/ko/cli/index.md +20 -20
- package/docs/ko/compiler.md +133 -0
- package/docs/pl/bundle_optimization.md +6 -2
- package/docs/pl/compiler.md +133 -0
- package/docs/pl/formatters.md +0 -1
- package/docs/pl/intlayer_with_nextjs_14.md +1 -2
- package/docs/pl/intlayer_with_nextjs_15.md +1 -1
- package/docs/pt/bundle_optimization.md +6 -2
- package/docs/pt/compiler.md +133 -0
- package/docs/ru/bundle_optimization.md +6 -2
- package/docs/ru/compiler.md +133 -0
- package/docs/tr/bundle_optimization.md +6 -2
- package/docs/tr/compiler.md +133 -0
- package/docs/tr/intlayer_with_nextjs_14.md +2 -0
- package/docs/vi/bundle_optimization.md +6 -2
- package/docs/vi/compiler.md +133 -0
- package/docs/vi/intlayer_with_nextjs_14.md +1 -2
- package/docs/vi/intlayer_with_nextjs_15.md +1 -1
- package/docs/zh/bundle_optimization.md +6 -2
- package/docs/zh/compiler.md +133 -0
- package/package.json +10 -9
- package/src/generated/docs.entry.ts +19 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-09-09
|
|
3
|
+
updatedAt: 2025-09-09
|
|
4
|
+
title: Intlayer Compiler | Ekstraksi Konten Otomatis untuk i18n
|
|
5
|
+
description: Otomatiskan proses internasionalisasi Anda dengan Intlayer Compiler. Ekstrak konten langsung dari komponen Anda untuk i18n yang lebih cepat dan efisien di Vite, Next.js, dan lainnya.
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- Compiler
|
|
9
|
+
- Internasionalisasi
|
|
10
|
+
- i18n
|
|
11
|
+
- Otomatisasi
|
|
12
|
+
- Ekstraksi
|
|
13
|
+
- Kecepatan
|
|
14
|
+
- Vite
|
|
15
|
+
- Next.js
|
|
16
|
+
- React
|
|
17
|
+
- Vue
|
|
18
|
+
- Svelte
|
|
19
|
+
slugs:
|
|
20
|
+
- doc
|
|
21
|
+
- compiler
|
|
22
|
+
history:
|
|
23
|
+
- version: 7.3.1
|
|
24
|
+
date: 2025-11-27
|
|
25
|
+
changes: Rilis Compiler
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# Intlayer Compiler | Ekstraksi Konten Otomatis untuk i18n
|
|
29
|
+
|
|
30
|
+
## Apa itu Intlayer Compiler?
|
|
31
|
+
|
|
32
|
+
**Intlayer Compiler** adalah alat yang kuat yang dirancang untuk mengotomatisasi proses internasionalisasi (i18n) dalam aplikasi Anda. Alat ini memindai kode sumber Anda (JSX, TSX, Vue, Svelte) untuk deklarasi konten, mengekstraknya, dan secara otomatis menghasilkan file kamus yang diperlukan. Ini memungkinkan Anda untuk menjaga konten tetap berdekatan dengan komponen Anda sementara Intlayer menangani manajemen dan sinkronisasi kamus Anda.
|
|
33
|
+
|
|
34
|
+
## Mengapa Menggunakan Intlayer Compiler?
|
|
35
|
+
|
|
36
|
+
- **Otomatisasi**: Menghilangkan penyalinan konten secara manual ke dalam kamus.
|
|
37
|
+
- **Kecepatan**: Ekstraksi konten yang dioptimalkan memastikan proses build Anda tetap cepat.
|
|
38
|
+
- **Pengalaman Pengembang**: Menjaga deklarasi konten tepat di tempat mereka digunakan, meningkatkan pemeliharaan.
|
|
39
|
+
- **Pembaruan Langsung**: Mendukung Hot Module Replacement (HMR) untuk umpan balik instan selama pengembangan.
|
|
40
|
+
|
|
41
|
+
Lihat posting blog [Compiler vs. Declarative i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/id/compiler_vs_declarative_i18n.md) untuk perbandingan yang lebih mendalam.
|
|
42
|
+
|
|
43
|
+
## Mengapa Tidak Menggunakan Intlayer Compiler?
|
|
44
|
+
|
|
45
|
+
Meskipun compiler menawarkan pengalaman "langsung bekerja" yang sangat baik, compiler juga memperkenalkan beberapa kompromi yang harus Anda ketahui:
|
|
46
|
+
|
|
47
|
+
- **Ambiguitas heuristik**: Compiler harus menebak apa yang merupakan konten yang ditujukan untuk pengguna versus logika aplikasi (misalnya, `className="active"`, kode status, ID produk). Dalam codebase yang kompleks, ini dapat menyebabkan false positive atau string yang terlewat yang memerlukan anotasi manual dan pengecualian.
|
|
48
|
+
- **Ekstraksi hanya statis**: Ekstraksi berbasis compiler bergantung pada analisis statis. String yang hanya ada saat runtime (kode kesalahan API, field CMS, dll.) tidak dapat ditemukan atau diterjemahkan oleh compiler saja, jadi Anda masih memerlukan strategi i18n runtime yang melengkapi.
|
|
49
|
+
|
|
50
|
+
Untuk perbandingan arsitektur yang lebih mendalam, lihat posting blog [Compiler vs. Declarative i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/id/compiler_vs_declarative_i18n.md).
|
|
51
|
+
|
|
52
|
+
Sebagai alternatif, untuk mengotomatisasi proses i18n Anda sambil mempertahankan kontrol penuh atas konten Anda, Intlayer juga menyediakan perintah auto-ekstraksi `intlayer transform` (lihat [dokumentasi CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/cli/transform.md)), atau perintah `Intlayer: extract content to Dictionary` dari ekstensi Intlayer VS Code (lihat [dokumentasi ekstensi VS Code](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/vs_code_extension.md)).
|
|
53
|
+
|
|
54
|
+
## Penggunaan
|
|
55
|
+
|
|
56
|
+
### Vite
|
|
57
|
+
|
|
58
|
+
Untuk aplikasi berbasis Vite (React, Vue, Svelte, dll.), cara termudah menggunakan compiler adalah melalui plugin `vite-intlayer`.
|
|
59
|
+
|
|
60
|
+
#### Instalasi
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm install vite-intlayer
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### Konfigurasi
|
|
67
|
+
|
|
68
|
+
Perbarui `vite.config.ts` Anda untuk menyertakan plugin `intlayerCompiler`:
|
|
69
|
+
|
|
70
|
+
```ts fileName="vite.config.ts"
|
|
71
|
+
import { defineConfig } from "vite";
|
|
72
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
73
|
+
|
|
74
|
+
export default defineConfig({
|
|
75
|
+
plugins: [
|
|
76
|
+
intlayer(),
|
|
77
|
+
intlayerCompiler(), // Menambahkan plugin compiler
|
|
78
|
+
],
|
|
79
|
+
});
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
#### Dukungan Framework
|
|
83
|
+
|
|
84
|
+
Plugin Vite secara otomatis mendeteksi dan menangani berbagai jenis file:
|
|
85
|
+
|
|
86
|
+
- **React / JSX / TSX**: Ditangani secara native.
|
|
87
|
+
- **Vue**: Memerlukan `@intlayer/vue-compiler`.
|
|
88
|
+
- **Svelte**: Memerlukan `@intlayer/svelte-compiler`.
|
|
89
|
+
|
|
90
|
+
Pastikan untuk menginstal paket compiler yang sesuai untuk framework Anda:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Untuk Vue
|
|
94
|
+
npm install @intlayer/vue-compiler
|
|
95
|
+
|
|
96
|
+
# Untuk Svelte
|
|
97
|
+
npm install @intlayer/svelte-compiler
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Next.js (Babel)
|
|
101
|
+
|
|
102
|
+
Untuk Next.js atau aplikasi berbasis Webpack lainnya yang menggunakan Babel, Anda dapat mengonfigurasi compiler menggunakan plugin `@intlayer/babel`.
|
|
103
|
+
|
|
104
|
+
#### Instalasi
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
npm install @intlayer/babel
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### Konfigurasi
|
|
111
|
+
|
|
112
|
+
Perbarui `babel.config.js` Anda (atau `babel.config.json`) untuk menyertakan plugin ekstraksi. Kami menyediakan helper `getExtractPluginOptions` untuk memuat konfigurasi Intlayer Anda secara otomatis.
|
|
113
|
+
|
|
114
|
+
```js fileName="babel.config.js"
|
|
115
|
+
const {
|
|
116
|
+
intlayerExtractBabelPlugin,
|
|
117
|
+
intlayerOptimizeBabelPlugin,
|
|
118
|
+
getExtractPluginOptions,
|
|
119
|
+
getOptimizePluginOptions,
|
|
120
|
+
} = require("@intlayer/babel");
|
|
121
|
+
|
|
122
|
+
module.exports = {
|
|
123
|
+
presets: ["next/babel"],
|
|
124
|
+
plugins: [
|
|
125
|
+
// Extract content from components into dictionaries
|
|
126
|
+
[intlayerExtractBabelPlugin, getExtractPluginOptions()],
|
|
127
|
+
// Optimize imports by replacing useIntlayer with direct dictionary imports
|
|
128
|
+
[intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
|
|
129
|
+
],
|
|
130
|
+
};
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Konfigurasi ini memastikan bahwa konten yang dideklarasikan dalam komponen Anda secara otomatis diekstraksi dan digunakan untuk menghasilkan kamus selama proses build Anda.
|
package/docs/id/formatters.md
CHANGED
|
@@ -17,7 +17,6 @@ slugs:
|
|
|
17
17
|
- 14
|
|
18
18
|
applicationTemplate: https://github.com/aymericzip/intlayer-next-14-template
|
|
19
19
|
history:
|
|
20
|
-
- version: 7.0.6
|
|
21
20
|
- version: 6.2.0
|
|
22
21
|
date: 2025-10-09
|
|
23
22
|
changes: Menambahkan dokumentasi untuk hook `useLocale` dengan opsi `onLocaleChange`
|
|
@@ -26,7 +25,7 @@ history:
|
|
|
26
25
|
changes: Menambahkan dokumentasi untuk fungsi `getLocale` pada server actions
|
|
27
26
|
- version: 5.6.2
|
|
28
27
|
date: 2025-09-22
|
|
29
|
-
|
|
28
|
+
changes: Menambahkan dokumentasi untuk helper `multipleMiddlewares`
|
|
30
29
|
- version: 5.6.0
|
|
31
30
|
date: 2025-07-06
|
|
32
31
|
changes: Mengubah fungsi `withIntlayer()` menjadi fungsi berbasis promise
|
|
@@ -26,7 +26,7 @@ history:
|
|
|
26
26
|
changes: Menambahkan penyebutan fungsi `withIntlayerSync()`
|
|
27
27
|
- version: 6.2.0
|
|
28
28
|
date: 2025-10-09
|
|
29
|
-
|
|
29
|
+
changes: Menambahkan dokumentasi untuk hook `useLocale` dengan opsi `onLocaleChange`
|
|
30
30
|
- version: 5.6.6
|
|
31
31
|
date: 2025-10-02
|
|
32
32
|
changes: Menambahkan dokumentasi untuk fungsi `getLocale` pada server actions
|
|
@@ -153,9 +153,13 @@ const content = useIntlayer("my-key");
|
|
|
153
153
|
// Codice ottimizzato (Dinamico)
|
|
154
154
|
const content = useDictionaryAsync({
|
|
155
155
|
en: () =>
|
|
156
|
-
import(".intlayer/dynamic_dictionary/en.json").then(
|
|
156
|
+
import(".intlayer/dynamic_dictionary/my-key/en.json").then(
|
|
157
|
+
(mod) => mod.default
|
|
158
|
+
),
|
|
157
159
|
fr: () =>
|
|
158
|
-
import(".intlayer/dynamic_dictionary/fr.json").then(
|
|
160
|
+
import(".intlayer/dynamic_dictionary/my-key/fr.json").then(
|
|
161
|
+
(mod) => mod.default
|
|
162
|
+
),
|
|
159
163
|
});
|
|
160
164
|
```
|
|
161
165
|
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-09-09
|
|
3
|
+
updatedAt: 2025-09-09
|
|
4
|
+
title: Intlayer Compiler | Estrazione Automatica dei Contenuti per i18n
|
|
5
|
+
description: Automatizza il tuo processo di internazionalizzazione con Intlayer Compiler. Estrai contenuti direttamente dai tuoi componenti per un i18n più veloce ed efficiente in Vite, Next.js e altro.
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- Compiler
|
|
9
|
+
- Internazionalizzazione
|
|
10
|
+
- i18n
|
|
11
|
+
- Automazione
|
|
12
|
+
- Estrazione
|
|
13
|
+
- Velocità
|
|
14
|
+
- Vite
|
|
15
|
+
- Next.js
|
|
16
|
+
- React
|
|
17
|
+
- Vue
|
|
18
|
+
- Svelte
|
|
19
|
+
slugs:
|
|
20
|
+
- doc
|
|
21
|
+
- compiler
|
|
22
|
+
history:
|
|
23
|
+
- version: 7.3.1
|
|
24
|
+
date: 2025-11-27
|
|
25
|
+
changes: Rilascio Compiler
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# Intlayer Compiler | Estrazione Automatica dei Contenuti per i18n
|
|
29
|
+
|
|
30
|
+
## Cos'è Intlayer Compiler?
|
|
31
|
+
|
|
32
|
+
Il **Intlayer Compiler** è uno strumento potente progettato per automatizzare il processo di internazionalizzazione (i18n) nelle tue applicazioni. Scansiona il tuo codice sorgente (JSX, TSX, Vue, Svelte) alla ricerca di dichiarazioni di contenuto, le estrae e genera automaticamente i file di dizionario necessari. Questo ti permette di mantenere i contenuti co-localizzati con i tuoi componenti mentre Intlayer gestisce la sincronizzazione e la gestione dei dizionari.
|
|
33
|
+
|
|
34
|
+
## Perché Usare Intlayer Compiler?
|
|
35
|
+
|
|
36
|
+
- **Automazione**: Elimina il copia-incolla manuale dei contenuti nei dizionari.
|
|
37
|
+
- **Velocità**: Estrazione dei contenuti ottimizzata per garantire che il processo di build rimanga veloce.
|
|
38
|
+
- **Esperienza Sviluppatore**: Mantieni le dichiarazioni di contenuto esattamente dove vengono utilizzate, migliorando la manutenibilità.
|
|
39
|
+
- **Aggiornamenti in tempo reale**: Supporta Hot Module Replacement (HMR) per un feedback immediato durante lo sviluppo.
|
|
40
|
+
|
|
41
|
+
Consulta il post sul blog [Compiler vs. Declarative i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/compiler_vs_declarative_i18n.md) per un confronto più approfondito.
|
|
42
|
+
|
|
43
|
+
## Perché non usare Intlayer Compiler?
|
|
44
|
+
|
|
45
|
+
Sebbene il compiler offra un'esperienza eccellente "funziona subito", introduce anche alcuni compromessi di cui dovresti essere consapevole:
|
|
46
|
+
|
|
47
|
+
- **Ambiguità euristica**: Il compiler deve indovinare cosa è contenuto orientato all'utente rispetto alla logica dell'applicazione (ad esempio, `className="active"`, codici di stato, ID prodotto). In codebase complesse, questo può portare a falsi positivi o stringhe mancate che richiedono annotazioni manuali ed eccezioni.
|
|
48
|
+
- **Estrazione solo statica**: L'estrazione basata sul compiler si basa sull'analisi statica. Le stringhe che esistono solo in fase di esecuzione (codici di errore API, campi CMS, ecc.) non possono essere scoperte o tradotte dal compiler da solo, quindi hai ancora bisogno di una strategia i18n di runtime complementare.
|
|
49
|
+
|
|
50
|
+
Per un confronto architetturale più approfondito, consulta il post sul blog [Compiler vs. Declarative i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/compiler_vs_declarative_i18n.md).
|
|
51
|
+
|
|
52
|
+
Come alternativa, per automatizzare il tuo processo i18n mantenendo il pieno controllo del tuo contenuto, Intlayer fornisce anche un comando di auto-estrazione `intlayer transform` (vedi [documentazione CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/transform.md)), o il comando `Intlayer: extract content to Dictionary` dall'estensione Intlayer VS Code (vedi [documentazione estensione VS Code](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/vs_code_extension.md)).
|
|
53
|
+
|
|
54
|
+
## Utilizzo
|
|
55
|
+
|
|
56
|
+
### Vite
|
|
57
|
+
|
|
58
|
+
Per le applicazioni basate su Vite (React, Vue, Svelte, ecc.), il modo più semplice per utilizzare il compiler è tramite il plugin `vite-intlayer`.
|
|
59
|
+
|
|
60
|
+
#### Installazione
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm install vite-intlayer
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### Configurazione
|
|
67
|
+
|
|
68
|
+
Aggiorna il tuo `vite.config.ts` per includere il plugin `intlayerCompiler`:
|
|
69
|
+
|
|
70
|
+
```ts fileName="vite.config.ts"
|
|
71
|
+
import { defineConfig } from "vite";
|
|
72
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
73
|
+
|
|
74
|
+
export default defineConfig({
|
|
75
|
+
plugins: [
|
|
76
|
+
intlayer(),
|
|
77
|
+
intlayerCompiler(), // Aggiunge il plugin del compiler
|
|
78
|
+
],
|
|
79
|
+
});
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
#### Supporto per Framework
|
|
83
|
+
|
|
84
|
+
Il plugin Vite rileva e gestisce automaticamente diversi tipi di file:
|
|
85
|
+
|
|
86
|
+
- **React / JSX / TSX**: Gestito nativamente.
|
|
87
|
+
- **Vue**: Richiede `@intlayer/vue-compiler`.
|
|
88
|
+
- **Svelte**: Richiede `@intlayer/svelte-compiler`.
|
|
89
|
+
|
|
90
|
+
Assicurati di installare il pacchetto compiler appropriato per il tuo framework:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Per Vue
|
|
94
|
+
npm install @intlayer/vue-compiler
|
|
95
|
+
|
|
96
|
+
# Per Svelte
|
|
97
|
+
npm install @intlayer/svelte-compiler
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Next.js (Babel)
|
|
101
|
+
|
|
102
|
+
Per Next.js o altre applicazioni basate su Webpack che utilizzano Babel, puoi configurare il compiler usando il plugin `@intlayer/babel`.
|
|
103
|
+
|
|
104
|
+
#### Installazione
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
npm install @intlayer/babel
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### Configurazione
|
|
111
|
+
|
|
112
|
+
Aggiorna il tuo `babel.config.js` (o `babel.config.json`) per includere il plugin di estrazione. Forniamo un helper `getExtractPluginOptions` per caricare automaticamente la tua configurazione Intlayer.
|
|
113
|
+
|
|
114
|
+
```js fileName="babel.config.js"
|
|
115
|
+
const {
|
|
116
|
+
intlayerExtractBabelPlugin,
|
|
117
|
+
intlayerOptimizeBabelPlugin,
|
|
118
|
+
getExtractPluginOptions,
|
|
119
|
+
getOptimizePluginOptions,
|
|
120
|
+
} = require("@intlayer/babel");
|
|
121
|
+
|
|
122
|
+
module.exports = {
|
|
123
|
+
presets: ["next/babel"],
|
|
124
|
+
plugins: [
|
|
125
|
+
// Extract content from components into dictionaries
|
|
126
|
+
[intlayerExtractBabelPlugin, getExtractPluginOptions()],
|
|
127
|
+
// Optimize imports by replacing useIntlayer with direct dictionary imports
|
|
128
|
+
[intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
|
|
129
|
+
],
|
|
130
|
+
};
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Questa configurazione garantisce che il contenuto dichiarato nei tuoi componenti venga estratto automaticamente e utilizzato per generare i dizionari durante il processo di build.
|
|
@@ -153,9 +153,13 @@ const content = useIntlayer("my-key");
|
|
|
153
153
|
// 最適化されたコード(動的)
|
|
154
154
|
const content = useDictionaryAsync({
|
|
155
155
|
en: () =>
|
|
156
|
-
import(".intlayer/dynamic_dictionary/en.json").then(
|
|
156
|
+
import(".intlayer/dynamic_dictionary/my-key/en.json").then(
|
|
157
|
+
(mod) => mod.default
|
|
158
|
+
),
|
|
157
159
|
fr: () =>
|
|
158
|
-
import(".intlayer/dynamic_dictionary/fr.json").then(
|
|
160
|
+
import(".intlayer/dynamic_dictionary/my-key/fr.json").then(
|
|
161
|
+
(mod) => mod.default
|
|
162
|
+
),
|
|
159
163
|
});
|
|
160
164
|
```
|
|
161
165
|
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-09-09
|
|
3
|
+
updatedAt: 2025-09-09
|
|
4
|
+
title: Intlayer コンパイラー | i18n のための自動コンテンツ抽出
|
|
5
|
+
description: Intlayer コンパイラーで国際化プロセスを自動化しましょう。コンポーネントから直接コンテンツを抽出し、Vite、Next.js などでより高速かつ効率的な i18n を実現します。
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- コンパイラー
|
|
9
|
+
- 国際化
|
|
10
|
+
- i18n
|
|
11
|
+
- 自動化
|
|
12
|
+
- 抽出
|
|
13
|
+
- 速度
|
|
14
|
+
- Vite
|
|
15
|
+
- Next.js
|
|
16
|
+
- React
|
|
17
|
+
- Vue
|
|
18
|
+
- Svelte
|
|
19
|
+
slugs:
|
|
20
|
+
- doc
|
|
21
|
+
- compiler
|
|
22
|
+
history:
|
|
23
|
+
- version: 7.3.1
|
|
24
|
+
date: 2025-11-27
|
|
25
|
+
changes: コンパイラーリリース
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# Intlayer コンパイラー | i18n のための自動コンテンツ抽出
|
|
29
|
+
|
|
30
|
+
## Intlayer コンパイラーとは?
|
|
31
|
+
|
|
32
|
+
**Intlayer コンパイラー**は、アプリケーションの国際化(i18n)プロセスを自動化するために設計された強力なツールです。ソースコード(JSX、TSX、Vue、Svelte)内のコンテンツ宣言をスキャンし、それらを抽出して必要な辞書ファイルを自動的に生成します。これにより、コンテンツをコンポーネントと共に配置したままにでき、Intlayer が辞書の管理と同期を担当します。
|
|
33
|
+
|
|
34
|
+
## なぜ Intlayer コンパイラーを使うのか?
|
|
35
|
+
|
|
36
|
+
- **自動化**: コンテンツを辞書に手動でコピー&ペーストする手間を排除します。
|
|
37
|
+
- **高速化**: 最適化されたコンテンツ抽出により、ビルドプロセスの高速化を実現します。
|
|
38
|
+
- **開発者体験**: コンテンツ宣言を使用箇所にそのまま保持し、保守性を向上させます。
|
|
39
|
+
- **ライブアップデート**: 開発中に即時フィードバックを得られるホットモジュールリプレースメント(HMR)をサポートします。
|
|
40
|
+
|
|
41
|
+
より詳しい比較については、[Compiler vs. Declarative i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/compiler_vs_declarative_i18n.md) のブログ記事をご覧ください。
|
|
42
|
+
|
|
43
|
+
## Intlayer コンパイラーを使わない理由
|
|
44
|
+
|
|
45
|
+
コンパイラーは優れた「そのまま動作する」体験を提供しますが、いくつかのトレードオフも導入します:
|
|
46
|
+
|
|
47
|
+
- **ヒューリスティックの曖昧さ**:コンパイラーは、ユーザー向けコンテンツとアプリケーションロジック(例:`className="active"`、ステータスコード、製品ID)を推測する必要があります。複雑なコードベースでは、これにより誤検出や見逃された文字列が発生し、手動での注釈と例外処理が必要になる場合があります。
|
|
48
|
+
- **静的抽出のみ**:コンパイラーベースの抽出は静的解析に依存しています。実行時のみ存在する文字列(APIエラーコード、CMSフィールドなど)は、コンパイラー単独では発見または翻訳できないため、補完的なランタイムi18n戦略が必要です。
|
|
49
|
+
|
|
50
|
+
より深いアーキテクチャの比較については、ブログ記事[Compiler vs. Declarative i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/compiler_vs_declarative_i18n.md)を参照してください。
|
|
51
|
+
|
|
52
|
+
代替として、コンテンツの完全な制御を維持しながらi18nプロセスを自動化するために、Intlayerは自動抽出コマンド `intlayer transform`([CLIドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/cli/transform.md)を参照)またはIntlayer VS Code拡張機能の `Intlayer: extract content to Dictionary` コマンド([VS Code拡張機能ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/vs_code_extension.md)を参照)も提供しています。
|
|
53
|
+
|
|
54
|
+
## 使い方
|
|
55
|
+
|
|
56
|
+
### Vite
|
|
57
|
+
|
|
58
|
+
Viteベースのアプリケーション(React、Vue、Svelteなど)では、`vite-intlayer` プラグインを使うのが最も簡単な方法です。
|
|
59
|
+
|
|
60
|
+
#### インストール
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm install vite-intlayer
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### 設定
|
|
67
|
+
|
|
68
|
+
`vite.config.ts` を更新して `intlayerCompiler` プラグインを含めます:
|
|
69
|
+
|
|
70
|
+
```ts fileName="vite.config.ts"
|
|
71
|
+
import { defineConfig } from "vite";
|
|
72
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
73
|
+
|
|
74
|
+
export default defineConfig({
|
|
75
|
+
plugins: [
|
|
76
|
+
intlayer(),
|
|
77
|
+
intlayerCompiler(), // コンパイラプラグインを追加
|
|
78
|
+
],
|
|
79
|
+
});
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
#### フレームワークサポート
|
|
83
|
+
|
|
84
|
+
Viteプラグインは自動的に異なるファイルタイプを検出し処理します:
|
|
85
|
+
|
|
86
|
+
- **React / JSX / TSX**: ネイティブに対応。
|
|
87
|
+
- **Vue**: `@intlayer/vue-compiler` が必要です。
|
|
88
|
+
- **Svelte**: `@intlayer/svelte-compiler` が必要です。
|
|
89
|
+
|
|
90
|
+
使用しているフレームワークに応じて、適切なコンパイラパッケージをインストールしてください:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Vue用
|
|
94
|
+
npm install @intlayer/vue-compiler
|
|
95
|
+
|
|
96
|
+
# Svelte用
|
|
97
|
+
npm install @intlayer/svelte-compiler
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Next.js (Babel)
|
|
101
|
+
|
|
102
|
+
Next.jsやその他のWebpackベースのBabelを使用するアプリケーションでは、`@intlayer/babel`プラグインを使ってコンパイラを設定できます。
|
|
103
|
+
|
|
104
|
+
#### インストール
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
npm install @intlayer/babel
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### 設定
|
|
111
|
+
|
|
112
|
+
`babel.config.js`(または `babel.config.json`)を更新して、抽出プラグインを含めます。Intlayerの設定を自動的に読み込むためのヘルパー `getExtractPluginOptions` を提供しています。
|
|
113
|
+
|
|
114
|
+
```js fileName="babel.config.js"
|
|
115
|
+
const {
|
|
116
|
+
intlayerExtractBabelPlugin,
|
|
117
|
+
intlayerOptimizeBabelPlugin,
|
|
118
|
+
getExtractPluginOptions,
|
|
119
|
+
getOptimizePluginOptions,
|
|
120
|
+
} = require("@intlayer/babel");
|
|
121
|
+
|
|
122
|
+
module.exports = {
|
|
123
|
+
presets: ["next/babel"],
|
|
124
|
+
plugins: [
|
|
125
|
+
// Extract content from components into dictionaries
|
|
126
|
+
[intlayerExtractBabelPlugin, getExtractPluginOptions()],
|
|
127
|
+
// Optimize imports by replacing useIntlayer with direct dictionary imports
|
|
128
|
+
[intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
|
|
129
|
+
],
|
|
130
|
+
};
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
この設定により、コンポーネント内で宣言されたコンテンツが自動的に抽出され、ビルドプロセス中に辞書の生成に使用されます。
|
|
@@ -153,9 +153,13 @@ const content = useIntlayer("my-key");
|
|
|
153
153
|
// Optimized code (Dynamic)
|
|
154
154
|
const content = useDictionaryAsync({
|
|
155
155
|
en: () =>
|
|
156
|
-
import(".intlayer/dynamic_dictionary/en.json").then(
|
|
156
|
+
import(".intlayer/dynamic_dictionary/my-key/en.json").then(
|
|
157
|
+
(mod) => mod.default
|
|
158
|
+
),
|
|
157
159
|
fr: () =>
|
|
158
|
-
import(".intlayer/dynamic_dictionary/fr.json").then(
|
|
160
|
+
import(".intlayer/dynamic_dictionary/my-key/fr.json").then(
|
|
161
|
+
(mod) => mod.default
|
|
162
|
+
),
|
|
159
163
|
});
|
|
160
164
|
```
|
|
161
165
|
|
package/docs/ko/cli/index.md
CHANGED
|
@@ -30,26 +30,26 @@ history:
|
|
|
30
30
|
date: 2025-10-05
|
|
31
31
|
changes: 명령어에 build 옵션 추가
|
|
32
32
|
- version: 6.1.2
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
- version: 6.1.0
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
- version: 6.1.0
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
- version: 6.0.1
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
- version: 6.0.0
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
- version: 5.5.11
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
- version: 5.5.10
|
|
51
|
-
|
|
52
|
-
|
|
33
|
+
date: 2025-09-26
|
|
34
|
+
changes: version 명령어 추가
|
|
35
|
+
- version: 6.1.0
|
|
36
|
+
date: 2025-09-26
|
|
37
|
+
changes: CLI를 사용하여 verbose 옵션의 기본값을 true로 설정
|
|
38
|
+
- version: 6.1.0
|
|
39
|
+
date: 2025-09-23
|
|
40
|
+
changes: watch 명령어 및 with 옵션 추가
|
|
41
|
+
- version: 6.0.1
|
|
42
|
+
date: 2025-09-23
|
|
43
|
+
changes: editor 명령어 추가
|
|
44
|
+
- version: 6.0.0
|
|
45
|
+
date: 2025-09-17
|
|
46
|
+
changes: content test 및 list 명령어 추가
|
|
47
|
+
- version: 5.5.11
|
|
48
|
+
date: 2025-07-11
|
|
49
|
+
changes: CLI 명령어 매개변수 문서 업데이트
|
|
50
|
+
- version: 5.5.10
|
|
51
|
+
date: 2025-06-29
|
|
52
|
+
changes: 히스토리 초기화
|
|
53
53
|
---
|
|
54
54
|
|
|
55
55
|
# Intlayer CLI
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-09-09
|
|
3
|
+
updatedAt: 2025-09-09
|
|
4
|
+
title: Intlayer 컴파일러 | i18n을 위한 자동화된 콘텐츠 추출
|
|
5
|
+
description: Intlayer 컴파일러로 국제화 프로세스를 자동화하세요. Vite, Next.js 등에서 더 빠르고 효율적인 i18n을 위해 컴포넌트에서 직접 콘텐츠를 추출합니다.
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- 컴파일러
|
|
9
|
+
- 국제화
|
|
10
|
+
- i18n
|
|
11
|
+
- 자동화
|
|
12
|
+
- 추출
|
|
13
|
+
- 속도
|
|
14
|
+
- Vite
|
|
15
|
+
- Next.js
|
|
16
|
+
- React
|
|
17
|
+
- Vue
|
|
18
|
+
- Svelte
|
|
19
|
+
slugs:
|
|
20
|
+
- doc
|
|
21
|
+
- compiler
|
|
22
|
+
history:
|
|
23
|
+
- version: 7.3.1
|
|
24
|
+
date: 2025-11-27
|
|
25
|
+
changes: 컴파일러 출시
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# Intlayer 컴파일러 | i18n을 위한 자동화된 콘텐츠 추출
|
|
29
|
+
|
|
30
|
+
## Intlayer 컴파일러란?
|
|
31
|
+
|
|
32
|
+
**Intlayer 컴파일러**는 애플리케이션의 국제화(i18n) 프로세스를 자동화하도록 설계된 강력한 도구입니다. 소스 코드(JSX, TSX, Vue, Svelte)에서 콘텐츠 선언을 스캔하고 추출하여 필요한 사전(dictionary) 파일을 자동으로 생성합니다. 이를 통해 콘텐츠를 컴포넌트와 함께 위치시킬 수 있으며, Intlayer가 사전의 관리 및 동기화를 처리합니다.
|
|
33
|
+
|
|
34
|
+
## Intlayer 컴파일러를 사용하는 이유
|
|
35
|
+
|
|
36
|
+
- **자동화**: 콘텐츠를 사전에 수동으로 복사하여 붙여넣는 작업을 제거합니다.
|
|
37
|
+
- **속도**: 빌드 프로세스가 빠르게 유지되도록 최적화된 콘텐츠 추출을 제공합니다.
|
|
38
|
+
- **개발자 경험**: 콘텐츠 선언을 사용되는 위치에 그대로 유지하여 유지보수성을 향상시킵니다.
|
|
39
|
+
- **실시간 업데이트**: 개발 중 즉각적인 피드백을 위한 Hot Module Replacement(HMR)를 지원합니다.
|
|
40
|
+
|
|
41
|
+
더 깊은 비교를 원한다면 [Compiler vs. Declarative i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ko/compiler_vs_declarative_i18n.md) 블로그 게시물을 참조하세요.
|
|
42
|
+
|
|
43
|
+
## Intlayer 컴파일러를 사용하지 않는 이유
|
|
44
|
+
|
|
45
|
+
컴파일러는 훌륭한 "바로 작동" 경험을 제공하지만, 인지해야 할 몇 가지 트레이드오프도 도입합니다:
|
|
46
|
+
|
|
47
|
+
- **휴리스틱 모호성**: 컴파일러는 사용자 지향 콘텐츠와 애플리케이션 로직(예: `className="active"`, 상태 코드, 제품 ID)을 추측해야 합니다. 복잡한 코드베이스에서는 이것이 오탐지 또는 누락된 문자열로 이어질 수 있으며, 수동 주석 및 예외 처리가 필요합니다.
|
|
48
|
+
- **정적 추출만**: 컴파일러 기반 추출은 정적 분석에 의존합니다. 런타임에만 존재하는 문자열(API 오류 코드, CMS 필드 등)은 컴파일러만으로는 발견하거나 번역할 수 없으므로 여전히 보완적인 런타임 i18n 전략이 필요합니다.
|
|
49
|
+
|
|
50
|
+
더 깊은 아키텍처 비교를 위해서는 블로그 게시물 [Compiler vs. Declarative i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ko/compiler_vs_declarative_i18n.md)을 참조하세요.
|
|
51
|
+
|
|
52
|
+
대안으로, 콘텐츠에 대한 완전한 제어를 유지하면서 i18n 프로세스를 자동화하기 위해 Intlayer는 자동 추출 명령 `intlayer transform`([CLI 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/cli/transform.md) 참조) 또는 Intlayer VS Code 확장의 `Intlayer: extract content to Dictionary` 명령([VS Code 확장 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/vs_code_extension.md) 참조)도 제공합니다.
|
|
53
|
+
|
|
54
|
+
## 사용법
|
|
55
|
+
|
|
56
|
+
### Vite
|
|
57
|
+
|
|
58
|
+
Vite 기반 애플리케이션(React, Vue, Svelte 등)의 경우, 컴파일러를 사용하는 가장 쉬운 방법은 `vite-intlayer` 플러그인을 사용하는 것입니다.
|
|
59
|
+
|
|
60
|
+
#### 설치
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm install vite-intlayer
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### 구성
|
|
67
|
+
|
|
68
|
+
`vite.config.ts` 파일을 업데이트하여 `intlayerCompiler` 플러그인을 포함하세요:
|
|
69
|
+
|
|
70
|
+
```ts fileName="vite.config.ts"
|
|
71
|
+
import { defineConfig } from "vite";
|
|
72
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
73
|
+
|
|
74
|
+
export default defineConfig({
|
|
75
|
+
plugins: [
|
|
76
|
+
intlayer(),
|
|
77
|
+
intlayerCompiler(), // 컴파일러 플러그인 추가
|
|
78
|
+
],
|
|
79
|
+
});
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
#### 프레임워크 지원
|
|
83
|
+
|
|
84
|
+
Vite 플러그인은 다양한 파일 유형을 자동으로 감지하고 처리합니다:
|
|
85
|
+
|
|
86
|
+
- **React / JSX / TSX**: 기본적으로 처리됩니다.
|
|
87
|
+
- **Vue**: `@intlayer/vue-compiler`가 필요합니다.
|
|
88
|
+
- **Svelte**: `@intlayer/svelte-compiler`가 필요합니다.
|
|
89
|
+
|
|
90
|
+
사용하는 프레임워크에 맞는 컴파일러 패키지를 반드시 설치하세요:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Vue용
|
|
94
|
+
npm install @intlayer/vue-compiler
|
|
95
|
+
|
|
96
|
+
# Svelte용
|
|
97
|
+
npm install @intlayer/svelte-compiler
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Next.js (Babel)
|
|
101
|
+
|
|
102
|
+
Next.js 또는 Babel을 사용하는 다른 Webpack 기반 애플리케이션의 경우, `@intlayer/babel` 플러그인을 사용하여 컴파일러를 구성할 수 있습니다.
|
|
103
|
+
|
|
104
|
+
#### 설치
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
npm install @intlayer/babel
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### 구성
|
|
111
|
+
|
|
112
|
+
`babel.config.js`(또는 `babel.config.json`) 파일을 업데이트하여 추출 플러그인을 포함하세요. Intlayer 구성을 자동으로 로드하는 헬퍼 함수 `getExtractPluginOptions`를 제공합니다.
|
|
113
|
+
|
|
114
|
+
```js fileName="babel.config.js"
|
|
115
|
+
const {
|
|
116
|
+
intlayerExtractBabelPlugin,
|
|
117
|
+
intlayerOptimizeBabelPlugin,
|
|
118
|
+
getExtractPluginOptions,
|
|
119
|
+
getOptimizePluginOptions,
|
|
120
|
+
} = require("@intlayer/babel");
|
|
121
|
+
|
|
122
|
+
module.exports = {
|
|
123
|
+
presets: ["next/babel"],
|
|
124
|
+
plugins: [
|
|
125
|
+
// Extract content from components into dictionaries
|
|
126
|
+
[intlayerExtractBabelPlugin, getExtractPluginOptions()],
|
|
127
|
+
// Optimize imports by replacing useIntlayer with direct dictionary imports
|
|
128
|
+
[intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
|
|
129
|
+
],
|
|
130
|
+
};
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
이 구성은 컴포넌트 내에 선언된 콘텐츠가 자동으로 추출되어 빌드 과정 중에 사전 생성에 사용되도록 보장합니다.
|