@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 সহ Next.js, CRA, কাস্টম Webpack ইত্যাদি) সরাসরি `babel.config.js`-এ ব্যবহৃত হয়।
|
|
193
199
|
|
|
200
|
+
নিচের টেবিলটি সেগুলিকে প্রয়োজনীয় পাইপলাইন ক্রমে তালিকাভুক্ত করে (একই ক্রম যেভাবে সেগুলি `babel.config.js`-এ থাকতে হবে):
|
|
201
|
+
|
|
194
202
|
| প্লাগিন | কী কাজ করে |
|
|
195
203
|
| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
196
204
|
| `intlayerExtractBabelPlugin` | `.content.ts` ফাইলগুলো স্ক্যান করে এবং কম্পাইল করা ডিকশনারিগুলো `.intlayer/`-এ লেখে |
|
|
197
|
-
| `intlayerOptimizeBabelPlugin` | `useIntlayer('key')` কে `useDictionary(hash)`-এ রূপান্তর করে এবং সঠিক ডিকশনারির `import` যোগ করে |
|
|
198
205
|
| `intlayerPurgeBabelPlugin` | সব সোর্স ফাইল স্ক্যান করে, এবং কম্পাইল করা `.intlayer/**/*.json` ডিকশনারি ফাইলগুলো থেকে **অব্যবহৃত কন্টেন্ট ফিল্ড** সরিয়ে দেয় |
|
|
199
206
|
| `intlayerMinifyBabelPlugin` | JSON ফাইল এবং সোর্স কোড—উভয় জায়গাতেই **কন্টেন্ট ফিল্ডের কী (keys) গুলোকে** ছোট অক্ষরের ছদ্মনামে (alias) রূপান্তর করে (যেমন `title` → `a`) |
|
|
207
|
+
| `intlayerOptimizeBabelPlugin` | `useIntlayer('key')` কে `useDictionary(hash)`-এ রূপান্তর করে এবং সঠিক ডিকশনারির `import` যোগ করে |
|
|
200
208
|
|
|
201
209
|
> **প্লাগিনের ক্রম অত্যন্ত গুরুত্বপূর্ণ।** আপনার `babel.config.js` ফাইলে purge এবং minify প্লাগিনগুলো অবশ্যই optimize প্লাগিনের **আগে** রাখতে হবে। optimize পাস `useIntlayer('key')` কে একটি অস্বচ্ছ `useDictionary(hash)` কল দিয়ে প্রতিস্থাপন করে, যার ফলে ডিকশনারির কী-এর তথ্য হারিয়ে যায়, অথচ purge এবং minify ধাপগুলোতে কোন ফিল্ডগুলো ব্যবহৃত হচ্ছে তা চেনার জন্য ঐ তথ্যগুলো অপরিহার্য।
|
|
202
210
|
|
|
@@ -205,9 +213,9 @@ Intlayer-এর বিল্ড অপ্টিমাইজেশন কয়
|
|
|
205
213
|
| অপশন হেল্পার | কোন প্লাগিনের সাথে ব্যবহৃত হয় |
|
|
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` নয়, অ্যাসিঙ্ক্রোনাস `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` এবং `intlayerPurgeBabelPlugin` ও `intlayerMinifyBabelPlugin` ঘোষণাকারী একটি `babel.config.js` প্রয়োজন ছিল। সেই ফাইলটি আর প্রয়োজন নেই এবং মুছে ফেলা যায়।
|
|
325
|
+
|
|
295
326
|
</Tab>
|
|
296
327
|
<Tab value="vite">
|
|
297
328
|
|
|
@@ -447,6 +478,8 @@ export default config;
|
|
|
447
478
|
|
|
448
479
|
> যখন `optimize` `false` থাকে বা যখন `editor.enabled` `true` থাকে তখন মিনিফিকেশন বাদ দেওয়া হয় (ভিজ্যুয়াল এডিটরের এডিটিং সচল রাখার জন্য অরিজিনাল ফিল্ডের নামগুলো প্রয়োজন)।
|
|
449
480
|
|
|
481
|
+
> Next.js-এ, `@intlayer/swc` ইনস্টল না থাকলে বা লোড করা না গেলে (16.1.0-এর নিচের Next.js) minification-ও এড়িয়ে যাওয়া হয়। সোর্সের অ্যাক্সেসগুলি পুনর্লিখন করে এই প্লাগইনই, তাই এটি ছাড়া অভিধান পুনঃনামকরণ করলে আপনার কোড এমন ফিল্ড নাম পড়তে থাকবে যা আর নেই।
|
|
482
|
+
|
|
450
483
|
> `importMode: 'fetch'` এর মাধ্যমে লোড করা ডিকশনারিগুলোর ক্ষেত্রেও মিনিফিকেশন করা হয় না, কারণ அவற்றின் JSON একটি রিমোট API থেকে অরিজিনাল ফিল্ডের নাম ব্যবহার করে সার্ভ করা হয় — ক্লায়েন্ট-সাইডে কী-গুলোর নাম পরিবর্তন করলে সার্ভার/ক্লায়েন্ট চুক্তি ভেঙে যাবে।
|
|
451
484
|
|
|
452
485
|
### Purging (অব্যবহৃত ফিল্ড সরিয়ে ফেলা)
|
|
@@ -475,7 +508,7 @@ export default config;
|
|
|
475
508
|
{ "title": "…", "subtitle": "…" }
|
|
476
509
|
```
|
|
477
510
|
|
|
478
|
-
> যখন `optimize` `false` থাকে বা `editor.enabled` `true` থাকে তখন Purge বাদ দেওয়া হয়।
|
|
511
|
+
> যখন `optimize` `false` থাকে বা `editor.enabled` `true` থাকে তখন Purge বাদ দেওয়া হয়। Next.js-এ `@intlayer/swc` অনুপলব্ধ হলে এবং কম্প্যাট-অ্যাডাপ্টার কলার কনফিগার করা থাকলে এটি অতিরিক্তভাবে এড়িয়ে যাওয়া হয়।
|
|
479
512
|
|
|
480
513
|
> যদি কোনো সোর্স ফাইল পার্স (parse) করা না যায়, অথবা `useIntlayer`-এর রেজাল্ট কোনো ভেরিয়েবলে অ্যাসাইন করে এমনভাবে পাস করা হয় যা স্ট্যাটিক অ্যানালাইজার ট্র্যাক করতে পারে না (যেমন, কোনো অবজেক্টের মধ্যে স্প্রেড করা, অথবা ডিস্ট্রাকচার না করেই প্রপ হিসেবে পাস করা), সেক্ষেত্রে সুরক্ষার খাতিরে Purge প্রক্রিয়াটি এড়িয়ে যাওয়া হয়। এই ধরনের ক্ষেত্রে সম্পূর্ণ ডিকশনারিটি অক্ষত রাখা হয়।
|
|
481
514
|
|
package/docs/bn/configuration.md
CHANGED
|
@@ -404,7 +404,7 @@ const config: IntlayerConfig = {
|
|
|
404
404
|
ai: {
|
|
405
405
|
/**
|
|
406
406
|
* ব্যবহৃত AI প্রোভাইডার।
|
|
407
|
-
* বিকল্পসমূহ: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'
|
|
407
|
+
* বিকল্পসমূহ: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio', 'moonshotai'
|
|
408
408
|
* ডিফল্ট: 'openai'
|
|
409
409
|
*/
|
|
410
410
|
provider: "openai",
|
|
@@ -1010,15 +1010,15 @@ Intlayer সর্বোচ্চ নমনীয়তার জন্য এ
|
|
|
1010
1010
|
- **Together.ai**
|
|
1011
1011
|
- **LM Studio**
|
|
1012
1012
|
|
|
1013
|
-
| ফিল্ড | বর্ণনা | টাইপ
|
|
1014
|
-
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
1015
|
-
| `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 কী প্রয়োজন এবং তাদের দামও আলাদা। |
|
|
1016
|
-
| `model` | AI বৈশিষ্ট্যের জন্য ব্যবহৃত মডেল। | `string`
|
|
1017
|
-
| `temperature` | AI রেসপন্সের র্যান্ডমনেস নিয়ন্ত্রণ করে। | `number`
|
|
1018
|
-
| `apiKey` | নির্বাচিত প্রোভাইডারের জন্য আপনার API কী। | `string`
|
|
1019
|
-
| `applicationContext` | AI-কে আরও নির্ভুল অনুবাদ তৈরিতে সাহায্য করার জন্য আপনার অ্যাপ্লিকেশন সম্পর্কে অতিরিক্ত কনটেক্সট (ডোমেইন, টার্গেট অডিয়েন্স, টোন, পরিভাষা)। | `string`
|
|
1020
|
-
| `baseURL` | AI API-এর জন্য বেস URL। | `string`
|
|
1021
|
-
| `dataSerialization` | AI বৈশিষ্ট্যের জন্য ডেটা সিরিয়ালাইজেশন ফরম্যাট। | `'json'` | <br/> `'toon'`
|
|
1013
|
+
| ফিল্ড | বর্ণনা | টাইপ | ডিফল্ট | উদাহরণ | মন্তব্য |
|
|
1014
|
+
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1015
|
+
| `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 কী প্রয়োজন এবং তাদের দামও আলাদা। |
|
|
1016
|
+
| `model` | AI বৈশিষ্ট্যের জন্য ব্যবহৃত মডেল। | `string` | নেই | `'gpt-4o-2024-11-20'` | নির্দিষ্ট মডেল প্রোভাইডারের ওপর নির্ভর করে। |
|
|
1017
|
+
| `temperature` | AI রেসপন্সের র্যান্ডমনেস নিয়ন্ত্রণ করে। | `number` | নেই | `0.1` | উচ্চ টেম্পারেচার = আরও সৃজনশীল এবং কম নির্ভরযোগ্য। |
|
|
1018
|
+
| `apiKey` | নির্বাচিত প্রোভাইডারের জন্য আপনার API কী। | `string` | নেই | `process.env.OPENAI_API_KEY` | এটি গোপন রাখতে হবে; এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করুন। |
|
|
1019
|
+
| `applicationContext` | AI-কে আরও নির্ভুল অনুবাদ তৈরিতে সাহায্য করার জন্য আপনার অ্যাপ্লিকেশন সম্পর্কে অতিরিক্ত কনটেক্সট (ডোমেইন, টার্গেট অডিয়েন্স, টোন, পরিভাষা)। | `string` | নেই | `'আমার নিজস্ব অ্যাপ্লিকেশন কনটেক্সট'` | নিয়ম যোগ করার জন্য ব্যবহৃত হতে পারে (যেমন: `"আপনাদের URL গুলো রূপান্তর করা উচিত নয়"` )। |
|
|
1020
|
+
| `baseURL` | AI API-এর জন্য বেস URL। | `string` | নেই | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | স্থানীয় বা কাস্টম AI API এন্ডপয়েন্টে পয়েন্ট করতে পারে। |
|
|
1021
|
+
| `dataSerialization` | AI বৈশিষ্ট্যের জন্য ডেটা সিরিয়ালাইজেশন ফরম্যাট। | `'json'` | <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: ডিফল্ট, নির্ভরযোগ্য; বেশি টোকেন ব্যবহার করে।<br/>• `'toon'`: কম টোকেন, কম স্থিতিশীল।<br/>• অতিরিক্ত প্যারামিটার হিসেবে মডেলকে কনটেক্সট পাস করা হয় (রিজনিং এফোর্ট ইত্যাদি)। |
|
|
1022
1022
|
|
|
1023
1023
|
---
|
|
1024
1024
|
|
|
@@ -149,7 +149,7 @@ export const ComponentExample = () => {
|
|
|
149
149
|
এই পদ্ধতি আপনাকে যা করতে দেয়:
|
|
150
150
|
|
|
151
151
|
1. **ডেভেলপমেন্টের গতি বাড়ান**
|
|
152
|
-
- একটি VSCode এক্সটেন্সন ব্যবহার করে `.content.{
|
|
152
|
+
- একটি VSCode এক্সটেন্সন ব্যবহার করে `.content.{ts|js|mjs|cjs|json|tsx|jsx|md|mdx|yaml|yml}` ফাইল তৈরি করা যেতে পারে
|
|
153
153
|
- আপনার IDE-তে অটো-কমপ্লিট এআই টুলস (যেমন GitHub Copilot) আপনাকে আপনার বিষয়বস্তু ঘোষণা করতে সাহায্য করতে পারে, কপি/পেস্ট কমাতে পারে
|
|
154
154
|
|
|
155
155
|
2. **আপনার কোডবেস পরিষ্কার করুন**
|
|
@@ -173,27 +173,27 @@ export const ComponentExample = () => {
|
|
|
173
173
|
|
|
174
174
|
## Intlayer এর অতিরিক্ত বৈশিষ্ট্য
|
|
175
175
|
|
|
176
|
-
| বৈশিষ্ট্য | বর্ণনা
|
|
177
|
-
| -------------------------------------------------------------------------------------------------------------------------- |
|
|
178
|
-
|  | **ক্রস-ফ্রেমওয়ার্ক সাপোর্ট**<br><br>Intlayer সব প্রধান ফ্রেমওয়ার্ক এবং লাইব্রেরির সাথে সামঞ্জস্যপূর্ণ, যার মধ্যে রয়েছে Next.js, React, Vite, Vue.js, Nuxt, Preact, Express এবং আরও অনেক কিছু।
|
|
179
|
-
|  | **জাভাস্ক্রিপ্ট-চালিত বিষয়বস্তু ব্যবস্থাপনা**<br><br>আপনার বিষয়বস্তু দক্ষতার সাথে সংজ্ঞায়িত এবং পরিচালনা করতে জাভাস্ক্রিপ্টের নমনীয়তাকে কাজে লাগান। <br><br> - [বিষয়বস্তু ঘোষণা](https://intlayer.org/doc/concept/content)
|
|
180
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="বৈশিষ্ট্য" width="700"> | **কম্পাইলার**<br><br>Intlayer কম্পাইলার স্বয়ংক্রিয়ভাবে উপাদানগুলি থেকে বিষয়বস্তু বের করে এবং ডিকশনারি ফাইল তৈরি করে।<br><br> - [কম্পাইলার](https://intlayer.org/doc/compiler)
|
|
181
|
-
|  | **প্রতি-লোকাল বিষয়বস্তু ঘোষণা ফাইল**<br><br>স্বয়ংক্রিয় জেনারেশনের আগে আপনার বিষয়বস্তু একবার ঘোষণা করে আপনার ডেভেলপমেন্টের গতি বাড়ান।<br><br> - [প্রতি-লোকাল বিষয়বস্তু ঘোষণা ফাইল](https://intlayer.org/doc/concept/per-locale-file)
|
|
182
|
-
|  | **টাইপ-সেফ এনভায়রনমেন্ট**<br><br>আপনার বিষয়বস্তুর সংজ্ঞা এবং কোড যাতে ত্রুটিমুক্ত হয় তা নিশ্চিত করতে টাইপস্ক্রিপ্টের সুবিধা নিন এবং IDE অটো-কমপ্লিট থেকেও উপকৃত হন।<br><br> - [টাইপস্ক্রিপ্ট কনফিগারেশন](https://intlayer.org/doc/environment/vite-and-react#configure-typescript)
|
|
183
|
-
|  | **সরলীকৃত সেটআপ**<br><br>ন্যূনতম কনফিগারেশনের মাধ্যমে দ্রুত শুরু করুন। আন্তর্জাতিকীকরণ, রাউটিং, এআই, বিল্ড এবং বিষয়বস্তু হ্যান্ডলিংয়ের সেটিংস সহজেই সামঞ্জস্য করুন। <br><br> - [Next.js ইন্টিগ্রেশন অন্বেষণ করুন](https://intlayer.org/doc/environment/nextjs)
|
|
184
|
-
|  | **সরলীকৃত বিষয়বস্তু পুনরুদ্ধার**<br><br>প্রতিটি বিষয়বস্তুর জন্য আপনার `t` ফাংশন কল করার প্রয়োজন নেই। একটি একক হুক ব্যবহার করে সরাসরি আপনার সমস্ত বিষয়বস্তু পুনরুদ্ধার করুন।<br><br> - [React ইন্টিগ্রেশন](https://intlayer.org/doc/environment/create-react-app)
|
|
185
|
-
|  | **সামঞ্জস্যপূর্ণ সার্ভার কম্পোনেন্ট বাস্তবায়ন**<br><br>Next.js সার্ভার কম্পোনেন্টগুলোর জন্য অত্যন্ত উপযোগী, ক্লায়েন্ট এবং সার্ভার উভয় কম্পোনেন্টের জন্য একই বাস্তবায়ন ব্যবহার করুন, প্রতিটি সার্ভার কম্পোনেন্টের মাধ্যমে আপনার `t` ফাংশন পাস করার প্রয়োজন নেই। <br><br> - [সার্ভার কম্পোনেন্ট](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code)
|
|
186
|
-
|  | **সংগঠিত কোডবেস**<br><br>আপনার কোডবেসকে আরও সংগঠিত রাখুন: ১টি কম্পোনেন্ট = একই ফোল্ডারে ১টি ডিকশনারি। তাদের নিজ নিজ কম্পোনেন্টের কাছাকাছি অনুবাদগুলি রক্ষণাবেক্ষণযোগ্যতা এবং স্পষ্টতা বাড়ায়। <br><br> - [কীভাবে Intlayer কাজ করে](https://intlayer.org/doc/concept/how-works-intlayer)
|
|
187
|
-
|  | **উন্নত রাউটিং**<br><br>Next.js, React, Vite, Vue.js ইত্যাদির জন্য জটিল অ্যাপ্লিকেশন কাঠামোর সাথে নির্বিঘ্নে মানিয়ে নিয়ে অ্যাপ রাউটিং এর পূর্ণ সাপোর্ট।<br><br> - [Next.js ইন্টিগ্রেশন অন্বেষণ করুন](https://intlayer.org/doc/environment/nextjs)
|
|
188
|
-
|  | **মাকডাউন সাপোর্ট**<br><br>গোপনীয়তা নীতি, ডকুমেন্টেশন ইত্যাদির মতো বহুভাষিক বিষয়বস্তুর জন্য লোকাল ফাইল এবং রিমোট মাকডাউন ইম্পোর্ট এবং ব্যাখ্যা করুন। মাকডাউন মেটাডেটা ব্যাখ্যা করুন এবং আপনার কোডে অ্যাক্সেসযোগ্য করুন।<br><br> - [বিষয়বস্তু ফাইল](https://intlayer.org/doc/concept/content/file)
|
|
189
|
-
|  | **ফ্রি ভিজ্যুয়াল এডিটর এবং CMS**<br><br>বিষয়বস্তু লেখকদের জন্য একটি ফ্রি ভিজ্যুয়াল এডিটর এবং CMS উপলব্ধ, যা লোকালাইজেশন প্ল্যাটফর্মের প্রয়োজনীয়তা দূর করে। Git ব্যবহার করে আপনার বিষয়বস্তু সিঙ্ক রাখুন, অথবা CMS-এর মাধ্যমে এটি সম্পূর্ণ বা আংশিকভাবে এক্সটার্নালাইজ করুন।<br><br> - [Intlayer এডিটর](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms)
|
|
190
|
-
|  | **Tree-shakable বিষয়বস্তু**<br><br>Tree-shakable বিষয়বস্তু, যা চূড়ান্ত বান্ডিল সাইজ কমায়। প্রতি কম্পোনেন্ট অনুযায়ী বিষয়বস্তু লোড করে, আপনার বান্ডিল থেকে যেকোনো অব্যবহৃত বিষয়বস্তু বাদ দেয়। অ্যাপ লোডিং দক্ষতা বাড়াতে লেজি লোডিং সাপোর্ট করে। <br><br> - [অ্যাপ বিল্ড অপ্টিমাইজেশন](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization)
|
|
191
|
-
|  | **স্ট্যাটিক রেন্ডারিং**<br><br>স্ট্যাটিক রেন্ডারিং ব্লক করে না। <br><br> - [Next.js ইন্টিগ্রেশন](https://intlayer.org/doc/environment/nextjs)
|
|
192
|
-
|  | **এআই-চালিত অনুবাদ**<br><br>আপনার নিজস্ব এআই সরবরাহকারী/এপিআই কী ব্যবহার করে Intlayer-এর উন্নত এআই-চালিত অনুবাদ সরঞ্জামগুলির মাধ্যমে মাত্র একটি ক্লিকের মাধ্যমে আপনার ওয়েবসাইটকে ২৩১টি ভাষায় রূপান্তর করুন। <br><br> - [CI/CD ইন্টিগ্রেশন](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [অটো ফিল](https://intlayer.org/doc/concept/auto-fill)
|
|
193
|
-
|  | **MCP সার্ভার ইন্টিগ্রেশন**<br><br>IDE অটোমেশনের জন্য একটি MCP (Model Context Protocol) সার্ভার প্রদান করে, যা আপনার ডেভেলপমেন্ট এনভায়রনমেন্টের মধ্যে নিরবিচ্ছিন্ন বিষয়বস্তু ব্যবস্থাপনা এবং i18n ওয়ার্কফ্লো সক্ষম করে। <br><br> - [MCP সার্ভার](https://github.com/aymericzip/intlayer/blob/main/docs/bn/mcp_server.md)
|
|
194
|
-
|  | **VSCode এক্সটেন্সন**<br><br>Intlayer আপনার বিষয়বস্তু এবং অনুবাদ পরিচালনা করতে, আপনার ডিকশনারি তৈরি করতে, আপনার বিষয়বস্তু অনুবাদ করতে এবং আরও অনেক কিছু করতে সাহায্য করার জন্য একটি VSCode এক্সটেন্সন প্রদান করে। <br><br> - [VSCode এক্সটেন্সন](https://intlayer.org/doc/vs-code-extension)
|
|
195
|
-
|  | **ইন্টারঅপারেবিলিটি**<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)
|
|
196
|
-
| অনুপস্থিত অনুবাদ পরীক্ষা করা (CLI/CI) | ✅ CLI: npx intlayer content test (CI-ফ্রেন্ডলি অডিট)
|
|
176
|
+
| বৈশিষ্ট্য | বর্ণনা |
|
|
177
|
+
| -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
178
|
+
|  | **ক্রস-ফ্রেমওয়ার্ক সাপোর্ট**<br><br>Intlayer সব প্রধান ফ্রেমওয়ার্ক এবং লাইব্রেরির সাথে সামঞ্জস্যপূর্ণ, যার মধ্যে রয়েছে Next.js, React, Vite, Vue.js, Nuxt, Preact, Express এবং আরও অনেক কিছু। |
|
|
179
|
+
|  | **জাভাস্ক্রিপ্ট-চালিত বিষয়বস্তু ব্যবস্থাপনা**<br><br>আপনার বিষয়বস্তু দক্ষতার সাথে সংজ্ঞায়িত এবং পরিচালনা করতে জাভাস্ক্রিপ্টের নমনীয়তাকে কাজে লাগান। <br><br> - [বিষয়বস্তু ঘোষণা](https://intlayer.org/doc/concept/content) |
|
|
180
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="বৈশিষ্ট্য" width="700"> | **কম্পাইলার**<br><br>Intlayer কম্পাইলার স্বয়ংক্রিয়ভাবে উপাদানগুলি থেকে বিষয়বস্তু বের করে এবং ডিকশনারি ফাইল তৈরি করে।<br><br> - [কম্পাইলার](https://intlayer.org/doc/compiler) |
|
|
181
|
+
|  | **প্রতি-লোকাল বিষয়বস্তু ঘোষণা ফাইল**<br><br>স্বয়ংক্রিয় জেনারেশনের আগে আপনার বিষয়বস্তু একবার ঘোষণা করে আপনার ডেভেলপমেন্টের গতি বাড়ান।<br><br> - [প্রতি-লোকাল বিষয়বস্তু ঘোষণা ফাইল](https://intlayer.org/doc/concept/per-locale-file) |
|
|
182
|
+
|  | **টাইপ-সেফ এনভায়রনমেন্ট**<br><br>আপনার বিষয়বস্তুর সংজ্ঞা এবং কোড যাতে ত্রুটিমুক্ত হয় তা নিশ্চিত করতে টাইপস্ক্রিপ্টের সুবিধা নিন এবং IDE অটো-কমপ্লিট থেকেও উপকৃত হন।<br><br> - [টাইপস্ক্রিপ্ট কনফিগারেশন](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
|
|
183
|
+
|  | **সরলীকৃত সেটআপ**<br><br>ন্যূনতম কনফিগারেশনের মাধ্যমে দ্রুত শুরু করুন। আন্তর্জাতিকীকরণ, রাউটিং, এআই, বিল্ড এবং বিষয়বস্তু হ্যান্ডলিংয়ের সেটিংস সহজেই সামঞ্জস্য করুন। <br><br> - [Next.js ইন্টিগ্রেশন অন্বেষণ করুন](https://intlayer.org/doc/environment/nextjs) |
|
|
184
|
+
|  | **সরলীকৃত বিষয়বস্তু পুনরুদ্ধার**<br><br>প্রতিটি বিষয়বস্তুর জন্য আপনার `t` ফাংশন কল করার প্রয়োজন নেই। একটি একক হুক ব্যবহার করে সরাসরি আপনার সমস্ত বিষয়বস্তু পুনরুদ্ধার করুন।<br><br> - [React ইন্টিগ্রেশন](https://intlayer.org/doc/environment/create-react-app) |
|
|
185
|
+
|  | **সামঞ্জস্যপূর্ণ সার্ভার কম্পোনেন্ট বাস্তবায়ন**<br><br>Next.js সার্ভার কম্পোনেন্টগুলোর জন্য অত্যন্ত উপযোগী, ক্লায়েন্ট এবং সার্ভার উভয় কম্পোনেন্টের জন্য একই বাস্তবায়ন ব্যবহার করুন, প্রতিটি সার্ভার কম্পোনেন্টের মাধ্যমে আপনার `t` ফাংশন পাস করার প্রয়োজন নেই। <br><br> - [সার্ভার কম্পোনেন্ট](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
|
|
186
|
+
|  | **সংগঠিত কোডবেস**<br><br>আপনার কোডবেসকে আরও সংগঠিত রাখুন: ১টি কম্পোনেন্ট = একই ফোল্ডারে ১টি ডিকশনারি। তাদের নিজ নিজ কম্পোনেন্টের কাছাকাছি অনুবাদগুলি রক্ষণাবেক্ষণযোগ্যতা এবং স্পষ্টতা বাড়ায়। <br><br> - [কীভাবে Intlayer কাজ করে](https://intlayer.org/doc/concept/how-works-intlayer) |
|
|
187
|
+
|  | **উন্নত রাউটিং**<br><br>Next.js, React, Vite, Vue.js ইত্যাদির জন্য জটিল অ্যাপ্লিকেশন কাঠামোর সাথে নির্বিঘ্নে মানিয়ে নিয়ে অ্যাপ রাউটিং এর পূর্ণ সাপোর্ট।<br><br> - [Next.js ইন্টিগ্রেশন অন্বেষণ করুন](https://intlayer.org/doc/environment/nextjs) |
|
|
188
|
+
|  | **মাকডাউন সাপোর্ট**<br><br>গোপনীয়তা নীতি, ডকুমেন্টেশন ইত্যাদির মতো বহুভাষিক বিষয়বস্তুর জন্য লোকাল ফাইল এবং রিমোট মাকডাউন ইম্পোর্ট এবং ব্যাখ্যা করুন। মাকডাউন মেটাডেটা ব্যাখ্যা করুন এবং আপনার কোডে অ্যাক্সেসযোগ্য করুন।<br><br> - [বিষয়বস্তু ফাইল](https://intlayer.org/doc/concept/content/file) |
|
|
189
|
+
|  | **ফ্রি ভিজ্যুয়াল এডিটর এবং CMS**<br><br>বিষয়বস্তু লেখকদের জন্য একটি ফ্রি ভিজ্যুয়াল এডিটর এবং CMS উপলব্ধ, যা লোকালাইজেশন প্ল্যাটফর্মের প্রয়োজনীয়তা দূর করে। Git ব্যবহার করে আপনার বিষয়বস্তু সিঙ্ক রাখুন, অথবা CMS-এর মাধ্যমে এটি সম্পূর্ণ বা আংশিকভাবে এক্সটার্নালাইজ করুন।<br><br> - [Intlayer এডিটর](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms) |
|
|
190
|
+
|  | **Tree-shakable বিষয়বস্তু**<br><br>Tree-shakable বিষয়বস্তু, যা চূড়ান্ত বান্ডিল সাইজ কমায়। প্রতি কম্পোনেন্ট অনুযায়ী বিষয়বস্তু লোড করে, আপনার বান্ডিল থেকে যেকোনো অব্যবহৃত বিষয়বস্তু বাদ দেয়। অ্যাপ লোডিং দক্ষতা বাড়াতে লেজি লোডিং সাপোর্ট করে। <br><br> - [অ্যাপ বিল্ড অপ্টিমাইজেশন](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
|
|
191
|
+
|  | **স্ট্যাটিক রেন্ডারিং**<br><br>স্ট্যাটিক রেন্ডারিং ব্লক করে না। <br><br> - [Next.js ইন্টিগ্রেশন](https://intlayer.org/doc/environment/nextjs) |
|
|
192
|
+
|  | **এআই-চালিত অনুবাদ**<br><br>আপনার নিজস্ব এআই সরবরাহকারী/এপিআই কী ব্যবহার করে Intlayer-এর উন্নত এআই-চালিত অনুবাদ সরঞ্জামগুলির মাধ্যমে মাত্র একটি ক্লিকের মাধ্যমে আপনার ওয়েবসাইটকে ২৩১টি ভাষায় রূপান্তর করুন। <br><br> - [CI/CD ইন্টিগ্রেশন](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [অটো ফিল](https://intlayer.org/doc/concept/auto-fill) |
|
|
193
|
+
|  | **MCP সার্ভার ইন্টিগ্রেশন**<br><br>IDE অটোমেশনের জন্য একটি MCP (Model Context Protocol) সার্ভার প্রদান করে, যা আপনার ডেভেলপমেন্ট এনভায়রনমেন্টের মধ্যে নিরবিচ্ছিন্ন বিষয়বস্তু ব্যবস্থাপনা এবং i18n ওয়ার্কফ্লো সক্ষম করে। <br><br> - [MCP সার্ভার](https://github.com/aymericzip/intlayer/blob/main/docs/bn/mcp_server.md) |
|
|
194
|
+
|  | **VSCode এক্সটেন্সন**<br><br>Intlayer আপনার বিষয়বস্তু এবং অনুবাদ পরিচালনা করতে, আপনার ডিকশনারি তৈরি করতে, আপনার বিষয়বস্তু অনুবাদ করতে এবং আরও অনেক কিছু করতে সাহায্য করার জন্য একটি VSCode এক্সটেন্সন প্রদান করে। <br><br> - [VSCode এক্সটেন্সন](https://intlayer.org/doc/vs-code-extension) |
|
|
195
|
+
|  | **ইন্টারঅপারেবিলিটি**<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 compat adapters](https://intlayer.org/doc/compatibility) |
|
|
196
|
+
| অনুপস্থিত অনুবাদ পরীক্ষা করা (CLI/CI) | ✅ CLI: npx intlayer content test (CI-ফ্রেন্ডলি অডিট) |
|
|
197
197
|
|
|
198
198
|
## অন্যান্য সমাধানের সাথে Intlayer এর তুলনা
|
|
199
199
|
|
|
@@ -234,3 +234,5 @@ GitHub স্টার হলো একটি প্রজেক্টের জ
|
|
|
234
234
|
`intlayer` আপনার `react-intl`, `react-i18next`, `next-intl`, `next-i18next` এবং `vue-i18n` নেমস্পেসগুলি পরিচালনা করতেও সহায়তা করতে পারে।
|
|
235
235
|
|
|
236
236
|
`intlayer` ব্যবহার করে, আপনি আপনার প্রিয় i18n লাইব্রেরির ফরম্যাটে আপনার বিষয়বস্তু ঘোষণা করতে পারেন এবং intlayer আপনার পছন্দের অবস্থানে আপনার নেমস্পেস তৈরি করবে (উদাহরণ: `/messages/{{locale}}/{{namespace}}.json`)।
|
|
237
|
+
|
|
238
|
+
আপনি যদি আপনার বর্তমান i18n লাইব্রেরির API ব্যবহার করা চালিয়ে যেতে চান, তবে `intlayer` **compat adapters**ও সরবরাহ করে: এমন প্যাকেজ যা `react-i18next`, `next-intl`, `react-intl`, `vue-i18n` এবং আরও অনেক লাইব্রেরির হুবহু একই API প্রকাশ করে, কিন্তু Intlayer ডিকশনারি থেকে পরিবেশন করা হয়। এর ফলে আপনি কোড পুনরায় না লিখেই ধাপে ধাপে মাইগ্রেট করতে পারেন। দেখুন [Compat Adapters ডকুমেন্টেশন](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: Optimalizace Velikosti Bundle & Výkonu i18n
|
|
5
5
|
description: Zmenšete velikost svého aplikačního bundlu optimalizací obsahu pro internacionalizaci (i18n). Zjistěte, jak v Intlayer využít tree shaking a líné načítání (lazy loading) pro slovníky.
|
|
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` a `minify` nyní fungují v Next.js prostřednictvím `@intlayer/swc` — žádný `babel.config.js` není potřeba"
|
|
22
|
+
- version: 8.12.0
|
|
23
|
+
date: 2026-06-24
|
|
24
|
+
changes: "Uvedení Babel pluginů v požadovaném pořadí pipeline (extract → purge → minify → optimize) v referenčních tabulkách"
|
|
19
25
|
- version: 8.12.0
|
|
20
26
|
date: 2026-06-07
|
|
21
27
|
changes: "Přidány `intlayerPurgeBabelPlugin` a `intlayerMinifyBabelPlugin` pro Babel/Webpack; vyjasnění fungování pipeline pluginů"
|
|
@@ -191,12 +197,14 @@ Optimalizace sestavení pomocí Intlayer je rozdělena do několika samostatnýc
|
|
|
191
197
|
|
|
192
198
|
Tyto pluginy se používají přímo v `babel.config.js` pro sestavení založená na Webpacku (Next.js s Babelem, CRA, vlastní Webpack atd.).
|
|
193
199
|
|
|
200
|
+
Následující tabulka je uvádí v požadovaném pořadí pipeline (ve stejném pořadí, v jakém musí být uvedeny v `babel.config.js`):
|
|
201
|
+
|
|
194
202
|
| Plugin | K čemu slouží |
|
|
195
203
|
| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------- |
|
|
196
204
|
| `intlayerExtractBabelPlugin` | Prohledá soubory `.content.ts` a zapíše zkompilované slovníky do složky `.intlayer/` |
|
|
197
|
-
| `intlayerOptimizeBabelPlugin` | Přepíše `useIntlayer('key')` na `useDictionary(hash)` a vloží odpovídající `import` slovníku |
|
|
198
205
|
| `intlayerPurgeBabelPlugin` | Prohledá všechny zdrojové soubory a odstraní **nepoužívaná pole obsahu** z kompilovaných slovníků `.intlayer/**/*.json` |
|
|
199
206
|
| `intlayerMinifyBabelPlugin` | **Přejmenuje klíče polí obsahu** na krátké abecední aliasy (např. `title` → `a`) jak v JSON souborech, tak ve zdrojovém kódu |
|
|
207
|
+
| `intlayerOptimizeBabelPlugin` | Přepíše `useIntlayer('key')` na `useDictionary(hash)` a vloží odpovídající `import` slovníku |
|
|
200
208
|
|
|
201
209
|
> **Záleží na pořadí pluginů.** Ve vašem `babel.config.js` musí pluginy pro purge a minify následovat **před** optimalizačním (optimize) pluginem. Krok optimalizace totiž nahrazuje volání `useIntlayer('key')` neprůhledným `useDictionary(hash)`, což odstraní informaci o klíči slovníku. Tuto informaci potřebují pluginy purge a minify k identifikaci použitých polí.
|
|
202
210
|
|
|
@@ -205,9 +213,9 @@ Každý Babel plugin má odpovídajícího pomocníka (options helper), který p
|
|
|
205
213
|
| Pomocník pro volby | Používá se s |
|
|
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 pluginy (`vite-intlayer`)
|
|
213
221
|
|
|
@@ -220,6 +228,20 @@ Uživatelé Vite **tyto pluginy nikdy nenastavují přímo**. Propojí se automa
|
|
|
220
228
|
| Dictionary minify | Stejné jako zápis JSON pro `intlayerMinifyBabelPlugin` |
|
|
221
229
|
| Babel transform | Stejné jako přejmenování zdrojového kódu v `intlayerMinifyBabelPlugin` + `intlayerOptimizeBabelPlugin` |
|
|
222
230
|
|
|
231
|
+
### SWC plugin (`@intlayer/swc`)
|
|
232
|
+
|
|
233
|
+
Ani uživatelé Next.js **tyto nikdy nekonfigurují přímo**. Od verze **9.2.1** spouští `withIntlayer()` v `next.config.ts` celou pipeline — purge, minifikaci i přepis importů — pouze na základě příznaků `build.purge` a `build.minify`.
|
|
234
|
+
|
|
235
|
+
Práce je rozdělena na dvě části, protože SWC Wasm plugin transformuje vždy jen jeden soubor a nemá přístup k souborovému systému:
|
|
236
|
+
|
|
237
|
+
| Průchod | Kde běží | Co dělá |
|
|
238
|
+
| :---------------------------------------------- | :---------------------------- | :---------------------------------------------------------------------------------------------------- |
|
|
239
|
+
| Analýza použití + purge/minifikace JSON | Node, uvnitř `withIntlayer()` | Přečte každý zdrojový soubor komponenty, přepíše `.intlayer/**/*.json` a vytvoří přejmenovací tabulky |
|
|
240
|
+
| Přepis zdrojového kódu (`content.title` → `.a`) | `@intlayer/swc` (Wasm) | Aplikuje přejmenovací tabulky na odpovídající přístupy k vlastnostem ve vašem kódu |
|
|
241
|
+
| Přepis importů (`useIntlayer` → dict) | `@intlayer/swc` (Wasm) | Stejné jako `intlayerOptimizeBabelPlugin` |
|
|
242
|
+
|
|
243
|
+
Rozhodnout, _která_ pole jsou nepoužitá a _jaký_ alias každé z nich dostane, vyžaduje stav napříč soubory a souborové I/O, takže tato polovina běží v Node; SWC plugin dostává pouze výsledné tabulky.
|
|
244
|
+
|
|
223
245
|
## Nastavení podle platforem
|
|
224
246
|
|
|
225
247
|
<Tabs>
|
|
@@ -227,10 +249,12 @@ Uživatelé Vite **tyto pluginy nikdy nenastavují přímo**. Propojí se automa
|
|
|
227
249
|
|
|
228
250
|
### Next.js
|
|
229
251
|
|
|
230
|
-
Next.js
|
|
252
|
+
Next.js vyžaduje plugin `@intlayer/swc`, protože Next.js používá pro sestavení SWC. Od verze **9.2.1** pokrývá tento jediný balíček celou pipeline — optimalizaci (přepis importů), purge i minifikaci.
|
|
231
253
|
|
|
232
254
|
> Tento plugin se neinstaluje ve výchozím nastavení, jelikož SWC pluginy jsou pro Next.js zatím experimentální. V budoucnu se to může změnit.
|
|
233
255
|
|
|
256
|
+
> **Next.js 16.1.0 je minimální verze.** Je to první vydání postavené na dopředně kompatibilním ABI Wasm pluginů SWC; starší vydání plugin odmítají. `withIntlayer` přečte vaši verzi Next.js a pod 16.1.0 plugin jednoduše nezaregistruje — takové buildy stále projdou, jen běží bez optimalizace bundlu.
|
|
257
|
+
|
|
234
258
|
<Tabs>
|
|
235
259
|
<Tab value="npm">
|
|
236
260
|
|
|
@@ -265,33 +289,40 @@ intlayer-swc-plugin = "*"
|
|
|
265
289
|
|
|
266
290
|
Po instalaci plugin Intlayer automaticky rozpozná a použije.
|
|
267
291
|
|
|
268
|
-
|
|
292
|
+
Průchody **purge a minifikace** (odstranění a přejmenování polí) nevyžadují žádný další balíček ani `babel.config.js`. Obalte svou konfiguraci pomocí `withIntlayer` a zapněte příznaky v `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 = {/* vaše konfigurace */};
|
|
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: přejmenuje klíče polí v JSON + ve zdrojovém kódu
|
|
288
|
-
[intlayerMinifyBabelPlugin, getMinifyPluginOptions()],
|
|
289
|
-
// Poznámka: intlayerOptimizeBabelPlugin zde NENÍ POTŘEBA, jelikož
|
|
290
|
-
// přepis useIntlayer → useDictionary řeší balíček @intlayer/swc.
|
|
291
|
-
],
|
|
306
|
+
const config: IntlayerConfig = {
|
|
307
|
+
build: {
|
|
308
|
+
purge: true, // odstraní nepoužitá obsahová pole ze zabaleného JSON
|
|
309
|
+
minify: true, // přejmenuje klíče obsahových polí na krátké aliasy
|
|
310
|
+
},
|
|
292
311
|
};
|
|
312
|
+
|
|
313
|
+
export default config;
|
|
293
314
|
```
|
|
294
315
|
|
|
316
|
+
Během `next build` `withIntlayer` analyzuje vaše zdroje, přepíše zkompilované slovníky a předá výsledné přejmenovací tabulky pluginu `@intlayer/swc`, který aktualizuje odpovídající přístupy k vlastnostem ve vašem kódu.
|
|
317
|
+
|
|
318
|
+
> Použijte asynchronní `withIntlayer`, ne `withIntlayerSync`. Synchronní varianta analytickou pipeline nespouští, takže purge a minifikace s ní nemají žádný efekt.
|
|
319
|
+
|
|
320
|
+
> Purge a minifikace běží pouze při `next build` — optimalizační pipeline je během `next dev` vypnutá.
|
|
321
|
+
|
|
322
|
+
> Jsou také vypnuty, pokud jsou nakonfigurovaní volající kompatibilních adaptérů (`swcExtraCallers`, nastavované kompatibilními balíčky jako `@intlayer/next-intl` nebo `@intlayer/react-i18next`): tato místa volání jsou pro analyzátor použití neviditelná, takže purge by odstranil pole, která kód stále čte. Přepis importů zůstává aktivní.
|
|
323
|
+
|
|
324
|
+
**Starší verze (před 9.2.1)** vyžadovaly `@intlayer/babel` a soubor `babel.config.js` deklarující `intlayerPurgeBabelPlugin` a `intlayerMinifyBabelPlugin`. Tento soubor již není potřeba a lze jej smazat.
|
|
325
|
+
|
|
295
326
|
</Tab>
|
|
296
327
|
<Tab value="vite">
|
|
297
328
|
|
|
@@ -447,6 +478,8 @@ export default config;
|
|
|
447
478
|
|
|
448
479
|
> K minifikaci nedojde, pokud je `optimize` nastaveno na `false` nebo pokud `editor.enabled` odpovídá hodnotě `true` (vizuální editor totiž potřebuje znát původní názvy polí, aby umožnil jejich editaci).
|
|
449
480
|
|
|
481
|
+
> V Next.js se minifikace přeskočí také tehdy, když `@intlayer/swc` není nainstalovaný nebo jej nelze načíst (Next.js nižší než 16.1.0). Plugin je ta polovina, která přepisuje přístupy ve zdrojovém kódu, takže přejmenování slovníků bez něj by ponechalo váš kód číst názvy polí, které již neexistují.
|
|
482
|
+
|
|
450
483
|
> Stejně tak se minifikace ignoruje u slovníků načítaných přes `importMode: 'fetch'`, protože takové JSON soubory pocházejí z externího API pod svými původními názvy polí — přejmenování klíčů na straně klienta by rozbilo vazbu server-klient.
|
|
451
484
|
|
|
452
485
|
### Purge (odstranění nepoužitých polí)
|
|
@@ -475,7 +508,7 @@ export default config;
|
|
|
475
508
|
{ "title": "…", "subtitle": "…" }
|
|
476
509
|
```
|
|
477
510
|
|
|
478
|
-
> K purge nedojde, jestliže je `optimize` nastaveno na `false` nebo jestliže je `editor.enabled` `true`.
|
|
511
|
+
> K purge nedojde, jestliže je `optimize` nastaveno na `false` nebo jestliže je `editor.enabled` `true`. V Next.js se navíc přeskočí, když `@intlayer/swc` není dostupný a když jsou nakonfigurovaní volající kompatibilních adaptérů.
|
|
479
512
|
|
|
480
513
|
> Z bezpečnostních důvodů k purge nedojde ani tehdy, pokud nelze správně rozebrat (parse) nějaký zdrojový soubor. Dále se vynechá v situaci, kdy je výsledek z volání `useIntlayer` uložen do proměnné a předán dál způsobem, který statický analyzátor neumí sledovat (např. spread operátorem do objektu, nebo předáním přes properties (props) bez použití destrukce). V těchto případech zůstává celý slovník zachován.
|
|
481
514
|
|