@intlayer/docs 9.3.1 → 9.3.3
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/blog/ar/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/de/nextjs-multilingual-seo-comparison.md +9 -9
- package/blog/en/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/en-GB/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/es/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/fr/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/hi/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/id/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/it/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/ja/nextjs-multilingual-seo-comparison.md +9 -9
- package/blog/ko/nextjs-multilingual-seo-comparison.md +9 -9
- package/blog/pl/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/pt/nextjs-multilingual-seo-comparison.md +9 -9
- package/blog/ru/nextjs-multilingual-seo-comparison.md +9 -9
- package/blog/tr/nextjs-multilingual-seo-comparison.md +9 -9
- package/blog/uk/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/vi/nextjs-multilingual-seo-comparison.md +10 -10
- package/blog/zh/nextjs-multilingual-seo-comparison.md +10 -10
- package/dist/cjs/generated/docs.entry.cjs +20 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +20 -0
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/bundle_optimization.md +1 -1
- package/docs/ar/configuration.md +32 -9
- package/docs/ar/dictionary/content_file.md +0 -22
- package/docs/ar/dictionary/function_fetching.md +23 -0
- package/docs/ar/eslint.md +336 -0
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/bn/configuration.md +34 -9
- package/docs/bn/eslint.md +336 -0
- package/docs/cs/bundle_optimization.md +1 -1
- package/docs/cs/configuration.md +33 -9
- package/docs/cs/eslint.md +336 -0
- package/docs/de/bundle_optimization.md +1 -1
- package/docs/de/configuration.md +34 -9
- package/docs/de/dictionary/content_file.md +0 -22
- package/docs/de/dictionary/function_fetching.md +23 -0
- package/docs/de/eslint.md +336 -0
- package/docs/en/bundle_optimization.md +1 -1
- package/docs/en/configuration.md +34 -9
- package/docs/en/dictionary/content_file.md +0 -22
- package/docs/en/dictionary/function_fetching.md +23 -0
- package/docs/en/eslint.md +336 -0
- package/docs/en/packages/intlayer/getLocalizedPath.md +70 -19
- package/docs/en-GB/configuration.md +33 -9
- package/docs/en-GB/dictionary/content_file.md +0 -22
- package/docs/en-GB/dictionary/function_fetching.md +23 -0
- package/docs/en-GB/eslint.md +336 -0
- package/docs/en-GB/intlayer_with_create_react_app.md +32 -35
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/es/bundle_optimization.md +1 -1
- package/docs/es/configuration.md +35 -9
- package/docs/es/dictionary/content_file.md +0 -22
- package/docs/es/dictionary/function_fetching.md +23 -0
- package/docs/es/eslint.md +336 -0
- package/docs/fr/bundle_optimization.md +1 -1
- package/docs/fr/configuration.md +35 -9
- package/docs/fr/dictionary/content_file.md +0 -22
- package/docs/fr/dictionary/function_fetching.md +23 -0
- package/docs/fr/eslint.md +336 -0
- package/docs/hi/configuration.md +35 -9
- package/docs/hi/dictionary/content_file.md +0 -22
- package/docs/hi/dictionary/function_fetching.md +23 -0
- package/docs/hi/eslint.md +336 -0
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/hi/intlayer_with_vite+svelte.md +2 -2
- package/docs/id/configuration.md +35 -9
- package/docs/id/dictionary/content_file.md +0 -22
- package/docs/id/dictionary/function_fetching.md +23 -0
- package/docs/id/eslint.md +336 -0
- package/docs/it/bundle_optimization.md +1 -1
- package/docs/it/configuration.md +35 -9
- package/docs/it/dictionary/content_file.md +0 -22
- package/docs/it/dictionary/function_fetching.md +23 -0
- package/docs/it/eslint.md +336 -0
- package/docs/ja/configuration.md +30 -9
- package/docs/ja/dictionary/content_file.md +0 -22
- package/docs/ja/dictionary/function_fetching.md +23 -0
- package/docs/ja/eslint.md +336 -0
- package/docs/ja/intlayer_with_react_router_v7.md +1 -146
- package/docs/ja/intlayer_with_vite+react.md +5 -1
- package/docs/ko/configuration.md +31 -9
- package/docs/ko/dictionary/content_file.md +0 -22
- package/docs/ko/dictionary/function_fetching.md +23 -0
- package/docs/ko/eslint.md +336 -0
- package/docs/ko/intlayer_with_lynx+react.md +4 -0
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/ko/intlayer_with_storybook.md +5 -5
- package/docs/nl/configuration.md +33 -9
- package/docs/nl/eslint.md +336 -0
- package/docs/pl/bundle_optimization.md +1 -1
- package/docs/pl/configuration.md +34 -9
- package/docs/pl/dictionary/content_file.md +0 -22
- package/docs/pl/dictionary/function_fetching.md +23 -0
- package/docs/pl/eslint.md +336 -0
- package/docs/pl/intlayer_with_astro.md +1 -114
- package/docs/pl/migration_from_i18next_to_intlayer.md +4 -0
- package/docs/pl/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/pl/migration_from_next-intl_to_intlayer.md +11 -5
- package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/pl/migration_from_react-i18next_to_intlayer.md +8 -4
- package/docs/pl/migration_from_vue-i18n_to_intlayer.md +4 -0
- package/docs/pt/bundle_optimization.md +1 -1
- package/docs/pt/configuration.md +34 -9
- package/docs/pt/dictionary/content_file.md +0 -22
- package/docs/pt/dictionary/function_fetching.md +23 -0
- package/docs/pt/eslint.md +336 -0
- package/docs/pt/intlayer_with_astro.md +1 -114
- package/docs/ru/bundle_optimization.md +1 -1
- package/docs/ru/configuration.md +34 -9
- package/docs/ru/dictionary/content_file.md +0 -22
- package/docs/ru/dictionary/function_fetching.md +23 -0
- package/docs/ru/eslint.md +336 -0
- package/docs/tr/bundle_optimization.md +1 -1
- package/docs/tr/configuration.md +33 -9
- package/docs/tr/dictionary/content_file.md +0 -22
- package/docs/tr/dictionary/function_fetching.md +23 -0
- package/docs/tr/eslint.md +336 -0
- package/docs/uk/configuration.md +35 -9
- package/docs/uk/dictionary/content_file.md +0 -22
- package/docs/uk/dictionary/function_fetching.md +23 -0
- package/docs/uk/eslint.md +336 -0
- package/docs/uk/packages/angular-intlayer/exports.md +2 -2
- package/docs/ur/configuration.md +35 -9
- package/docs/ur/eslint.md +336 -0
- package/docs/vi/bundle_optimization.md +1 -1
- package/docs/vi/configuration.md +33 -9
- package/docs/vi/dictionary/content_file.md +0 -22
- package/docs/vi/dictionary/function_fetching.md +23 -0
- package/docs/vi/eslint.md +336 -0
- package/docs/zh/bundle_optimization.md +1 -1
- package/docs/zh/configuration.md +29 -9
- package/docs/zh/dictionary/content_file.md +0 -22
- package/docs/zh/dictionary/function_fetching.md +23 -0
- package/docs/zh/eslint.md +336 -0
- package/docs/zh/intlayer_with_create_react_app.md +4 -0
- package/docs/zh/intlayer_with_lynx+react.md +4 -0
- package/docs/zh/intlayer_with_nextjs_14.md +0 -2
- package/docs/zh/intlayer_with_nextjs_15.md +0 -2
- package/docs/zh/intlayer_with_nextjs_page_router.md +0 -2
- package/docs/zh/intlayer_with_nuxt.md +1 -1
- package/docs/zh/intlayer_with_react_router_v7.md +4 -0
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +4 -0
- package/docs/zh/intlayer_with_solid_start.md +1 -1
- package/docs/zh/intlayer_with_vite+vue.md +0 -2
- package/docs/zh-TW/bundle_optimization.md +1 -1
- package/docs/zh-TW/eslint.md +336 -0
- package/package.json +7 -7
- package/src/generated/docs.entry.ts +20 -0
package/docs/bn/configuration.md
CHANGED
|
@@ -471,6 +471,29 @@ const config: IntlayerConfig = {
|
|
|
471
471
|
*/
|
|
472
472
|
prune: true,
|
|
473
473
|
|
|
474
|
+
/**
|
|
475
|
+
* প্রতি-লোকেল অভিধান চাঙ্কগুলিকে সেই কোড-স্প্লিট সীমানা অনুসারে গোষ্ঠীভুক্ত
|
|
476
|
+
* করুন যা সেগুলি ব্যবহার করে, যাতে ধীরে লোড হওয়া পৃষ্ঠা একটি অনুরোধেই তার
|
|
477
|
+
* বিষয়বস্তু পায়।
|
|
478
|
+
* ডিফল্ট: true
|
|
479
|
+
*
|
|
480
|
+
* দ্রষ্টব্য:
|
|
481
|
+
* - শুধুমাত্র `importMode: 'dynamic'` ব্যবহারকারী অভিধানের ক্ষেত্রে প্রযোজ্য।
|
|
482
|
+
*/
|
|
483
|
+
chunkGrouping: true,
|
|
484
|
+
|
|
485
|
+
/**
|
|
486
|
+
* চাঙ্ক রেন্ডার হওয়ার পরে আনার পরিবর্তে, যে চাঙ্ক অভিধানটি ব্যবহার করে তার
|
|
487
|
+
* সাথেই সেটি লোড করুন। পঠন সাসপেন্ড না হয়ে সিঙ্ক্রোনাসভাবে রেন্ডার হয়, তাই
|
|
488
|
+
* নেভিগেশনে আর লোডিং অবস্থা ঝলকায় না।
|
|
489
|
+
* ডিফল্ট: true
|
|
490
|
+
*
|
|
491
|
+
* দ্রষ্টব্য:
|
|
492
|
+
* - শুধুমাত্র নির্ধারিত লোকেলের জন্য অপেক্ষা করা হয়, তাই পৃষ্ঠাটি কেবল যে
|
|
493
|
+
* ভাষা দেখায় সেটিই ডাউনলোড করে।
|
|
494
|
+
*/
|
|
495
|
+
dictionariesPreload: true,
|
|
496
|
+
|
|
474
497
|
/**
|
|
475
498
|
* জেনারেট করা ডিকশনারি ফাইলের আউটপুট ফরম্যাট।
|
|
476
499
|
* ডিফল্ট: ['cjs', 'esm']
|
|
@@ -1032,15 +1055,17 @@ Intlayer কীভাবে আপনার অ্যাপ্লিকেশন
|
|
|
1032
1055
|
|
|
1033
1056
|
> অপ্টিমাইজেশন চলাকালীন, Intlayer কোড স্প্লিটিং (chunking) অপ্টিমাইজ করার জন্য ডিকশনারি কলগুলো প্রতিস্থাপন করবে যাতে ফলাফল বান্ডেলটি কেবল সেই ডিকশনারিগুলোই ইম্পোর্ট করে যা বাস্তবে ব্যবহৃত হয়।
|
|
1034
1057
|
|
|
1035
|
-
| ফিল্ড
|
|
1036
|
-
|
|
|
1037
|
-
| `mode`
|
|
1038
|
-
| `optimize`
|
|
1039
|
-
| `minify`
|
|
1040
|
-
| `prune`
|
|
1041
|
-
| `checkTypes`
|
|
1042
|
-
| `
|
|
1043
|
-
| `
|
|
1058
|
+
| ফিল্ড | বর্ণনা | টাইপ | ডিফল্ট | উদাহরণ | মন্তব্য |
|
|
1059
|
+
| --------------------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1060
|
+
| `mode` | বিল্ড মোড নিয়ন্ত্রণ করে। | `'auto'` | <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: অ্যাপ্লিকেশন বিল্ডের সময় বিল্ড স্বয়ংক্রিয়ভাবে শুরু হয়।<br/>• `'manual'`: কেবল একটি স্পষ্ট বিল্ড কমান্ডের মাধ্যমে কার্যকর হয়।<br/>• ডিকশনারি বিল্ড বন্ধ করার জন্য ব্যবহার করা যেতে পারে (যেমন Node.js এনভায়রনমেন্টে চলা এড়াতে)। |
|
|
1061
|
+
| `optimize` | বিল্ড অপ্টিমাইজেশন করা হবে কি না তা নিয়ন্ত্রণ করে। | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • সংজ্ঞায়িত না থাকলে, ফ্রেমওয়ার্ক বিল্ড (Vite/Next.js) এর সময় অপ্টিমাইজেশন শুরু হয়।<br/>• `true` দেব মোডেও অপ্টিমাইজেশন বাধ্য করে।<br/>• `false` এটি বন্ধ করে দেয়।<br/>• চালু থাকলে, চাকিং অপ্টিমাইজেশনের জন্য ডিকশনারি কল প্রতিস্থাপন করে।<br/>• `@intlayer/babel` এবং `@intlayer/swc` প্লাগইন প্রয়োজন। |
|
|
1062
|
+
| `minify` | বান্ডেলের আকার কমাতে ডিকশনারিগুলো মিনিফাই করা উচিত কি না তা নির্দিষ্ট করে। | `boolean` | `false` | | • বান্ডেল সংকুচিত করা উচিত কি না তা নির্দিষ্ট করে।<br/>• ডিফল্ট: প্রোডাকশনে `true`।<br/>• `optimize` নিষ্ক্রিয় থাকলে এই বিকল্পটি উপেক্ষা করা হবে।<br/>• `editor.enabled` সত্য হলে এই বিকল্পটি উপেক্ষা করা হবে। |
|
|
1063
|
+
| `prune` | ডিকশনারিতে অব্যবহৃত কীগুলো মুছে ফেলা উচিত কি না তা নির্দিষ্ট করে। | `boolean` | `true` | | • বান্ডেলটি পরিষ্কার করা উচিত কি না তা নির্দিষ্ট করে।<br/>• ডিফল্ট: প্রোডাকশনে `true`।<br/>• `optimize` নিষ্ক্রিয় থাকলে এই বিকল্পটি উপেক্ষা করা হবে। |
|
|
1064
|
+
| `checkTypes` | বিল্ডের সময় TypeScript টাইপ চেক করে ত্রুটি লগ করবে কি না তা নির্দেশ করে। | `boolean` | `false` | | বিল্ড প্রক্রিয়া ধীর করে দিতে পারে। |
|
|
1065
|
+
| `chunkGrouping` | প্রতি-লোকেল অভিধান চাঙ্কগুলিকে সেই কোড-স্প্লিট সীমানা অনুসারে গোষ্ঠীভুক্ত করা হবে কিনা যা সেগুলি ব্যবহার করে। | `boolean` | `true` | | • গোষ্ঠীভুক্ত না করলে, বহু কম্পোনেন্ট দিয়ে গঠিত একটি পৃষ্ঠা প্রতিটি অভিধানের জন্য একটি করে অনুরোধ পাঠায়।<br/>• একাধিক সীমানা থেকে পৌঁছানো অভিধানগুলি একটি ভাগ করা চাঙ্কে চলে যায়, তাই কোনো পৃষ্ঠা অন্য পৃষ্ঠার বিষয়বস্তু বহন করে না।<br/>• শুধুমাত্র `importMode: 'dynamic'` ব্যবহারকারী অভিধানের ক্ষেত্রে প্রযোজ্য।<br/>• শুধুমাত্র ক্লায়েন্ট বিল্ডে এবং কেবল বান্ডলিংয়ের সময় প্রযোজ্য (dev-এ নয়)। |
|
|
1066
|
+
| `dictionariesPreload` | অভিধানটি সেই চাঙ্কের সাথে লোড হবে কিনা যা এটি ব্যবহার করে, নাকি সেই চাঙ্ক রেন্ডার হওয়ার পরে আনা হবে। | `boolean` | `true` | | • উৎপন্ন এন্ট্রি পয়েন্ট শীর্ষ স্তরে ব্রাউজিং লোকেলের জন্য অপেক্ষা করে, তাই ধীরে লোড হওয়া রুট তার বিষয়বস্তু না আসা পর্যন্ত লোড হয়েছে বলে ধরা হয় না।<br/>• পঠন সাসপেন্ড না হয়ে সিঙ্ক্রোনাসভাবে রেন্ডার হয়, তাই নেভিগেশনে আর লোডিং অবস্থা ঝলকায় না।<br/>• শুধুমাত্র নির্ধারিত লোকেলের জন্য অপেক্ষা করা হয়, তাই পৃষ্ঠাটি কেবল যে ভাষা দেখায় সেটিই ডাউনলোড করে।<br/>• শুধুমাত্র ক্লায়েন্ট বিল্ডে `importMode: 'dynamic'` ব্যবহারকারী অভিধানের ক্ষেত্রে প্রযোজ্য।<br/>• টপ-লেভেল await সমর্থনকারী বান্ডলার প্রয়োজন (Vite, esbuild)। |
|
|
1067
|
+
| `outputFormat` | ডিকশনারির আউটপুট ফরম্যাট নিয়ন্ত্রণ করে। | `('esm' | 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
|
|
1068
|
+
| `traversePattern` | অপ্টিমাইজেশন চলাকালীন স্ক্যান করার ফাইলগুলো নির্ধারণ করে এমন প্যাটার্ন। | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | • বিল্ড পারফরম্যান্স বাড়াতে রিলেভেন্ট ফাইলে অপ্টিমাইজেশন সীমাবদ্ধ করুন।<br/>• `optimize` বন্ধ থাকলে উপেক্ষা করা হয়।<br/>• গ্লোব প্যাটার্ন ব্যবহার করে। |
|
|
1044
1069
|
|
|
1045
1070
|
---
|
|
1046
1071
|
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-08-12
|
|
3
|
+
updatedAt: 2026-08-13
|
|
4
|
+
title: ESLint প্লাগইন | Intlayer এর জন্য লিন্ট নিয়ম
|
|
5
|
+
description: eslint-plugin-intlayer ব্যবহার করে হার্ডকোডেড স্ট্রিং, ডাইনামিক কল যা Intlayer কম্পাইলার অপ্টিমাইজ করতে পারে না এবং অব্যবহৃত ডিকশনারি সামগ্রী শনাক্ত করুন। React, Vue, Svelte, Angular এবং Astro জুড়ে ESLint এবং oxlint এর সাথে কাজ করে।
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- ESLint
|
|
9
|
+
- oxlint
|
|
10
|
+
- লিন্টিং
|
|
11
|
+
- i18n
|
|
12
|
+
- আন্তর্জাতিকীকরণ
|
|
13
|
+
- no-raw-text
|
|
14
|
+
- হার্ডকোডেড স্ট্রিং
|
|
15
|
+
- অব্যবহৃত অনুবাদ
|
|
16
|
+
- মৃত সামগ্রী
|
|
17
|
+
- React
|
|
18
|
+
- Vue
|
|
19
|
+
- Svelte
|
|
20
|
+
- Angular
|
|
21
|
+
slugs:
|
|
22
|
+
- doc
|
|
23
|
+
- eslint
|
|
24
|
+
history:
|
|
25
|
+
- version: 9.3.1
|
|
26
|
+
date: 2026-08-12
|
|
27
|
+
changes: "প্রাথমিক ইতিহাস"
|
|
28
|
+
author: aymericzip
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# ESLint x OXLint প্লাগইন
|
|
32
|
+
|
|
33
|
+
`eslint-plugin-intlayer` এমন ধরনের i18n ভুলগুলো শনাক্ত করে যা TypeScript ধরতে পারে না:
|
|
34
|
+
|
|
35
|
+
1. **হার্ডকোডেড টেক্সট** যা কখনই কোনো ডিকশনারিতে স্থান পায়নি।
|
|
36
|
+
2. **ডাইনামিক কল** যা টাইপ-চেক পাস করে এবং রান হয়, কিন্তু Intlayer কম্পাইলার অপ্টিমাইজ করতে পারে না।
|
|
37
|
+
3. **মৃত সামগ্রী (Dead content)** — ডিকশনারি এবং ফিল্ড যা প্রজেক্টের কোথাও রিড করা হয় না (ঐচ্ছিক/opt-in)।
|
|
38
|
+
|
|
39
|
+
অজানা ডিকশনারি কি, অজানা ফিল্ড পাথ এবং অনুপস্থিত লোকেলগুলো ইতিমধ্যেই কম্পাইল এরর, তাই প্লাগইন সেগুলো পুনরাবৃত্তি করে না।
|
|
40
|
+
|
|
41
|
+
## ইনস্টলেশন
|
|
42
|
+
|
|
43
|
+
```bash packageManager="npm"
|
|
44
|
+
npm install --save-dev eslint-plugin-intlayer
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
```bash packageManager="pnpm"
|
|
48
|
+
pnpm add --save-dev eslint-plugin-intlayer
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
```bash packageManager="yarn"
|
|
52
|
+
yarn add --dev eslint-plugin-intlayer
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
ESLint 9 বা পরবর্তী সংস্করণ (flat config) প্রয়োজন। ESLint 10 সমর্থিত।
|
|
56
|
+
|
|
57
|
+
## ব্যবহার
|
|
58
|
+
|
|
59
|
+
প্লাগইনটি ESLint এবং [oxlint](https://oxc.rs) উভয় পরিবেশেই একই নিয়ম ও একই বিকল্প সহ কাজ করে।
|
|
60
|
+
|
|
61
|
+
<Tabs defaultTab="eslint">
|
|
62
|
+
<Tab label="ESLint" value="eslint">
|
|
63
|
+
|
|
64
|
+
```javascript fileName="eslint.config.mjs"
|
|
65
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
66
|
+
|
|
67
|
+
export default [...intlayer.configs.recommended];
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
অথবা একটি কনফিগ ছড়িয়ে দিন এবং তীব্রতা নিজে নির্ধারণ করুন:
|
|
71
|
+
|
|
72
|
+
```javascript fileName="eslint.config.mjs"
|
|
73
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
74
|
+
|
|
75
|
+
export default [
|
|
76
|
+
...intlayer.configs.recommended,
|
|
77
|
+
{
|
|
78
|
+
rules: {
|
|
79
|
+
"intlayer/no-raw-text": "warn",
|
|
80
|
+
"intlayer/static-dictionary-key": "error",
|
|
81
|
+
"intlayer/no-dynamic-field-access": "error",
|
|
82
|
+
"intlayer/enforce-adapter-import": "warn",
|
|
83
|
+
"intlayer/no-unused-content": "warn",
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
];
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
</Tab>
|
|
90
|
+
<Tab label="oxlint" value="oxlint">
|
|
91
|
+
|
|
92
|
+
```json fileName=".oxlintrc.json"
|
|
93
|
+
{
|
|
94
|
+
"jsPlugins": ["eslint-plugin-intlayer"],
|
|
95
|
+
"rules": {
|
|
96
|
+
"intlayer/no-raw-text": "warn",
|
|
97
|
+
"intlayer/static-dictionary-key": "error",
|
|
98
|
+
"intlayer/no-dynamic-field-access": "error",
|
|
99
|
+
"intlayer/enforce-adapter-import": "warn"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
দুটি বিষয় মনে রাখবেন: oxlint এর JS প্লাগইন সমর্থন এখনও আলফা পর্যায়ে রয়েছে এবং oxlint কাস্টম পার্সার সমর্থন করে না — তাই `.vue`, `.svelte`, `.astro` এবং Angular টেমপ্লেট সেখানে লিন্ট করা হয় না। আপনার JS/TS/JSX ফাইলগুলোর জন্য oxlint চালান এবং বাকিগুলোর জন্য ESLint ব্যবহার করুন।
|
|
105
|
+
|
|
106
|
+
উপরে `no-unused-content` ইচ্ছাকৃতভাবে বাদ দেওয়া হয়েছে: এটির রুল কনটেক্সট থেকে ওয়ার্কিং ডিরেক্টরি এবং লিন্ট করা ফাইল পাথ প্রয়োজন, যা আলফা JS প্লাগইন ব্রিজ নিশ্চিত করে না। এটি ESLint এর অধীনে চালান।
|
|
107
|
+
|
|
108
|
+
</Tab>
|
|
109
|
+
</Tabs>
|
|
110
|
+
|
|
111
|
+
### কনফিগারেশনসমূহ (Configs)
|
|
112
|
+
|
|
113
|
+
| কনফিগারেশন | `no-raw-text` | `static-dictionary-key` | `no-dynamic-field-access` | `enforce-adapter-import` | `no-unused-content` |
|
|
114
|
+
| --------------- | ----------------------- | ----------------------- | ------------------------- | ------------------------ | ------------------- |
|
|
115
|
+
| `recommended` | warn | error | error | off | off |
|
|
116
|
+
| `strict` | error (+ অ-JSX লিটারেল) | error | error | error | off |
|
|
117
|
+
| `contract-only` | off | error | error | off | off |
|
|
118
|
+
|
|
119
|
+
`recommended` ইচ্ছাকৃতভাবে `no-raw-text` কে `warn` হিসেবে রাখে: এটি বিদ্যমান কোনো কোডবেসে প্রয়োগ করলে সমস্ত অননূদিত স্ট্রিং একসাথে প্রকাশ পায়, যা প্রথম দিনেই আপনার বিল্ড ভেঙে ফেলা উচিত নয়।
|
|
120
|
+
|
|
121
|
+
`enforce-adapter-import` ডিফল্টভাবে বন্ধ থাকে — প্রয়োজন হলে স্পষ্টভাবে সক্ষম করুন।
|
|
122
|
+
|
|
123
|
+
`no-unused-content` প্রতিটি কনফিগারেশনেই বন্ধ থাকে, যার মধ্যে `strict` ও অন্তর্ভুক্ত। এটি একমাত্র নিয়ম যা আপনার Intlayer কনফিগারেশন পড়ে এবং ডিস্ক থেকে সোর্স ফাইলগুলো স্ক্যান করে, তাই এটি চালু করা একটি সুচিন্তিত সিদ্ধান্ত হওয়া উচিত।
|
|
124
|
+
|
|
125
|
+
## নিয়মাবলী
|
|
126
|
+
|
|
127
|
+
### `no-raw-text`
|
|
128
|
+
|
|
129
|
+
ডিকশনারিতে ঘোষিত নয় এমন ব্যবহারকারী-মুখী টেক্সট রিপোর্ট করে। এটি `intlayer extract` এর মতো একই সনাক্তকরণ ব্যবহার করে, তাই ব্র্যান্ডের নাম, CSS ক্লাস এবং প্রযুক্তিগত শনাক্তকারীগুলোকে উপেক্ষা করা হয়।
|
|
130
|
+
|
|
131
|
+
```jsx
|
|
132
|
+
// ✗ রিপোর্ট করা হয়েছে
|
|
133
|
+
<h1>Welcome to our documentation</h1>
|
|
134
|
+
<input placeholder="Enter your email address" />
|
|
135
|
+
|
|
136
|
+
// ✓ সঠিক
|
|
137
|
+
const { title } = useIntlayer("home");
|
|
138
|
+
<h1>{title}</h1>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
কন্টেন্ট ডিক্লারেশন ফাইলগুলো (`*.content.ts`, …) বাদ দেওয়া হয়।
|
|
142
|
+
|
|
143
|
+
একবারে পুরো ফাইল ঠিক করতে, `npx intlayer extract` চালান এবং কম্পাইলারকে স্ট্রিংগুলো ডিকশনারিতে সরিয়ে নিতে দিন।
|
|
144
|
+
|
|
145
|
+
**বিকল্পসমূহ**
|
|
146
|
+
|
|
147
|
+
```javascript fileName="eslint.config.mjs"
|
|
148
|
+
{
|
|
149
|
+
"intlayer/no-raw-text": [
|
|
150
|
+
"warn",
|
|
151
|
+
{
|
|
152
|
+
// যেসব বৈশিষ্ট্যের মান ব্যবহারকারী-মুখী টেক্সট।
|
|
153
|
+
// ডিফল্ট: title, placeholder, alt, aria-label, label
|
|
154
|
+
attributes: ["title", "placeholder", "alt", "aria-label", "label"],
|
|
155
|
+
|
|
156
|
+
// যেসব উপাদানের সামগ্রী কখনই ব্যবহারকারী-মুখী টেক্সট নয়।
|
|
157
|
+
// ডিফল্ট: code, pre, script, style
|
|
158
|
+
ignoreElements: ["code", "pre", "script", "style"],
|
|
159
|
+
|
|
160
|
+
// কখনই রিপোর্ট না করার টেক্সটের জন্য রেগুলার এক্সপ্রেশন।
|
|
161
|
+
ignorePatterns: ["^Powered by"],
|
|
162
|
+
|
|
163
|
+
// মার্কআপের বাইরের স্ট্রিং লিটারেলগুলোও রিপোর্ট করবেন কিনা। ডিফল্ট: false
|
|
164
|
+
includeStringLiterals: false,
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### `static-dictionary-key`
|
|
171
|
+
|
|
172
|
+
ডিকশনারি কি একটি স্ট্রিং লিটারেল হওয়া প্রয়োজন।
|
|
173
|
+
|
|
174
|
+
কম্পাইলার কেবল তখনই একটি ডিকশনারি প্রি-লোড করতে পারে যখন এটি কল সাইটে সরাসরি কি পড়তে পারে। একটি কম্পিউটেড কি-এর ক্ষেত্রে এটি নীরবে অপ্টিমাইজেশন এড়িয়ে যায় এবং পরিবর্তে প্রতিটি ডিকশনারি বান্ডেল করে।
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
// ✗ রিপোর্ট করা হয়েছে
|
|
178
|
+
useIntlayer(dictionaryKey);
|
|
179
|
+
useIntlayer(`home-${suffix}`);
|
|
180
|
+
getTranslations({ namespace: page });
|
|
181
|
+
|
|
182
|
+
// ✗ ভেরিয়েবল এখনও লিটারেল নয়
|
|
183
|
+
const key = "home";
|
|
184
|
+
useIntlayer(key);
|
|
185
|
+
|
|
186
|
+
// ✓ সঠিক
|
|
187
|
+
useIntlayer("home");
|
|
188
|
+
getTranslations({ namespace: "home" });
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
এটি `useIntlayer`, `getIntlayer` এবং প্রতিটি সামঞ্জস্যপূর্ণ অ্যাডাপ্টারের (`useTranslation`, `useTranslations`, `formatMessage`, `<FormattedMessage id>`, `<Trans i18nKey>`, …) ক্ষেত্রে প্রযোজ্য।
|
|
192
|
+
|
|
193
|
+
### `no-dynamic-field-access`
|
|
194
|
+
|
|
195
|
+
ডিকশনারি থেকে যে ফিল্ডটি আপনি পড়েন তা স্ট্যাটিকভাবে জানা থাকা প্রয়োজন।
|
|
196
|
+
|
|
197
|
+
কম্পাইলার সেই ফিল্ডগুলো সরিয়ে দেয় যেগুলোর ব্যবহার সে দেখতে পায় না। একটি কম্পিউটেড অ্যাক্সেস কম্পাইলারের কাছে অদৃশ্য থাকে, তাই রানটাইমে রিড `undefined` রিটার্ন করতে পারে।
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
// ✗ রিপোর্ট করা হয়েছে
|
|
201
|
+
const content = useIntlayer("home");
|
|
202
|
+
content[fieldName];
|
|
203
|
+
|
|
204
|
+
const t = useTranslations("home");
|
|
205
|
+
t(messageKey);
|
|
206
|
+
|
|
207
|
+
// ✓ সঠিক
|
|
208
|
+
content.title;
|
|
209
|
+
content["title"];
|
|
210
|
+
content.items[0];
|
|
211
|
+
t("hero.title");
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### `enforce-adapter-import`
|
|
215
|
+
|
|
216
|
+
মূল প্যাকেজের চেয়ে `@intlayer/*` কম্প্যাটিবিলিটি অ্যাডাপ্টারকে অগ্রাধিকার দেয়। মূল প্যাকেজ শুধুমাত্র তখনই Intlayer এ সমাধান হয় যখন বান্ডলার উপনাম কনফিগার করা থাকে; অ্যাডাপ্টার সর্বদা সমাধান করে। `--fix` এর মাধ্যমে স্বয়ংক্রিয়ভাবে সংশোধনযোগ্য।
|
|
217
|
+
|
|
218
|
+
```typescript
|
|
219
|
+
// ✗ রিপোর্ট করা হয়েছে
|
|
220
|
+
import { useTranslation } from "react-i18next";
|
|
221
|
+
import { getTranslations } from "next-intl/server";
|
|
222
|
+
|
|
223
|
+
// ✓ সঠিক
|
|
224
|
+
import { useTranslation } from "@intlayer/react-i18next";
|
|
225
|
+
import { getTranslations } from "@intlayer/next-intl/server";
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### `no-unused-content`
|
|
229
|
+
|
|
230
|
+
**ডিফল্টভাবে বন্ধ।** প্রজেক্টে কোনো অংশ যে সামগ্রী পড়ে না, এবং একাধিক স্থানে ঘোষিত ডিকশনারি কিগুলো রিপোর্ট করে।
|
|
231
|
+
|
|
232
|
+
```typescript fileName="src/home.content.ts"
|
|
233
|
+
export default {
|
|
234
|
+
key: "home", // ✗ প্রজেক্টে কোনো কলার "home" না চাইলে রিপোর্ট করা হয়
|
|
235
|
+
content: {
|
|
236
|
+
title: t({ bn: "শিরোনাম", en: "Title" }),
|
|
237
|
+
|
|
238
|
+
// ✗ যখন কিছুই `hero` পড়ে না তখন রিপোর্ট করা হয়
|
|
239
|
+
hero: {
|
|
240
|
+
subtitle: t({ bn: "উপশিরোনাম", en: "Subtitle" }),
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
অন্যান্য নিয়মের মতো এটি কেবল সামনে থাকা ফাইল থেকে সিদ্ধান্ত নিতে পারে না — একটি ফিল্ড শুধুমাত্র সম্পূর্ণ প্রজেক্টের সাপেক্ষেই অব্যবহৃত হিসেবে গণ্য হয়। লিন্ট রানের প্রথম কন্টেন্ট ডিক্লারেশনে এটি আপনার Intlayer কনফিগারেশন লোড করে, সেই কনফিগারেশনে ঘোষিত সোর্স ফাইলগুলো স্ক্যান করে (`build.traversePattern`, `compiler.transformPattern`) এবং একই ব্যবহার বিশ্লেষক চালায় যা `@intlayer/lsp` এবং VS Code এক্সটেনশনের "অব্যবহৃত" স্ট্রাইকথ্রু সমর্থন করে। ফলাফলটি `cacheTtl` মিলিসেকেন্ডের জন্য ক্যাশ থাকে, তাই প্রতিটি ফাইলের পরিবর্তে প্রতি রানে একবার স্ক্যান হয়।
|
|
247
|
+
|
|
248
|
+
**বিকল্পসমূহ**
|
|
249
|
+
|
|
250
|
+
```javascript fileName="eslint.config.mjs"
|
|
251
|
+
{
|
|
252
|
+
"intlayer/no-unused-content": [
|
|
253
|
+
"warn",
|
|
254
|
+
{
|
|
255
|
+
// যে ডিকশনারি কিগুলোতে কিছুই রেফারেন্স করে না তা রিপোর্ট করুন। ডিফল্ট: true
|
|
256
|
+
reportUnusedDictionaries: true,
|
|
257
|
+
|
|
258
|
+
// যে কন্টেন্ট ফিল্ডগুলো কিছুই পড়ে না তা রিপোর্ট করুন। ডিফল্ট: true
|
|
259
|
+
reportUnusedFields: true,
|
|
260
|
+
|
|
261
|
+
// একাধিক স্থানে ঘোষিত কিগুলো রিপোর্ট করুন। ডিফল্ট: true
|
|
262
|
+
reportDuplicateKeys: true,
|
|
263
|
+
|
|
264
|
+
// কখনই রিপোর্ট না করার ফিল্ড পাথের রেগুলার এক্সপ্রেশন।
|
|
265
|
+
ignoreFields: ["^meta"],
|
|
266
|
+
|
|
267
|
+
// প্রজেক্ট রুট যেখান থেকে স্ক্যান শুরু হয়। ডিফল্ট: ESLint ওয়ার্কিং ডিরেক্টরি
|
|
268
|
+
baseDir: process.cwd(),
|
|
269
|
+
|
|
270
|
+
// প্রজেক্ট স্ক্যান কতক্ষণ পুনঃব্যবহার করা হবে (ms এ)। ডিফল্ট: 30000
|
|
271
|
+
cacheTtl: 30000,
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
যখন আপনি দীর্ঘমেয়াদী এডিটর সার্ভার থেকে লিন্ট করেন এবং চান পরিবর্তনগুলো দ্রুত প্রতিফলিত হোক, তখন `cacheTtl` হ্রাস করুন; একটি মনোরেপোতে একাধিক Intlayer প্রজেক্ট বিস্তৃত হলে `baseDir` সেট করুন।
|
|
278
|
+
|
|
279
|
+
> **ভুল রিপোর্টিং এড়াতে এটি নীরব থাকতে পছন্দ করে।** একটি মিথ্যা ইতিবাচক রিপোর্ট একটি অনুবাদ মুছে দিতে পারে, তাই যখন ডিকশনারি এমনভাবে ব্যবহার করা হয় যা বিশ্লেষণ ট্র্যাক করতে পারে না, তখন কিছুই রিপোর্ট করা হয় না: সামগ্রী অবজেক্টটি সম্পূর্ণরূপে পাস করা, এটি থেকে আবদ্ধ একটি অনুবাদক ফাংশন (`const t = useTranslations("home")`), সরাসরি ইম্পোর্টের মাধ্যমে পৌঁছানো একটি ঘোষণা (`useDictionary(myDictionary)`), অন্য ডিকশনারি থেকে একটি `nest()`, বা স্প্রেড অপারেটর দ্বারা অসম্পূর্ণ করা একটি ফিল্ড তালিকা। একক-ফাইল উপাদানগুলো (`.vue`, `.svelte`, `.astro`) তাদের উল্লিখিত ডিকশনারির প্রতিটি ফিল্ড ব্যবহার করছে বলে গণ্য হয়, কারণ তাদের স্ক্রিপ্ট ব্লকগুলো এখানে পার্স করা হয় না।
|
|
280
|
+
|
|
281
|
+
`reportDuplicateKeys` বিল্ডের মাধ্যমে `.intlayer/` এর অধীনে সংরক্ষিত অপরিশোধিত ডিকশনারি পড়ে, তাই প্রজেক্টটি কমপক্ষে একবার বিল্ড না হওয়া পর্যন্ত এটি নীরব থাকে। দুটি ঘোষণা একই কি শেয়ার করলে সেগুলো মার্জ হয়, যা একটি বৈধ প্যাটার্ন — রিপোর্টটি বিদ্যমান কারণ উভয় পাশে সংজ্ঞায়িত একটি ফিল্ড নীরবে দুটি মানের মধ্যে কেবল একটি ধরে রাখে।
|
|
282
|
+
|
|
283
|
+
বিশ্লেষকটি `@intlayer/lsp` থেকে লোড হয়, যা ESM হিসেবে সরবরাহ করা হয়। তাই নিয়মটির জন্য একটি Node সংস্করণ প্রয়োজন যা একটি ES মডিউলকে `require()` করতে সক্ষম — Node 20.19+ বা 22.12+। পুরনো সংস্করণে এটি লিন্ট রান ব্যর্থ না করে কিছুই রিপোর্ট করে না।
|
|
284
|
+
|
|
285
|
+
## ফ্রেমওয়ার্কসমূহ
|
|
286
|
+
|
|
287
|
+
প্রতিটি নিয়ম Vue, Svelte এবং Angular টেমপ্লেট সহ সমস্ত Intlayer ইন্টিগ্রেশনে কাজ করে। আপনাকে শুধুমাত্র ESLint কে জানাতে হবে কোন পার্সার প্রতিটি ফাইলের ধরন পড়ে।
|
|
288
|
+
|
|
289
|
+
| ফ্রেমওয়ার্ক | ফাইলসমূহ | পার্সার |
|
|
290
|
+
| ------------------------- | ----------------- | --------------------------------- |
|
|
291
|
+
| React, Preact, Solid, Lit | `.jsx` `.tsx` | `typescript-eslint` |
|
|
292
|
+
| Next.js | `.jsx` `.tsx` | `typescript-eslint` |
|
|
293
|
+
| Vue, Nuxt | `.vue` | `vue-eslint-parser` |
|
|
294
|
+
| Svelte, SvelteKit | `.svelte` | `svelte-eslint-parser` |
|
|
295
|
+
| Angular | `.ts` | `typescript-eslint` |
|
|
296
|
+
| Angular টেমপ্লেট | `.component.html` | `@angular-eslint/template-parser` |
|
|
297
|
+
| Astro | `.astro` | `astro-eslint-parser` |
|
|
298
|
+
|
|
299
|
+
```javascript fileName="eslint.config.mjs"
|
|
300
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
301
|
+
import tseslint from "typescript-eslint";
|
|
302
|
+
import vueParser from "vue-eslint-parser";
|
|
303
|
+
import svelteParser from "svelte-eslint-parser";
|
|
304
|
+
import angularTemplateParser from "@angular-eslint/template-parser";
|
|
305
|
+
|
|
306
|
+
export default [
|
|
307
|
+
...intlayer.configs.recommended,
|
|
308
|
+
|
|
309
|
+
{
|
|
310
|
+
files: ["**/*.{ts,tsx,jsx}"],
|
|
311
|
+
languageOptions: { parser: tseslint.parser },
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
files: ["**/*.vue"],
|
|
315
|
+
languageOptions: {
|
|
316
|
+
parser: vueParser,
|
|
317
|
+
parserOptions: { parser: tseslint.parser },
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
files: ["**/*.svelte"],
|
|
322
|
+
languageOptions: {
|
|
323
|
+
parser: svelteParser,
|
|
324
|
+
parserOptions: { parser: tseslint.parser },
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
files: ["**/*.component.html"],
|
|
329
|
+
languageOptions: { parser: angularTemplateParser },
|
|
330
|
+
},
|
|
331
|
+
];
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
আপনার প্রজেক্টের জন্য প্রয়োজনীয় পার্সারগুলো কেবল ইনস্টল করুন।
|
|
335
|
+
|
|
336
|
+
> **পরিচিত সীমাবদ্ধতা।** Vue এবং Angular টেমপ্লেটে `{{ content[key] }}` এর মতো এক্সপ্রেশন `no-dynamic-field-access` দ্বারা পরীক্ষা করা হয় না। স্ক্রিপ্ট ব্লকে লেখা ডাইনামিক রিডগুলো স্বাভাবিকভাবেই ধরা পড়ে।
|
|
@@ -159,7 +159,7 @@ pnpm add -D webpack-bundle-analyzer
|
|
|
159
159
|
bun add -d webpack-bundle-analyzer
|
|
160
160
|
```
|
|
161
161
|
|
|
162
|
-
```typescript fileName="webpack.config.ts
|
|
162
|
+
```typescript fileName="webpack.config.ts"
|
|
163
163
|
import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer";
|
|
164
164
|
|
|
165
165
|
export default {
|
package/docs/cs/configuration.md
CHANGED
|
@@ -478,6 +478,28 @@ const config: IntlayerConfig = {
|
|
|
478
478
|
*/
|
|
479
479
|
purge: true,
|
|
480
480
|
|
|
481
|
+
/**
|
|
482
|
+
* Seskupit chunky slovníků podle jazyka na základě hranice dělení kódu, která
|
|
483
|
+
* je používá, aby líně načtená stránka získala svůj obsah jedním požadavkem.
|
|
484
|
+
* Výchozí: true
|
|
485
|
+
*
|
|
486
|
+
* Poznámka:
|
|
487
|
+
* - Platí pouze pro slovníky používající `importMode: 'dynamic'`.
|
|
488
|
+
*/
|
|
489
|
+
chunkGrouping: true,
|
|
490
|
+
|
|
491
|
+
/**
|
|
492
|
+
* Načíst slovník společně s chunkem, který jej používá, místo jeho stažení až
|
|
493
|
+
* po vykreslení daného chunku. Čtení se vykreslí synchronně místo pozastavení,
|
|
494
|
+
* takže navigace už neproblikne stavem načítání.
|
|
495
|
+
* Výchozí: true
|
|
496
|
+
*
|
|
497
|
+
* Poznámka:
|
|
498
|
+
* - Čeká se pouze na vyhodnocený jazyk, stránka tedy stahuje jen jazyk, který
|
|
499
|
+
* zobrazuje.
|
|
500
|
+
*/
|
|
501
|
+
dictionariesPreload: true,
|
|
502
|
+
|
|
481
503
|
/**
|
|
482
504
|
* Výstupní formát pro generované soubory slovníku.
|
|
483
505
|
* Výchozí: ['cjs', 'esm']
|
|
@@ -1039,15 +1061,17 @@ Volby sestavení se aplikují na pluginy `@intlayer/babel` a `@intlayer/swc`.
|
|
|
1039
1061
|
|
|
1040
1062
|
> Během optimalizace Intlayer nahradí volání slovníků pro optimalizaci dělení kódu (chunking), aby výsledný balíček importoval pouze ty slovníky, které se skutečně používají.
|
|
1041
1063
|
|
|
1042
|
-
| Pole
|
|
1043
|
-
|
|
|
1044
|
-
| `mode`
|
|
1045
|
-
| `optimize`
|
|
1046
|
-
| `minify`
|
|
1047
|
-
| `purge`
|
|
1048
|
-
| `checkTypes`
|
|
1049
|
-
| `
|
|
1050
|
-
| `
|
|
1064
|
+
| Pole | Popis | Typ | Výchozí | Příklad | Poznámka |
|
|
1065
|
+
| --------------------- | ---------------------------------------------------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1066
|
+
| `mode` | Ovládá režim sestavení. | `'auto'` | <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: sestavení se spustí automaticky během sestavení aplikace.<br/>• `'manual'`: provede se pouze při explicitním volání příkazu sestavení.<br/>• Lze použít k vypnutí sestavení slovníků (např. pro zamezení běhu v prostředích Node.js). |
|
|
1067
|
+
| `optimize` | Ovládá, zda se má provádět optimalizace sestavení. | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • Pokud není definováno, optimalizace se spustí při sestavení frameworku (Vite/Next.js).<br/>• `true` vynutí optimalizaci i v dev režimu.<br/>• `false` ji vypne.<br/>• Pokud je zapnuto, nahradí volání slovníků pro optimalizaci chunkingu.<br/>• Vyžaduje pluginy `@intlayer/babel` a `@intlayer/swc`. |
|
|
1068
|
+
| `minify` | Minifikujte slovníky pro snížení velikosti balíčku. | `boolean` | `false` | | • Určuje, zda má být balíček minifikován.<br/>• Výchozí: `true` v produkci.<br/>• Tato volba bude ignorována, pokud je `optimize` zakázáno.<br/>• Tato volba bude ignorována, pokud je `editor.enabled` true. |
|
|
1069
|
+
| `purge` | Odstraňte nepoužívané klíče ve slovnících. | `boolean` | `false` | | • Určuje, zda má být balíček vyčištěn.<br/>• Výchozí: `true` v produkci.<br/>• Tato volba bude ignorována, pokud je `optimize` zakázáno. |
|
|
1070
|
+
| `checkTypes` | Udává, zda má sestavení kontrolovat typy TypeScript a logovat chyby. | `boolean` | `false` | | Může zpomalit proces sestavení. |
|
|
1071
|
+
| `chunkGrouping` | Určuje, zda se mají chunky slovníků podle jazyka seskupovat podle hranice dělení kódu, která je používá. | `boolean` | `true` | | • Bez seskupení vyšle stránka složená z mnoha komponent jeden požadavek na každý slovník.<br/>• Slovníky dosažitelné z více hranic se přesunou do sdíleného chunku, takže žádná stránka nenese obsah jiné stránky.<br/>• Platí pouze pro slovníky používající `importMode: 'dynamic'`.<br/>• Platí pouze pro klientský build a jen při bundlování (ne ve vývojovém režimu). |
|
|
1072
|
+
| `dictionariesPreload` | Určuje, zda se má slovník načítat společně s chunkem, který jej používá, místo stažení až po vykreslení daného chunku. | `boolean` | `true` | | • Vygenerovaný vstupní bod čeká na jazyk prohlížení na nejvyšší úrovni, takže líně načtená trasa není považována za načtenou, dokud není k dispozici její obsah.<br/>• Čtení se vykreslí synchronně místo pozastavení, takže navigace už neproblikne stavem načítání.<br/>• Čeká se pouze na vyhodnocený jazyk, stránka tedy stahuje jen jazyk, který zobrazuje.<br/>• Platí pouze pro slovníky používající `importMode: 'dynamic'` v klientském buildu.<br/>• Vyžaduje bundler s podporou top-level await (Vite, esbuild). |
|
|
1073
|
+
| `outputFormat` | Ovládá výstupní formát slovníků. | `('esm' | 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
|
|
1074
|
+
| `traversePattern` | Vzory definující, které soubory skenovat během optimalizace. | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | • Omezte optimalizaci na relevantní soubory pro zvýšení výkonu sestavení.<br/>• Ignorovalo by se, kdyby byl `optimize` vypnutý.<br/>• Používá vzory glob. |
|
|
1051
1075
|
|
|
1052
1076
|
---
|
|
1053
1077
|
|