@intlayer/docs 7.3.0 → 7.3.2-canary.0
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/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/de/compiler_vs_declarative_i18n.md +1 -2
- package/blog/de/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/en/compiler_vs_declarative_i18n.md +1 -2
- 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/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/es/compiler_vs_declarative_i18n.md +1 -2
- package/blog/es/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/fr/compiler_vs_declarative_i18n.md +1 -2
- package/blog/fr/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/hi/compiler_vs_declarative_i18n.md +1 -2
- package/blog/hi/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/id/compiler_vs_declarative_i18n.md +1 -2
- package/blog/id/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/it/compiler_vs_declarative_i18n.md +1 -2
- package/blog/it/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/ja/compiler_vs_declarative_i18n.md +1 -2
- package/blog/ja/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/ko/compiler_vs_declarative_i18n.md +1 -2
- package/blog/ko/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/pl/compiler_vs_declarative_i18n.md +1 -2
- package/blog/pl/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/pt/compiler_vs_declarative_i18n.md +1 -2
- package/blog/pt/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/ru/compiler_vs_declarative_i18n.md +1 -2
- package/blog/ru/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/tr/compiler_vs_declarative_i18n.md +1 -2
- package/blog/tr/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/vi/compiler_vs_declarative_i18n.md +1 -2
- package/blog/vi/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/blog/zh/compiler_vs_declarative_i18n.md +1 -2
- package/blog/zh/list_i18n_technologies/frameworks/flutter.md +0 -22
- package/dist/cjs/generated/docs.entry.cjs +38 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +38 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +2 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/bundle_optimization.md +184 -0
- package/docs/ar/compiler.md +133 -0
- package/docs/ar/vs_code_extension.md +4 -0
- package/docs/de/bundle_optimization.md +194 -0
- package/docs/de/compiler.md +133 -0
- package/docs/de/how_works_intlayer.md +1 -1
- package/docs/de/vs_code_extension.md +4 -0
- package/docs/en/bundle_optimization.md +184 -0
- package/docs/en/compiler.md +133 -0
- package/docs/en/configuration.md +5 -2
- package/docs/en/how_works_intlayer.md +1 -1
- package/docs/en/vs_code_extension.md +7 -0
- package/docs/en-GB/bundle_optimization.md +184 -0
- package/docs/en-GB/compiler.md +133 -0
- package/docs/en-GB/how_works_intlayer.md +1 -1
- package/docs/en-GB/vs_code_extension.md +4 -0
- package/docs/es/bundle_optimization.md +194 -0
- package/docs/es/compiler.md +133 -0
- package/docs/es/how_works_intlayer.md +1 -1
- package/docs/es/vs_code_extension.md +4 -0
- package/docs/fr/bundle_optimization.md +184 -0
- package/docs/fr/compiler.md +133 -0
- package/docs/fr/how_works_intlayer.md +1 -1
- package/docs/fr/vs_code_extension.md +4 -0
- package/docs/hi/bundle_optimization.md +184 -0
- package/docs/hi/compiler.md +133 -0
- package/docs/hi/vs_code_extension.md +4 -0
- package/docs/id/bundle_optimization.md +184 -0
- package/docs/id/compiler.md +133 -0
- package/docs/id/how_works_intlayer.md +1 -1
- package/docs/id/vs_code_extension.md +4 -0
- package/docs/it/bundle_optimization.md +184 -0
- package/docs/it/compiler.md +133 -0
- package/docs/it/how_works_intlayer.md +1 -1
- package/docs/it/vs_code_extension.md +4 -0
- package/docs/ja/bundle_optimization.md +184 -0
- package/docs/ja/compiler.md +133 -0
- package/docs/ja/vs_code_extension.md +4 -0
- package/docs/ko/bundle_optimization.md +184 -0
- package/docs/ko/compiler.md +133 -0
- package/docs/ko/vs_code_extension.md +4 -0
- package/docs/pl/bundle_optimization.md +184 -0
- package/docs/pl/compiler.md +133 -0
- package/docs/pl/how_works_intlayer.md +1 -1
- package/docs/pl/vs_code_extension.md +4 -0
- package/docs/pt/bundle_optimization.md +184 -0
- package/docs/pt/compiler.md +133 -0
- package/docs/pt/how_works_intlayer.md +1 -1
- package/docs/pt/vs_code_extension.md +4 -0
- package/docs/ru/bundle_optimization.md +184 -0
- package/docs/ru/compiler.md +133 -0
- package/docs/ru/vs_code_extension.md +4 -0
- package/docs/tr/bundle_optimization.md +184 -0
- package/docs/tr/compiler.md +133 -0
- package/docs/tr/how_works_intlayer.md +1 -1
- package/docs/tr/vs_code_extension.md +4 -0
- package/docs/vi/bundle_optimization.md +184 -0
- package/docs/vi/compiler.md +133 -0
- package/docs/vi/vs_code_extension.md +4 -0
- package/docs/zh/bundle_optimization.md +184 -0
- package/docs/zh/compiler.md +133 -0
- package/docs/zh/vs_code_extension.md +4 -0
- package/package.json +8 -7
- package/src/generated/docs.entry.ts +38 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-09-09
|
|
3
|
+
updatedAt: 2025-09-09
|
|
4
|
+
title: Intlayer Compiler | i18n के लिए स्वचालित सामग्री निष्कर्षण
|
|
5
|
+
description: Intlayer Compiler के साथ अपने अंतरराष्ट्रीयकरण प्रक्रिया को स्वचालित करें। Vite, Next.js, और अन्य में तेज़, अधिक कुशल i18n के लिए सीधे अपने कंपोनेंट्स से सामग्री निकालें।
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- Compiler
|
|
9
|
+
- Internationalization
|
|
10
|
+
- i18n
|
|
11
|
+
- Automation
|
|
12
|
+
- Extraction
|
|
13
|
+
- Speed
|
|
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: Release Compiler
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# Intlayer Compiler | i18n के लिए स्वचालित सामग्री निष्कर्षण
|
|
29
|
+
|
|
30
|
+
## Intlayer Compiler क्या है?
|
|
31
|
+
|
|
32
|
+
**Intlayer Compiler** एक शक्तिशाली उपकरण है जिसे आपके एप्लिकेशन में अंतरराष्ट्रीयकरण (i18n) की प्रक्रिया को स्वचालित करने के लिए डिज़ाइन किया गया है। यह आपके स्रोत कोड (JSX, TSX, Vue, Svelte) में सामग्री घोषणाओं को स्कैन करता है, उन्हें निकालता है, और आवश्यक शब्दकोश फ़ाइलों को स्वचालित रूप से उत्पन्न करता है। यह आपको अपनी सामग्री को आपके कंपोनेंट्स के साथ सह-स्थित रखने की अनुमति देता है जबकि Intlayer आपके शब्दकोशों के प्रबंधन और समन्वय को संभालता है।
|
|
33
|
+
|
|
34
|
+
## Intlayer Compiler का उपयोग क्यों करें?
|
|
35
|
+
|
|
36
|
+
- **स्वचालन**: सामग्री को शब्दकोशों में मैन्युअल कॉपी-पेस्ट करने की आवश्यकता समाप्त करता है।
|
|
37
|
+
- **गति**: अनुकूलित सामग्री निष्कर्षण सुनिश्चित करता है कि आपका बिल्ड प्रक्रिया तेज़ बनी रहे।
|
|
38
|
+
- **डेवलपर अनुभव**: सामग्री घोषणाओं को वहीं रखें जहां उनका उपयोग होता है, जिससे रखरखाव में सुधार होता है।
|
|
39
|
+
- **लाइव अपडेट्स**: विकास के दौरान त्वरित प्रतिक्रिया के लिए Hot Module Replacement (HMR) का समर्थन करता है।
|
|
40
|
+
|
|
41
|
+
गहरे तुलना के लिए [Compiler vs. Declarative i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/en/compiler_vs_declarative_i18n.md) ब्लॉग पोस्ट देखें।
|
|
42
|
+
|
|
43
|
+
## Intlayer Compiler का उपयोग क्यों न करें?
|
|
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/en/compiler_vs_declarative_i18n.md) ब्लॉग पोस्ट देखें।
|
|
51
|
+
|
|
52
|
+
वैकल्पिक रूप से, अपनी सामग्री पर पूर्ण नियंत्रण रखते हुए अपनी i18n प्रक्रिया को स्वचालित करने के लिए, Intlayer एक स्वचालित निष्कर्षण कमांड `intlayer transform` (देखें [CLI दस्तावेज़ीकरण](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/cli/transform.md)) या Intlayer VS Code एक्सटेंशन का `Intlayer: extract content to Dictionary` कमांड (देखें [VS Code एक्सटेंशन दस्तावेज़ीकरण](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/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`) अपडेट करें ताकि extraction प्लगइन शामिल हो सके। हम एक हेल्पर `getExtractPluginOptions` प्रदान करते हैं जो आपके 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
|
+
यह कॉन्फ़िगरेशन सुनिश्चित करता है कि आपके कंपोनेंट्स में घोषित सामग्री स्वचालित रूप से निकाली जाए और आपके बिल्ड प्रक्रिया के दौरान शब्दकोश बनाने के लिए उपयोग की जाए।
|
|
@@ -42,6 +42,10 @@ history:
|
|
|
42
42
|
|
|
43
43
|
## विशेषताएँ
|
|
44
44
|
|
|
45
|
+

|
|
46
|
+
|
|
47
|
+
- **सामग्री निकालें** – अपने React / Vue / Svelte घटकों से सामग्री निकालें
|
|
48
|
+
|
|
45
49
|

|
|
46
50
|
|
|
47
51
|
- **तत्काल नेविगेशन** – `useIntlayer` कुंजी पर क्लिक करने पर सही सामग्री फ़ाइल पर तेजी से जाएं।
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-11-25
|
|
3
|
+
updatedAt: 2025-11-25
|
|
4
|
+
title: Mengoptimalkan Ukuran & Performa Bundle i18n
|
|
5
|
+
description: Mengurangi ukuran bundle aplikasi dengan mengoptimalkan konten internasionalisasi (i18n). Pelajari cara memanfaatkan tree shaking dan lazy loading untuk kamus dengan Intlayer.
|
|
6
|
+
keywords:
|
|
7
|
+
- Optimasi Bundle
|
|
8
|
+
- Otomasi Konten
|
|
9
|
+
- Konten Dinamis
|
|
10
|
+
- Intlayer
|
|
11
|
+
- Next.js
|
|
12
|
+
- JavaScript
|
|
13
|
+
- React
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- concept
|
|
17
|
+
- bundle-optimization
|
|
18
|
+
history:
|
|
19
|
+
- version: 6.0.0
|
|
20
|
+
date: 2025-11-25
|
|
21
|
+
changes: Inisialisasi riwayat
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Mengoptimalkan Ukuran & Performa Bundle i18n
|
|
25
|
+
|
|
26
|
+
Salah satu tantangan paling umum dengan solusi i18n tradisional yang mengandalkan file JSON adalah mengelola ukuran konten. Jika pengembang tidak secara manual memisahkan konten ke dalam namespace, pengguna sering kali harus mengunduh terjemahan untuk setiap halaman dan berpotensi setiap bahasa hanya untuk melihat satu halaman saja.
|
|
27
|
+
|
|
28
|
+
Misalnya, sebuah aplikasi dengan 10 halaman yang diterjemahkan ke dalam 10 bahasa mungkin mengakibatkan pengguna mengunduh konten dari 100 halaman, meskipun mereka hanya membutuhkan **satu** (halaman saat ini dalam bahasa saat ini). Hal ini menyebabkan pemborosan bandwidth dan waktu muat yang lebih lambat.
|
|
29
|
+
|
|
30
|
+
> Untuk mendeteksinya, Anda dapat menggunakan bundle analyzer seperti `rollup-plugin-visualizer` (vite), `@next/bundle-analyzer` (next.js), atau `webpack-bundle-analyzer` (React CRA / Angular / dll).
|
|
31
|
+
|
|
32
|
+
**Intlayer menyelesaikan masalah ini melalui optimasi saat build.** Intlayer menganalisis kode Anda untuk mendeteksi kamus mana yang benar-benar digunakan per komponen dan hanya menyuntikkan kembali konten yang diperlukan ke dalam bundle Anda.
|
|
33
|
+
|
|
34
|
+
## Daftar Isi
|
|
35
|
+
|
|
36
|
+
<TOC />
|
|
37
|
+
|
|
38
|
+
## Cara Kerjanya
|
|
39
|
+
|
|
40
|
+
Intlayer menggunakan **pendekatan per-komponen**. Berbeda dengan file JSON global, konten Anda didefinisikan berdampingan atau di dalam komponen Anda. Selama proses build, Intlayer:
|
|
41
|
+
|
|
42
|
+
1. **Menganalisis** kode Anda untuk menemukan panggilan `useIntlayer`.
|
|
43
|
+
2. **Membangun** konten kamus yang sesuai.
|
|
44
|
+
3. **Mengganti** panggilan `useIntlayer` dengan kode yang dioptimalkan berdasarkan konfigurasi Anda.
|
|
45
|
+
|
|
46
|
+
Ini memastikan bahwa:
|
|
47
|
+
|
|
48
|
+
- Jika sebuah komponen tidak diimpor, kontennya tidak disertakan dalam bundle (Eliminasi Kode Mati).
|
|
49
|
+
- Jika sebuah komponen dimuat secara lazy, kontennya juga dimuat secara lazy.
|
|
50
|
+
|
|
51
|
+
## Setup berdasarkan Platform
|
|
52
|
+
|
|
53
|
+
### Next.js
|
|
54
|
+
|
|
55
|
+
Next.js memerlukan plugin `@intlayer/swc` untuk menangani transformasi, karena Next.js menggunakan SWC untuk proses build.
|
|
56
|
+
|
|
57
|
+
> Plugin ini terpasang secara default karena plugin SWC masih bersifat eksperimental untuk Next.js. Hal ini mungkin akan berubah di masa depan.
|
|
58
|
+
|
|
59
|
+
### Vite
|
|
60
|
+
|
|
61
|
+
Vite menggunakan plugin `@intlayer/babel` yang sudah termasuk sebagai dependensi dari `vite-intlayer`. Optimasi ini diaktifkan secara default.
|
|
62
|
+
|
|
63
|
+
### Webpack
|
|
64
|
+
|
|
65
|
+
Untuk mengaktifkan optimasi bundle dengan Intlayer pada Webpack, Anda perlu menginstal dan mengonfigurasi plugin Babel (`@intlayer/babel`) atau SWC (`@intlayer/swc`) yang sesuai.
|
|
66
|
+
|
|
67
|
+
### Expo / Lynx
|
|
68
|
+
|
|
69
|
+
Optimasi bundle **belum tersedia** untuk platform ini. Dukungan akan ditambahkan pada rilis mendatang.
|
|
70
|
+
|
|
71
|
+
## Konfigurasi
|
|
72
|
+
|
|
73
|
+
Anda dapat mengontrol bagaimana Intlayer mengoptimalkan bundle Anda melalui properti `build` di dalam `intlayer.config.ts` Anda.
|
|
74
|
+
|
|
75
|
+
```typescript fileName="intlayer.config.ts"
|
|
76
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
77
|
+
|
|
78
|
+
const config: IntlayerConfig = {
|
|
79
|
+
internationalization: {
|
|
80
|
+
locales: [Locales.ENGLISH, Locales.FRENCH],
|
|
81
|
+
defaultLocale: Locales.ENGLISH,
|
|
82
|
+
},
|
|
83
|
+
build: {
|
|
84
|
+
optimize: true,
|
|
85
|
+
importMode: "static", // atau 'dynamic'
|
|
86
|
+
traversePattern: ["**/*.{js,ts,mjs,cjs,jsx,tsx}", "!**/node_modules/**"],
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export default config;
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
> Menjaga opsi default untuk `optimize` direkomendasikan dalam sebagian besar kasus.
|
|
94
|
+
|
|
95
|
+
> Lihat dokumentasi konfigurasi untuk detail lebih lanjut: [Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/configuration.md)
|
|
96
|
+
|
|
97
|
+
### Opsi Build
|
|
98
|
+
|
|
99
|
+
Opsi berikut tersedia di bawah objek konfigurasi `build`:
|
|
100
|
+
|
|
101
|
+
| Properti | Tipe | Default | Deskripsi |
|
|
102
|
+
| :-------------------- | :------------------------------ | :------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
103
|
+
| **`optimize`** | `boolean` | `undefined` | Mengontrol apakah optimasi build diaktifkan. Jika `true`, Intlayer menggantikan pemanggilan kamus dengan injeksi yang dioptimalkan. Jika `false`, optimasi dinonaktifkan. Idealnya diatur ke `true` pada produksi. |
|
|
104
|
+
| **`importMode`** | `'static' , 'dynamic' , 'live'` | `'static'` | Menentukan bagaimana kamus dimuat (lihat detail di bawah). |
|
|
105
|
+
| **`traversePattern`** | `string[]` | `['**/*.{js,ts,jsx,tsx}', ...]` | Pola glob yang menentukan file mana yang harus dipindai oleh Intlayer untuk optimasi. Gunakan ini untuk mengecualikan file yang tidak terkait dan mempercepat proses build. |
|
|
106
|
+
| **`outputFormat`** | `'esm', 'cjs'` | `'esm', 'cjs'` | Mengontrol format output dari kamus yang dibangun. |
|
|
107
|
+
|
|
108
|
+
## Mode Impor
|
|
109
|
+
|
|
110
|
+
Pengaturan `importMode` menentukan bagaimana konten kamus disuntikkan ke dalam komponen Anda.
|
|
111
|
+
|
|
112
|
+
### 1. Mode Statis (`default`)
|
|
113
|
+
|
|
114
|
+
Dalam mode statis, Intlayer menggantikan `useIntlayer` dengan `useDictionary` dan menyuntikkan kamus langsung ke dalam bundle JavaScript.
|
|
115
|
+
|
|
116
|
+
- **Kelebihan:** Rendering instan (sinkron), tanpa permintaan jaringan tambahan selama hidrasi.
|
|
117
|
+
- **Kekurangan:** Bundle menyertakan terjemahan untuk **semua** bahasa yang tersedia untuk komponen tersebut.
|
|
118
|
+
- **Cocok untuk:** Single Page Applications (SPA).
|
|
119
|
+
|
|
120
|
+
**Contoh Kode yang Dioptimalkan:**
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
// Kode Anda
|
|
124
|
+
const content = useIntlayer("my-key");
|
|
125
|
+
|
|
126
|
+
// Kode yang Dioptimalkan (Statis)
|
|
127
|
+
const content = useDictionary({
|
|
128
|
+
key: "my-key",
|
|
129
|
+
content: {
|
|
130
|
+
nodeType: "translation",
|
|
131
|
+
translation: {
|
|
132
|
+
en: "My title",
|
|
133
|
+
fr: "Mon titre",
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### 2. Mode Dinamis
|
|
140
|
+
|
|
141
|
+
Dalam mode dinamis, Intlayer menggantikan `useIntlayer` dengan `useDictionaryAsync`. Ini menggunakan `import()` (mekanisme mirip Suspense) untuk memuat malas secara spesifik JSON untuk locale saat ini.
|
|
142
|
+
|
|
143
|
+
- **Kelebihan:** **Tree shaking tingkat locale.** Pengguna yang melihat versi bahasa Inggris akan _hanya_ mengunduh kamus bahasa Inggris. Kamus bahasa Prancis tidak pernah dimuat.
|
|
144
|
+
- **Kekurangan:** Memicu permintaan jaringan (pengambilan aset) per komponen selama hidrasi.
|
|
145
|
+
- **Terbaik untuk:** Blok teks besar, artikel, atau aplikasi yang mendukung banyak bahasa di mana ukuran bundle sangat penting.
|
|
146
|
+
|
|
147
|
+
**Contoh Kode yang Dioptimalkan:**
|
|
148
|
+
|
|
149
|
+
```tsx
|
|
150
|
+
// Kode Anda
|
|
151
|
+
const content = useIntlayer("my-key");
|
|
152
|
+
|
|
153
|
+
// Kode yang Dioptimalkan (Dinamis)
|
|
154
|
+
const content = useDictionaryAsync({
|
|
155
|
+
en: () =>
|
|
156
|
+
import(".intlayer/dynamic_dictionary/my-key/en.json").then(
|
|
157
|
+
(mod) => mod.default
|
|
158
|
+
),
|
|
159
|
+
fr: () =>
|
|
160
|
+
import(".intlayer/dynamic_dictionary/my-key/fr.json").then(
|
|
161
|
+
(mod) => mod.default
|
|
162
|
+
),
|
|
163
|
+
});
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
> Saat menggunakan `importMode: 'dynamic'`, jika Anda memiliki 100 komponen yang menggunakan `useIntlayer` pada satu halaman, browser akan mencoba melakukan 100 pengambilan terpisah. Untuk menghindari "air terjun" permintaan ini, kelompokkan konten ke dalam lebih sedikit file `.content` (misalnya, satu kamus per bagian halaman) daripada satu per komponen atom.
|
|
167
|
+
|
|
168
|
+
> Saat ini, `importMode: 'dynamic'` belum sepenuhnya didukung untuk Vue dan Svelte. Disarankan menggunakan `importMode: 'static'` untuk framework ini sampai pembaruan lebih lanjut.
|
|
169
|
+
|
|
170
|
+
### 3. Mode Live
|
|
171
|
+
|
|
172
|
+
Berperilaku mirip dengan mode Dynamic tetapi mencoba mengambil kamus dari Intlayer Live Sync API terlebih dahulu. Jika panggilan API gagal atau konten tidak ditandai untuk pembaruan langsung, maka akan kembali ke impor dinamis.
|
|
173
|
+
|
|
174
|
+
> Lihat dokumentasi CMS untuk detail lebih lanjut: [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/id/intlayer_CMS.md)
|
|
175
|
+
|
|
176
|
+
## Ringkasan: Static vs Dynamic
|
|
177
|
+
|
|
178
|
+
| Fitur | Mode Static | Mode Dynamic |
|
|
179
|
+
| :------------------- | :------------------------------------------------- | :---------------------------------------- |
|
|
180
|
+
| **Ukuran Bundle JS** | Lebih besar (termasuk semua bahasa untuk komponen) | Paling kecil (hanya kode, tanpa konten) |
|
|
181
|
+
| **Initial Load** | Instan (Konten ada dalam bundle) | Sedikit penundaan (Mengambil JSON) |
|
|
182
|
+
| **Network Requests** | 0 permintaan tambahan | 1 permintaan per kamus |
|
|
183
|
+
| **Tree Shaking** | Tingkat komponen | Tingkat komponen + tingkat lokal |
|
|
184
|
+
| **Best Use Case** | Komponen UI, Aplikasi kecil | Halaman dengan banyak teks, Banyak Bahasa |
|
|
@@ -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.
|
|
@@ -146,7 +146,7 @@ Paket `vue-intlayer` digunakan untuk menginterpretasikan kamus Intlayer dan memb
|
|
|
146
146
|
|
|
147
147
|
Paket `nuxt-intlayer` adalah modul Nuxt untuk membuat kamus Intlayer dapat digunakan dalam aplikasi Nuxt. Paket ini mengintegrasikan fitur-fitur penting agar Intlayer dapat bekerja di lingkungan Nuxt, seperti middleware terjemahan, routing, atau konfigurasi file `nuxt.config.js`.
|
|
148
148
|
|
|
149
|
-
### svelte-intlayer
|
|
149
|
+
### svelte-intlayer
|
|
150
150
|
|
|
151
151
|
Paket `svelte-intlayer` digunakan untuk menginterpretasikan kamus Intlayer dan membuatnya dapat digunakan dalam aplikasi Svelte.
|
|
152
152
|
|
|
@@ -42,6 +42,10 @@ Tautan ekstensi: [https://marketplace.visualstudio.com/items?itemName=Intlayer.i
|
|
|
42
42
|
|
|
43
43
|
## Fitur
|
|
44
44
|
|
|
45
|
+

|
|
46
|
+
|
|
47
|
+
- **Ekstrak Konten** – Ekstrak konten dari komponen React / Vue / Svelte Anda
|
|
48
|
+
|
|
45
49
|

|
|
46
50
|
|
|
47
51
|
- **Navigasi Instan** – Melompat dengan cepat ke file konten yang benar saat mengklik kunci `useIntlayer`.
|