@intlayer/docs 9.3.2 → 9.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/blog/ar/nextjs-multilingual-seo-comparison.md +10 -10
  2. package/blog/de/nextjs-multilingual-seo-comparison.md +9 -9
  3. package/blog/en/nextjs-multilingual-seo-comparison.md +10 -10
  4. package/blog/en-GB/nextjs-multilingual-seo-comparison.md +10 -10
  5. package/blog/es/nextjs-multilingual-seo-comparison.md +10 -10
  6. package/blog/fr/nextjs-multilingual-seo-comparison.md +10 -10
  7. package/blog/hi/nextjs-multilingual-seo-comparison.md +10 -10
  8. package/blog/id/nextjs-multilingual-seo-comparison.md +10 -10
  9. package/blog/it/nextjs-multilingual-seo-comparison.md +10 -10
  10. package/blog/ja/nextjs-multilingual-seo-comparison.md +9 -9
  11. package/blog/ko/nextjs-multilingual-seo-comparison.md +9 -9
  12. package/blog/pl/nextjs-multilingual-seo-comparison.md +10 -10
  13. package/blog/pt/nextjs-multilingual-seo-comparison.md +9 -9
  14. package/blog/ru/nextjs-multilingual-seo-comparison.md +9 -9
  15. package/blog/tr/nextjs-multilingual-seo-comparison.md +9 -9
  16. package/blog/uk/nextjs-multilingual-seo-comparison.md +10 -10
  17. package/blog/vi/nextjs-multilingual-seo-comparison.md +10 -10
  18. package/blog/zh/nextjs-multilingual-seo-comparison.md +10 -10
  19. package/docs/ar/bundle_optimization.md +1 -1
  20. package/docs/ar/configuration.md +32 -9
  21. package/docs/ar/dictionary/content_file.md +0 -22
  22. package/docs/ar/dictionary/function_fetching.md +23 -0
  23. package/docs/ar/eslint.md +9 -9
  24. package/docs/bn/configuration.md +34 -9
  25. package/docs/bn/eslint.md +9 -9
  26. package/docs/cs/bundle_optimization.md +1 -1
  27. package/docs/cs/configuration.md +33 -9
  28. package/docs/cs/eslint.md +9 -9
  29. package/docs/de/bundle_optimization.md +1 -1
  30. package/docs/de/configuration.md +34 -9
  31. package/docs/de/dictionary/content_file.md +0 -22
  32. package/docs/de/dictionary/function_fetching.md +23 -0
  33. package/docs/de/eslint.md +9 -9
  34. package/docs/en/bundle_optimization.md +1 -1
  35. package/docs/en/configuration.md +34 -9
  36. package/docs/en/dictionary/content_file.md +0 -22
  37. package/docs/en/dictionary/function_fetching.md +23 -0
  38. package/docs/en/eslint.md +9 -9
  39. package/docs/en/packages/intlayer/getLocalizedPath.md +70 -19
  40. package/docs/en-GB/configuration.md +33 -9
  41. package/docs/en-GB/dictionary/content_file.md +0 -22
  42. package/docs/en-GB/dictionary/function_fetching.md +23 -0
  43. package/docs/en-GB/eslint.md +9 -9
  44. package/docs/es/bundle_optimization.md +1 -1
  45. package/docs/es/configuration.md +35 -9
  46. package/docs/es/dictionary/content_file.md +0 -22
  47. package/docs/es/dictionary/function_fetching.md +23 -0
  48. package/docs/es/eslint.md +9 -9
  49. package/docs/fr/bundle_optimization.md +1 -1
  50. package/docs/fr/configuration.md +35 -9
  51. package/docs/fr/dictionary/content_file.md +0 -22
  52. package/docs/fr/dictionary/function_fetching.md +23 -0
  53. package/docs/fr/eslint.md +9 -9
  54. package/docs/hi/configuration.md +35 -9
  55. package/docs/hi/dictionary/content_file.md +0 -22
  56. package/docs/hi/dictionary/function_fetching.md +23 -0
  57. package/docs/hi/eslint.md +9 -9
  58. package/docs/id/configuration.md +35 -9
  59. package/docs/id/dictionary/content_file.md +0 -22
  60. package/docs/id/dictionary/function_fetching.md +23 -0
  61. package/docs/id/eslint.md +9 -9
  62. package/docs/it/bundle_optimization.md +1 -1
  63. package/docs/it/configuration.md +35 -9
  64. package/docs/it/dictionary/content_file.md +0 -22
  65. package/docs/it/dictionary/function_fetching.md +23 -0
  66. package/docs/it/eslint.md +9 -9
  67. package/docs/ja/configuration.md +30 -9
  68. package/docs/ja/dictionary/content_file.md +0 -22
  69. package/docs/ja/dictionary/function_fetching.md +23 -0
  70. package/docs/ja/eslint.md +9 -9
  71. package/docs/ko/configuration.md +31 -9
  72. package/docs/ko/dictionary/content_file.md +0 -22
  73. package/docs/ko/dictionary/function_fetching.md +23 -0
  74. package/docs/ko/eslint.md +9 -9
  75. package/docs/nl/configuration.md +33 -9
  76. package/docs/nl/eslint.md +9 -9
  77. package/docs/pl/bundle_optimization.md +1 -1
  78. package/docs/pl/configuration.md +34 -9
  79. package/docs/pl/dictionary/content_file.md +0 -22
  80. package/docs/pl/dictionary/function_fetching.md +23 -0
  81. package/docs/pl/eslint.md +9 -9
  82. package/docs/pt/bundle_optimization.md +1 -1
  83. package/docs/pt/configuration.md +34 -9
  84. package/docs/pt/dictionary/content_file.md +0 -22
  85. package/docs/pt/dictionary/function_fetching.md +23 -0
  86. package/docs/pt/eslint.md +9 -9
  87. package/docs/ru/bundle_optimization.md +1 -1
  88. package/docs/ru/configuration.md +34 -9
  89. package/docs/ru/dictionary/content_file.md +0 -22
  90. package/docs/ru/dictionary/function_fetching.md +23 -0
  91. package/docs/ru/eslint.md +9 -9
  92. package/docs/tr/bundle_optimization.md +1 -1
  93. package/docs/tr/configuration.md +33 -9
  94. package/docs/tr/dictionary/content_file.md +0 -22
  95. package/docs/tr/dictionary/function_fetching.md +23 -0
  96. package/docs/tr/eslint.md +9 -9
  97. package/docs/uk/configuration.md +35 -9
  98. package/docs/uk/dictionary/content_file.md +0 -22
  99. package/docs/uk/dictionary/function_fetching.md +23 -0
  100. package/docs/uk/eslint.md +9 -9
  101. package/docs/ur/configuration.md +35 -9
  102. package/docs/ur/eslint.md +9 -9
  103. package/docs/vi/bundle_optimization.md +1 -1
  104. package/docs/vi/configuration.md +33 -9
  105. package/docs/vi/dictionary/content_file.md +0 -22
  106. package/docs/vi/dictionary/function_fetching.md +23 -0
  107. package/docs/vi/eslint.md +9 -9
  108. package/docs/zh/bundle_optimization.md +1 -1
  109. package/docs/zh/configuration.md +29 -9
  110. package/docs/zh/dictionary/content_file.md +0 -22
  111. package/docs/zh/dictionary/function_fetching.md +23 -0
  112. package/docs/zh/eslint.md +9 -9
  113. package/docs/zh-TW/bundle_optimization.md +1 -1
  114. package/docs/zh-TW/eslint.md +9 -9
  115. package/package.json +5 -5
