@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.
Files changed (217) hide show
  1. package/README.md +24 -24
  2. package/blog/ar/rag_powered_documentation_assistant.md +1 -1
  3. package/blog/pl/rag_powered_documentation_assistant.md +1 -1
  4. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
  5. package/dist/cjs/authors2.cjs +0 -1
  6. package/dist/cjs/common.cjs.map +1 -1
  7. package/dist/cjs/generated/blog.entry.cjs +4 -2
  8. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  9. package/dist/cjs/generated/docs.entry.cjs +24 -2
  10. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  11. package/dist/cjs/generated/frequentQuestions.entry.cjs +4 -2
  12. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  13. package/dist/cjs/generated/legal.entry.cjs +4 -2
  14. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  15. package/dist/esm/generated/blog.entry.mjs +4 -2
  16. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  17. package/dist/esm/generated/docs.entry.mjs +24 -2
  18. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  19. package/dist/esm/generated/frequentQuestions.entry.mjs +4 -2
  20. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  21. package/dist/esm/generated/legal.entry.mjs +4 -2
  22. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  23. package/dist/types/generated/docs.entry.d.ts +1 -0
  24. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  25. package/docs/ar/configuration.md +10 -10
  26. package/docs/ar/eslint.md +336 -0
  27. package/docs/ar/interest_of_intlayer.md +24 -22
  28. package/docs/ar/intlayer_with_express.md +1 -1
  29. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +1 -1
  30. package/docs/ar/intlayer_with_svelte_kit.md +1 -1
  31. package/docs/ar/intlayer_with_tanstack+solid.md +5 -3
  32. package/docs/ar/intlayer_with_tanstack.md +5 -3
  33. package/docs/ar/lsp.md +114 -175
  34. package/docs/ar/readme.md +25 -25
  35. package/docs/bn/configuration.md +10 -10
  36. package/docs/bn/eslint.md +336 -0
  37. package/docs/bn/interest_of_intlayer.md +24 -22
  38. package/docs/cs/configuration.md +10 -10
  39. package/docs/cs/eslint.md +336 -0
  40. package/docs/cs/interest_of_intlayer.md +24 -22
  41. package/docs/de/configuration.md +10 -10
  42. package/docs/de/eslint.md +336 -0
  43. package/docs/de/interest_of_intlayer.md +24 -22
  44. package/docs/de/intlayer_with_svelte_kit.md +1 -1
  45. package/docs/de/intlayer_with_tanstack+solid.md +5 -3
  46. package/docs/de/intlayer_with_tanstack.md +5 -3
  47. package/docs/de/lsp.md +111 -172
  48. package/docs/de/readme.md +24 -24
  49. package/docs/en/configuration.md +10 -10
  50. package/docs/en/eslint.md +336 -0
  51. package/docs/en/interest_of_intlayer.md +24 -22
  52. package/docs/en/intlayer_with_svelte_kit.md +1 -1
  53. package/docs/en/intlayer_with_tanstack+solid.md +5 -3
  54. package/docs/en/intlayer_with_tanstack.md +5 -3
  55. package/docs/en/lsp.md +109 -170
  56. package/docs/en/readme.md +24 -24
  57. package/docs/en-GB/configuration.md +10 -10
  58. package/docs/en-GB/eslint.md +336 -0
  59. package/docs/en-GB/interest_of_intlayer.md +24 -22
  60. package/docs/en-GB/intlayer_with_create_react_app.md +32 -35
  61. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +1 -1
  62. package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
  63. package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -3
  64. package/docs/en-GB/intlayer_with_tanstack.md +5 -3
  65. package/docs/en-GB/lsp.md +109 -170
  66. package/docs/en-GB/readme.md +24 -24
  67. package/docs/es/configuration.md +10 -10
  68. package/docs/es/eslint.md +336 -0
  69. package/docs/es/interest_of_intlayer.md +24 -22
  70. package/docs/es/intlayer_with_svelte_kit.md +1 -1
  71. package/docs/es/intlayer_with_tanstack+solid.md +5 -3
  72. package/docs/es/intlayer_with_tanstack.md +5 -3
  73. package/docs/es/lsp.md +114 -175
  74. package/docs/es/readme.md +24 -24
  75. package/docs/fr/configuration.md +10 -10
  76. package/docs/fr/eslint.md +336 -0
  77. package/docs/fr/interest_of_intlayer.md +24 -22
  78. package/docs/fr/intlayer_with_svelte_kit.md +1 -1
  79. package/docs/fr/intlayer_with_tanstack+solid.md +5 -3
  80. package/docs/fr/intlayer_with_tanstack.md +5 -3
  81. package/docs/fr/lsp.md +110 -171
  82. package/docs/fr/readme.md +24 -24
  83. package/docs/hi/configuration.md +10 -10
  84. package/docs/hi/eslint.md +336 -0
  85. package/docs/hi/interest_of_intlayer.md +24 -22
  86. package/docs/hi/intlayer_with_express.md +1 -1
  87. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +1 -1
  88. package/docs/hi/intlayer_with_svelte_kit.md +1 -1
  89. package/docs/hi/intlayer_with_tanstack+solid.md +5 -3
  90. package/docs/hi/intlayer_with_tanstack.md +5 -3
  91. package/docs/hi/intlayer_with_vite+svelte.md +2 -2
  92. package/docs/hi/lsp.md +113 -174
  93. package/docs/hi/readme.md +24 -24
  94. package/docs/id/configuration.md +10 -10
  95. package/docs/id/eslint.md +336 -0
  96. package/docs/id/interest_of_intlayer.md +24 -22
  97. package/docs/id/intlayer_with_svelte_kit.md +1 -1
  98. package/docs/id/intlayer_with_tanstack+solid.md +5 -3
  99. package/docs/id/intlayer_with_tanstack.md +5 -3
  100. package/docs/id/lsp.md +113 -174
  101. package/docs/id/readme.md +24 -24
  102. package/docs/it/configuration.md +10 -10
  103. package/docs/it/eslint.md +336 -0
  104. package/docs/it/interest_of_intlayer.md +24 -22
  105. package/docs/it/intlayer_with_svelte_kit.md +1 -1
  106. package/docs/it/intlayer_with_tanstack+solid.md +5 -3
  107. package/docs/it/intlayer_with_tanstack.md +5 -3
  108. package/docs/it/lsp.md +115 -176
  109. package/docs/it/readme.md +24 -24
  110. package/docs/ja/configuration.md +10 -10
  111. package/docs/ja/eslint.md +336 -0
  112. package/docs/ja/interest_of_intlayer.md +24 -22
  113. package/docs/ja/intlayer_with_react_router_v7.md +1 -146
  114. package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
  115. package/docs/ja/intlayer_with_tanstack.md +5 -3
  116. package/docs/ja/intlayer_with_vite+react.md +5 -1
  117. package/docs/ja/lsp.md +113 -174
  118. package/docs/ja/readme.md +24 -24
  119. package/docs/ko/configuration.md +10 -10
  120. package/docs/ko/eslint.md +336 -0
  121. package/docs/ko/interest_of_intlayer.md +24 -22
  122. package/docs/ko/intlayer_with_lynx+react.md +4 -0
  123. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +1 -1
  124. package/docs/ko/intlayer_with_storybook.md +5 -5
  125. package/docs/ko/intlayer_with_svelte_kit.md +1 -1
  126. package/docs/ko/intlayer_with_tanstack+solid.md +5 -3
  127. package/docs/ko/intlayer_with_tanstack.md +5 -3
  128. package/docs/ko/lsp.md +112 -173
  129. package/docs/ko/readme.md +24 -24
  130. package/docs/nl/configuration.md +10 -10
  131. package/docs/nl/eslint.md +336 -0
  132. package/docs/nl/interest_of_intlayer.md +24 -22
  133. package/docs/pl/configuration.md +10 -10
  134. package/docs/pl/eslint.md +336 -0
  135. package/docs/pl/interest_of_intlayer.md +4 -2
  136. package/docs/pl/intlayer_with_astro.md +1 -114
  137. package/docs/pl/intlayer_with_svelte_kit.md +1 -1
  138. package/docs/pl/intlayer_with_tanstack+solid.md +5 -3
  139. package/docs/pl/intlayer_with_tanstack.md +5 -3
  140. package/docs/pl/lsp.md +115 -176
  141. package/docs/pl/migration_from_i18next_to_intlayer.md +4 -0
  142. package/docs/pl/migration_from_next-i18next_to_intlayer.md +8 -4
  143. package/docs/pl/migration_from_next-intl_to_intlayer.md +11 -5
  144. package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
  145. package/docs/pl/migration_from_react-i18next_to_intlayer.md +8 -4
  146. package/docs/pl/migration_from_vue-i18n_to_intlayer.md +4 -0
  147. package/docs/pl/readme.md +24 -24
  148. package/docs/pt/configuration.md +10 -10
  149. package/docs/pt/eslint.md +336 -0
  150. package/docs/pt/interest_of_intlayer.md +24 -22
  151. package/docs/pt/intlayer_with_astro.md +1 -114
  152. package/docs/pt/intlayer_with_svelte_kit.md +1 -1
  153. package/docs/pt/intlayer_with_tanstack+solid.md +5 -3
  154. package/docs/pt/intlayer_with_tanstack.md +5 -3
  155. package/docs/pt/lsp.md +113 -174
  156. package/docs/pt/readme.md +24 -24
  157. package/docs/ru/configuration.md +10 -10
  158. package/docs/ru/eslint.md +336 -0
  159. package/docs/ru/interest_of_intlayer.md +24 -22
  160. package/docs/ru/intlayer_with_nextjs_14.md +1 -1
  161. package/docs/ru/intlayer_with_nextjs_15.md +1 -1
  162. package/docs/ru/intlayer_with_svelte_kit.md +1 -1
  163. package/docs/ru/intlayer_with_tanstack+solid.md +5 -3
  164. package/docs/ru/intlayer_with_tanstack.md +5 -3
  165. package/docs/ru/lsp.md +112 -173
  166. package/docs/ru/readme.md +24 -24
  167. package/docs/tr/configuration.md +10 -10
  168. package/docs/tr/eslint.md +336 -0
  169. package/docs/tr/interest_of_intlayer.md +24 -22
  170. package/docs/tr/intlayer_with_svelte_kit.md +1 -1
  171. package/docs/tr/intlayer_with_tanstack+solid.md +5 -3
  172. package/docs/tr/intlayer_with_tanstack.md +5 -3
  173. package/docs/tr/lsp.md +113 -174
  174. package/docs/tr/readme.md +24 -24
  175. package/docs/uk/configuration.md +10 -10
  176. package/docs/uk/eslint.md +336 -0
  177. package/docs/uk/interest_of_intlayer.md +4 -2
  178. package/docs/uk/intlayer_with_svelte_kit.md +1 -1
  179. package/docs/uk/intlayer_with_tanstack+solid.md +5 -3
  180. package/docs/uk/intlayer_with_tanstack.md +5 -3
  181. package/docs/uk/lsp.md +113 -174
  182. package/docs/uk/packages/angular-intlayer/exports.md +2 -2
  183. package/docs/uk/per_locale_file.md +1 -1
  184. package/docs/uk/readme.md +24 -24
  185. package/docs/ur/configuration.md +10 -10
  186. package/docs/ur/eslint.md +336 -0
  187. package/docs/ur/interest_of_intlayer.md +24 -22
  188. package/docs/vi/configuration.md +10 -10
  189. package/docs/vi/eslint.md +336 -0
  190. package/docs/vi/interest_of_intlayer.md +24 -22
  191. package/docs/vi/intlayer_with_svelte_kit.md +1 -1
  192. package/docs/vi/intlayer_with_tanstack+solid.md +5 -3
  193. package/docs/vi/intlayer_with_tanstack.md +5 -3
  194. package/docs/vi/lsp.md +115 -176
  195. package/docs/vi/readme.md +24 -24
  196. package/docs/zh/configuration.md +10 -10
  197. package/docs/zh/eslint.md +336 -0
  198. package/docs/zh/interest_of_intlayer.md +24 -22
  199. package/docs/zh/intlayer_with_create_react_app.md +4 -0
  200. package/docs/zh/intlayer_with_lynx+react.md +4 -0
  201. package/docs/zh/intlayer_with_nextjs_14.md +0 -2
  202. package/docs/zh/intlayer_with_nextjs_15.md +0 -2
  203. package/docs/zh/intlayer_with_nextjs_page_router.md +0 -2
  204. package/docs/zh/intlayer_with_nuxt.md +1 -1
  205. package/docs/zh/intlayer_with_react_router_v7.md +4 -0
  206. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +4 -0
  207. package/docs/zh/intlayer_with_solid_start.md +1 -1
  208. package/docs/zh/intlayer_with_svelte_kit.md +1 -1
  209. package/docs/zh/intlayer_with_tanstack+solid.md +5 -3
  210. package/docs/zh/intlayer_with_tanstack.md +5 -3
  211. package/docs/zh/intlayer_with_vite+vue.md +0 -2
  212. package/docs/zh/lsp.md +113 -174
  213. package/docs/zh/readme.md +21 -21
  214. package/docs/zh-TW/eslint.md +336 -0
  215. package/docs/zh-TW/interest_of_intlayer.md +24 -22
  216. package/package.json +6 -6
  217. package/src/generated/docs.entry.ts +20 -0
