@intlayer/docs 9.3.0 → 9.3.2
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/rag_powered_documentation_assistant.md +1 -1
- package/blog/pl/rag_powered_documentation_assistant.md +1 -1
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
- package/dist/cjs/authors2.cjs +0 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +4 -2
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +24 -2
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +4 -2
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +4 -2
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +4 -2
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +24 -2
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +4 -2
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +4 -2
- package/dist/esm/generated/legal.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/configuration.md +10 -10
- package/docs/ar/eslint.md +336 -0
- package/docs/ar/interest_of_intlayer.md +24 -22
- package/docs/ar/intlayer_with_express.md +1 -1
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.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/lsp.md +114 -175
- package/docs/ar/readme.md +25 -25
- package/docs/bn/configuration.md +10 -10
- package/docs/bn/eslint.md +336 -0
- package/docs/bn/interest_of_intlayer.md +24 -22
- package/docs/cs/configuration.md +10 -10
- package/docs/cs/eslint.md +336 -0
- package/docs/cs/interest_of_intlayer.md +24 -22
- package/docs/de/configuration.md +10 -10
- package/docs/de/eslint.md +336 -0
- 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/lsp.md +111 -172
- package/docs/de/readme.md +24 -24
- package/docs/en/configuration.md +10 -10
- package/docs/en/eslint.md +336 -0
- 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/lsp.md +109 -170
- package/docs/en/readme.md +24 -24
- package/docs/en-GB/configuration.md +10 -10
- package/docs/en-GB/eslint.md +336 -0
- package/docs/en-GB/interest_of_intlayer.md +24 -22
- 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/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/lsp.md +109 -170
- package/docs/en-GB/readme.md +24 -24
- package/docs/es/configuration.md +10 -10
- package/docs/es/eslint.md +336 -0
- 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/lsp.md +114 -175
- package/docs/es/readme.md +24 -24
- package/docs/fr/configuration.md +10 -10
- package/docs/fr/eslint.md +336 -0
- 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/lsp.md +110 -171
- package/docs/fr/readme.md +24 -24
- package/docs/hi/configuration.md +10 -10
- package/docs/hi/eslint.md +336 -0
- package/docs/hi/interest_of_intlayer.md +24 -22
- package/docs/hi/intlayer_with_express.md +1 -1
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.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/intlayer_with_vite+svelte.md +2 -2
- package/docs/hi/lsp.md +113 -174
- package/docs/hi/readme.md +24 -24
- package/docs/id/configuration.md +10 -10
- package/docs/id/eslint.md +336 -0
- 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/lsp.md +113 -174
- package/docs/id/readme.md +24 -24
- package/docs/it/configuration.md +10 -10
- package/docs/it/eslint.md +336 -0
- 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/lsp.md +115 -176
- package/docs/it/readme.md +24 -24
- package/docs/ja/configuration.md +10 -10
- package/docs/ja/eslint.md +336 -0
- package/docs/ja/interest_of_intlayer.md +24 -22
- package/docs/ja/intlayer_with_react_router_v7.md +1 -146
- package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ja/intlayer_with_tanstack.md +5 -3
- package/docs/ja/intlayer_with_vite+react.md +5 -1
- package/docs/ja/lsp.md +113 -174
- package/docs/ja/readme.md +24 -24
- package/docs/ko/configuration.md +10 -10
- package/docs/ko/eslint.md +336 -0
- package/docs/ko/interest_of_intlayer.md +24 -22
- 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/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/lsp.md +112 -173
- package/docs/ko/readme.md +24 -24
- package/docs/nl/configuration.md +10 -10
- package/docs/nl/eslint.md +336 -0
- package/docs/nl/interest_of_intlayer.md +24 -22
- package/docs/pl/configuration.md +10 -10
- package/docs/pl/eslint.md +336 -0
- package/docs/pl/interest_of_intlayer.md +4 -2
- package/docs/pl/intlayer_with_astro.md +1 -114
- 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/lsp.md +115 -176
- 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/pl/readme.md +24 -24
- package/docs/pt/configuration.md +10 -10
- package/docs/pt/eslint.md +336 -0
- package/docs/pt/interest_of_intlayer.md +24 -22
- package/docs/pt/intlayer_with_astro.md +1 -114
- 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/lsp.md +113 -174
- package/docs/pt/readme.md +24 -24
- package/docs/ru/configuration.md +10 -10
- package/docs/ru/eslint.md +336 -0
- 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/lsp.md +112 -173
- package/docs/ru/readme.md +24 -24
- package/docs/tr/configuration.md +10 -10
- package/docs/tr/eslint.md +336 -0
- 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/lsp.md +113 -174
- package/docs/tr/readme.md +24 -24
- package/docs/uk/configuration.md +10 -10
- package/docs/uk/eslint.md +336 -0
- 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/lsp.md +113 -174
- package/docs/uk/packages/angular-intlayer/exports.md +2 -2
- package/docs/uk/per_locale_file.md +1 -1
- package/docs/uk/readme.md +24 -24
- package/docs/ur/configuration.md +10 -10
- package/docs/ur/eslint.md +336 -0
- package/docs/ur/interest_of_intlayer.md +24 -22
- package/docs/vi/configuration.md +10 -10
- package/docs/vi/eslint.md +336 -0
- 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/lsp.md +115 -176
- package/docs/vi/readme.md +24 -24
- package/docs/zh/configuration.md +10 -10
- package/docs/zh/eslint.md +336 -0
- package/docs/zh/interest_of_intlayer.md +24 -22
- 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_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/intlayer_with_vite+vue.md +0 -2
- package/docs/zh/lsp.md +113 -174
- package/docs/zh/readme.md +21 -21
- package/docs/zh-TW/eslint.md +336 -0
- package/docs/zh-TW/interest_of_intlayer.md +24 -22
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +20 -0
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
|
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-08-12
|
|
3
|
+
updatedAt: 2026-08-12
|
|
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) প্রয়োজন।
|
|
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" codeFormat="esm"
|
|
65
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
66
|
+
|
|
67
|
+
export default [...intlayer.configs.recommended];
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
অথবা একে একে নিয়মগুলো সক্ষম করুন:
|
|
71
|
+
|
|
72
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
73
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
74
|
+
|
|
75
|
+
export default [
|
|
76
|
+
{
|
|
77
|
+
plugins: { intlayer },
|
|
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" codeFormat="esm"
|
|
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" codeFormat="esm"
|
|
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" codeFormat="esm"
|
|
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` দ্বারা পরীক্ষা করা হয় না। স্ক্রিপ্ট ব্লকে লেখা ডাইনামিক রিডগুলো স্বাভাবিকভাবেই ধরা পড়ে।
|
|
@@ -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)।
|