@@ -63,12 +63,12 @@ author: aymericzip
63
63
 
64
64
  Розробники часто забувають правильно посилатися на свої сторінки для різних локалей, тож давайте подивимось, як це працює на практиці з різними бібліотеками.
65
65
 
66
- ### **next-intl**
67
-
68
66
  <Tabs>
69
- <Tab label="next-intl">
67
+ <Tab label="next-intl" value="next-intl">
68
+
69
+ ### **next-intl**
70
70
 
71
- ```tsx fileName="src/app/[locale]/about/layout.tsx
71
+ ```tsx fileName="src/app/[locale]/about/layout.tsx"
72
72
  import type { Metadata } from "next";
73
73
  import { locales, defaultLocale } from "@/i18n";
74
74
  import { getTranslations, unstable_setRequestLocale } from "next-intl/server";
@@ -153,10 +153,10 @@ export default function robots(): MetadataRoute.Robots {
153
153
  }
154
154
  ```
155
155
 
156
- ### **next-i18next**
157
-
158
156
  </Tab>
159
- <Tab label="next-i18next">
157
+ <Tab label="next-i18next" value="next-i18next">
158
+
159
+ ### **next-i18next**
160
160
 
161
161
  ```ts fileName="i18n.config.ts"
162
162
  export const locales = ["en", "fr"] as const;
@@ -256,10 +256,10 @@ export default function robots(): MetadataRoute.Robots {
256
256
  }
257
257
  ```
258
258
 
259
- ### **Intlayer**
260
-
261
259
  </Tab>
262
- <Tab label="intlayer">
260
+ <Tab label="intlayer" value="intlayer">
261
+
262
+ ### **Intlayer**
263
263
 
264
264
  ````typescript fileName="src/app/[locale]/about/layout.tsx"
265
265
  import { getIntlayer, getMultilingualUrls } from "intlayer";
@@ -63,12 +63,12 @@ Dưới đây là danh sách kiểm tra mà mọi ứng dụng đa ngôn ngữ n
63
63
 
64
64
  Các nhà phát triển thường quên tham chiếu đúng các trang của họ qua các ngôn ngữ, vì vậy hãy cùng xem cách điều này hoạt động trong thực tế với các thư viện khác nhau.
65
65
 
66
- ### **next-intl**
67
-
68
66
  <Tabs>
69
- <Tab label="next-intl">
67
+ <Tab label="next-intl" value="next-intl">
68
+
69
+ ### **next-intl**
70
70
 
71
- ```tsx fileName="src/app/[locale]/about/layout.tsx
71
+ ```tsx fileName="src/app/[locale]/about/layout.tsx"
72
72
  import type { Metadata } from "next";
73
73
  import { locales, defaultLocale } from "@/i18n";
74
74
  import { getTranslations, unstable_setRequestLocale } from "next-intl/server";
@@ -154,10 +154,10 @@ export default function robots(): MetadataRoute.Robots {
154
154
  }
155
155
  ```
156
156
 
157
- ### **next-i18next**
158
-
159
157
  </Tab>
160
- <Tab label="next-i18next">
158
+ <Tab label="next-i18next" value="next-i18next">
159
+
160
+ ### **next-i18next**
161
161
 
162
162
  ```ts fileName="i18n.config.ts"
163
163
  export const locales = ["en", "fr"] as const;
@@ -258,10 +258,10 @@ export default function robots(): MetadataRoute.Robots {
258
258
  }
259
259
  ```
260
260
 
261
- ### **Intlayer**
262
-
263
261
  </Tab>
264
- <Tab label="intlayer">
262
+ <Tab label="intlayer" value="intlayer">
263
+
264
+ ### **Intlayer**
265
265
 
