@intlayer/docs 9.2.0 → 9.3.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 +24 -24
- package/blog/ar/index.md +1 -1
- package/blog/ar/rag_powered_documentation_assistant.md +1 -1
- package/blog/de/index.md +1 -1
- package/blog/en/index.md +1 -1
- package/blog/en-GB/index.md +1 -1
- package/blog/es/index.md +1 -1
- package/blog/fr/index.md +1 -1
- package/blog/hi/index.md +1 -1
- package/blog/id/index.md +1 -1
- package/blog/it/index.md +1 -1
- package/blog/ja/index.md +1 -1
- package/blog/ko/index.md +1 -1
- package/blog/pl/index.md +1 -1
- package/blog/pl/rag_powered_documentation_assistant.md +1 -1
- package/blog/pt/index.md +1 -1
- package/blog/ru/index.md +1 -1
- package/blog/uk/index.md +1 -1
- package/blog/vi/index.md +1 -1
- package/blog/zh/index.md +1 -1
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
- package/dist/cjs/authors2.cjs +0 -1
- package/dist/cjs/common.cjs +24 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +35 -6
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +35 -6
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +35 -6
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +35 -6
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/common.mjs +24 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +35 -6
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +35 -6
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +35 -6
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +35 -6
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/docs/ar/bundle_optimization.md +58 -25
- package/docs/ar/configuration.md +10 -10
- package/docs/ar/interest_of_intlayer.md +24 -22
- package/docs/ar/intlayer_with_express.md +1 -1
- package/docs/ar/intlayer_with_svelte_kit.md +1 -1
- package/docs/ar/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ar/intlayer_with_tanstack.md +5 -3
- package/docs/ar/live-sync.md +4 -0
- package/docs/ar/lsp.md +114 -175
- package/docs/ar/readme.md +25 -25
- package/docs/bn/bundle_optimization.md +58 -25
- package/docs/bn/configuration.md +10 -10
- package/docs/bn/interest_of_intlayer.md +24 -22
- package/docs/cs/bundle_optimization.md +58 -25
- package/docs/cs/configuration.md +10 -10
- package/docs/cs/interest_of_intlayer.md +24 -22
- package/docs/de/bundle_optimization.md +58 -25
- package/docs/de/configuration.md +10 -10
- package/docs/de/interest_of_intlayer.md +24 -22
- package/docs/de/intlayer_with_svelte_kit.md +1 -1
- package/docs/de/intlayer_with_tanstack+solid.md +5 -3
- package/docs/de/intlayer_with_tanstack.md +5 -3
- package/docs/de/live-sync.md +4 -0
- package/docs/de/lsp.md +111 -172
- package/docs/de/readme.md +24 -24
- package/docs/en/bundle_optimization.md +51 -23
- package/docs/en/configuration.md +10 -10
- package/docs/en/interest_of_intlayer.md +24 -22
- package/docs/en/intlayer_with_svelte_kit.md +1 -1
- package/docs/en/intlayer_with_tanstack+solid.md +5 -3
- package/docs/en/intlayer_with_tanstack.md +5 -3
- package/docs/en/live-sync.md +4 -0
- package/docs/en/lsp.md +109 -170
- package/docs/en/readme.md +24 -24
- package/docs/en-GB/bundle_optimization.md +58 -25
- package/docs/en-GB/configuration.md +10 -10
- package/docs/en-GB/interest_of_intlayer.md +24 -22
- package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
- package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -3
- package/docs/en-GB/intlayer_with_tanstack.md +5 -3
- package/docs/en-GB/live-sync.md +4 -0
- package/docs/en-GB/lsp.md +109 -170
- package/docs/en-GB/readme.md +24 -24
- package/docs/es/bundle_optimization.md +58 -25
- package/docs/es/configuration.md +10 -10
- package/docs/es/interest_of_intlayer.md +24 -22
- package/docs/es/intlayer_with_svelte_kit.md +1 -1
- package/docs/es/intlayer_with_tanstack+solid.md +5 -3
- package/docs/es/intlayer_with_tanstack.md +5 -3
- package/docs/es/live-sync.md +4 -0
- package/docs/es/lsp.md +114 -175
- package/docs/es/readme.md +24 -24
- package/docs/fr/bundle_optimization.md +58 -25
- package/docs/fr/configuration.md +10 -10
- package/docs/fr/interest_of_intlayer.md +24 -22
- package/docs/fr/intlayer_with_svelte_kit.md +1 -1
- package/docs/fr/intlayer_with_tanstack+solid.md +5 -3
- package/docs/fr/intlayer_with_tanstack.md +5 -3
- package/docs/fr/live-sync.md +4 -0
- package/docs/fr/lsp.md +110 -171
- package/docs/fr/readme.md +24 -24
- package/docs/hi/bundle_optimization.md +58 -25
- package/docs/hi/configuration.md +10 -10
- package/docs/hi/interest_of_intlayer.md +24 -22
- package/docs/hi/intlayer_with_express.md +1 -1
- package/docs/hi/intlayer_with_svelte_kit.md +1 -1
- package/docs/hi/intlayer_with_tanstack+solid.md +5 -3
- package/docs/hi/intlayer_with_tanstack.md +5 -3
- package/docs/hi/live-sync.md +4 -0
- package/docs/hi/lsp.md +113 -174
- package/docs/hi/readme.md +24 -24
- package/docs/id/bundle_optimization.md +58 -25
- package/docs/id/configuration.md +10 -10
- package/docs/id/interest_of_intlayer.md +24 -22
- package/docs/id/intlayer_with_svelte_kit.md +1 -1
- package/docs/id/intlayer_with_tanstack+solid.md +5 -3
- package/docs/id/intlayer_with_tanstack.md +5 -3
- package/docs/id/live-sync.md +4 -0
- package/docs/id/lsp.md +113 -174
- package/docs/id/readme.md +24 -24
- package/docs/it/bundle_optimization.md +58 -25
- package/docs/it/configuration.md +10 -10
- package/docs/it/interest_of_intlayer.md +24 -22
- package/docs/it/intlayer_with_svelte_kit.md +1 -1
- package/docs/it/intlayer_with_tanstack+solid.md +5 -3
- package/docs/it/intlayer_with_tanstack.md +5 -3
- package/docs/it/live-sync.md +4 -0
- package/docs/it/lsp.md +115 -176
- package/docs/it/readme.md +24 -24
- package/docs/ja/bundle_optimization.md +58 -25
- package/docs/ja/configuration.md +10 -10
- package/docs/ja/interest_of_intlayer.md +24 -22
- package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ja/intlayer_with_tanstack.md +5 -3
- package/docs/ja/live-sync.md +4 -0
- package/docs/ja/lsp.md +113 -174
- package/docs/ja/readme.md +24 -24
- package/docs/ko/bundle_optimization.md +58 -25
- package/docs/ko/configuration.md +10 -10
- package/docs/ko/interest_of_intlayer.md +24 -22
- package/docs/ko/intlayer_with_svelte_kit.md +1 -1
- package/docs/ko/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ko/intlayer_with_tanstack.md +5 -3
- package/docs/ko/live-sync.md +4 -0
- package/docs/ko/lsp.md +112 -173
- package/docs/ko/readme.md +24 -24
- package/docs/nl/bundle_optimization.md +58 -25
- package/docs/nl/configuration.md +10 -10
- package/docs/nl/interest_of_intlayer.md +24 -22
- package/docs/pl/bundle_optimization.md +58 -25
- package/docs/pl/configuration.md +10 -10
- package/docs/pl/interest_of_intlayer.md +4 -2
- package/docs/pl/intlayer_with_svelte_kit.md +1 -1
- package/docs/pl/intlayer_with_tanstack+solid.md +5 -3
- package/docs/pl/intlayer_with_tanstack.md +5 -3
- package/docs/pl/live-sync.md +4 -0
- package/docs/pl/lsp.md +115 -176
- package/docs/pl/readme.md +24 -24
- package/docs/pt/bundle_optimization.md +58 -24
- package/docs/pt/configuration.md +10 -10
- package/docs/pt/interest_of_intlayer.md +24 -22
- package/docs/pt/intlayer_with_svelte_kit.md +1 -1
- package/docs/pt/intlayer_with_tanstack+solid.md +5 -3
- package/docs/pt/intlayer_with_tanstack.md +5 -3
- package/docs/pt/live-sync.md +4 -0
- package/docs/pt/lsp.md +113 -174
- package/docs/pt/readme.md +24 -24
- package/docs/ru/bundle_optimization.md +58 -25
- package/docs/ru/configuration.md +10 -10
- package/docs/ru/interest_of_intlayer.md +24 -22
- package/docs/ru/intlayer_with_nextjs_14.md +1 -1
- package/docs/ru/intlayer_with_nextjs_15.md +1 -1
- package/docs/ru/intlayer_with_svelte_kit.md +1 -1
- package/docs/ru/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ru/intlayer_with_tanstack.md +5 -3
- package/docs/ru/live-sync.md +4 -0
- package/docs/ru/lsp.md +112 -173
- package/docs/ru/readme.md +24 -24
- package/docs/tr/bundle_optimization.md +58 -25
- package/docs/tr/configuration.md +10 -10
- package/docs/tr/interest_of_intlayer.md +24 -22
- package/docs/tr/intlayer_with_svelte_kit.md +1 -1
- package/docs/tr/intlayer_with_tanstack+solid.md +5 -3
- package/docs/tr/intlayer_with_tanstack.md +5 -3
- package/docs/tr/live-sync.md +4 -0
- package/docs/tr/lsp.md +113 -174
- package/docs/tr/readme.md +24 -24
- package/docs/uk/bundle_optimization.md +58 -25
- package/docs/uk/configuration.md +10 -10
- package/docs/uk/interest_of_intlayer.md +4 -2
- package/docs/uk/intlayer_with_svelte_kit.md +1 -1
- package/docs/uk/intlayer_with_tanstack+solid.md +5 -3
- package/docs/uk/intlayer_with_tanstack.md +5 -3
- package/docs/uk/live-sync.md +4 -0
- package/docs/uk/lsp.md +113 -174
- package/docs/uk/per_locale_file.md +1 -1
- package/docs/uk/readme.md +24 -24
- package/docs/ur/bundle_optimization.md +58 -25
- package/docs/ur/configuration.md +10 -10
- package/docs/ur/interest_of_intlayer.md +24 -22
- package/docs/vi/bundle_optimization.md +58 -25
- package/docs/vi/configuration.md +10 -10
- package/docs/vi/interest_of_intlayer.md +24 -22
- package/docs/vi/intlayer_with_svelte_kit.md +1 -1
- package/docs/vi/intlayer_with_tanstack+solid.md +5 -3
- package/docs/vi/intlayer_with_tanstack.md +5 -3
- package/docs/vi/live-sync.md +4 -0
- package/docs/vi/lsp.md +115 -176
- package/docs/vi/readme.md +24 -24
- package/docs/zh/bundle_optimization.md +58 -25
- package/docs/zh/configuration.md +10 -10
- package/docs/zh/interest_of_intlayer.md +24 -22
- package/docs/zh/intlayer_with_svelte_kit.md +1 -1
- package/docs/zh/intlayer_with_tanstack+solid.md +5 -3
- package/docs/zh/intlayer_with_tanstack.md +5 -3
- package/docs/zh/live-sync.md +4 -0
- package/docs/zh/lsp.md +113 -174
- package/docs/zh/readme.md +21 -21
- package/docs/zh-TW/bundle_optimization.md +58 -25
- package/docs/zh-TW/interest_of_intlayer.md +24 -22
- package/package.json +7 -7
- package/src/common.ts +39 -2
- package/src/generated/blog.entry.ts +39 -7
- package/src/generated/docs.entry.ts +39 -7
- package/src/generated/frequentQuestions.entry.ts +39 -7
- package/src/generated/legal.entry.ts +39 -7
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-11-25
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-09
|
|
4
4
|
title: i18n بنڈل سائز اور کارکردگی کی آپٹیمائزیشن
|
|
5
5
|
description: انٹرنیشنلائزیشن (i18n) مواد کو آپٹیمائز کرکے اپنی ایپلیکیشن کے بنڈل سائز کو کم کریں۔ جانیں کہ Intlayer کے ساتھ ڈکشنریوں کے لیے ٹری شیکنگ (tree shaking) اور لیزی لوڈنگ (lazy loading) کا استعمال کیسے کریں۔
|
|
6
6
|
keywords:
|
|
@@ -16,6 +16,12 @@ slugs:
|
|
|
16
16
|
- concept
|
|
17
17
|
- bundle-optimization
|
|
18
18
|
history:
|
|
19
|
+
- version: 9.2.1
|
|
20
|
+
date: 2026-08-09
|
|
21
|
+
changes: "`purge` اور `minify` اب `@intlayer/swc` کے ذریعے Next.js پر کام کرتے ہیں — `babel.config.js` کی ضرورت نہیں"
|
|
22
|
+
- version: 8.12.0
|
|
23
|
+
date: 2026-06-24
|
|
24
|
+
changes: "حوالہ جاتی جدولوں میں Babel پلگ اِنز کو مطلوبہ پائپ لائن ترتیب (extract → purge → minify → optimize) میں درج کرنا"
|
|
19
25
|
- version: 8.12.0
|
|
20
26
|
date: 2026-06-07
|
|
21
27
|
changes: "Babel/Webpack کے لیے `intlayerPurgeBabelPlugin` اور `intlayerMinifyBabelPlugin` شامل کیا گیا؛ پلگ ان پائپ لائن کو واضح کیا گیا"
|
|
@@ -191,12 +197,14 @@ Intlayer کا بلڈ آپٹیمائزیشن کئی الگ الگ پلگ انز
|
|
|
191
197
|
|
|
192
198
|
یہ براہ راست Webpack پر مبنی سیٹ اپس کے لیے `babel.config.js` میں استعمال ہوتے ہیں (جیسے Babel کے ساتھ Next.js، CRA، کسٹم Webpack وغیرہ)۔
|
|
193
199
|
|
|
200
|
+
نیچے دیا گیا جدول انہیں مطلوبہ پائپ لائن ترتیب میں درج کرتا ہے (وہی ترتیب جس میں انہیں `babel.config.js` میں آنا چاہیے):
|
|
201
|
+
|
|
194
202
|
| پلگ ان | یہ کیا کرتا ہے |
|
|
195
203
|
| :---------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
196
204
|
| `intlayerExtractBabelPlugin` | `.content.ts` فائلوں کو اسکین کرتا ہے اور مرتب کی گئی (compiled) ڈکشنریوں کو `.intlayer/` میں لکھتا ہے |
|
|
197
|
-
| `intlayerOptimizeBabelPlugin` | `useIntlayer('key')` کو `useDictionary(hash)` میں بدل دیتا ہے اور متعلقہ ڈکشنری کا `import` شامل (inject) کرتا ہے |
|
|
198
205
|
| `intlayerPurgeBabelPlugin` | تمام سورس (source) فائلوں کو اسکین کرتا ہے، مرتب شدہ `.intlayer/**/*.json` ڈکشنری فائلوں سے **غیر استعمال شدہ مواد (unused content fields)** کو ہٹا دیتا ہے |
|
|
199
206
|
| `intlayerMinifyBabelPlugin` | JSON فائلوں اور سورس کوڈ دونوں میں **مواد کی فیلڈ کیز (keys) کا نام بدل کر** چھوٹے حروف تہجی (alias) رکھ دیتا ہے (جیسے `title` → `a`) |
|
|
207
|
+
| `intlayerOptimizeBabelPlugin` | `useIntlayer('key')` کو `useDictionary(hash)` میں بدل دیتا ہے اور متعلقہ ڈکشنری کا `import` شامل (inject) کرتا ہے |
|
|
200
208
|
|
|
201
209
|
> **پلگ ان کی ترتیب اہم ہے۔** آپ کے `babel.config.js` میں purge اور minify کے پلگ انز کا optimize پلگ ان سے **پہلے** ہونا لازمی ہے۔ optimize مرحلہ (pass) `useIntlayer('key')` کو ایک مبہم `useDictionary(hash)` کال سے بدل دیتا ہے، جس سے ڈکشنری کی (key) کی وہ معلومات مٹ جاتی ہے جس کی purge اور minify مراحل کو ضرورت ہوتی ہے تاکہ وہ جان سکیں کہ کون سی فیلڈز استعمال ہو رہی ہیں۔
|
|
202
210
|
|
|
@@ -205,9 +213,9 @@ Intlayer کا بلڈ آپٹیمائزیشن کئی الگ الگ پلگ انز
|
|
|
205
213
|
| آپشنز ہیلپر (Options helper) | کس کے ساتھ استعمال ہوتا ہے |
|
|
206
214
|
| :--------------------------- | :---------------------------- |
|
|
207
215
|
| `getExtractPluginOptions()` | `intlayerExtractBabelPlugin` |
|
|
208
|
-
| `getOptimizePluginOptions()` | `intlayerOptimizeBabelPlugin` |
|
|
209
216
|
| `getPurgePluginOptions()` | `intlayerPurgeBabelPlugin` |
|
|
210
217
|
| `getMinifyPluginOptions()` | `intlayerMinifyBabelPlugin` |
|
|
218
|
+
| `getOptimizePluginOptions()` | `intlayerOptimizeBabelPlugin` |
|
|
211
219
|
|
|
212
220
|
### Vite پلگ انز (`vite-intlayer`)
|
|
213
221
|
|
|
@@ -220,6 +228,20 @@ Vite کے صارفین **انہیں کبھی بھی براہ راست کنفیگ
|
|
|
220
228
|
| Dictionary minify | بالکل `intlayerMinifyBabelPlugin` کے JSON رائٹ مرحلے کی طرح |
|
|
221
229
|
| Babel transform | بالکل `intlayerMinifyBabelPlugin` کے سورس کوڈ کے رینیم اور `intlayerOptimizeBabelPlugin` کی طرح |
|
|
222
230
|
|
|
231
|
+
### SWC پلگ اِن (`@intlayer/swc`)
|
|
232
|
+
|
|
233
|
+
Next.js استعمال کرنے والے بھی **انہیں کبھی براہِ راست ترتیب نہیں دیتے**۔ **v9.2.1** سے، `next.config.ts` میں `withIntlayer()` صرف `build.purge` اور `build.minify` فلیگز کی بنیاد پر مکمل پائپ لائن چلاتا ہے — purge، minify اور import کی دوبارہ تحریر۔
|
|
234
|
+
|
|
235
|
+
کام دو حصوں میں بٹا ہوا ہے، کیونکہ SWC کا Wasm پلگ اِن ایک وقت میں ایک ہی فائل کو تبدیل کرتا ہے اور اسے فائل سسٹم تک رسائی نہیں ہوتی:
|
|
236
|
+
|
|
237
|
+
| مرحلہ | کہاں چلتا ہے | کیا کرتا ہے |
|
|
238
|
+
| :-------------------------------------------- | :----------------------------- | :--------------------------------------------------------------------------------------------------------- |
|
|
239
|
+
| استعمال کا تجزیہ + JSON purge/minify | Node، `withIntlayer()` کے اندر | ہر کمپوننٹ سورس فائل پڑھتا ہے، `.intlayer/**/*.json` دوبارہ لکھتا ہے، اور نام بدلنے کی جدولیں تیار کرتا ہے |
|
|
240
|
+
| سورس کی دوبارہ تحریر (`content.title` ← `.a`) | `@intlayer/swc` (Wasm) | نام بدلنے کی جدولیں آپ کے کوڈ میں متعلقہ پراپرٹی رسائیوں پر لاگو کرتا ہے |
|
|
241
|
+
| Import کی دوبارہ تحریر (`useIntlayer` ← dict) | `@intlayer/swc` (Wasm) | `intlayerOptimizeBabelPlugin` کی طرح |
|
|
242
|
+
|
|
243
|
+
یہ طے کرنا کہ _کون سے_ فیلڈز غیر استعمال شدہ ہیں اور ہر ایک کو _کون سا_ مختصر نام ملے گا، اس کے لیے فائلوں کے درمیان حالت اور فائل I/O درکار ہے، اس لیے وہ نصف حصہ Node میں چلتا ہے؛ SWC پلگ اِن کو صرف نتیجہ خیز جدولیں ملتی ہیں۔
|
|
244
|
+
|
|
223
245
|
## پلیٹ فارم کے لحاظ سے سیٹ اپ
|
|
224
246
|
|
|
225
247
|
<Tabs>
|
|
@@ -227,10 +249,12 @@ Vite کے صارفین **انہیں کبھی بھی براہ راست کنفیگ
|
|
|
227
249
|
|
|
228
250
|
### Next.js
|
|
229
251
|
|
|
230
|
-
Next.js کو
|
|
252
|
+
Next.js کو `@intlayer/swc` پلگ اِن درکار ہے، کیونکہ Next.js بلڈ کے لیے SWC استعمال کرتا ہے۔ **v9.2.1** سے یہ اکیلا پیکیج پوری پائپ لائن کا احاطہ کرتا ہے — آپٹیمائز (import کی دوبارہ تحریر)، purge اور minify۔
|
|
231
253
|
|
|
232
254
|
> یہ پلگ ان بائی ڈیفالٹ انسٹال نہیں ہوتا کیونکہ SWC کے پلگ انز Next.js کے لیے اب بھی تجرباتی مراحل میں ہیں۔ یہ مستقبل میں بدل سکتا ہے۔
|
|
233
255
|
|
|
256
|
+
> **Next.js 16.1.0 کم از کم ورژن ہے۔** یہ SWC کے آگے کی جانب ہم آہنگ Wasm پلگ اِن ABI پر بنایا گیا پہلا ریلیز ہے؛ اس سے پرانے ریلیز پلگ اِن کو مسترد کر دیتے ہیں۔ `withIntlayer` آپ کے پروجیکٹ کا Next.js ورژن پڑھتا ہے اور 16.1.0 سے نیچے پلگ اِن رجسٹر ہی نہیں کرتا — وہ بلڈز پھر بھی کامیاب ہوتے ہیں، بس بنڈل آپٹیمائزیشن کے بغیر چلتے ہیں۔
|
|
257
|
+
|
|
234
258
|
<Tabs>
|
|
235
259
|
<Tab value="npm">
|
|
236
260
|
|
|
@@ -265,33 +289,40 @@ intlayer-swc-plugin = "*"
|
|
|
265
289
|
|
|
266
290
|
انسٹال ہونے کے بعد، Intlayer خود بخود پلگ ان کو شناخت کر کے اس کا استعمال شروع کر دے گا۔
|
|
267
291
|
|
|
268
|
-
**
|
|
292
|
+
**Purge اور minify** مراحل (فیلڈ ہٹانا اور فیلڈ کا نام بدلنا) کے لیے کسی اضافی پیکیج یا `babel.config.js` کی ضرورت نہیں۔ اپنی کنفیگ کو `withIntlayer` سے لپیٹیں اور `intlayer.config.ts` میں فلیگز آن کریں:
|
|
269
293
|
|
|
270
|
-
```
|
|
271
|
-
|
|
294
|
+
```typescript fileName="next.config.ts"
|
|
295
|
+
import { withIntlayer } from "next-intlayer/server";
|
|
296
|
+
import type { NextConfig } from "next";
|
|
297
|
+
|
|
298
|
+
const nextConfig: NextConfig = {/* آپ کی کنفیگ */};
|
|
299
|
+
|
|
300
|
+
export default withIntlayer(nextConfig);
|
|
272
301
|
```
|
|
273
302
|
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
intlayerPurgeBabelPlugin,
|
|
277
|
-
intlayerMinifyBabelPlugin,
|
|
278
|
-
getPurgePluginOptions,
|
|
279
|
-
getMinifyPluginOptions,
|
|
280
|
-
} = require("@intlayer/babel");
|
|
303
|
+
```typescript fileName="intlayer.config.ts"
|
|
304
|
+
import type { IntlayerConfig } from "intlayer";
|
|
281
305
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
//
|
|
286
|
-
|
|
287
|
-
// Minify: JSON اور سورس کوڈ میں مواد کی فیلڈ کیز کا نام بدلیں
|
|
288
|
-
[intlayerMinifyBabelPlugin, getMinifyPluginOptions()],
|
|
289
|
-
// نوٹ: intlayerOptimizeBabelPlugin کی یہاں ضرورت نہیں ہے کیونکہ
|
|
290
|
-
// @intlayer/swc اسے useIntlayer → useDictionary ری رائٹ کو سنبھالتا ہے۔
|
|
291
|
-
],
|
|
306
|
+
const config: IntlayerConfig = {
|
|
307
|
+
build: {
|
|
308
|
+
purge: true, // بنڈل کیے گئے JSON سے غیر استعمال شدہ مواد کے فیلڈز ہٹاتا ہے
|
|
309
|
+
minify: true, // مواد کے فیلڈ کیز کو مختصر ناموں میں بدلتا ہے
|
|
310
|
+
},
|
|
292
311
|
};
|
|
312
|
+
|
|
313
|
+
export default config;
|
|
293
314
|
```
|
|
294
315
|
|
|
316
|
+
`next build` کے دوران، `withIntlayer` آپ کے سورسز کا تجزیہ کرتا ہے، مرتب شدہ ڈکشنریز دوبارہ لکھتا ہے، اور نتیجے میں بننے والی فیلڈ نام بدلنے کی جدولیں `@intlayer/swc` کو دیتا ہے، جو آپ کے کوڈ میں متعلقہ پراپرٹی رسائیوں کو اپ ڈیٹ کرتا ہے۔
|
|
317
|
+
|
|
318
|
+
> `withIntlayerSync` نہیں بلکہ غیر ہم وقت (async) `withIntlayer` استعمال کریں۔ ہم وقت نسخہ تجزیے کی پائپ لائن نہیں چلاتا، اس لیے اس کے ساتھ purge اور minify کا کوئی اثر نہیں ہوتا۔
|
|
319
|
+
|
|
320
|
+
> Purge اور minify صرف `next build` پر چلتے ہیں — آپٹیمائز پائپ لائن `next dev` کے دوران بند رہتی ہے۔
|
|
321
|
+
|
|
322
|
+
> جب کمپیٹ اڈاپٹر کالرز ترتیب دیے گئے ہوں تب بھی یہ غیر فعال ہو جاتے ہیں (`swcExtraCallers`، جنہیں `@intlayer/next-intl` یا `@intlayer/react-i18next` جیسے کمپیٹ پیکیجز مقرر کرتے ہیں): وہ کال سائٹس استعمال کے تجزیہ کار کو نظر نہیں آتیں، اس لیے purge ایسے فیلڈز ہٹا دیتا جو کوڈ اب بھی پڑھتا ہے۔ Import کی دوبارہ تحریر فعال رہتی ہے۔
|
|
323
|
+
|
|
324
|
+
**پرانے ورژنز (9.2.1 سے پہلے)** میں `@intlayer/babel` اور ایک ایسی `babel.config.js` درکار تھی جو `intlayerPurgeBabelPlugin` اور `intlayerMinifyBabelPlugin` کا اعلان کرے۔ اب اس فائل کی ضرورت نہیں اور اسے حذف کیا جا سکتا ہے۔
|
|
325
|
+
|
|
295
326
|
</Tab>
|
|
296
327
|
<Tab value="vite">
|
|
297
328
|
|
|
@@ -447,6 +478,8 @@ export default config;
|
|
|
447
478
|
|
|
448
479
|
> منی فیکیشن کو چھوڑ (skipped) دیا جاتا ہے جب `optimize` کی ویلیو `false` ہو، یا جب `editor.enabled` کی ویلیو `true` ہو (ویژول ایڈیٹر کو ایڈیٹنگ کی اجازت دینے کے لیے اصل فیلڈ کے ناموں کی ضرورت ہوتی ہے)۔
|
|
449
480
|
|
|
481
|
+
> Next.js پر، minification تب بھی چھوڑ دی جاتی ہے جب `@intlayer/swc` نصب نہ ہو یا لوڈ نہ ہو سکے (16.1.0 سے نیچے کا Next.js)۔ سورس میں رسائیوں کو دوبارہ لکھنے والا نصف حصہ یہی پلگ اِن ہے، اس لیے اس کے بغیر ڈکشنریز کے نام بدلنے سے آپ کا کوڈ ایسے فیلڈ نام پڑھتا رہ جائے گا جو اب موجود نہیں۔
|
|
482
|
+
|
|
450
483
|
> منی فیکیشن ان ڈکشنریوں کے لیے بھی نظرانداز کی جاتی ہے جنہیں `importMode: 'fetch'` کے ذریعے لوڈ کیا گیا ہو کیونکہ ان کا JSON ریموٹ API سے اصل فیلڈ ناموں کے ساتھ پیش کیا جاتا ہے — کلائنٹ سائیڈ کیز کا نام بدلنے سے سرور/کلائنٹ کا کنٹریکٹ (contract) ٹوٹ جائے گا۔
|
|
451
484
|
|
|
452
485
|
### پرجنگ (غیر استعمال شدہ فیلڈز کو ہٹانا)
|
|
@@ -475,7 +508,7 @@ export default config;
|
|
|
475
508
|
{ "title": "…", "subtitle": "…" }
|
|
476
509
|
```
|
|
477
510
|
|
|
478
|
-
> جب `optimize` کی ویلیو `false` ہو یا جب `editor.enabled` کی ویلیو `true` ہو تو پرجنگ (Purging) چھوڑ (skipped) دی جاتی ہے۔
|
|
511
|
+
> جب `optimize` کی ویلیو `false` ہو یا جب `editor.enabled` کی ویلیو `true` ہو تو پرجنگ (Purging) چھوڑ (skipped) دی جاتی ہے۔ Next.js پر یہ تب بھی چھوڑ دیا جاتا ہے جب `@intlayer/swc` دستیاب نہ ہو، اور جب کمپیٹ اڈاپٹر کالرز ترتیب دیے گئے ہوں۔
|
|
479
512
|
|
|
480
513
|
> پرجنگ کو حفاظتی تدابیر (conservatively) کے طور پر ان حالات میں بھی چھوڑ دیا جاتا ہے جب کوئی سورس فائل پارس (parse) نہیں ہو پاتی، یا جب `useIntlayer` کا نتیجہ کسی ویری ایبل کو تفویض (assign) کر دیا جائے اور پھر ان طریقوں سے آگے بڑھایا جائے جن کا اسٹیٹک اینالائزر کھوج نہیں لگا سکتا (جیسے اسپریڈ کو کسی آبجیکٹ میں ڈالنا، ڈسٹرکچر کیے بغیر پروپ کے طور پر بھیجنا)۔ ان صورتوں میں، مکمل ڈکشنری محفوظ رکھی جاتی ہے۔
|
|
481
514
|
|
package/docs/ur/configuration.md
CHANGED
|
@@ -406,7 +406,7 @@ const config: IntlayerConfig = {
|
|
|
406
406
|
ai: {
|
|
407
407
|
/**
|
|
408
408
|
* استعمال کیا جانے والا AI فراہم کنندہ۔
|
|
409
|
-
* اختیارات: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'
|
|
409
|
+
* اختیارات: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio', 'moonshotai'
|
|
410
410
|
* ڈیفالٹ: 'openai'
|
|
411
411
|
*/
|
|
412
412
|
provider: "openai",
|
|
@@ -1019,15 +1019,15 @@ Intlayer زیادہ سے زیادہ لچک کو یقینی بنانے کے لی
|
|
|
1019
1019
|
- **Together.ai**
|
|
1020
1020
|
- **LM Studio**
|
|
1021
1021
|
|
|
1022
|
-
| فیلڈ | وضاحت | قسم
|
|
1023
|
-
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
|
1024
|
-
| `provider` | Intlayer AI خصوصیات کے لیے استعمال کیا جانے والا فراہم کنندہ۔ | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | `undefined` | `'anthropic'` | مختلف فراہم کنندگان کے لیے مختلف API کلیدوں کی ضرورت ہوتی ہے اور ان کی قیمتوں کا ڈھانچہ بھی مختلف ہوتا ہے۔ |
|
|
1025
|
-
| `model` | AI خصوصیات میں استعمال ہونے والا AI ماڈل۔ | `string`
|
|
1026
|
-
| `temperature` | AI کے جوابات میں بے ترتیبی (randomness) کو کنٹرول کرتا ہے۔ | `number`
|
|
1027
|
-
| `apiKey` | منتخب کردہ فراہم کنندہ کے لیے آپ کی API کلید۔ | `string`
|
|
1028
|
-
| `applicationContext` | آپ کی ایپلیکیشن کے بارے میں اضافی تناظر تاکہ AI کو زیادہ درست ترجمے تیار کرنے میں مدد ملے (ڈومین، ٹارگٹ آڈینس، لہجہ، اصطلاحات)۔ | `string`
|
|
1029
|
-
| `baseURL` | AI API کے لیے بنیادی URL۔ | `string`
|
|
1030
|
-
| `dataSerialization` | AI خصوصیات کے لیے ڈیٹا سیریلائزیشن فارمیٹ۔ | `'json'` | <br/> `'toon'`
|
|
1022
|
+
| فیلڈ | وضاحت | قسم | ڈیفالٹ | مثال | نوٹ |
|
|
1023
|
+
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1024
|
+
| `provider` | Intlayer AI خصوصیات کے لیے استعمال کیا جانے والا فراہم کنندہ۔ | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | <br/> `'moonshotai'` | `undefined` | `'anthropic'` | مختلف فراہم کنندگان کے لیے مختلف API کلیدوں کی ضرورت ہوتی ہے اور ان کی قیمتوں کا ڈھانچہ بھی مختلف ہوتا ہے۔ |
|
|
1025
|
+
| `model` | AI خصوصیات میں استعمال ہونے والا AI ماڈل۔ | `string` | کوئی نہیں | `'gpt-4o-2024-11-20'` | مخصوص ماڈلز فراہم کنندہ پر منحصر ہیں۔ |
|
|
1026
|
+
| `temperature` | AI کے جوابات میں بے ترتیبی (randomness) کو کنٹرول کرتا ہے۔ | `number` | کوئی نہیں | `0.1` | زیادہ ٹمپریچر = زیادہ تخلیقی لیکن کم قابل اعتماد جوابات۔ |
|
|
1027
|
+
| `apiKey` | منتخب کردہ فراہم کنندہ کے لیے آپ کی API کلید۔ | `string` | کوئی نہیں | `process.env.OPENAI_API_KEY` | خفیہ رکھیں؛ انوائرمنٹ ویری ایبلز میں محفوظ کریں۔ |
|
|
1028
|
+
| `applicationContext` | آپ کی ایپلیکیشن کے بارے میں اضافی تناظر تاکہ AI کو زیادہ درست ترجمے تیار کرنے میں مدد ملے (ڈومین، ٹارگٹ آڈینس، لہجہ، اصطلاحات)۔ | `string` | کوئی نہیں | `'میرا اپنا ایپلیکیشن تناظر'` | قواعد شامل کرنے کے لیے استعمال کیا جا سکتا ہے (مثلاً: `"آپ کو اپنے URLs کا ترجمہ نہیں کرنا چاہیے"`)۔ |
|
|
1029
|
+
| `baseURL` | AI API کے لیے بنیادی URL۔ | `string` | کوئی نہیں | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | کسی مقامی یا کسٹم AI API اینڈ پوائنٹ سے رجوع کر سکتا ہے۔ |
|
|
1030
|
+
| `dataSerialization` | AI خصوصیات کے لیے ڈیٹا سیریلائزیشن فارمیٹ۔ | `'json'` | <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: ڈیفالٹ، قابل اعتماد؛ زیادہ ٹوکن لیتا ہے۔<br/>• `'toon'`: کم ٹوکن، کم مستحکم۔<br/>• ماڈل کو اضافی پیرامیٹرز بھیجتا ہے (استدلال کی کوششیں وغیرہ)۔ |
|
|
1031
1031
|
|
|
1032
1032
|
---
|
|
1033
1033
|
|
|
@@ -188,7 +188,7 @@ export const ComponentExample = () => {
|
|
|
188
188
|
یہ طریقہ کار آپ کو درج ذیل کی اجازت دیتا ہے:
|
|
189
189
|
|
|
190
190
|
1. **ڈیولپمنٹ کی رفتار میں اضافہ**
|
|
191
|
-
- VSCode ایکسٹینشن کا استعمال کرتے ہوئے `.content.{
|
|
191
|
+
- VSCode ایکسٹینشن کا استعمال کرتے ہوئے `.content.{ts|js|mjs|cjs|json|tsx|jsx|md|mdx|yaml|yml}` فائلیں بنائی جا سکتی ہیں
|
|
192
192
|
- آپ کے IDE میں موجود آٹو کمپلیشن AI ٹولز (جیسے GitHub Copilot) مواد کو ڈیکلیئر کرنے میں آپ کی مدد کر سکتے ہیں، جس سے کاپی/پیسٹ کا کام کم ہو جاتا ہے
|
|
193
193
|
|
|
194
194
|
2. **اپنے codebase کو صاف ستھرا بنانا**
|
|
@@ -212,27 +212,27 @@ export const ComponentExample = () => {
|
|
|
212
212
|
|
|
213
213
|
## Intlayer کی اضافی خصوصیات
|
|
214
214
|
|
|
215
|
-
| Feature | Description
|
|
216
|
-
| ------------------------------------------------------------------------------------------------------------------------- |
|
|
217
|
-
|  | **کراس فریم ورک سپورٹ (Cross-Frameworks Support)**<br><br>Intlayer تمام بڑے فریم ورکس اور لائبریریوں کے ساتھ مطابقت رکھتا ہے، بشمول Next.js، React، Vite، Vue.js، Nuxt، Preact، Express، اور بہت کچھ۔
|
|
218
|
-
|  | **جاوا اسکرپٹ سے چلنے والا مواد کا انتظام (JavaScript-Powered Content Management)**<br><br>اپنے مواد کو مؤثر طریقے سے بیان اور منظم کرنے کے لیے جاوا اسکرپٹ کی لچک کا فائدہ اٹھائیں۔ <br><br> - [مواد کا اعلان (Content declaration)](https://intlayer.org/doc/concept/content)
|
|
219
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **کمپائلر (Compiler)**<br><br>Intlayer کمپائلر خود بخود اجزاء سے مواد نکالتا ہے اور ڈکشنری فائلیں تیار کرتا ہے۔<br><br> - [کمپائلر (Compiler)](https://intlayer.org/doc/compiler)
|
|
220
|
-
|  | **فی لوکیل مواد کے اعلان کی فائل (Per-Locale Content Declaration File)**<br><br>خودکار جنریشن سے پہلے، ایک بار اپنے مواد کا اعلان کر کے اپنی ترقی کو تیز کریں۔<br><br> - [فی لوکیل مواد کے اعلان کی فائل](https://intlayer.org/doc/concept/per-locale-file)
|
|
221
|
-
|  | **ٹائپ سیف ماحول (Type-Safe Environment)**<br><br>یہ یقینی بنانے کے لیے ٹائپ اسکرپٹ (TypeScript) کا استعمال کریں کہ آپ کے مواد کی تعریفیں اور کوڈ غلطیوں سے پاک ہیں، جبکہ IDE آٹو کمپلیشن سے بھی فائدہ اٹھائیں۔<br><br> - [ٹائپ اسکرپٹ کنفیگریشن](https://intlayer.org/doc/environment/vite-and-react#configure-typescript)
|
|
222
|
-
|  | **آسان سیٹ اپ (Simplified Setup)**<br><br>کم سے کم کنفیگریشن کے ساتھ تیزی سے کام شروع کریں۔ انٹرنیشنلائزیشن، روٹنگ، AI، بلڈ، اور مواد کے انتظام کے لیے ترتیبات کو آسانی سے ایڈجسٹ کریں۔ <br><br> - [Next.js انٹیگریشن کو دریافت کریں](https://intlayer.org/doc/environment/nextjs)
|
|
223
|
-
|  | **آسان مواد کا حصول (Simplified Content Retrieval)**<br><br>مواد کے ہر حصے کے لیے اپنے `t` فنکشن کو کال کرنے کی ضرورت نہیں ہے۔ ایک ہی ہک کا استعمال کرتے ہوئے براہ راست اپنا تمام مواد حاصل کریں۔<br><br> - [React انٹیگریشن](https://intlayer.org/doc/environment/create-react-app)
|
|
224
|
-
|  | **مستقل سرور کمپوننٹ عمل درآمد (Consistent Server Component Implementation)**<br><br>Next.js سرور اجزاء کے لیے بالکل موزوں، کلائنٹ اور سرور دونوں اجزاء کے لیے ایک ہی عمل درآمد کا استعمال کریں، ہر سرور جزو میں اپنے `t` فنکشن کو منتقل کرنے کی ضرورت نہیں ہے۔ <br><br> - [سرور اجزاء (Server Components)](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code)
|
|
225
|
-
|  | **منظم کوڈ بیس (Organized Codebase)**<br><br>اپنے کوڈ بیس کو زیادہ منظم رکھیں: 1 کمپوننٹ = 1 ڈکشنری اسی فولڈر میں۔ اپنے متعلقہ اجزاء کے قریب تراجم برقرار رکھنے کی صلاحیت اور وضاحت کو بڑھاتے ہیں۔ <br><br> - [Intlayer کیسے کام کرتا ہے](https://intlayer.org/doc/concept/how-works-intlayer)
|
|
226
|
-
|  | **بہتر روٹنگ (Enhanced Routing)**<br><br>ایپ روٹنگ کی مکمل سپورٹ، پیچیدہ ایپلیکیشن ڈھانچے کے لیے بغیر کسی رکاوٹ کے ڈھلتی ہے، جیسے Next.js، React، Vite، Vue.js، وغیرہ کے لیے۔<br><br> - [Next.js انٹیگریشن کو دریافت کریں](https://intlayer.org/doc/environment/nextjs)
|
|
227
|
-
|  | **مارک ڈاؤن سپورٹ (Markdown Support)**<br><br>کثیر لسانی مواد جیسے پرائیویسی پالیسیوں، دستاویزات وغیرہ کے لیے لوکیل فائلوں اور ریموٹ مارک ڈاؤن کو امپورٹ اور انٹرپریٹ کریں۔ اپنے کوڈ میں مارک ڈاؤن میٹا ڈیٹا کو قابل رسائی بنا کریں۔<br><br> - [مواد کی فائلیں (Content files)](https://intlayer.org/doc/concept/content/file)
|
|
228
|
-
|  | **مفت ویژول ایڈیٹر اور CMS (Free Visual Editor & CMS)**<br><br>مواد لکھنے والوں کے لیے ایک مفت ویژول ایڈیٹر اور CMS دستیاب ہے، جس سے لوکلائزیشن پلیٹ فارم کی ضرورت ختم ہو جاتی ہے۔ Git کا استعمال کرتے ہوئے اپنے مواد کو ہم آہنگ رکھیں، یا CMS کے ساتھ اسے مکمل یا جزوی طور پر بیرونی بنائیں۔<br><br> - [Intlayer ایڈیٹر](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms)
|
|
229
|
-
|  | **ٹریس شیک ایبل مواد (Tree-shakable Content)**<br><br>ٹریس شیک ایبل مواد، جو حتمی بنڈل کے سائز کو کم کرتا ہے۔ ہر کمپوننٹ کے حساب سے مواد لوڈ کرتا ہے، آپ کے بنڈل سے کسی بھی غیر استعمال شدہ مواد کو خارج کرتا ہے۔ ایپ لوڈنگ کی کارکردگی کو بڑھانے کے لیے لیزی لوڈنگ کی حمایت کرتا ہے۔ <br><br> - [ایپ بلڈ آپٹیمائزیشن](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization)
|
|
230
|
-
|  | **اسٹیٹک رینڈرنگ (Static Rendering)**<br><br>اسٹیٹک رینڈرنگ کو نہیں روکتا۔ <br><br> - [Next.js انٹیگریشن](https://intlayer.org/doc/environment/nextjs)
|
|
231
|
-
|  | **AI سے چلنے والا ترجمہ (AI-Powered Translation)**<br><br>اپنے اپنے AI فراہم کنندہ/API کی کا استعمال کرتے ہوئے Intlayer کے جدید AI سے چلنے والے ترجمے کے ٹولز کے ساتھ صرف ایک کلک میں اپنی ویب سائٹ کو 231 زبانوں میں تبدیل کریں۔ <br><br> - [CI/CD انٹیگریشن](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [آٹو فل (Auto fill)](https://intlayer.org/doc/concept/auto-fill)
|
|
232
|
-
|  | **MCP سرور انٹیگریشن (MCP Server Integration)**<br><br>IDE آٹومیشن کے لیے ایک MCP (Model Context Protocol) سرور فراہم کرتا ہے، جو آپ کے ڈویلپمنٹ ماحول کے اندر ہی ہموار مواد کے انتظام اور i18n ورک فلوز کو قابل بناتا ہے۔ <br><br> - [MCP سرور](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ur/mcp_server.md)
|
|
233
|
-
|  | **VSCode ایکسٹینشن (VSCode Extension)**<br><br>Intlayer ایک VSCode ایکسٹینشن فراہم کرتا ہے تاکہ آپ کو اپنے مواد اور تراجم کا انتظام کرنے، اپنی ڈکشنریز بنانے، اپنے مواد کا ترجمہ کرنے، اور بہت کچھ کرنے میں مدد ملے۔ <br><br> - [VSCode ایکسٹینشن](https://intlayer.org/doc/vs-code-extension)
|
|
234
|
-
|  | **باہمی مطابقت (Interoperability)**<br><br>react-i18next، next-i18next، next-intl، اور react-intl کے ساتھ باہمی مطابقت کی اجازت دیتا ہے۔ <br><br> - [Intlayer اور react-intl](https://intlayer.org/
|
|
235
|
-
| Testing Missing Translations (CLI/CI) | ✅ CLI: npx intlayer content test (CI کے لیے موزوں آڈٹ)
|
|
215
|
+
| Feature | Description |
|
|
216
|
+
| ------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
217
|
+
|  | **کراس فریم ورک سپورٹ (Cross-Frameworks Support)**<br><br>Intlayer تمام بڑے فریم ورکس اور لائبریریوں کے ساتھ مطابقت رکھتا ہے، بشمول Next.js، React، Vite، Vue.js، Nuxt، Preact، Express، اور بہت کچھ۔ |
|
|
218
|
+
|  | **جاوا اسکرپٹ سے چلنے والا مواد کا انتظام (JavaScript-Powered Content Management)**<br><br>اپنے مواد کو مؤثر طریقے سے بیان اور منظم کرنے کے لیے جاوا اسکرپٹ کی لچک کا فائدہ اٹھائیں۔ <br><br> - [مواد کا اعلان (Content declaration)](https://intlayer.org/doc/concept/content) |
|
|
219
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **کمپائلر (Compiler)**<br><br>Intlayer کمپائلر خود بخود اجزاء سے مواد نکالتا ہے اور ڈکشنری فائلیں تیار کرتا ہے۔<br><br> - [کمپائلر (Compiler)](https://intlayer.org/doc/compiler) |
|
|
220
|
+
|  | **فی لوکیل مواد کے اعلان کی فائل (Per-Locale Content Declaration File)**<br><br>خودکار جنریشن سے پہلے، ایک بار اپنے مواد کا اعلان کر کے اپنی ترقی کو تیز کریں۔<br><br> - [فی لوکیل مواد کے اعلان کی فائل](https://intlayer.org/doc/concept/per-locale-file) |
|
|
221
|
+
|  | **ٹائپ سیف ماحول (Type-Safe Environment)**<br><br>یہ یقینی بنانے کے لیے ٹائپ اسکرپٹ (TypeScript) کا استعمال کریں کہ آپ کے مواد کی تعریفیں اور کوڈ غلطیوں سے پاک ہیں، جبکہ IDE آٹو کمپلیشن سے بھی فائدہ اٹھائیں۔<br><br> - [ٹائپ اسکرپٹ کنفیگریشن](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
|
|
222
|
+
|  | **آسان سیٹ اپ (Simplified Setup)**<br><br>کم سے کم کنفیگریشن کے ساتھ تیزی سے کام شروع کریں۔ انٹرنیشنلائزیشن، روٹنگ، AI، بلڈ، اور مواد کے انتظام کے لیے ترتیبات کو آسانی سے ایڈجسٹ کریں۔ <br><br> - [Next.js انٹیگریشن کو دریافت کریں](https://intlayer.org/doc/environment/nextjs) |
|
|
223
|
+
|  | **آسان مواد کا حصول (Simplified Content Retrieval)**<br><br>مواد کے ہر حصے کے لیے اپنے `t` فنکشن کو کال کرنے کی ضرورت نہیں ہے۔ ایک ہی ہک کا استعمال کرتے ہوئے براہ راست اپنا تمام مواد حاصل کریں۔<br><br> - [React انٹیگریشن](https://intlayer.org/doc/environment/create-react-app) |
|
|
224
|
+
|  | **مستقل سرور کمپوننٹ عمل درآمد (Consistent Server Component Implementation)**<br><br>Next.js سرور اجزاء کے لیے بالکل موزوں، کلائنٹ اور سرور دونوں اجزاء کے لیے ایک ہی عمل درآمد کا استعمال کریں، ہر سرور جزو میں اپنے `t` فنکشن کو منتقل کرنے کی ضرورت نہیں ہے۔ <br><br> - [سرور اجزاء (Server Components)](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
|
|
225
|
+
|  | **منظم کوڈ بیس (Organized Codebase)**<br><br>اپنے کوڈ بیس کو زیادہ منظم رکھیں: 1 کمپوننٹ = 1 ڈکشنری اسی فولڈر میں۔ اپنے متعلقہ اجزاء کے قریب تراجم برقرار رکھنے کی صلاحیت اور وضاحت کو بڑھاتے ہیں۔ <br><br> - [Intlayer کیسے کام کرتا ہے](https://intlayer.org/doc/concept/how-works-intlayer) |
|
|
226
|
+
|  | **بہتر روٹنگ (Enhanced Routing)**<br><br>ایپ روٹنگ کی مکمل سپورٹ، پیچیدہ ایپلیکیشن ڈھانچے کے لیے بغیر کسی رکاوٹ کے ڈھلتی ہے، جیسے Next.js، React، Vite، Vue.js، وغیرہ کے لیے۔<br><br> - [Next.js انٹیگریشن کو دریافت کریں](https://intlayer.org/doc/environment/nextjs) |
|
|
227
|
+
|  | **مارک ڈاؤن سپورٹ (Markdown Support)**<br><br>کثیر لسانی مواد جیسے پرائیویسی پالیسیوں، دستاویزات وغیرہ کے لیے لوکیل فائلوں اور ریموٹ مارک ڈاؤن کو امپورٹ اور انٹرپریٹ کریں۔ اپنے کوڈ میں مارک ڈاؤن میٹا ڈیٹا کو قابل رسائی بنا کریں۔<br><br> - [مواد کی فائلیں (Content files)](https://intlayer.org/doc/concept/content/file) |
|
|
228
|
+
|  | **مفت ویژول ایڈیٹر اور CMS (Free Visual Editor & CMS)**<br><br>مواد لکھنے والوں کے لیے ایک مفت ویژول ایڈیٹر اور CMS دستیاب ہے، جس سے لوکلائزیشن پلیٹ فارم کی ضرورت ختم ہو جاتی ہے۔ Git کا استعمال کرتے ہوئے اپنے مواد کو ہم آہنگ رکھیں، یا CMS کے ساتھ اسے مکمل یا جزوی طور پر بیرونی بنائیں۔<br><br> - [Intlayer ایڈیٹر](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms) |
|
|
229
|
+
|  | **ٹریس شیک ایبل مواد (Tree-shakable Content)**<br><br>ٹریس شیک ایبل مواد، جو حتمی بنڈل کے سائز کو کم کرتا ہے۔ ہر کمپوننٹ کے حساب سے مواد لوڈ کرتا ہے، آپ کے بنڈل سے کسی بھی غیر استعمال شدہ مواد کو خارج کرتا ہے۔ ایپ لوڈنگ کی کارکردگی کو بڑھانے کے لیے لیزی لوڈنگ کی حمایت کرتا ہے۔ <br><br> - [ایپ بلڈ آپٹیمائزیشن](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
|
|
230
|
+
|  | **اسٹیٹک رینڈرنگ (Static Rendering)**<br><br>اسٹیٹک رینڈرنگ کو نہیں روکتا۔ <br><br> - [Next.js انٹیگریشن](https://intlayer.org/doc/environment/nextjs) |
|
|
231
|
+
|  | **AI سے چلنے والا ترجمہ (AI-Powered Translation)**<br><br>اپنے اپنے AI فراہم کنندہ/API کی کا استعمال کرتے ہوئے Intlayer کے جدید AI سے چلنے والے ترجمے کے ٹولز کے ساتھ صرف ایک کلک میں اپنی ویب سائٹ کو 231 زبانوں میں تبدیل کریں۔ <br><br> - [CI/CD انٹیگریشن](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [آٹو فل (Auto fill)](https://intlayer.org/doc/concept/auto-fill) |
|
|
232
|
+
|  | **MCP سرور انٹیگریشن (MCP Server Integration)**<br><br>IDE آٹومیشن کے لیے ایک MCP (Model Context Protocol) سرور فراہم کرتا ہے، جو آپ کے ڈویلپمنٹ ماحول کے اندر ہی ہموار مواد کے انتظام اور i18n ورک فلوز کو قابل بناتا ہے۔ <br><br> - [MCP سرور](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ur/mcp_server.md) |
|
|
233
|
+
|  | **VSCode ایکسٹینشن (VSCode Extension)**<br><br>Intlayer ایک VSCode ایکسٹینشن فراہم کرتا ہے تاکہ آپ کو اپنے مواد اور تراجم کا انتظام کرنے، اپنی ڈکشنریز بنانے، اپنے مواد کا ترجمہ کرنے، اور بہت کچھ کرنے میں مدد ملے۔ <br><br> - [VSCode ایکسٹینشن](https://intlayer.org/doc/vs-code-extension) |
|
|
234
|
+
|  | **باہمی مطابقت (Interoperability)**<br><br>react-i18next، next-i18next، next-intl، اور react-intl کے ساتھ باہمی مطابقت کی اجازت دیتا ہے۔ <br><br> - [Intlayer اور react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer اور next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer اور next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer کے کمپیٹ اڈاپٹرز](https://intlayer.org/doc/compatibility) |
|
|
235
|
+
| Testing Missing Translations (CLI/CI) | ✅ CLI: npx intlayer content test (CI کے لیے موزوں آڈٹ) |
|
|
236
236
|
|
|
237
237
|
## دیگر حلوں کے ساتھ Intlayer کا موازنہ
|
|
238
238
|
|
|
@@ -271,3 +271,5 @@ export const ComponentExample = () => {
|
|
|
271
271
|
`intlayer` آپ کے `react-intl` ، `react-i18next` ، `next-intl` ، `next-i18next` ، اور `vue-i18n` نیم اسپیسز (namespaces) کو منظم کرنے میں بھی مدد کر سکتا ہے۔
|
|
272
272
|
|
|
273
273
|
Intlayer کا استعمال کرتے ہوئے، آپ اپنے پسندیدہ i18n لائبریری کے فارمیٹ میں اپنے مواد کا اعلان کر سکتے ہیں، اور intlayer آپ کی پسند کے مقام پر آپ کے نیم اسپیسز تیار کرے گا (مثال کے طور پر: `/messages/{{locale}}/{{namespace}}.json`)۔
|
|
274
|
+
|
|
275
|
+
اگر آپ اپنی موجودہ i18n لائبریری کا API استعمال کرتے رہنا چاہتے ہیں، تو `intlayer` **کمپیٹ اڈاپٹرز (compat adapters)** بھی فراہم کرتا ہے: ایسے پیکجز جو `react-i18next` ، `next-intl` ، `react-intl` ، `vue-i18n` اور دیگر کا بالکل وہی API فراہم کرتے ہیں، لیکن مواد Intlayer ڈکشنریز سے آتا ہے۔ اس سے آپ اپنا کوڈ دوبارہ لکھے بغیر بتدریج منتقل ہو سکتے ہیں۔ دیکھیں [کمپیٹ اڈاپٹرز کی دستاویزات](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/index.md)۔
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-11-25
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-09
|
|
4
4
|
title: Tối ưu hóa dung lượng Bundle & Hiệu suất i18n
|
|
5
5
|
description: Giảm dung lượng bundle của ứng dụng bằng cách tối ưu hóa nội dung quốc tế hóa (i18n). Tìm hiểu cách tận dụng tree shaking và tải 지연 (lazy loading) cho các từ điển với Intlayer.
|
|
6
6
|
keywords:
|
|
@@ -16,6 +16,12 @@ slugs:
|
|
|
16
16
|
- concept
|
|
17
17
|
- bundle-optimization
|
|
18
18
|
history:
|
|
19
|
+
- version: 9.2.1
|
|
20
|
+
date: 2026-08-09
|
|
21
|
+
changes: "`purge` và `minify` giờ đã hoạt động trên Next.js thông qua `@intlayer/swc` — không cần `babel.config.js`"
|
|
22
|
+
- version: 8.12.0
|
|
23
|
+
date: 2026-06-24
|
|
24
|
+
changes: "Liệt kê các plugin Babel theo đúng thứ tự pipeline (extract → purge → minify → optimize) trong các bảng tham chiếu"
|
|
19
25
|
- version: 8.12.0
|
|
20
26
|
date: 2026-06-07
|
|
21
27
|
changes: "Thêm `intlayerPurgeBabelPlugin` và `intlayerMinifyBabelPlugin` cho Babel/Webpack; làm rõ quá trình thực thi của các plugin"
|
|
@@ -191,12 +197,14 @@ Trình tối ưu hóa build của Intlayer được chia làm nhiều plugin ri
|
|
|
191
197
|
|
|
192
198
|
Những plugin này được khai báo trực tiếp vào `babel.config.js` ở các dự án phụ thuộc cấu hình Webpack (như Next.js dùng Babel, CRA, hoặc Webpack tùy chỉnh v.v.).
|
|
193
199
|
|
|
200
|
+
Bảng dưới đây liệt kê chúng theo đúng thứ tự pipeline (cùng thứ tự mà chúng phải xuất hiện trong `babel.config.js`):
|
|
201
|
+
|
|
194
202
|
| Plugin | Công dụng |
|
|
195
203
|
| :---------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
196
204
|
| `intlayerExtractBabelPlugin` | Quét các file `.content.ts` và ghi nội dung từ điển đã biên dịch thành định dạng chuẩn vào thư mục `.intlayer/` |
|
|
197
|
-
| `intlayerOptimizeBabelPlugin` | Viết lại `useIntlayer('key')` thành `useDictionary(hash)` và tự động inject thư viện `import` để nạp từ điển khớp tương ứng |
|
|
198
205
|
| `intlayerPurgeBabelPlugin` | Quét toàn bộ mã nguồn, thực hiện loại bỏ (remove) **các trường nội dung không được sử dụng** ở file từ điển JSON tại `.intlayer/**/*.json` |
|
|
199
206
|
| `intlayerMinifyBabelPlugin` | **Rút ngắn tên (rename) khóa (keys) của nội dung** thành ký tự ngắn rút gọn (vd: `title` đổi thành `a`) ở JSON cũng như bên trong Source Code |
|
|
207
|
+
| `intlayerOptimizeBabelPlugin` | Viết lại `useIntlayer('key')` thành `useDictionary(hash)` và tự động inject thư viện `import` để nạp từ điển khớp tương ứng |
|
|
200
208
|
|
|
201
209
|
> **Thứ tự sắp xếp của plugin là rất quan trọng.** Trong `babel.config.js` của bạn, các plugin purge và minify phải được đặt **trước** plugin optimize. Bước optimize thay thế `useIntlayer('key')` bằng một hàm gọi không minh bạch `useDictionary(hash)`, điều này có khả năng làm mất thông tin dictionary-key gốc - vốn là thông tin cần thiết để purge và minify có thể định danh các trường thuộc tính đang được ứng dụng.
|
|
202
210
|
|
|
@@ -205,9 +213,9 @@ Mỗi plugin Babel sẽ đi kèm một helper option để đọc trực tiếp
|
|
|
205
213
|
| Options helper | Dùng cùng với |
|
|
206
214
|
| :--------------------------- | :---------------------------- |
|
|
207
215
|
| `getExtractPluginOptions()` | `intlayerExtractBabelPlugin` |
|
|
208
|
-
| `getOptimizePluginOptions()` | `intlayerOptimizeBabelPlugin` |
|
|
209
216
|
| `getPurgePluginOptions()` | `intlayerPurgeBabelPlugin` |
|
|
210
217
|
| `getMinifyPluginOptions()` | `intlayerMinifyBabelPlugin` |
|
|
218
|
+
| `getOptimizePluginOptions()` | `intlayerOptimizeBabelPlugin` |
|
|
211
219
|
|
|
212
220
|
### Các plugin của Vite (`vite-intlayer`)
|
|
213
221
|
|
|
@@ -220,6 +228,20 @@ Những người dùng Vite **không bao giờ phải cấu hình cái này mộ
|
|
|
220
228
|
| Dictionary minify | Tương tự quy trình cắt giảm và rút ngắn độ dài JSON của `intlayerMinifyBabelPlugin` qua JSON |
|
|
221
229
|
| Babel transform | Tương tự quá trình viết lại tên khóa (key rename) bên nguồn code của `intlayerMinifyBabelPlugin` + thay phiên mã của `intlayerOptimizeBabelPlugin` |
|
|
222
230
|
|
|
231
|
+
### Plugin SWC (`@intlayer/swc`)
|
|
232
|
+
|
|
233
|
+
Người dùng Next.js cũng **không bao giờ cấu hình những thứ này trực tiếp**. Từ **v9.2.1**, `withIntlayer()` trong `next.config.ts` chạy toàn bộ pipeline — purge, minify và viết lại import — chỉ dựa trên hai cờ `build.purge` và `build.minify`.
|
|
234
|
+
|
|
235
|
+
Công việc được chia làm hai, vì một plugin Wasm của SWC chỉ biến đổi một tệp tại một thời điểm và không có quyền truy cập hệ thống tệp:
|
|
236
|
+
|
|
237
|
+
| Lượt xử lý | Chạy ở đâu | Làm gì |
|
|
238
|
+
| :----------------------------------------- | :------------------------------- | :--------------------------------------------------------------------------------------- |
|
|
239
|
+
| Phân tích sử dụng + purge/minify JSON | Node, bên trong `withIntlayer()` | Đọc mọi tệp nguồn của component, viết lại `.intlayer/**/*.json`, tạo ra các bảng đổi tên |
|
|
240
|
+
| Viết lại mã nguồn (`content.title` → `.a`) | `@intlayer/swc` (Wasm) | Áp dụng các bảng đổi tên cho những truy cập thuộc tính tương ứng trong mã của bạn |
|
|
241
|
+
| Viết lại import (`useIntlayer` → dict) | `@intlayer/swc` (Wasm) | Giống `intlayerOptimizeBabelPlugin` |
|
|
242
|
+
|
|
243
|
+
Việc xác định _những_ trường nào không được dùng và mỗi trường nhận _bí danh_ nào đòi hỏi trạng thái xuyên tệp và I/O tệp, nên nửa đó chạy trong Node; plugin SWC chỉ nhận các bảng kết quả.
|
|
244
|
+
|
|
223
245
|
## Tùy chỉnh thiết lập dựa vào Platform (nền tảng)
|
|
224
246
|
|
|
225
247
|
<Tabs>
|
|
@@ -227,10 +249,12 @@ Những người dùng Vite **không bao giờ phải cấu hình cái này mộ
|
|
|
227
249
|
|
|
228
250
|
### Next.js
|
|
229
251
|
|
|
230
|
-
Next.js
|
|
252
|
+
Next.js cần plugin `@intlayer/swc`, vì Next.js dùng SWC để build. Từ **v9.2.1**, chỉ một gói này đã bao trọn toàn bộ pipeline — tối ưu hóa (viết lại import), purge và minify.
|
|
231
253
|
|
|
232
254
|
> Plugin này không cài đặt theo mặc định bởi vì nền tảng hỗ trợ (API SWC Plugins) trên Next.js vẫn còn là một thử nghiệm. Do đó sẽ có thay đổi khi nó được cập nhật.
|
|
233
255
|
|
|
256
|
+
> **Next.js 16.1.0 là phiên bản tối thiểu.** Đây là bản phát hành đầu tiên được xây dựng trên ABI plugin Wasm tương thích tiến của SWC; các bản trước đó từ chối plugin. `withIntlayer` đọc phiên bản Next.js của dự án và đơn giản là không đăng ký plugin nếu thấp hơn 16.1.0 — các build đó vẫn thành công, chỉ là chạy mà không có tối ưu hóa bundle.
|
|
257
|
+
|
|
234
258
|
<Tabs>
|
|
235
259
|
<Tab value="npm">
|
|
236
260
|
|
|
@@ -265,33 +289,40 @@ intlayer-swc-plugin = "*"
|
|
|
265
289
|
|
|
266
290
|
Sau khi hoàn tất, Intlayer có thể tìm kiếm và ứng dụng tự động nó cho phần compile hệ thống.
|
|
267
291
|
|
|
268
|
-
|
|
292
|
+
Các lượt **purge và minify** (xóa trường và đổi tên trường) không cần gói bổ sung nào cũng không cần `babel.config.js`. Hãy bọc cấu hình của bạn bằng `withIntlayer` và bật các cờ trong `intlayer.config.ts`:
|
|
269
293
|
|
|
270
|
-
```
|
|
271
|
-
|
|
294
|
+
```typescript fileName="next.config.ts"
|
|
295
|
+
import { withIntlayer } from "next-intlayer/server";
|
|
296
|
+
import type { NextConfig } from "next";
|
|
297
|
+
|
|
298
|
+
const nextConfig: NextConfig = {/* cấu hình của bạn */};
|
|
299
|
+
|
|
300
|
+
export default withIntlayer(nextConfig);
|
|
272
301
|
```
|
|
273
302
|
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
intlayerPurgeBabelPlugin,
|
|
277
|
-
intlayerMinifyBabelPlugin,
|
|
278
|
-
getPurgePluginOptions,
|
|
279
|
-
getMinifyPluginOptions,
|
|
280
|
-
} = require("@intlayer/babel");
|
|
303
|
+
```typescript fileName="intlayer.config.ts"
|
|
304
|
+
import type { IntlayerConfig } from "intlayer";
|
|
281
305
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
// Minify: rút gọn và rút ngắn tên cho các JSON + sửa lệnh ở trên source code
|
|
288
|
-
[intlayerMinifyBabelPlugin, getMinifyPluginOptions()],
|
|
289
|
-
// Lưu ý: Không cần đến khai báo `intlayerOptimizeBabelPlugin` ở đây vì
|
|
290
|
-
// @intlayer/swc đã tiếp quản tiến trình biến đổi useIntlayer → useDictionary.
|
|
291
|
-
],
|
|
306
|
+
const config: IntlayerConfig = {
|
|
307
|
+
build: {
|
|
308
|
+
purge: true, // xóa các trường nội dung không dùng khỏi JSON được đóng gói
|
|
309
|
+
minify: true, // đổi tên khóa trường nội dung thành bí danh ngắn
|
|
310
|
+
},
|
|
292
311
|
};
|
|
312
|
+
|
|
313
|
+
export default config;
|
|
293
314
|
```
|
|
294
315
|
|
|
316
|
+
Trong quá trình `next build`, `withIntlayer` phân tích mã nguồn, viết lại các từ điển đã biên dịch và chuyển các bảng đổi tên trường thu được cho `@intlayer/swc`, plugin này cập nhật những truy cập thuộc tính tương ứng trong mã của bạn.
|
|
317
|
+
|
|
318
|
+
> Hãy dùng `withIntlayer` bất đồng bộ, không phải `withIntlayerSync`. Biến thể đồng bộ không chạy pipeline phân tích, nên purge và minify không có tác dụng với nó.
|
|
319
|
+
|
|
320
|
+
> Purge và minify chỉ chạy khi `next build` — pipeline tối ưu hóa tắt trong lúc `next dev`.
|
|
321
|
+
|
|
322
|
+
> Chúng cũng bị tắt khi có cấu hình các lời gọi từ bộ chuyển đổi tương thích (`swcExtraCallers`, do các gói tương thích như `@intlayer/next-intl` hay `@intlayer/react-i18next` thiết lập): những điểm gọi đó vô hình với bộ phân tích sử dụng, nên purge sẽ xóa mất các trường mà mã vẫn đang đọc. Việc viết lại import vẫn hoạt động.
|
|
323
|
+
|
|
324
|
+
**Các phiên bản trước (trước 9.2.1)** yêu cầu `@intlayer/babel` và một tệp `babel.config.js` khai báo `intlayerPurgeBabelPlugin` và `intlayerMinifyBabelPlugin`. Tệp đó không còn cần thiết và có thể xóa.
|
|
325
|
+
|
|
295
326
|
</Tab>
|
|
296
327
|
<Tab value="vite">
|
|
297
328
|
|
|
@@ -447,6 +478,8 @@ export default config;
|
|
|
447
478
|
|
|
448
479
|
> Lưu ý: Sự can thiệp minify sẽ ngừng thực hiện nếu cờ `optimize` được kích ở mức `false` hoặc lúc bộ hiển thị bằng editor đang dùng tham số `editor.enabled` = `true` (do phía editor thiết kế cần đọc đúng định dạng khai báo nguồn nội dung ban đầu từ file config).
|
|
449
480
|
|
|
481
|
+
> Trên Next.js, minify cũng bị bỏ qua khi `@intlayer/swc` không được cài đặt hoặc không thể tải (Next.js dưới 16.1.0). Plugin chính là nửa viết lại các truy cập trong mã nguồn, nên đổi tên từ điển mà thiếu nó sẽ khiến mã của bạn đọc những tên trường không còn tồn tại.
|
|
482
|
+
|
|
450
483
|
> Sự can thiệp bằng minify đồng thời mất kiểm soát khi tải từ các lệnh gọi JSON ngoại lai của server api khác thông qua thông số gán thiết lập mặc định qua file nguồn `importMode: 'fetch'` — điều này giải quyết và chống phá hỏng liên lạc bằng json của đầu ra máy chủ do nếu app tại máy tính người xài thay danh định gốc trên code sẽ đứt đường tiếp nhận dữ liệu phía cloud.
|
|
451
484
|
|
|
452
485
|
### Hệ chức năng gạt bỏ rác Purging (xóa trắng các khóa thuộc tính trống hoặc dư)
|
|
@@ -475,7 +508,7 @@ export default config;
|
|
|
475
508
|
{ "title": "…", "subtitle": "…" }
|
|
476
509
|
```
|
|
477
510
|
|
|
478
|
-
> Hãy cân nhắc bởi Purge cũng chẳng khác gì minify, hệ sẽ phớt lờ thao tác nếu như thông số thuộc `optimize` để là `false` hay công cụ trình hỗ trợ `editor.enabled` đang mở (true).
|
|
511
|
+
> Hãy cân nhắc bởi Purge cũng chẳng khác gì minify, hệ sẽ phớt lờ thao tác nếu như thông số thuộc `optimize` để là `false` hay công cụ trình hỗ trợ `editor.enabled` đang mở (true). Trên Next.js, nó còn bị bỏ qua khi `@intlayer/swc` không khả dụng và khi có cấu hình các lời gọi từ bộ chuyển đổi tương thích.
|
|
479
512
|
|
|
480
513
|
> Ngoài ra chức năng của hệ cũng bảo lưu quy trình rủi ro và buộc dừng tiến trình purge (như khi không parse được code nguồn để phân tích), hoặc lệnh trả biến ở bộ thu nhận `useIntlayer` xài như thông số ẩn hoặc bị mã hóa ngầm lúc khai báo truyền tin nên analyzer bot mất dấu để định hướng hành tung của nội dung nguồn (một trường hợp cụ thể đó là kiểu trải dữ liệu `spread` cho vô Object bự xài nhưng quên không destructure rõ ràng tham số lúc dùng trong prop). Tại ranh giới bất an kiểu này hệ tự ép lấy sạch sành sanh cho yên tâm trọn gói JSON mà khỏi sợ cắt lố làm mất dữ liệu oan.
|
|
481
514
|
|
package/docs/vi/configuration.md
CHANGED
|
@@ -403,7 +403,7 @@ const config: IntlayerConfig = {
|
|
|
403
403
|
ai: {
|
|
404
404
|
/**
|
|
405
405
|
* Nhà cung cấp AI được sử dụng.
|
|
406
|
-
* Tùy chọn: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'
|
|
406
|
+
* Tùy chọn: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio', 'moonshotai'
|
|
407
407
|
* Mặc định: 'openai'
|
|
408
408
|
*/
|
|
409
409
|
provider: "openai",
|
|
@@ -1031,15 +1031,15 @@ Intlayer hỗ trợ đa dạng các nhà cung cấp AI để mang lại sự lin
|
|
|
1031
1031
|
- **Together.ai**
|
|
1032
1032
|
- **LM Studio**
|
|
1033
1033
|
|
|
1034
|
-
| Trường | Mô tả | Kiểu dữ liệu
|
|
1035
|
-
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1036
|
-
| `provider` | Nhà cung cấp được sử dụng cho các tính năng AI của Intlayer. | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | `undefined` | `'anthropic'` | Các nhà cung cấp khác nhau yêu cầu các khóa API khác nhau và có mức giá khác nhau. |
|
|
1037
|
-
| `model` | Model AI được sử dụng cho các tính năng AI. | `string`
|
|
1038
|
-
| `temperature` | Điều khiển tính ngẫu nhiên của phản hồi AI. | `number`
|
|
1039
|
-
| `apiKey` | Khóa API của bạn cho nhà cung cấp đã chọn. | `string`
|
|
1040
|
-
| `applicationContext` | Ngữ cảnh bổ sung về ứng dụng của bạn để giúp AI tạo ra các bản dịch chính xác hơn (lĩnh vực, đối tượng mục tiêu, tông điệu, thuật ngữ). | `string`
|
|
1041
|
-
| `baseURL` | URL cơ sở cho AI API. | `string`
|
|
1042
|
-
| `dataSerialization` | Định dạng tuần tự hóa dữ liệu cho các tính năng AI. | `'json'` | <br/> `'toon'`
|
|
1034
|
+
| Trường | Mô tả | Kiểu dữ liệu | Mặc định | Ví dụ | Nhận xét |
|
|
1035
|
+
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1036
|
+
| `provider` | Nhà cung cấp được sử dụng cho các tính năng AI của Intlayer. | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | <br/> `'moonshotai'` | `undefined` | `'anthropic'` | Các nhà cung cấp khác nhau yêu cầu các khóa API khác nhau và có mức giá khác nhau. |
|
|
1037
|
+
| `model` | Model AI được sử dụng cho các tính năng AI. | `string` | Không có | `'gpt-4o-2024-11-20'` | Các model cụ thể phụ thuộc vào nhà cung cấp. |
|
|
1038
|
+
| `temperature` | Điều khiển tính ngẫu nhiên của phản hồi AI. | `number` | Không có | `0.1` | Nhiệt độ cao hơn = sáng tạo hơn và kém đáng tin cậy hơn. |
|
|
1039
|
+
| `apiKey` | Khóa API của bạn cho nhà cung cấp đã chọn. | `string` | Không có | `process.env.OPENAI_API_KEY` | Phải được giữ bí mật; sử dụng biến môi trường. |
|
|
1040
|
+
| `applicationContext` | Ngữ cảnh bổ sung về ứng dụng của bạn để giúp AI tạo ra các bản dịch chính xác hơn (lĩnh vực, đối tượng mục tiêu, tông điệu, thuật ngữ). | `string` | Không có | `'ngữ cảnh ứng dụng tùy chỉnh của tôi'` | Có thể được sử dụng để thêm các quy tắc (ví dụ: `"Bạn không nên dịch các URL của bạn"` ). |
|
|
1041
|
+
| `baseURL` | URL cơ sở cho AI API. | `string` | Không có | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | Có thể trỏ tới các endpoint AI API cục bộ hoặc tùy chỉnh. |
|
|
1042
|
+
| `dataSerialization` | Định dạng tuần tự hóa dữ liệu cho các tính năng AI. | `'json'` | <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: mặc định, đáng tin cậy; sử dụng nhiều token hơn.<br/>• `'toon'`: ít token hơn, kém ổn định hơn.<br/>• Chuyển ngữ cảnh cho model dưới dạng một tham số phụ (reasoning effort, v.v.). |
|
|
1043
1043
|
|
|
1044
1044
|
---
|
|
1045
1045
|
|