@@ -188,7 +188,7 @@ export const ComponentExample = () => {
188
188
  یہ طریقہ کار آپ کو درج ذیل کی اجازت دیتا ہے:
189
189
 
190
190
  1. **ڈیولپمنٹ کی رفتار میں اضافہ**
191
- - VSCode ایکسٹینشن کا استعمال کرتے ہوئے `.content.{{ts|mjs|cjs|json}}` فائلیں بنائی جا سکتی ہیں
191
+ - VSCode ایکسٹینشن کا استعمال کرتے ہوئے `.content.{ts|js|mjs|cjs|json|tsx|jsx|md|mdx|yaml|yml}` فائلیں بنائی جا سکتی ہیں
192
192
  - آپ کے IDE میں موجود آٹو کمپلیشن AI ٹولز (جیسے GitHub Copilot) مواد کو ڈیکلیئر کرنے میں آپ کی مدد کر سکتے ہیں، جس سے کاپی/پیسٹ کا کام کم ہو جاتا ہے
193
193
 
194
194
  2. **اپنے codebase کو صاف ستھرا بنانا**
@@ -212,27 +212,27 @@ export const ComponentExample = () => {
212
212
 
213
213
  ## Intlayer کی اضافی خصوصیات
214
214
 
215
- | Feature | Description |
216
- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
217
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true) | **کراس فریم ورک سپورٹ (Cross-Frameworks Support)**<br><br>Intlayer تمام بڑے فریم ورکس اور لائبریریوں کے ساتھ مطابقت رکھتا ہے، بشمول Next.js، React، Vite، Vue.js، Nuxt، Preact، Express، اور بہت کچھ۔ |
218
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true) | **جاوا اسکرپٹ سے چلنے والا مواد کا انتظام (JavaScript-Powered Content Management)**<br><br>اپنے مواد کو مؤثر طریقے سے بیان اور منظم کرنے کے لیے جاوا اسکرپٹ کی لچک کا فائدہ اٹھائیں۔ <br><br> - [مواد کا اعلان (Content declaration)](https://intlayer.org/doc/concept/content) |
219
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **کمپائلر (Compiler)**<br><br>Intlayer کمپائلر خود بخود اجزاء سے مواد نکالتا ہے اور ڈکشنری فائلیں تیار کرتا ہے۔<br><br> - [کمپائلر (Compiler)](https://intlayer.org/doc/compiler) |
220
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true) | **فی لوکیل مواد کے اعلان کی فائل (Per-Locale Content Declaration File)**<br><br>خودکار جنریشن سے پہلے، ایک بار اپنے مواد کا اعلان کر کے اپنی ترقی کو تیز کریں۔<br><br> - [فی لوکیل مواد کے اعلان کی فائل](https://intlayer.org/doc/concept/per-locale-file) |
221
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true) | **ٹائپ سیف ماحول (Type-Safe Environment)**<br><br>یہ یقینی بنانے کے لیے ٹائپ اسکرپٹ (TypeScript) کا استعمال کریں کہ آپ کے مواد کی تعریفیں اور کوڈ غلطیوں سے پاک ہیں، جبکہ IDE آٹو کمپلیشن سے بھی فائدہ اٹھائیں۔<br><br> - [ٹائپ اسکرپٹ کنفیگریشن](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
222
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true) | **آسان سیٹ اپ (Simplified Setup)**<br><br>کم سے کم کنفیگریشن کے ساتھ تیزی سے کام شروع کریں۔ انٹرنیشنلائزیشن، روٹنگ، AI، بلڈ، اور مواد کے انتظام کے لیے ترتیبات کو آسانی سے ایڈجسٹ کریں۔ <br><br> - [Next.js انٹیگریشن کو دریافت کریں](https://intlayer.org/doc/environment/nextjs) |
223
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true) | **آسان مواد کا حصول (Simplified Content Retrieval)**<br><br>مواد کے ہر حصے کے لیے اپنے `t` فنکشن کو کال کرنے کی ضرورت نہیں ہے۔ ایک ہی ہک کا استعمال کرتے ہوئے براہ راست اپنا تمام مواد حاصل کریں۔<br><br> - [React انٹیگریشن](https://intlayer.org/doc/environment/create-react-app) |
224
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true) | **مستقل سرور کمپوننٹ عمل درآمد (Consistent Server Component Implementation)**<br><br>Next.js سرور اجزاء کے لیے بالکل موزوں، کلائنٹ اور سرور دونوں اجزاء کے لیے ایک ہی عمل درآمد کا استعمال کریں، ہر سرور جزو میں اپنے `t` فنکشن کو منتقل کرنے کی ضرورت نہیں ہے۔ <br><br> - [سرور اجزاء (Server Components)](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
225
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true) | **منظم کوڈ بیس (Organized Codebase)**<br><br>اپنے کوڈ بیس کو زیادہ منظم رکھیں: 1 کمپوننٹ = 1 ڈکشنری اسی فولڈر میں۔ اپنے متعلقہ اجزاء کے قریب تراجم برقرار رکھنے کی صلاحیت اور وضاحت کو بڑھاتے ہیں۔ <br><br> - [Intlayer کیسے کام کرتا ہے](https://intlayer.org/doc/concept/how-works-intlayer) |
226
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true) | **بہتر روٹنگ (Enhanced Routing)**<br><br>ایپ روٹنگ کی مکمل سپورٹ، پیچیدہ ایپلیکیشن ڈھانچے کے لیے بغیر کسی رکاوٹ کے ڈھلتی ہے، جیسے Next.js، React، Vite، Vue.js، وغیرہ کے لیے۔<br><br> - [Next.js انٹیگریشن کو دریافت کریں](https://intlayer.org/doc/environment/nextjs) |
227
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true) | **مارک ڈاؤن سپورٹ (Markdown Support)**<br><br>کثیر لسانی مواد جیسے پرائیویسی پالیسیوں، دستاویزات وغیرہ کے لیے لوکیل فائلوں اور ریموٹ مارک ڈاؤن کو امپورٹ اور انٹرپریٹ کریں۔ اپنے کوڈ میں مارک ڈاؤن میٹا ڈیٹا کو قابل رسائی بنا کریں۔<br><br> - [مواد کی فائلیں (Content files)](https://intlayer.org/doc/concept/content/file) |
228
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true) | **مفت ویژول ایڈیٹر اور CMS (Free Visual Editor & CMS)**<br><br>مواد لکھنے والوں کے لیے ایک مفت ویژول ایڈیٹر اور CMS دستیاب ہے، جس سے لوکلائزیشن پلیٹ فارم کی ضرورت ختم ہو جاتی ہے۔ Git کا استعمال کرتے ہوئے اپنے مواد کو ہم آہنگ رکھیں، یا CMS کے ساتھ اسے مکمل یا جزوی طور پر بیرونی بنائیں۔<br><br> - [Intlayer ایڈیٹر](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms) |
229
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true) | **ٹریس شیک ایبل مواد (Tree-shakable Content)**<br><br>ٹریس شیک ایبل مواد، جو حتمی بنڈل کے سائز کو کم کرتا ہے۔ ہر کمپوننٹ کے حساب سے مواد لوڈ کرتا ہے، آپ کے بنڈل سے کسی بھی غیر استعمال شدہ مواد کو خارج کرتا ہے۔ ایپ لوڈنگ کی کارکردگی کو بڑھانے کے لیے لیزی لوڈنگ کی حمایت کرتا ہے۔ <br><br> - [ایپ بلڈ آپٹیمائزیشن](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
230
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true) | **اسٹیٹک رینڈرنگ (Static Rendering)**<br><br>اسٹیٹک رینڈرنگ کو نہیں روکتا۔ <br><br> - [Next.js انٹیگریشن](https://intlayer.org/doc/environment/nextjs) |
231
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true) | **AI سے چلنے والا ترجمہ (AI-Powered Translation)**<br><br>اپنے اپنے AI فراہم کنندہ/API کی کا استعمال کرتے ہوئے Intlayer کے جدید AI سے چلنے والے ترجمے کے ٹولز کے ساتھ صرف ایک کلک میں اپنی ویب سائٹ کو 231 زبانوں میں تبدیل کریں۔ <br><br> - [CI/CD انٹیگریشن](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [آٹو فل (Auto fill)](https://intlayer.org/doc/concept/auto-fill) |
232
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true) | **MCP سرور انٹیگریشن (MCP Server Integration)**<br><br>IDE آٹومیشن کے لیے ایک MCP (Model Context Protocol) سرور فراہم کرتا ہے، جو آپ کے ڈویلپمنٹ ماحول کے اندر ہی ہموار مواد کے انتظام اور i18n ورک فلوز کو قابل بناتا ہے۔ <br><br> - [MCP سرور](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ur/mcp_server.md) |
233
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true) | **VSCode ایکسٹینشن (VSCode Extension)**<br><br>Intlayer ایک VSCode ایکسٹینشن فراہم کرتا ہے تاکہ آپ کو اپنے مواد اور تراجم کا انتظام کرنے، اپنی ڈکشنریز بنانے، اپنے مواد کا ترجمہ کرنے، اور بہت کچھ کرنے میں مدد ملے۔ <br><br> - [VSCode ایکسٹینشن](https://intlayer.org/doc/vs-code-extension) |
234
- | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true) | **باہمی مطابقت (Interoperability)**<br><br>react-i18next، next-i18next، next-intl، اور react-intl کے ساتھ باہمی مطابقت کی اجازت دیتا ہے۔ <br><br> - [Intlayer اور react-intl](https://intlayer.org/doc/blog/intlayer-with-react-intl) <br> - [Intlayer اور next-intl](https://intlayer.org/doc/blog/intlayer-with-next-intl) <br> - [Intlayer اور next-i18next](https://intlayer.org/doc/blog/intlayer-with-next-i18next) |
235
- | Testing Missing Translations (CLI/CI) | ✅ CLI: npx intlayer content test (CI کے لیے موزوں آڈٹ) |
215
+ | Feature | Description |
216
+ | ------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
217
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true) | **کراس فریم ورک سپورٹ (Cross-Frameworks Support)**<br><br>Intlayer تمام بڑے فریم ورکس اور لائبریریوں کے ساتھ مطابقت رکھتا ہے، بشمول Next.js، React، Vite، Vue.js، Nuxt، Preact، Express، اور بہت کچھ۔ |
218
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true) | **جاوا اسکرپٹ سے چلنے والا مواد کا انتظام (JavaScript-Powered Content Management)**<br><br>اپنے مواد کو مؤثر طریقے سے بیان اور منظم کرنے کے لیے جاوا اسکرپٹ کی لچک کا فائدہ اٹھائیں۔ <br><br> - [مواد کا اعلان (Content declaration)](https://intlayer.org/doc/concept/content) |
219
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **کمپائلر (Compiler)**<br><br>Intlayer کمپائلر خود بخود اجزاء سے مواد نکالتا ہے اور ڈکشنری فائلیں تیار کرتا ہے۔<br><br> - [کمپائلر (Compiler)](https://intlayer.org/doc/compiler) |
220
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true) | **فی لوکیل مواد کے اعلان کی فائل (Per-Locale Content Declaration File)**<br><br>خودکار جنریشن سے پہلے، ایک بار اپنے مواد کا اعلان کر کے اپنی ترقی کو تیز کریں۔<br><br> - [فی لوکیل مواد کے اعلان کی فائل](https://intlayer.org/doc/concept/per-locale-file) |
221
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true) | **ٹائپ سیف ماحول (Type-Safe Environment)**<br><br>یہ یقینی بنانے کے لیے ٹائپ اسکرپٹ (TypeScript) کا استعمال کریں کہ آپ کے مواد کی تعریفیں اور کوڈ غلطیوں سے پاک ہیں، جبکہ IDE آٹو کمپلیشن سے بھی فائدہ اٹھائیں۔<br><br> - [ٹائپ اسکرپٹ کنفیگریشن](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
222
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true) | **آسان سیٹ اپ (Simplified Setup)**<br><br>کم سے کم کنفیگریشن کے ساتھ تیزی سے کام شروع کریں۔ انٹرنیشنلائزیشن، روٹنگ، AI، بلڈ، اور مواد کے انتظام کے لیے ترتیبات کو آسانی سے ایڈجسٹ کریں۔ <br><br> - [Next.js انٹیگریشن کو دریافت کریں](https://intlayer.org/doc/environment/nextjs) |
223
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true) | **آسان مواد کا حصول (Simplified Content Retrieval)**<br><br>مواد کے ہر حصے کے لیے اپنے `t` فنکشن کو کال کرنے کی ضرورت نہیں ہے۔ ایک ہی ہک کا استعمال کرتے ہوئے براہ راست اپنا تمام مواد حاصل کریں۔<br><br> - [React انٹیگریشن](https://intlayer.org/doc/environment/create-react-app) |
224
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true) | **مستقل سرور کمپوننٹ عمل درآمد (Consistent Server Component Implementation)**<br><br>Next.js سرور اجزاء کے لیے بالکل موزوں، کلائنٹ اور سرور دونوں اجزاء کے لیے ایک ہی عمل درآمد کا استعمال کریں، ہر سرور جزو میں اپنے `t` فنکشن کو منتقل کرنے کی ضرورت نہیں ہے۔ <br><br> - [سرور اجزاء (Server Components)](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
225
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true) | **منظم کوڈ بیس (Organized Codebase)**<br><br>اپنے کوڈ بیس کو زیادہ منظم رکھیں: 1 کمپوننٹ = 1 ڈکشنری اسی فولڈر میں۔ اپنے متعلقہ اجزاء کے قریب تراجم برقرار رکھنے کی صلاحیت اور وضاحت کو بڑھاتے ہیں۔ <br><br> - [Intlayer کیسے کام کرتا ہے](https://intlayer.org/doc/concept/how-works-intlayer) |
226
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true) | **بہتر روٹنگ (Enhanced Routing)**<br><br>ایپ روٹنگ کی مکمل سپورٹ، پیچیدہ ایپلیکیشن ڈھانچے کے لیے بغیر کسی رکاوٹ کے ڈھلتی ہے، جیسے Next.js، React، Vite، Vue.js، وغیرہ کے لیے۔<br><br> - [Next.js انٹیگریشن کو دریافت کریں](https://intlayer.org/doc/environment/nextjs) |
227
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true) | **مارک ڈاؤن سپورٹ (Markdown Support)**<br><br>کثیر لسانی مواد جیسے پرائیویسی پالیسیوں، دستاویزات وغیرہ کے لیے لوکیل فائلوں اور ریموٹ مارک ڈاؤن کو امپورٹ اور انٹرپریٹ کریں۔ اپنے کوڈ میں مارک ڈاؤن میٹا ڈیٹا کو قابل رسائی بنا کریں۔<br><br> - [مواد کی فائلیں (Content files)](https://intlayer.org/doc/concept/content/file) |
228
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true) | **مفت ویژول ایڈیٹر اور CMS (Free Visual Editor & CMS)**<br><br>مواد لکھنے والوں کے لیے ایک مفت ویژول ایڈیٹر اور CMS دستیاب ہے، جس سے لوکلائزیشن پلیٹ فارم کی ضرورت ختم ہو جاتی ہے۔ Git کا استعمال کرتے ہوئے اپنے مواد کو ہم آہنگ رکھیں، یا CMS کے ساتھ اسے مکمل یا جزوی طور پر بیرونی بنائیں۔<br><br> - [Intlayer ایڈیٹر](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms) |
229
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true) | **ٹریس شیک ایبل مواد (Tree-shakable Content)**<br><br>ٹریس شیک ایبل مواد، جو حتمی بنڈل کے سائز کو کم کرتا ہے۔ ہر کمپوننٹ کے حساب سے مواد لوڈ کرتا ہے، آپ کے بنڈل سے کسی بھی غیر استعمال شدہ مواد کو خارج کرتا ہے۔ ایپ لوڈنگ کی کارکردگی کو بڑھانے کے لیے لیزی لوڈنگ کی حمایت کرتا ہے۔ <br><br> - [ایپ بلڈ آپٹیمائزیشن](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
230
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true) | **اسٹیٹک رینڈرنگ (Static Rendering)**<br><br>اسٹیٹک رینڈرنگ کو نہیں روکتا۔ <br><br> - [Next.js انٹیگریشن](https://intlayer.org/doc/environment/nextjs) |
231
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true) | **AI سے چلنے والا ترجمہ (AI-Powered Translation)**<br><br>اپنے اپنے AI فراہم کنندہ/API کی کا استعمال کرتے ہوئے Intlayer کے جدید AI سے چلنے والے ترجمے کے ٹولز کے ساتھ صرف ایک کلک میں اپنی ویب سائٹ کو 231 زبانوں میں تبدیل کریں۔ <br><br> - [CI/CD انٹیگریشن](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [آٹو فل (Auto fill)](https://intlayer.org/doc/concept/auto-fill) |
232
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true) | **MCP سرور انٹیگریشن (MCP Server Integration)**<br><br>IDE آٹومیشن کے لیے ایک MCP (Model Context Protocol) سرور فراہم کرتا ہے، جو آپ کے ڈویلپمنٹ ماحول کے اندر ہی ہموار مواد کے انتظام اور i18n ورک فلوز کو قابل بناتا ہے۔ <br><br> - [MCP سرور](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ur/mcp_server.md) |
233
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true) | **VSCode ایکسٹینشن (VSCode Extension)**<br><br>Intlayer ایک VSCode ایکسٹینشن فراہم کرتا ہے تاکہ آپ کو اپنے مواد اور تراجم کا انتظام کرنے، اپنی ڈکشنریز بنانے، اپنے مواد کا ترجمہ کرنے، اور بہت کچھ کرنے میں مدد ملے۔ <br><br> - [VSCode ایکسٹینشن](https://intlayer.org/doc/vs-code-extension) |
234
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true) | **باہمی مطابقت (Interoperability)**<br><br>react-i18next، next-i18next، next-intl، اور react-intl کے ساتھ باہمی مطابقت کی اجازت دیتا ہے۔ <br><br> - [Intlayer اور react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer اور next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer اور next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer کے کمپیٹ اڈاپٹرز](https://intlayer.org/doc/compatibility) |
235
+ | Testing Missing Translations (CLI/CI) | ✅ CLI: npx intlayer content test (CI کے لیے موزوں آڈٹ) |
236
236
 
237
237
  ## دیگر حلوں کے ساتھ Intlayer کا موازنہ
238
238
 
@@ -271,3 +271,5 @@ export const ComponentExample = () => {
271
271
  `intlayer` آپ کے `react-intl` ، `react-i18next` ، `next-intl` ، `next-i18next` ، اور `vue-i18n` نیم اسپیسز (namespaces) کو منظم کرنے میں بھی مدد کر سکتا ہے۔
272
272
 
273
273
  Intlayer کا استعمال کرتے ہوئے، آپ اپنے پسندیدہ i18n لائبریری کے فارمیٹ میں اپنے مواد کا اعلان کر سکتے ہیں، اور intlayer آپ کی پسند کے مقام پر آپ کے نیم اسپیسز تیار کرے گا (مثال کے طور پر: `/messages/{{locale}}/{{namespace}}.json`)۔
274
+
275
+ اگر آپ اپنی موجودہ i18n لائبریری کا API استعمال کرتے رہنا چاہتے ہیں، تو `intlayer` **کمپیٹ اڈاپٹرز (compat adapters)** بھی فراہم کرتا ہے: ایسے پیکجز جو `react-i18next` ، `next-intl` ، `react-intl` ، `vue-i18n` اور دیگر کا بالکل وہی API فراہم کرتے ہیں، لیکن مواد Intlayer ڈکشنریز سے آتا ہے۔ اس سے آپ اپنا کوڈ دوبارہ لکھے بغیر بتدریج منتقل ہو سکتے ہیں۔ دیکھیں [کمپیٹ اڈاپٹرز کی دستاویزات](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/index.md)۔
@@ -403,7 +403,7 @@ const config: IntlayerConfig = {
403
403
  ai: {
404
404
  /**
405
405
  * Nhà cung cấp AI được sử dụng.
406
- * Tùy chọn: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'
406
+ * Tùy chọn: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio', 'moonshotai'
407
407
  * Mặc định: 'openai'
408
408
  */
409
409
  provider: "openai",
@@ -1031,15 +1031,15 @@ Intlayer hỗ trợ đa dạng các nhà cung cấp AI để mang lại sự lin
1031
1031
  - **Together.ai**
1032
1032
  - **LM Studio**
1033
1033
 
1034
- | Trường | Mô tả | Kiểu dữ liệu | Mặc định | Ví dụ | Nhận xét |
1035
- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1036
- | `provider` | Nhà cung cấp được sử dụng cho các tính năng AI của Intlayer. | `'openai'` &#124; <br/> `'anthropic'` &#124; <br/> `'mistral'` &#124; <br/> `'deepseek'` &#124; <br/> `'gemini'` &#124; <br/> `'ollama'` &#124; <br/> `'openrouter'` &#124; <br/> `'alibaba'` &#124; <br/> `'fireworks'` &#124; <br/> `'groq'` &#124; <br/> `'huggingface'` &#124; <br/> `'bedrock'` &#124; <br/> `'googleaistudio'` &#124; <br/> `'googlevertex'` &#124; <br/> `'togetherai'` &#124; <br/> `'lmstudio'` | `undefined` | `'anthropic'` | Các nhà cung cấp khác nhau yêu cầu các khóa API khác nhau và có mức giá khác nhau. |
1037
- | `model` | Model AI được sử dụng cho các tính năng AI. | `string` | Không có | `'gpt-4o-2024-11-20'` | Các model cụ thể phụ thuộc vào nhà cung cấp. |
1038
- | `temperature` | Điều khiển tính ngẫu nhiên của phản hồi AI. | `number` | Không có | `0.1` | Nhiệt độ cao hơn = sáng tạo hơn và kém đáng tin cậy hơn. |
1039
- | `apiKey` | Khóa API của bạn cho nhà cung cấp đã chọn. | `string` | Không có | `process.env.OPENAI_API_KEY` | Phải được giữ bí mật; sử dụng biến môi trường. |
1040
- | `applicationContext` | Ngữ cảnh bổ sung về ứng dụng của bạn để giúp AI tạo ra các bản dịch chính xác hơn (lĩnh vực, đối tượng mục tiêu, tông điệu, thuật ngữ). | `string` | Không có | `'ngữ cảnh ứng dụng tùy chỉnh của tôi'` | Có thể được sử dụng để thêm các quy tắc (ví dụ: `"Bạn không nên dịch các URL của bạn"` ). |
1041
- | `baseURL` | URL cơ sở cho AI API. | `string` | Không có | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | Có thể trỏ tới các endpoint AI API cục bộ hoặc tùy chỉnh. |
1042
- | `dataSerialization` | Định dạng tuần tự hóa dữ liệu cho các tính năng AI. | `'json'` &#124; <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: mặc định, đáng tin cậy; sử dụng nhiều token hơn.<br/>• `'toon'`: ít token hơn, kém ổn định hơn.<br/>• Chuyển ngữ cảnh cho model dưới dạng một tham số phụ (reasoning effort, v.v.). |
1034
+ | Trường | Mô tả | Kiểu dữ liệu | Mặc định | Ví dụ | Nhận xét |
1035
+ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1036
+ | `provider` | Nhà cung cấp được sử dụng cho các tính năng AI của Intlayer. | `'openai'` &#124; <br/> `'anthropic'` &#124; <br/> `'mistral'` &#124; <br/> `'deepseek'` &#124; <br/> `'gemini'` &#124; <br/> `'ollama'` &#124; <br/> `'openrouter'` &#124; <br/> `'alibaba'` &#124; <br/> `'fireworks'` &#124; <br/> `'groq'` &#124; <br/> `'huggingface'` &#124; <br/> `'bedrock'` &#124; <br/> `'googleaistudio'` &#124; <br/> `'googlevertex'` &#124; <br/> `'togetherai'` &#124; <br/> `'lmstudio'` &#124; <br/> `'moonshotai'` | `undefined` | `'anthropic'` | Các nhà cung cấp khác nhau yêu cầu các khóa API khác nhau và có mức giá khác nhau. |
1037
+ | `model` | Model AI được sử dụng cho các tính năng AI. | `string` | Không có | `'gpt-4o-2024-11-20'` | Các model cụ thể phụ thuộc vào nhà cung cấp. |
1038
+ | `temperature` | Điều khiển tính ngẫu nhiên của phản hồi AI. | `number` | Không có | `0.1` | Nhiệt độ cao hơn = sáng tạo hơn và kém đáng tin cậy hơn. |
1039
+ | `apiKey` | Khóa API của bạn cho nhà cung cấp đã chọn. | `string` | Không có | `process.env.OPENAI_API_KEY` | Phải được giữ bí mật; sử dụng biến môi trường. |
1040
+ | `applicationContext` | Ngữ cảnh bổ sung về ứng dụng của bạn để giúp AI tạo ra các bản dịch chính xác hơn (lĩnh vực, đối tượng mục tiêu, tông điệu, thuật ngữ). | `string` | Không có | `'ngữ cảnh ứng dụng tùy chỉnh của tôi'` | Có thể được sử dụng để thêm các quy tắc (ví dụ: `"Bạn không nên dịch các URL của bạn"` ). |
1041
+ | `baseURL` | URL cơ sở cho AI API. | `string` | Không có | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | Có thể trỏ tới các endpoint AI API cục bộ hoặc tùy chỉnh. |
1042
+ | `dataSerialization` | Định dạng tuần tự hóa dữ liệu cho các tính năng AI. | `'json'` &#124; <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: mặc định, đáng tin cậy; sử dụng nhiều token hơn.<br/>• `'toon'`: ít token hơn, kém ổn định hơn.<br/>• Chuyển ngữ cảnh cho model dưới dạng một tham số phụ (reasoning effort, v.v.). |
1043
1043
 
1044
1044
  ---
1045
1045
 
@@ -0,0 +1,336 @@
1
+ ---
2
+ createdAt: 2026-08-12
3
+ updatedAt: 2026-08-12
4
+ title: Plugin ESLint | Quy tắc Lint cho Intlayer
5
+ description: Phát hiện chuỗi văn bản bị hardcode, các lệnh gọi động mà trình biên dịch Intlayer không thể tối ưu hóa và nội dung từ điển không sử dụng với eslint-plugin-intlayer. Hoạt động với ESLint và oxlint trên React, Vue, Svelte, Angular và Astro.
6
+ keywords:
7
+ - Intlayer
8
+ - ESLint
9
+ - oxlint
10
+ - Linting
11
+ - i18n
12
+ - Quốc tế hóa
13
+ - no-raw-text
14
+ - Chuỗi văn bản hardcoded
15
+ - Bản dịch không sử dụng
16
+ - Nội dung thừa
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: "Lịch sử khởi tạo"
28
+ author: aymericzip
29
+ ---
30
+
31
+ # Plugin ESLint x OXLint
32
+
33
+ `eslint-plugin-intlayer` giúp bắt các lỗi i18n mà TypeScript không thể phát hiện:
34
+
35
+ 1. **Văn bản hardcode** chưa từng được đưa vào từ điển.
36
+ 2. **Các lệnh gọi động** vượt qua kiểm tra kiểu và thực thi được, nhưng trình biên dịch Intlayer không thể tối ưu hóa.
37
+ 3. **Nội dung thừa (Dead content)** — các từ điển và trường không có bất kỳ phần nào trong dự án đọc (tùy chọn kích hoạt).
38
+
39
+ Các khóa từ điển không xác định, đường dẫn trường không xác định và ngôn ngữ còn thiếu vốn đã là các lỗi biên dịch, vì vậy plugin sẽ không lặp lại chúng.
40
+
41
+ ## Cài đặt
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
+ Yêu cầu ESLint 9 trở lên (flat config).
56
+
57
+ ## Cách sử dụng
58
+
59
+ Plugin hoạt động trên cả ESLint và [oxlint](https://oxc.rs) — cùng quy tắc, cùng tùy chọn.
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
+ Hoặc bật từng quy tắc một:
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
+ Hai lưu ý: hỗ trợ plugin JS của oxlint vẫn đang ở giai đoạn alpha và oxlint không hỗ trợ trình phân tích cú pháp tùy chỉnh — vì vậy các tệp `.vue`, `.svelte`, `.astro` và template Angular không được lint tại đó. Hãy chạy oxlint trên các tệp JS/TS/JSX của bạn và giữ lại ESLint cho phần còn lại.
105
+
106
+ `no-unused-content` được cố tình lược bỏ ở trên: nó cần thư mục làm việc và đường dẫn tệp được lint từ ngữ cảnh quy tắc, điều mà cầu nối plugin JS alpha chưa đảm bảo. Hãy chạy quy tắc này dưới ESLint.
107
+
108
+ </Tab>
109
+ </Tabs>
110
+
111
+ ### Cấu hình (Configs)
112
+
113
+ | Cấu hình | `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 (+ chuỗi ngoài JSX) | error | error | error | off |
117
+ | `contract-only` | off | error | error | off | off |
118
+
119
+ `recommended` cố ý giữ `no-raw-text` ở mức `warn`: việc áp dụng quy tắc này vào một codebase hiện có sẽ hiển thị tất cả các chuỗi chưa được dịch cùng một lúc, điều này không nên làm gián đoạn bản build của bạn ngay từ ngày đầu tiên.
120
+
121
+ `enforce-adapter-import` bị tắt theo mặc định — hãy bật rõ ràng nếu bạn muốn.
122
+
123
+ `no-unused-content` bị tắt trong mọi cấu hình, bao gồm cả `strict`. Đây là quy tắc duy nhất đọc cấu hình Intlayer của bạn và duyệt qua các tệp nguồn từ đĩa, vì vậy việc bật nó nên là một lựa chọn có chủ đích thay vì được thiết lập sẵn tự động.
124
+
125
+ ## Các quy tắc
126
+
127
+ ### `no-raw-text`
128
+
129
+ Báo cáo văn bản hiển thị cho người dùng không được khai báo trong từ điển. Quy tắc sử dụng cơ chế phát hiện giống như `intlayer extract`, do đó tên thương hiệu, lớp CSS và định danh kỹ thuật sẽ bị bỏ qua.
130
+
131
+ ```jsx
132
+ // ✗ Bị báo cáo
133
+ <h1>Welcome to our documentation</h1>
134
+ <input placeholder="Enter your email address" />
135
+
136
+ // ✓ Hợp lệ
137
+ const { title } = useIntlayer("home");
138
+ <h1>{title}</h1>
139
+ ```
140
+
141
+ Các tệp khai báo nội dung (`*.content.ts`, …) được bỏ qua.
142
+
143
+ Để sửa toàn bộ tệp cùng lúc, hãy chạy `npx intlayer extract` và để trình biên dịch chuyển các chuỗi vào từ điển giúp bạn.
144
+
145
+ **Tùy chọn**
146
+
147
+ ```javascript fileName="eslint.config.mjs" codeFormat="esm"
148
+ {
149
+ "intlayer/no-raw-text": [
150
+ "warn",
151
+ {
152
+ // Các thuộc tính có giá trị là văn bản hiển thị cho người dùng.
153
+ // Mặc định: title, placeholder, alt, aria-label, label
154
+ attributes: ["title", "placeholder", "alt", "aria-label", "label"],
155
+
156
+ // Các phần tử có nội dung không bao giờ là văn bản hiển thị cho người dùng.
157
+ // Mặc định: code, pre, script, style
158
+ ignoreElements: ["code", "pre", "script", "style"],
159
+
160
+ // Biểu thức chính quy cho văn bản không bao giờ bị báo cáo.
161
+ ignorePatterns: ["^Powered by"],
162
+
163
+ // Báo cáo cả chuỗi ký tự bên ngoài mã markup. Mặc định: false
164
+ includeStringLiterals: false,
165
+ },
166
+ ],
167
+ }
168
+ ```
169
+
170
+ ### `static-dictionary-key`
171
+
172
+ Yêu cầu khóa từ điển phải là một chuỗi ký tự cố định (string literal).
173
+
174
+ Trình biên dịch chỉ có thể tải trước từ điển khi có thể đọc trực tiếp khóa tại vị trí gọi. Với một khóa được tính toán động, nó sẽ âm thầm bỏ qua việc tối ưu hóa và đóng gói tất cả từ điển thay thế.
175
+
176
+ ```typescript
177
+ // ✗ Bị báo cáo
178
+ useIntlayer(dictionaryKey);
179
+ useIntlayer(`home-${suffix}`);
180
+ getTranslations({ namespace: page });
181
+
182
+ // ✗ Biến vẫn không phải là một chuỗi cố định
183
+ const key = "home";
184
+ useIntlayer(key);
185
+
186
+ // ✓ Hợp lệ
187
+ useIntlayer("home");
188
+ getTranslations({ namespace: "home" });
189
+ ```
190
+
191
+ Điều này áp dụng cho `useIntlayer`, `getIntlayer` và mọi adapter tương thích (`useTranslation`, `useTranslations`, `formatMessage`, `<FormattedMessage id>`, `<Trans i18nKey>`, …).
192
+
193
+ ### `no-dynamic-field-access`
194
+
195
+ Yêu cầu trường bạn đọc từ từ điển phải được xác định tĩnh.
196
+
197
+ Trình biên dịch sẽ loại bỏ các trường mà nó không thấy được sử dụng. Một truy cập được tính toán động là vô hình đối với nó, do đó việc đọc có thể trả về `undefined` trong thời gian chạy.
198
+
199
+ ```typescript
200
+ // ✗ Bị báo cáo
201
+ const content = useIntlayer("home");
202
+ content[fieldName];
203
+
204
+ const t = useTranslations("home");
205
+ t(messageKey);
206
+
207
+ // ✓ Hợp lệ
208
+ content.title;
209
+ content["title"];
210
+ content.items[0];
211
+ t("hero.title");
212
+ ```
213
+
214
+ ### `enforce-adapter-import`
215
+
216
+ Ưu tiên adapter tương thích `@intlayer/*` hơn gói gốc. Gói gốc chỉ phân giải thành Intlayer khi alias của bundler được cấu hình; adapter luôn luôn thực hiện được. Có thể tự động sửa bằng `--fix`.
217
+
218
+ ```typescript
219
+ // ✗ Bị báo cáo
220
+ import { useTranslation } from "react-i18next";
221
+ import { getTranslations } from "next-intl/server";
222
+
223
+ // ✓ Hợp lệ
224
+ import { useTranslation } from "@intlayer/react-i18next";
225
+ import { getTranslations } from "@intlayer/next-intl/server";
226
+ ```
227
+
228
+ ### `no-unused-content`
229
+
230
+ **Tắt theo mặc định.** Báo cáo nội dung không có bất kỳ phần nào trong dự án đọc, cùng với các khóa từ điển được khai báo ở nhiều nơi.
231
+
232
+ ```typescript fileName="src/home.content.ts"
233
+ export default {
234
+ key: "home", // ✗ Bị báo cáo nếu không có nơi nào trong dự án yêu cầu "home"
235
+ content: {
236
+ title: t({ vi: "Tiêu đề", en: "Title" }),
237
+
238
+ // ✗ Bị báo cáo nếu không có nơi nào đọc `hero`
239
+ hero: {
240
+ subtitle: t({ vi: "Phụ đề", en: "Subtitle" }),
241
+ },
242
+ },
243
+ };
244
+ ```
245
+
246
+ Không giống như các quy tắc khác, quy tắc này không thể quyết định chỉ từ tệp đang kiểm tra — một trường chỉ được xem là không sử dụng khi so với toàn bộ dự án. Khi gặp khai báo nội dung đầu tiên trong một lần lint, nó sẽ tải cấu hình Intlayer, quét các tệp nguồn mà cấu hình đó khai báo (`build.traversePattern`, `compiler.transformPattern`) và chạy cùng bộ phân tích mức độ sử dụng đang vận hành `@intlayer/lsp` và tính năng gạch ngang "không sử dụng" trong tiện ích mở rộng VS Code. Kết quả được lưu vào bộ nhớ cache trong `cacheTtl` mili giây, do đó quá trình quét diễn ra một lần cho mỗi lượt chạy thay vì mỗi tệp.
247
+
248
+ **Tùy chọn**
249
+
250
+ ```javascript fileName="eslint.config.mjs" codeFormat="esm"
251
+ {
252
+ "intlayer/no-unused-content": [
253
+ "warn",
254
+ {
255
+ // Báo cáo các khóa từ điển không có nơi nào tham chiếu. Mặc định: true
256
+ reportUnusedDictionaries: true,
257
+
258
+ // Báo cáo các trường nội dung không có nơi nào đọc. Mặc định: true
259
+ reportUnusedFields: true,
260
+
261
+ // Báo cáo các khóa được khai báo ở nhiều nơi. Mặc định: true
262
+ reportDuplicateKeys: true,
263
+
264
+ // Biểu thức chính quy cho đường dẫn trường không bao giờ bị báo cáo.
265
+ ignoreFields: ["^meta"],
266
+
267
+ // Thư mục gốc của dự án bắt đầu quét. Mặc định: thư mục làm việc của ESLint
268
+ baseDir: process.cwd(),
269
+
270
+ // Thời gian một lần quét dự án được tái sử dụng, tính bằng ms. Mặc định: 30000
271
+ cacheTtl: 30000,
272
+ },
273
+ ],
274
+ }
275
+ ```
276
+
277
+ Giảm `cacheTtl` khi bạn lint từ một editor server hoạt động lâu dài và muốn các chỉnh sửa hiển thị sớm hơn; thiết lập `baseDir` khi một lần chạy lint trải rộng trên nhiều dự án Intlayer trong monorepo.
278
+
279
+ > **Thiên về sự an toàn (ít báo sai).** Một cảnh báo sai ở đây có thể dẫn đến việc xóa một bản dịch, vì vậy sẽ không có gì được báo cáo khi từ điển được sử dụng theo cách mà bộ phân tích không thể theo dõi: đối tượng nội dung được truyền nguyên vẹn, hàm dịch được liên kết từ đó (`const t = useTranslations("home")`), khai báo được truy cập qua import trực tiếp (`useDictionary(myDictionary)`), lệnh `nest()` từ từ điển khác, hoặc danh sách trường bị làm mờ bởi toán tử spread. Các component đơn tệp (`.vue`, `.svelte`, `.astro`) được tính là sử dụng mọi trường của từ điển mà chúng đề cập, vì các khối script của chúng không được phân tích cú pháp tại đây.
280
+
281
+ `reportDuplicateKeys` đọc các từ điển chưa hợp nhất mà bản build ghi dưới thư mục `.intlayer/`, do đó nó giữ im lặng cho đến khi dự án được build ít nhất một lần. Hai khai báo có chung một khóa sẽ được hợp nhất, đây là một mẫu hợp lệ — báo cáo tồn tại vì một trường được định nghĩa ở cả hai bên sẽ âm thầm chỉ giữ lại một trong hai giá trị.
282
+
283
+ Bộ phân tích được nạp từ `@intlayer/lsp`, phát hành dưới dạng ESM. Do đó quy tắc cần một phiên bản Node có thể `require()` module ES — Node 20.19+ hoặc 22.12+. Trên các phiên bản cũ hơn, nó sẽ không báo cáo gì thay vì làm hỏng lần chạy lint.
284
+
285
+ ## Frameworks
286
+
287
+ Mọi quy tắc đều hoạt động trên tất cả các tích hợp của Intlayer, bao gồm bên trong template của Vue, Svelte và Angular. Bạn chỉ cần chỉ định cho ESLint parser nào xử lý từng loại tệp.
288
+
289
+ | Framework | Tệp | Parser |
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
+ | Template 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
+ Chỉ cài đặt các parser mà dự án của bạn cần.
335
+
336
+ > **Hạn chế đã biết.** Trong template của Vue và Angular, một biểu thức như `{{ content[key] }}` sẽ không được kiểm tra bởi `no-dynamic-field-access`. Các truy cập động được viết trong khối script vẫn được phát hiện bình thường.