266
266
  ````typescript fileName="src/app/[locale]/about/layout.tsx"
267
267
  import { getIntlayer, getMultilingualUrls } from "intlayer";
@@ -63,12 +63,12 @@ author: aymericzip
63
63
 
64
64
  开发者经常忘记在不同语言环境中正确引用他们的页面,因此让我们看看使用不同库时这是如何实际操作的。
65
65
 
66
- ### **next-intl**
67
-
68
66
  <Tabs>
69
- <Tab label="next-intl">
67
+ <Tab label="next-intl" value="next-intl">
68
+
69
+ ### **next-intl**
70
70
 
71
- ```tsx fileName="src/app/[locale]/about/layout.tsx
71
+ ```tsx fileName="src/app/[locale]/about/layout.tsx"
72
72
  import type { Metadata } from "next";
73
73
  import { locales, defaultLocale } from "@/i18n";
74
74
  import { getTranslations, unstable_setRequestLocale } from "next-intl/server";
@@ -155,10 +155,10 @@ export default function robots(): MetadataRoute.Robots {
155
155
  }
156
156
  ```
157
157
 
158
- ### **next-i18next**
159
-
160
158
  </Tab>
161
- <Tab label="next-i18next">
159
+ <Tab label="next-i18next" value="next-i18next">
160
+
161
+ ### **next-i18next**
162
162
 
163
163
  ```ts fileName="i18n.config.ts"
164
164
  export const locales = ["en", "fr"] as const;
@@ -258,10 +258,10 @@ export default function robots(): MetadataRoute.Robots {
258
258
  }
259
259
  ```
260
260
 
261
- ### **Intlayer**
262
-
263
261
  </Tab>
264
- <Tab label="intlayer">
262
+ <Tab label="intlayer" value="intlayer">
263
+
264
+ ### **Intlayer**
265
265
 
266
266
  ````typescript fileName="src/app/[locale]/about/layout.tsx"
267
267
  import { getIntlayer, getMultilingualUrls } from "intlayer";
@@ -159,7 +159,7 @@ pnpm add -D webpack-bundle-analyzer
159
159
  bun add -d webpack-bundle-analyzer
160
160
  ```
161
161
 
162
- ```typescript fileName="webpack.config.ts
162
+ ```typescript fileName="webpack.config.ts"
163
163
  import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer";
164
164
 
165
165
  export default {
@@ -471,6 +471,27 @@ const config: IntlayerConfig = {
471
471
  */
472
472
  prune: true,
473
473
 
474
+ /**
475
+ * تجميع أجزاء القاموس لكل لغة حسب حدود تقسيم الشيفرة التي تستخدمها، بحيث تجلب
476
+ * الصفحة المحمّلة بتكاسل محتواها في طلب واحد.
477
+ * الافتراضي: true
478
+ *
479
+ * ملاحظة:
480
+ * - ينطبق فقط على القواميس التي تستخدم `importMode: 'dynamic'`.
481
+ */
482
+ chunkGrouping: true,
483
+
484
+ /**
485
+ * تحميل القاموس مع الجزء الذي يستخدمه، بدلاً من جلبه بعد عرض ذلك الجزء. تُعرض
486
+ * القراءات بشكل متزامن بدلاً من التعليق، لذا لم تعد حالة التحميل تومض أثناء
487
+ * التنقل.
488
+ * الافتراضي: true
489
+ *
490
+ * ملاحظة:
491
+ * - يتم انتظار اللغة المحددة فقط، لذا تنزّل الصفحة اللغة التي تعرضها فحسب.
492
+ */
493
+ dictionariesPreload: true,
494
+
474
495
  /**
475
496
  * صيغة الإخراج لملفات القاموس المولدة.
476
497
  * الافتراضي: ['cjs', 'esm']
@@ -1047,15 +1068,17 @@ dictionary: {
1047
1068
 
1048
1069
  > أثناء التحسين، سيقوم Intlayer باستبدال استدعاءات القواميس لتحسين تقسيم الكود (chunking) بحيث تستورد الحزمة الناتجة القواميس المستخدمة فعلياً فقط.
1049
1070
 
1050
- | الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
1051
- | ----------------- | --------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1052
- | `mode` | يتحكم في وضع البناء. | `'auto'` &#124; <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: يتم تشغيل البناء تلقائياً أثناء بناء التطبيق. <br/> • `'manual'`: يتم تنفيذه فقط عند استدعاء أمر بناء صريح. <br/> • يمكن استخدامه لإيقاف بناء القواميس (مثلاً لتجنب الجري في بيئات Node.js). |
1053
- | `optimize` | يتحكم في ما إذا كان ينبغي إجراء تحسينات البناء. | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • إذا لم يتم تعريفه، فسيتم تشغيل التحسين عند بناء إطار العمل (Vite/Next.js). <br/> • `true` يفرض التحسين حتى في وضع التطوير. <br/> • `false` يعطله. <br/> • عند تشغيله، يستبدل استدعاءات القواميس لتحسين الـ chunking. <br/> • يتطلب إضافات `@intlayer/babel` و `@intlayer/swc`. |
1054
- | `minify` | يحدد ما إذا كان ينبغي ضغط القواميس لتقليل حجم الحزمة. | `boolean` | `false` | | • يحدد ما إذا كانت الحزمة يجب أن تكون مضغوطة.<br/>• الافتراضي: `true` في الإنتاج.<br/>• سيتم تجاهل هذا الخيار إذا تم تعطيل `optimize`.<br/>• سيتم تجاهل هذا الخيار إذا كان `editor.enabled` صحيحاً. |
1055
- | `prune` | يحدد ما إذا كان ينبغي حذف المفاتيح غير المستخدمة في القواميس. | `boolean` | `true` | | • يحدد ما إذا كانت الحزمة يجب أن يتم تنظيفها.<br/>• الافتراضي: `true` في الإنتاج.<br/>• سيتم تجاهل هذا الخيار إذا تم تعطيل `optimize`. |
1056
- | `checkTypes` | يشير إلى ما إذا كان ينبغي للبناء التحقق من أنواع TypeScript وتسجيل الأخطاء. | `boolean` | `false` | | قد يبطئ عملية البناء. |
1057
- | `outputFormat` | يتحكم في صيغة إخراج القواميس. | `('esm' &#124; 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
1058
- | `traversePattern` | الأنماط التي تحدد الملفات التي يتم فحصها أثناء التحسين. | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | قيد التحسين على الملفات ذات الصلة لزيادة أداء البناء. <br/> سيتم تجاهله إذا توقف `optimize`. <br/> يستخدم أنماط glob. |
1071
+ | الحقل | الوصف | النوع | الافتراضي | مثال | ملاحظة |
1072
+ | --------------------- | ----------------------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1073
+ | `mode` | يتحكم في وضع البناء. | `'auto'` &#124; <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: يتم تشغيل البناء تلقائياً أثناء بناء التطبيق. <br/> • `'manual'`: يتم تنفيذه فقط عند استدعاء أمر بناء صريح. <br/> • يمكن استخدامه لإيقاف بناء القواميس (مثلاً لتجنب الجري في بيئات Node.js). |
1074
+ | `optimize` | يتحكم في ما إذا كان ينبغي إجراء تحسينات البناء. | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • إذا لم يتم تعريفه، فسيتم تشغيل التحسين عند بناء إطار العمل (Vite/Next.js). <br/> • `true` يفرض التحسين حتى في وضع التطوير. <br/> • `false` يعطله. <br/> • عند تشغيله، يستبدل استدعاءات القواميس لتحسين الـ chunking. <br/> • يتطلب إضافات `@intlayer/babel` و `@intlayer/swc`. |
1075
+ | `minify` | يحدد ما إذا كان ينبغي ضغط القواميس لتقليل حجم الحزمة. | `boolean` | `false` | | • يحدد ما إذا كانت الحزمة يجب أن تكون مضغوطة.<br/>• الافتراضي: `true` في الإنتاج.<br/>• سيتم تجاهل هذا الخيار إذا تم تعطيل `optimize`.<br/>• سيتم تجاهل هذا الخيار إذا كان `editor.enabled` صحيحاً. |
1076
+ | `prune` | يحدد ما إذا كان ينبغي حذف المفاتيح غير المستخدمة في القواميس. | `boolean` | `true` | | • يحدد ما إذا كانت الحزمة يجب أن يتم تنظيفها.<br/>• الافتراضي: `true` في الإنتاج.<br/>• سيتم تجاهل هذا الخيار إذا تم تعطيل `optimize`. |
1077
+ | `checkTypes` | يشير إلى ما إذا كان ينبغي للبناء التحقق من أنواع TypeScript وتسجيل الأخطاء. | `boolean` | `false` | | قد يبطئ عملية البناء. |
1078
+ | `chunkGrouping` | يحدد ما إذا كان يجب تجميع أجزاء القاموس لكل لغة حسب حدود تقسيم الشيفرة التي تستخدمها. | `boolean` | `true` | | • بدون التجميع، ترسل الصفحة المكوّنة من مكوّنات عديدة طلباً لكل قاموس.<br/>• القواميس التي يُوصل إليها من عدة حدود تنتقل إلى جزء مشترك، لذا لا تحمل أي صفحة محتوى صفحة أخرى.<br/>• ينطبق فقط على القواميس التي تستخدم `importMode: 'dynamic'`.<br/>• ينطبق فقط على بناء العميل، وفقط عند التحزيم (ليس في وضع التطوير). |
1079
+ | `dictionariesPreload` | يحدد ما إذا كان يجب تحميل القاموس مع الجزء الذي يستخدمه، بدلاً من جلبه بعد عرض ذلك الجزء. | `boolean` | `true` | | تنتظر نقطة الدخول المولَّدة لغة التصفح في المستوى الأعلى، لذا لا يُعتبر المسار المحمّل بتكاسل محمّلاً حتى يتوفر محتواه.<br/>• تُعرض القراءات بشكل متزامن بدلاً من التعليق، لذا لم تعد حالة التحميل تومض أثناء التنقل.<br/>• يتم انتظار اللغة المحددة فقط، لذا تنزّل الصفحة اللغة التي تعرضها فحسب.<br/>• ينطبق فقط على القواميس التي تستخدم `importMode: 'dynamic'` في بناء العميل.<br/>• يتطلب أداة تحزيم تدعم top-level await (Vite، esbuild). |
1080
+ | `outputFormat` | يتحكم في صيغة إخراج القواميس. | `('esm' &#124; 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
1081
+ | `traversePattern` | الأنماط التي تحدد الملفات التي يتم فحصها أثناء التحسين. | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | • قيد التحسين على الملفات ذات الصلة لزيادة أداء البناء. <br/> • سيتم تجاهله إذا توقف `optimize`. <br/> • يستخدم أنماط glob. |
1059
1082
 
1060
1083
  ---
1061
1084
 
@@ -536,28 +536,6 @@ export default aboutPageMetaContent;
536
536
 
537
537
  > انظر [المتغيرات](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dynamic_dictionaries/variants.md) لمزيد من المعلومات.
538
538
 
539
- #### `meta` (`Record<string, string | number | boolean>`)
540
-
541
- يُستخدم بالاقتران مع السجلات الديناميكية (Dynamic Records)، ويسمح هذا الحقل بالإعلان عن السجلات التي يديرها نظام إدارة المحتوى (CMS) أو البيانات التعسفية التي يتم جلبها في وقت التشغيل بواسطة معرف غير شفاف. يتم تحديد هوية القاموس من خلال مجموعة عشوائية من أزواج المفتاح والقيمة المعلنة في حقل `meta` هذا.
542
-
543
- **مثال:**
544
-
545
- ```typescript
546
- {
547
- key: "product-copy",
548
- meta: {
549
- id: "prod_abc",
550
- userId: "user_123"
551
- },
552
- content: {
553
- name: "Widget Pro",
554
- description: "The best widget."
555
- }
556
- }
557
- ```
558
-
559
- > انظر [السجلات الديناميكية](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/dynamic_dictionaries/dynamic_content.md) لمزيد من المعلومات.
560
-
561
539
  ### خصائص نظام إدارة المحتوى
562
540
 
563
541
  ##### `version` (سلسلة نصية)
@@ -89,6 +89,29 @@ export default asyncFunctionContent;
89
89
 
90
90
  في هذه الحالة، تقوم دالة `fakeFetch` بمحاكاة تأخير لتقليد وقت استجابة الخادم. يقوم Intlayer بتنفيذ الدالة غير المتزامنة ويستخدم النتيجة كمحتوى للمفتاح `text`.
91
91
 
92
+ ## جلب المحتوى عن بُعد
93
+
94
+ يمكنك أيضًا إسناد وعد (Promise) مباشرةً إلى حقل محتوى. ينتظر Intlayer نتيجته أثناء بناء القواميس ويُدرج القيمة الناتجة:
95
+
96
+ ```typescript fileName="**/*.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
97
+ import type { Dictionary } from "intlayer";
98
+
99
+ const remoteContent = {
100
+ key: "remote_content",
101
+ content: {
102
+ externalContent: fetch("https://example.com").then((res) => res.json()),
103
+ },
104
+ } satisfies Dictionary;
105
+
106
+ export default remoteContent;
107
+ ```
108
+
109
+ ```plaintext fileName="**/*.content.json" contentDeclarationFormat="json"
110
+ لا توجد طريقة لجلب المحتوى من ملف JSON، استخدم ملف .ts أو .js بدلاً من ذلك
111
+ ```
112
+
113
+ > يتم تنفيذ الطلب في وقت البناء، لذا فإن البيانات المجلوبة هي لقطة مضمّنة في القاموس. أعد بناء القواميس لتحديثها.
114
+
92
115
  ## استخدام المحتوى المعتمد على الدوال في مكونات React
93
116
 
94
117
  لاستخدام المحتوى المعتمد على الدوال في مكون React، تحتاج إلى استيراد `useIntlayer` من `react-intlayer` واستدعاؤه مع معرف المحتوى لاسترجاع المحتوى. إليك مثالاً:
package/docs/ar/eslint.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-08-12
3
- updatedAt: 2026-08-12
3
+ updatedAt: 2026-08-13
4
4
  title: إضافة ESLint | قواعد الفحص (Lint) لـ Intlayer
5
5
  description: اكتشف النصوص المكتوبة يدويًا (hardcoded)، والاستدعاءات الديناميكية التي لا يمكن لمترجم Intlayer تحسينها، ومحتوى القواميس غير المستخدم، باستخدام eslint-plugin-intlayer. متوافقة مع ESLint و oxlint عبر React و Vue و Svelte و Angular و Astro.
6
6
  keywords:
@@ -52,7 +52,7 @@ pnpm add --save-dev eslint-plugin-intlayer
52
52
  yarn add --dev eslint-plugin-intlayer
53
53
  ```
54
54
 
55
- تتطلب الإصدار 9 من ESLint أو أحدث (flat config).
55
+ تتطلب الإصدار 9 من ESLint أو أحدث (flat config). ESLint 10 مدعوم.
56
56
 
57
57
  ## الاستخدام
58
58
 
@@ -61,20 +61,20 @@ yarn add --dev eslint-plugin-intlayer
61
61
  <Tabs defaultTab="eslint">
62
62
  <Tab label="ESLint" value="eslint">
63
63
 
64
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
64
+ ```javascript fileName="eslint.config.mjs"
65
65
  import intlayer from "eslint-plugin-intlayer";
66
66
 
67
67
  export default [...intlayer.configs.recommended];
68
68
  ```
69
69
 
70
- أو قم بتمكين القواعد واحدة تلو الأخرى:
70
+ أو انشر أحد الإعدادات وحدّد مستويات الخطورة بنفسك:
71
71
 
72
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
72
+ ```javascript fileName="eslint.config.mjs"
73
73
  import intlayer from "eslint-plugin-intlayer";
74
74
 
75
75
  export default [
76
+ ...intlayer.configs.recommended,
76
77
  {
77
- plugins: { intlayer },
78
78
  rules: {
79
79
  "intlayer/no-raw-text": "warn",
80
80
  "intlayer/static-dictionary-key": "error",
@@ -144,7 +144,7 @@ const { title } = useIntlayer("home");
144
144
 
145
145
  **الخيارات**
146
146
 
147
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
147
+ ```javascript fileName="eslint.config.mjs"
148
148
  {
149
149
  "intlayer/no-raw-text": [
150
150
  "warn",
@@ -247,7 +247,7 @@ export default {
247
247
 
248
248
  **الخيارات**
249
249
 
250
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
250
+ ```javascript fileName="eslint.config.mjs"
251
251
  {
252
252
  "intlayer/no-unused-content": [
253
253
  "warn",
@@ -296,7 +296,7 @@ export default {
296
296
  | قوالب Angular | `.component.html` | `@angular-eslint/template-parser` |
297
297
  | Astro | `.astro` | `astro-eslint-parser` |
298
298
 
299
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
299
+ ```javascript fileName="eslint.config.mjs"
300
300
  import intlayer from "eslint-plugin-intlayer";
301
301
  import tseslint from "typescript-eslint";
302
302
  import vueParser from "vue-eslint-parser";
@@ -471,6 +471,29 @@ const config: IntlayerConfig = {
471
471
  */
472
472
  prune: true,
473
473
 
474
+ /**
475
+ * প্রতি-লোকেল অভিধান চাঙ্কগুলিকে সেই কোড-স্প্লিট সীমানা অনুসারে গোষ্ঠীভুক্ত
476
+ * করুন যা সেগুলি ব্যবহার করে, যাতে ধীরে লোড হওয়া পৃষ্ঠা একটি অনুরোধেই তার
477
+ * বিষয়বস্তু পায়।
478
+ * ডিফল্ট: true
479
+ *
480
+ * দ্রষ্টব্য:
481
+ * - শুধুমাত্র `importMode: 'dynamic'` ব্যবহারকারী অভিধানের ক্ষেত্রে প্রযোজ্য।
482
+ */
483
+ chunkGrouping: true,
484
+
485
+ /**
486
+ * চাঙ্ক রেন্ডার হওয়ার পরে আনার পরিবর্তে, যে চাঙ্ক অভিধানটি ব্যবহার করে তার
487
+ * সাথেই সেটি লোড করুন। পঠন সাসপেন্ড না হয়ে সিঙ্ক্রোনাসভাবে রেন্ডার হয়, তাই
488
+ * নেভিগেশনে আর লোডিং অবস্থা ঝলকায় না।
489
+ * ডিফল্ট: true
490
+ *
491
+ * দ্রষ্টব্য:
492
+ * - শুধুমাত্র নির্ধারিত লোকেলের জন্য অপেক্ষা করা হয়, তাই পৃষ্ঠাটি কেবল যে
493
+ * ভাষা দেখায় সেটিই ডাউনলোড করে।
494
+ */
495
+ dictionariesPreload: true,
496
+
474
497
  /**
475
498
  * জেনারেট করা ডিকশনারি ফাইলের আউটপুট ফরম্যাট।
476
499
  * ডিফল্ট: ['cjs', 'esm']
@@ -1032,15 +1055,17 @@ Intlayer কীভাবে আপনার অ্যাপ্লিকেশন
1032
1055
 
1033
1056
  > অপ্টিমাইজেশন চলাকালীন, Intlayer কোড স্প্লিটিং (chunking) অপ্টিমাইজ করার জন্য ডিকশনারি কলগুলো প্রতিস্থাপন করবে যাতে ফলাফল বান্ডেলটি কেবল সেই ডিকশনারিগুলোই ইম্পোর্ট করে যা বাস্তবে ব্যবহৃত হয়।
1034
1057
 
1035
- | ফিল্ড | বর্ণনা | টাইপ | ডিফল্ট | উদাহরণ | মন্তব্য |
1036
- | ----------------- | -------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1037
- | `mode` | বিল্ড মোড নিয়ন্ত্রণ করে। | `'auto'` &#124; <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: অ্যাপ্লিকেশন বিল্ডের সময় বিল্ড স্বয়ংক্রিয়ভাবে শুরু হয়।<br/>• `'manual'`: কেবল একটি স্পষ্ট বিল্ড কমান্ডের মাধ্যমে কার্যকর হয়।<br/>• ডিকশনারি বিল্ড বন্ধ করার জন্য ব্যবহার করা যেতে পারে (যেমন Node.js এনভায়রনমেন্টে চলা এড়াতে)। |
1038
- | `optimize` | বিল্ড অপ্টিমাইজেশন করা হবে কি না তা নিয়ন্ত্রণ করে। | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • সংজ্ঞায়িত না থাকলে, ফ্রেমওয়ার্ক বিল্ড (Vite/Next.js) এর সময় অপ্টিমাইজেশন শুরু হয়।<br/>• `true` দেব মোডেও অপ্টিমাইজেশন বাধ্য করে।<br/>• `false` এটি বন্ধ করে দেয়।<br/>• চালু থাকলে, চাকিং অপ্টিমাইজেশনের জন্য ডিকশনারি কল প্রতিস্থাপন করে।<br/>• `@intlayer/babel` এবং `@intlayer/swc` প্লাগইন প্রয়োজন। |
1039
- | `minify` | বান্ডেলের আকার কমাতে ডিকশনারিগুলো মিনিফাই করা উচিত কি না তা নির্দিষ্ট করে। | `boolean` | `false` | | • বান্ডেল সংকুচিত করা উচিত কি না তা নির্দিষ্ট করে।<br/>• ডিফল্ট: প্রোডাকশনে `true`।<br/>• `optimize` নিষ্ক্রিয় থাকলে এই বিকল্পটি উপেক্ষা করা হবে।<br/>• `editor.enabled` সত্য হলে এই বিকল্পটি উপেক্ষা করা হবে। |
1040
- | `prune` | ডিকশনারিতে অব্যবহৃত কীগুলো মুছে ফেলা উচিত কি না তা নির্দিষ্ট করে। | `boolean` | `true` | | • বান্ডেলটি পরিষ্কার করা উচিত কি না তা নির্দিষ্ট করে।<br/>• ডিফল্ট: প্রোডাকশনে `true`।<br/>• `optimize` নিষ্ক্রিয় থাকলে এই বিকল্পটি উপেক্ষা করা হবে। |
1041
- | `checkTypes` | বিল্ডের সময় TypeScript টাইপ চেক করে ত্রুটি লগ করবে কি না তা নির্দেশ করে। | `boolean` | `false` | | বিল্ড প্রক্রিয়া ধীর করে দিতে পারে। |
1042
- | `outputFormat` | ডিকশনারির আউটপুট ফরম্যাট নিয়ন্ত্রণ করে। | `('esm' &#124; 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
1043
- | `traversePattern` | অপ্টিমাইজেশন চলাকালীন স্ক্যান করার ফাইলগুলো নির্ধারণ করে এমন প্যাটার্ন। | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | বিল্ড পারফরম্যান্স বাড়াতে রিলেভেন্ট ফাইলে অপ্টিমাইজেশন সীমাবদ্ধ করুন।<br/>• `optimize` বন্ধ থাকলে উপেক্ষা করা হয়।<br/>• গ্লোব প্যাটার্ন ব্যবহার করে। |
1058
+ | ফিল্ড | বর্ণনা | টাইপ | ডিফল্ট | উদাহরণ | মন্তব্য |
1059
+ | --------------------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1060
+ | `mode` | বিল্ড মোড নিয়ন্ত্রণ করে। | `'auto'` &#124; <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: অ্যাপ্লিকেশন বিল্ডের সময় বিল্ড স্বয়ংক্রিয়ভাবে শুরু হয়।<br/>• `'manual'`: কেবল একটি স্পষ্ট বিল্ড কমান্ডের মাধ্যমে কার্যকর হয়।<br/>• ডিকশনারি বিল্ড বন্ধ করার জন্য ব্যবহার করা যেতে পারে (যেমন Node.js এনভায়রনমেন্টে চলা এড়াতে)। |
1061
+ | `optimize` | বিল্ড অপ্টিমাইজেশন করা হবে কি না তা নিয়ন্ত্রণ করে। | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • সংজ্ঞায়িত না থাকলে, ফ্রেমওয়ার্ক বিল্ড (Vite/Next.js) এর সময় অপ্টিমাইজেশন শুরু হয়।<br/>• `true` দেব মোডেও অপ্টিমাইজেশন বাধ্য করে।<br/>• `false` এটি বন্ধ করে দেয়।<br/>• চালু থাকলে, চাকিং অপ্টিমাইজেশনের জন্য ডিকশনারি কল প্রতিস্থাপন করে।<br/>• `@intlayer/babel` এবং `@intlayer/swc` প্লাগইন প্রয়োজন। |
1062
+ | `minify` | বান্ডেলের আকার কমাতে ডিকশনারিগুলো মিনিফাই করা উচিত কি না তা নির্দিষ্ট করে। | `boolean` | `false` | | • বান্ডেল সংকুচিত করা উচিত কি না তা নির্দিষ্ট করে।<br/>• ডিফল্ট: প্রোডাকশনে `true`।<br/>• `optimize` নিষ্ক্রিয় থাকলে এই বিকল্পটি উপেক্ষা করা হবে।<br/>• `editor.enabled` সত্য হলে এই বিকল্পটি উপেক্ষা করা হবে। |
1063
+ | `prune` | ডিকশনারিতে অব্যবহৃত কীগুলো মুছে ফেলা উচিত কি না তা নির্দিষ্ট করে। | `boolean` | `true` | | • বান্ডেলটি পরিষ্কার করা উচিত কি না তা নির্দিষ্ট করে।<br/>• ডিফল্ট: প্রোডাকশনে `true`।<br/>• `optimize` নিষ্ক্রিয় থাকলে এই বিকল্পটি উপেক্ষা করা হবে। |
1064
+ | `checkTypes` | বিল্ডের সময় TypeScript টাইপ চেক করে ত্রুটি লগ করবে কি না তা নির্দেশ করে। | `boolean` | `false` | | বিল্ড প্রক্রিয়া ধীর করে দিতে পারে। |
1065
+ | `chunkGrouping` | প্রতি-লোকেল অভিধান চাঙ্কগুলিকে সেই কোড-স্প্লিট সীমানা অনুসারে গোষ্ঠীভুক্ত করা হবে কিনা যা সেগুলি ব্যবহার করে। | `boolean` | `true` | | • গোষ্ঠীভুক্ত না করলে, বহু কম্পোনেন্ট দিয়ে গঠিত একটি পৃষ্ঠা প্রতিটি অভিধানের জন্য একটি করে অনুরোধ পাঠায়।<br/>• একাধিক সীমানা থেকে পৌঁছানো অভিধানগুলি একটি ভাগ করা চাঙ্কে চলে যায়, তাই কোনো পৃষ্ঠা অন্য পৃষ্ঠার বিষয়বস্তু বহন করে না।<br/>• শুধুমাত্র `importMode: 'dynamic'` ব্যবহারকারী অভিধানের ক্ষেত্রে প্রযোজ্য।<br/>• শুধুমাত্র ক্লায়েন্ট বিল্ডে এবং কেবল বান্ডলিংয়ের সময় প্রযোজ্য (dev-এ নয়)। |
1066
+ | `dictionariesPreload` | অভিধানটি সেই চাঙ্কের সাথে লোড হবে কিনা যা এটি ব্যবহার করে, নাকি সেই চাঙ্ক রেন্ডার হওয়ার পরে আনা হবে। | `boolean` | `true` | | উৎপন্ন এন্ট্রি পয়েন্ট শীর্ষ স্তরে ব্রাউজিং লোকেলের জন্য অপেক্ষা করে, তাই ধীরে লোড হওয়া রুট তার বিষয়বস্তু না আসা পর্যন্ত লোড হয়েছে বলে ধরা হয় না।<br/>• পঠন সাসপেন্ড না হয়ে সিঙ্ক্রোনাসভাবে রেন্ডার হয়, তাই নেভিগেশনে আর লোডিং অবস্থা ঝলকায় না।<br/>• শুধুমাত্র নির্ধারিত লোকেলের জন্য অপেক্ষা করা হয়, তাই পৃষ্ঠাটি কেবল যে ভাষা দেখায় সেটিই ডাউনলোড করে।<br/>• শুধুমাত্র ক্লায়েন্ট বিল্ডে `importMode: 'dynamic'` ব্যবহারকারী অভিধানের ক্ষেত্রে প্রযোজ্য।<br/>• টপ-লেভেল await সমর্থনকারী বান্ডলার প্রয়োজন (Vite, esbuild)। |
1067
+ | `outputFormat` | ডিকশনারির আউটপুট ফরম্যাট নিয়ন্ত্রণ করে। | `('esm' &#124; 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
1068
+ | `traversePattern` | অপ্টিমাইজেশন চলাকালীন স্ক্যান করার ফাইলগুলো নির্ধারণ করে এমন প্যাটার্ন। | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | • বিল্ড পারফরম্যান্স বাড়াতে রিলেভেন্ট ফাইলে অপ্টিমাইজেশন সীমাবদ্ধ করুন।<br/>• `optimize` বন্ধ থাকলে উপেক্ষা করা হয়।<br/>• গ্লোব প্যাটার্ন ব্যবহার করে। |
1044
1069
 
1045
1070
  ---
1046
1071
 
package/docs/bn/eslint.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-08-12
3
- updatedAt: 2026-08-12
3
+ updatedAt: 2026-08-13
4
4
  title: ESLint প্লাগইন | Intlayer এর জন্য লিন্ট নিয়ম
5
5
  description: eslint-plugin-intlayer ব্যবহার করে হার্ডকোডেড স্ট্রিং, ডাইনামিক কল যা Intlayer কম্পাইলার অপ্টিমাইজ করতে পারে না এবং অব্যবহৃত ডিকশনারি সামগ্রী শনাক্ত করুন। React, Vue, Svelte, Angular এবং Astro জুড়ে ESLint এবং oxlint এর সাথে কাজ করে।
6
6
  keywords:
@@ -52,7 +52,7 @@ pnpm add --save-dev eslint-plugin-intlayer
52
52
  yarn add --dev eslint-plugin-intlayer
53
53
  ```
54
54
 
55
- ESLint 9 বা পরবর্তী সংস্করণ (flat config) প্রয়োজন।
55
+ ESLint 9 বা পরবর্তী সংস্করণ (flat config) প্রয়োজন। ESLint 10 সমর্থিত।
56
56
 
57
57
  ## ব্যবহার
58
58
 
@@ -61,20 +61,20 @@ ESLint 9 বা পরবর্তী সংস্করণ (flat config) প্
61
61
  <Tabs defaultTab="eslint">
62
62
  <Tab label="ESLint" value="eslint">
63
63
 
64
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
64
+ ```javascript fileName="eslint.config.mjs"
65
65
  import intlayer from "eslint-plugin-intlayer";
66
66
 
67
67
  export default [...intlayer.configs.recommended];
68
68
  ```
69
69
 
70
- অথবা একে একে নিয়মগুলো সক্ষম করুন:
70
+ অথবা একটি কনফিগ ছড়িয়ে দিন এবং তীব্রতা নিজে নির্ধারণ করুন:
71
71
 
72
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
72
+ ```javascript fileName="eslint.config.mjs"
73
73
  import intlayer from "eslint-plugin-intlayer";
74
74
 
75
75
  export default [
76
+ ...intlayer.configs.recommended,
76
77
  {
77
- plugins: { intlayer },
78
78
  rules: {
79
79
  "intlayer/no-raw-text": "warn",
80
80
  "intlayer/static-dictionary-key": "error",
@@ -144,7 +144,7 @@ const { title } = useIntlayer("home");
144
144
 
145
145
  **বিকল্পসমূহ**
146
146
 
147
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
147
+ ```javascript fileName="eslint.config.mjs"
148
148
  {
149
149
  "intlayer/no-raw-text": [
150
150
  "warn",
@@ -247,7 +247,7 @@ export default {
247
247
 
248
248
  **বিকল্পসমূহ**
249
249
 
250
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
250
+ ```javascript fileName="eslint.config.mjs"
251
251
  {
252
252
  "intlayer/no-unused-content": [
253
253
  "warn",
@@ -296,7 +296,7 @@ export default {
296
296
  | Angular টেমপ্লেট | `.component.html` | `@angular-eslint/template-parser` |
297
297
  | Astro | `.astro` | `astro-eslint-parser` |
298
298
 
299
- ```javascript fileName="eslint.config.mjs" codeFormat="esm"
299
+ ```javascript fileName="eslint.config.mjs"
300
300
  import intlayer from "eslint-plugin-intlayer";
301
301
  import tseslint from "typescript-eslint";
302
302
  import vueParser from "vue-eslint-parser";
@@ -159,7 +159,7 @@ pnpm add -D webpack-bundle-analyzer
159
159
  bun add -d webpack-bundle-analyzer
160
160
  ```
161
161
 
162
- ```typescript fileName="webpack.config.ts
162
+ ```typescript fileName="webpack.config.ts"
163
163
  import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer";
164
164
 
165
165
  export default {