@intlayer/docs 8.3.0 → 8.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/docs/ar/compiler.md +84 -49
  2. package/docs/ar/configuration.md +80 -37
  3. package/docs/ar/intlayer_with_nextjs_16.md +174 -1
  4. package/docs/ar/intlayer_with_nextjs_compiler.md +174 -1
  5. package/docs/ar/intlayer_with_react_router_v7.md +224 -1
  6. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +225 -1
  7. package/docs/ar/intlayer_with_svelte_kit.md +175 -2
  8. package/docs/ar/intlayer_with_tanstack.md +176 -1
  9. package/docs/ar/intlayer_with_vite+preact.md +174 -1
  10. package/docs/ar/intlayer_with_vite+react.md +174 -1
  11. package/docs/ar/intlayer_with_vite+solid.md +174 -1
  12. package/docs/ar/intlayer_with_vite+svelte.md +174 -1
  13. package/docs/ar/intlayer_with_vite+vue.md +174 -1
  14. package/docs/de/compiler.md +83 -48
  15. package/docs/de/configuration.md +434 -212
  16. package/docs/de/intlayer_with_nextjs_16.md +176 -1
  17. package/docs/de/intlayer_with_nextjs_compiler.md +106 -349
  18. package/docs/de/intlayer_with_react_router_v7.md +225 -2
  19. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +221 -79
  20. package/docs/de/intlayer_with_svelte_kit.md +158 -2
  21. package/docs/de/intlayer_with_tanstack.md +159 -1
  22. package/docs/de/intlayer_with_vite+preact.md +157 -1
  23. package/docs/de/intlayer_with_vite+react.md +157 -1
  24. package/docs/de/intlayer_with_vite+solid.md +159 -3
  25. package/docs/de/intlayer_with_vite+svelte.md +157 -1
  26. package/docs/de/intlayer_with_vite+vue.md +157 -1
  27. package/docs/en/compiler.md +60 -33
  28. package/docs/en/configuration.md +80 -57
  29. package/docs/en/intlayer_with_nextjs_16.md +176 -0
  30. package/docs/en/intlayer_with_nextjs_compiler.md +179 -1
  31. package/docs/en/intlayer_with_react_router_v7.md +159 -0
  32. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +159 -0
  33. package/docs/en/intlayer_with_svelte_kit.md +159 -0
  34. package/docs/en/intlayer_with_tanstack.md +160 -1
  35. package/docs/en/intlayer_with_vite+preact.md +159 -0
  36. package/docs/en/intlayer_with_vite+react.md +159 -0
  37. package/docs/en/intlayer_with_vite+solid.md +148 -27
  38. package/docs/en/intlayer_with_vite+svelte.md +159 -0
  39. package/docs/en/intlayer_with_vite+vue.md +142 -41
  40. package/docs/en-GB/compiler.md +66 -34
  41. package/docs/en-GB/configuration.md +78 -36
  42. package/docs/es/compiler.md +83 -48
  43. package/docs/es/configuration.md +429 -206
  44. package/docs/es/intlayer_with_adonisjs.md +1 -1
  45. package/docs/es/intlayer_with_express.md +1 -1
  46. package/docs/es/intlayer_with_fastify.md +1 -1
  47. package/docs/es/intlayer_with_hono.md +1 -1
  48. package/docs/es/intlayer_with_nestjs.md +1 -1
  49. package/docs/es/intlayer_with_nextjs_16.md +176 -3
  50. package/docs/es/intlayer_with_nextjs_compiler.md +175 -2
  51. package/docs/es/intlayer_with_nuxt.md +1 -1
  52. package/docs/es/intlayer_with_react_router_v7.md +227 -4
  53. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +162 -4
  54. package/docs/es/intlayer_with_svelte_kit.md +158 -2
  55. package/docs/es/intlayer_with_tanstack.md +160 -2
  56. package/docs/es/intlayer_with_vite+preact.md +162 -6
  57. package/docs/es/intlayer_with_vite+react.md +160 -4
  58. package/docs/es/intlayer_with_vite+solid.md +163 -7
  59. package/docs/es/intlayer_with_vite+svelte.md +157 -1
  60. package/docs/es/intlayer_with_vite+vue.md +165 -9
  61. package/docs/fr/compiler.md +81 -46
  62. package/docs/fr/configuration.md +355 -134
  63. package/docs/fr/intlayer_with_adonisjs.md +1 -1
  64. package/docs/fr/intlayer_with_express.md +1 -1
  65. package/docs/fr/intlayer_with_fastify.md +1 -1
  66. package/docs/fr/intlayer_with_hono.md +1 -1
  67. package/docs/fr/intlayer_with_nestjs.md +1 -1
  68. package/docs/fr/intlayer_with_nextjs_16.md +183 -7
  69. package/docs/fr/intlayer_with_nextjs_compiler.md +179 -3
  70. package/docs/fr/intlayer_with_react_router_v7.md +229 -3
  71. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +237 -6
  72. package/docs/fr/intlayer_with_svelte_kit.md +158 -2
  73. package/docs/fr/intlayer_with_tanstack.md +159 -1
  74. package/docs/fr/intlayer_with_vite+preact.md +164 -8
  75. package/docs/fr/intlayer_with_vite+react.md +162 -6
  76. package/docs/fr/intlayer_with_vite+solid.md +163 -7
  77. package/docs/fr/intlayer_with_vite+svelte.md +157 -1
  78. package/docs/fr/intlayer_with_vite+vue.md +164 -8
  79. package/docs/hi/compiler.md +81 -46
  80. package/docs/hi/configuration.md +87 -44
  81. package/docs/hi/intlayer_with_nextjs_16.md +174 -1
  82. package/docs/hi/intlayer_with_nextjs_compiler.md +174 -1
  83. package/docs/hi/intlayer_with_react_router_v7.md +224 -1
  84. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +225 -1
  85. package/docs/hi/intlayer_with_svelte_kit.md +158 -2
  86. package/docs/hi/intlayer_with_tanstack.md +159 -1
  87. package/docs/hi/intlayer_with_vite+preact.md +157 -1
  88. package/docs/hi/intlayer_with_vite+react.md +157 -1
  89. package/docs/hi/intlayer_with_vite+solid.md +157 -1
  90. package/docs/hi/intlayer_with_vite+svelte.md +157 -1
  91. package/docs/hi/intlayer_with_vite+vue.md +157 -1
  92. package/docs/id/compiler.md +84 -51
  93. package/docs/id/configuration.md +83 -45
  94. package/docs/id/intlayer_with_nextjs_16.md +174 -1
  95. package/docs/id/intlayer_with_nextjs_compiler.md +174 -1
  96. package/docs/id/intlayer_with_react_router_v7.md +224 -1
  97. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +225 -1
  98. package/docs/id/intlayer_with_svelte_kit.md +158 -2
  99. package/docs/id/intlayer_with_tanstack.md +159 -1
  100. package/docs/id/intlayer_with_vite+preact.md +157 -1
  101. package/docs/id/intlayer_with_vite+react.md +157 -1
  102. package/docs/id/intlayer_with_vite+solid.md +157 -1
  103. package/docs/id/intlayer_with_vite+svelte.md +157 -1
  104. package/docs/id/intlayer_with_vite+vue.md +157 -1
  105. package/docs/it/compiler.md +81 -46
  106. package/docs/it/configuration.md +426 -204
  107. package/docs/it/intlayer_with_nextjs_16.md +174 -1
  108. package/docs/it/intlayer_with_nextjs_compiler.md +174 -1
  109. package/docs/it/intlayer_with_react_router_v7.md +225 -2
  110. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +226 -2
  111. package/docs/it/intlayer_with_svelte_kit.md +158 -2
  112. package/docs/it/intlayer_with_tanstack.md +159 -1
  113. package/docs/it/intlayer_with_vite+preact.md +157 -1
  114. package/docs/it/intlayer_with_vite+react.md +157 -1
  115. package/docs/it/intlayer_with_vite+solid.md +159 -3
  116. package/docs/it/intlayer_with_vite+svelte.md +157 -1
  117. package/docs/it/intlayer_with_vite+vue.md +157 -1
  118. package/docs/ja/compiler.md +94 -58
  119. package/docs/ja/configuration.md +88 -45
  120. package/docs/ja/intlayer_with_nextjs_16.md +174 -1
  121. package/docs/ja/intlayer_with_nextjs_compiler.md +174 -1
  122. package/docs/ja/intlayer_with_react_router_v7.md +184 -394
  123. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +226 -2
  124. package/docs/ja/intlayer_with_svelte_kit.md +119 -595
  125. package/docs/ja/intlayer_with_tanstack.md +131 -642
  126. package/docs/ja/intlayer_with_vite+preact.md +111 -1231
  127. package/docs/ja/intlayer_with_vite+react.md +129 -1304
  128. package/docs/ja/intlayer_with_vite+solid.md +159 -3
  129. package/docs/ja/intlayer_with_vite+svelte.md +157 -1
  130. package/docs/ja/intlayer_with_vite+vue.md +157 -1
  131. package/docs/ko/compiler.md +88 -52
  132. package/docs/ko/configuration.md +87 -44
  133. package/docs/ko/intlayer_with_nextjs_16.md +174 -1
  134. package/docs/ko/intlayer_with_nextjs_compiler.md +174 -1
  135. package/docs/ko/intlayer_with_react_router_v7.md +225 -2
  136. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +226 -2
  137. package/docs/ko/intlayer_with_svelte_kit.md +158 -2
  138. package/docs/ko/intlayer_with_tanstack.md +159 -1
  139. package/docs/ko/intlayer_with_vite+preact.md +157 -1
  140. package/docs/ko/intlayer_with_vite+react.md +157 -1
  141. package/docs/ko/intlayer_with_vite+solid.md +159 -3
  142. package/docs/ko/intlayer_with_vite+svelte.md +157 -1
  143. package/docs/ko/intlayer_with_vite+vue.md +157 -1
  144. package/docs/pl/compiler.md +84 -51
  145. package/docs/pl/configuration.md +83 -37
  146. package/docs/pl/intlayer_with_nextjs_16.md +174 -1
  147. package/docs/pl/intlayer_with_nextjs_compiler.md +174 -1
  148. package/docs/pl/intlayer_with_react_router_v7.md +224 -1
  149. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +225 -1
  150. package/docs/pl/intlayer_with_svelte_kit.md +158 -2
  151. package/docs/pl/intlayer_with_tanstack.md +159 -1
  152. package/docs/pl/intlayer_with_vite+preact.md +157 -1
  153. package/docs/pl/intlayer_with_vite+react.md +157 -1
  154. package/docs/pl/intlayer_with_vite+solid.md +157 -1
  155. package/docs/pl/intlayer_with_vite+svelte.md +157 -1
  156. package/docs/pl/intlayer_with_vite+vue.md +157 -1
  157. package/docs/pt/compiler.md +81 -46
  158. package/docs/pt/configuration.md +404 -194
  159. package/docs/pt/intlayer_with_nextjs_16.md +174 -1
  160. package/docs/pt/intlayer_with_nextjs_compiler.md +174 -1
  161. package/docs/pt/intlayer_with_react_router_v7.md +224 -1
  162. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +225 -1
  163. package/docs/pt/intlayer_with_svelte_kit.md +158 -2
  164. package/docs/pt/intlayer_with_tanstack.md +159 -1
  165. package/docs/pt/intlayer_with_vite+preact.md +157 -1
  166. package/docs/pt/intlayer_with_vite+react.md +157 -1
  167. package/docs/pt/intlayer_with_vite+solid.md +157 -1
  168. package/docs/pt/intlayer_with_vite+svelte.md +157 -1
  169. package/docs/pt/intlayer_with_vite+vue.md +157 -1
  170. package/docs/ru/compiler.md +90 -57
  171. package/docs/ru/configuration.md +76 -46
  172. package/docs/ru/intlayer_with_nextjs_16.md +174 -1
  173. package/docs/ru/intlayer_with_nextjs_compiler.md +174 -1
  174. package/docs/ru/intlayer_with_react_router_v7.md +224 -1
  175. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +225 -1
  176. package/docs/ru/intlayer_with_svelte_kit.md +158 -2
  177. package/docs/ru/intlayer_with_tanstack.md +159 -1
  178. package/docs/ru/intlayer_with_vite+preact.md +157 -1
  179. package/docs/ru/intlayer_with_vite+react.md +157 -1
  180. package/docs/ru/intlayer_with_vite+solid.md +157 -1
  181. package/docs/ru/intlayer_with_vite+svelte.md +157 -1
  182. package/docs/ru/intlayer_with_vite+vue.md +157 -1
  183. package/docs/tr/compiler.md +85 -52
  184. package/docs/tr/configuration.md +83 -40
  185. package/docs/tr/intlayer_with_nextjs_16.md +174 -1
  186. package/docs/tr/intlayer_with_nextjs_compiler.md +174 -1
  187. package/docs/tr/intlayer_with_react_router_v7.md +224 -1
  188. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +225 -1
  189. package/docs/tr/intlayer_with_svelte_kit.md +158 -2
  190. package/docs/tr/intlayer_with_tanstack.md +159 -1
  191. package/docs/tr/intlayer_with_vite+preact.md +157 -1
  192. package/docs/tr/intlayer_with_vite+react.md +157 -1
  193. package/docs/tr/intlayer_with_vite+solid.md +157 -1
  194. package/docs/tr/intlayer_with_vite+svelte.md +157 -1
  195. package/docs/tr/intlayer_with_vite+vue.md +157 -1
  196. package/docs/uk/compiler.md +96 -61
  197. package/docs/uk/configuration.md +83 -37
  198. package/docs/uk/intlayer_with_nextjs_16.md +174 -1
  199. package/docs/uk/intlayer_with_nextjs_compiler.md +174 -1
  200. package/docs/uk/intlayer_with_react_router_v7.md +224 -1
  201. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +225 -1
  202. package/docs/uk/intlayer_with_svelte_kit.md +157 -1
  203. package/docs/uk/intlayer_with_tanstack.md +159 -1
  204. package/docs/uk/intlayer_with_vite+preact.md +157 -1
  205. package/docs/uk/intlayer_with_vite+react.md +157 -1
  206. package/docs/uk/intlayer_with_vite+solid.md +157 -1
  207. package/docs/uk/intlayer_with_vite+svelte.md +157 -1
  208. package/docs/uk/intlayer_with_vite+vue.md +157 -1
  209. package/docs/vi/compiler.md +85 -50
  210. package/docs/vi/configuration.md +85 -39
  211. package/docs/vi/intlayer_with_nextjs_16.md +174 -1
  212. package/docs/vi/intlayer_with_nextjs_compiler.md +174 -1
  213. package/docs/vi/intlayer_with_react_router_v7.md +224 -1
  214. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +225 -1
  215. package/docs/vi/intlayer_with_svelte_kit.md +158 -2
  216. package/docs/vi/intlayer_with_tanstack.md +159 -1
  217. package/docs/vi/intlayer_with_vite+preact.md +157 -1
  218. package/docs/vi/intlayer_with_vite+react.md +157 -1
  219. package/docs/vi/intlayer_with_vite+solid.md +157 -1
  220. package/docs/vi/intlayer_with_vite+svelte.md +157 -1
  221. package/docs/vi/intlayer_with_vite+vue.md +157 -1
  222. package/docs/zh/compiler.md +84 -49
  223. package/docs/zh/configuration.md +80 -37
  224. package/docs/zh/intlayer_with_adonisjs.md +1 -1
  225. package/docs/zh/intlayer_with_express.md +1 -1
  226. package/docs/zh/intlayer_with_fastify.md +1 -1
  227. package/docs/zh/intlayer_with_hono.md +1 -1
  228. package/docs/zh/intlayer_with_nestjs.md +1 -1
  229. package/docs/zh/intlayer_with_nextjs_16.md +174 -1
  230. package/docs/zh/intlayer_with_nextjs_compiler.md +174 -1
  231. package/docs/zh/intlayer_with_react_router_v7.md +227 -4
  232. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +228 -4
  233. package/docs/zh/intlayer_with_svelte_kit.md +158 -2
  234. package/docs/zh/intlayer_with_tanstack.md +159 -1
  235. package/docs/zh/intlayer_with_vite+preact.md +159 -3
  236. package/docs/zh/intlayer_with_vite+react.md +157 -1
  237. package/docs/zh/intlayer_with_vite+solid.md +161 -5
  238. package/docs/zh/intlayer_with_vite+svelte.md +157 -1
  239. package/docs/zh/intlayer_with_vite+vue.md +158 -2
  240. package/package.json +6 -6
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-09-09
3
- updatedAt: 2026-03-10
3
+ updatedAt: 2026-03-12
4
4
  title: مترجم Intlayer | استخراج المحتوى الآلي للتدويل
5
5
  description: قم بأتمتة عملية التدويل الخاصة بك باستخدام مترجم Intlayer. استخرج المحتوى مباشرة من مكوناتك لتحقيق تدويل أسرع وأكثر كفاءة في Vite و Next.js والمزيد.
6
6
  keywords:
@@ -22,7 +22,7 @@ slugs:
22
22
  history:
23
23
  - version: 8.2.0
24
24
  date: 2026-03-09
25
- changes: Update compiler options, add FilePathPattern support
25
+ changes: تحديث خيارات المترجم، إضافة دعم FilePathPattern
26
26
  - version: 8.1.7
27
27
  date: 2026-02-25
28
28
  changes: تحديث خيارات المترجم
@@ -136,9 +136,9 @@ const {
136
136
  module.exports = {
137
137
  presets: ["next/babel"],
138
138
  plugins: [
139
- // Extract content from components into dictionaries
139
+ // استخراج المحتوى من المكونات إلى قواميس
140
140
  [intlayerExtractBabelPlugin, getExtractPluginOptions()],
141
- // Optimize imports by replacing useIntlayer with direct dictionary imports
141
+ // تحسين الاستيراد عن طريق استبدال useIntlayer باستيراد قواميس مباشر
142
142
  [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
143
143
  ],
144
144
  };
@@ -149,73 +149,85 @@ module.exports = {
149
149
  See complete tutorial: [Intlayer Compiler with Next.js](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_nextjs_compiler.md)
150
150
 
151
151
  </Tab>
152
+ </Tabs>
152
153
 
153
154
  ### التكوين المخصص
154
155
 
155
156
  لتخصيص سلوك المترجم، يمكنك تحديث ملف `intlayer.config.ts` في جذر مشروعك.
156
157
 
157
- ```ts fileName="intlayer.config.ts"
158
+ ````ts fileName="intlayer.config.ts"
158
159
  import { type IntlayerConfig, Locales } from "intlayer";
159
160
 
160
161
  const config: IntlayerConfig = {
161
162
  compiler: {
162
163
  /**
164
+ * يشير إلى ما إذا كان يجب تمكين المجمّع.
163
165
  * اضبط على 'build-only' لتخطي المجمّع أثناء التطوير وتسريع أوقات التشغيل.
164
166
  */
165
167
  enabled: true,
166
168
 
167
169
  /**
168
- * Pattern to traverse the code to optimize.
170
+ * يحدد مسار ملفات الإخراج. يستبدل `outputDir`.
171
+ *
172
+ * - المسارات التي تبدأ بـ `./` يتم حلها بالنسبة لدليل المكون.
173
+ * - المسارات التي تبدأ بـ `/` يتم حلها بالنسبة لجذر المشروع (`baseDir`).
174
+ *
175
+ * - تضمين متغير `{{locale}}` في المسار سيمكن توليد قواميس منفصلة لكل لغة.
176
+ *
177
+ * أمثلة:
178
+ * ```ts
179
+ * {
180
+ * // إنشاء ملف .content.ts متعدد اللغات بجانب المكون
181
+ * output: ({ fileName, extension }) => `./${fileName}${extension}`,
182
+ *
183
+ * // output: './{{fileName}}{{extension}}', // تعبير مكافئ باستخدام قالب السلسلة
184
+ * }
185
+ * ```
186
+ *
187
+ * ```ts
188
+ * {
189
+ * // إنشاء ملفات JSON مركزية لكل لغة في جذر المشروع
190
+ * output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
191
+ *
192
+ * // output: '/locales/{{locale}}/{{key}}.content.json', // تعبير مكافئ باستخدام قالب السلسلة
193
+ * }
194
+ * ```
195
+ *
196
+ * قائمة المتغيرات:
197
+ * - `fileName`: اسم الملف.
198
+ * - `key`: مفتاح المحتوى.
199
+ * - `locale`: لغة المحتوى.
200
+ * - `extension`: امتداد الملف.
201
+ * - `componentFileName`: اسم ملف المكون.
202
+ * - `componentExtension`: امتداد ملف المكون.
203
+ * - `format`: تنسيق القاموس.
204
+ * - `componentFormat`: تنسيق قاموس المكون.
205
+ * - `componentDirPath`: مسار دليل المكون.
169
206
  */
170
- transformPattern: [
171
- "**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}",
172
- "!**/node_modules/**",
173
- ],
207
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
174
208
 
175
209
  /**
176
- * Pattern to exclude from the optimization.
177
- */
178
- excludePattern: ["**/node_modules/**"],
179
-
180
- /**
181
- * دليل الإخراج للقواميس المحسنة.
210
+ * يشير إلى ما إذا كان يجب حفظ المكونات بعد تحويلها.
211
+ * بهذه الطريقة، يمكن تشغيل المجمّع مرة واحدة فقط لتحويل التطبيق، ثم يمكن إزالته.
182
212
  */
183
- output: ({ key }) => `compiler/${key}.content.json`,
213
+ saveComponents: false,
184
214
 
185
215
  /**
186
- * أدخل المحتوى فقط في الملف الذي تم إنشاؤه، بدون مفتاح.
216
+ * أدخل المحتوى فقط في الملف الذي تم إنشاؤه. مفيد لإخراج JSON لـ i18next أو ICU MessageFormat لكل لغة.
217
+ *
218
+ * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`
187
219
  */
188
220
  noMetadata: false,
189
221
 
190
222
  /**
191
223
  * بادئة مفتاح القاموس
192
224
  */
193
- dictionaryKeyPrefix: "", // Remove base prefix
194
-
195
- /**
196
- * يشير إلى ما إذا كان يجب حفظ المكونات بعد تحويلها.
197
- * بهذه الطريقة، يمكن تشغيل المجمّع مرة واحدة فقط لتحويل التطبيق، ثم يمكن إزالته.
198
- */
199
- saveComponents: false,
225
+ dictionaryKeyPrefix: "", // إضافة بادئة اختيارية لمفاتيح القواميس المستخرجة
200
226
  },
201
227
  };
202
228
 
203
229
  export default config;
204
- ```
205
-
206
- ### ملء الترجمات المفقودة
207
-
208
- يوفر Intlayer أداة CLI لمساعدتك في ملء الترجمات المفقودة. يمكنك استخدام أمر `intlayer` لاختبار وملء الترجمات المفقودة من الكود الخاص بك.
209
-
210
- ```bash
211
- npx intlayer test # اختبار ما إذا كانت هناك ترجمات مفقودة
212
- ```
213
-
214
- ```bash
215
- npx intlayer fill # ملء الترجمات المفقودة
216
- ```
217
-
218
- > لمزيد من التفاصيل، راجع [توثيق CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/cli/ci.md)
230
+ ````
219
231
 
220
232
  ### مرجع تكوين المجمّع
221
233
 
@@ -225,36 +237,37 @@ npx intlayer fill # ملء الترجمات المفقودة
225
237
  - _النوع_: `boolean | 'build-only'`
226
238
  - _الافتراضي_: `true`
227
239
  - _الوصف_: يشير إلى ما إذا كان يجب تمكين المجمّع.
240
+
228
241
  - **dictionaryKeyPrefix**:
229
242
  - _النوع_: `string`
230
- - _الافتراضي_: `'comp-'`
243
+ - _الافتراضي_: `''`
231
244
  - _الوصف_: بادئة لمفاتيح القواميس المستخرجة.
245
+
232
246
  - **transformPattern**:
233
247
  - _النوع_: `string | string[]`
234
248
  - _الافتراضي_: `['**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}', '!**/node_modules/**']`
235
- - _الوصف_: أنماط لاجتياز الكود لتحسينه.
249
+ - _الوصف_: (مهجور: استخدم `build.traversePattern` بدلاً من ذلك) أنماط لاجتياز الكود لتحسينه.
250
+
236
251
  - **excludePattern**:
237
252
  - _النوع_: `string | string[]`
238
253
  - _الافتراضي_: `['**/node_modules/**']`
239
- - _الوصف_: أنماط لاستبعادها من التحسين.
240
- - **outputDir** (Deprecated):
241
- - _النوع_: `string`
242
- - _الافتراضي_: `'compiler'`
243
- - _الوصف_: الدليل الذي سيتم تخزين القواميس المستخرجة فيه.
254
+ - _الوصف_: (مهجور: استخدم `build.traversePattern` بدلاً من ذلك) أنماط لاستبعادها من التحسين.
244
255
 
245
256
  - **output**:
246
257
  - _النوع_: `FilePathPattern`
247
258
  - _الافتراضي_: `({ key }) => 'compiler/${key}.content.json'`
248
259
  - _الوصف_: يحدد مسار ملفات الإخراج. يستبدل `outputDir`. يتعامل مع المتغيرات الديناميكية مثل `{{locale}}` و `{{key}}` و `{{fileName}}` و `{{extension}}` و `{{format}}` و `{{dirPath}}` و `{{componentFileName}}` و `{{componentExtension}}` و `{{componentFormat}}`. يمكن تعيينه كسلسلة باستخدام تنسيق `'my/{{var}}/path'`، أو كدالة.
249
260
  - _ملاحظة_: يتم حل مسار `./**/*` بالنسبة للمكون. يتم حل مسار `/**/*` بالنسبة لـ `baseDir` الخاص بـ Intlayer.
261
+ - _ملاحظة_: إذا تم تعريف اللغة في المسار، سيتم توليد القواميس لكل لغة.
250
262
  - _مثال_: `output: ({ locale, key }) => 'compiler/${locale}/${key}.json'`
251
263
 
252
264
  - **noMetadata**:
253
265
  - _النوع_: `boolean`
254
266
  - _الافتراضي_: `false`
255
- - _الوصف_: يشير إلى ما إذا كان سيتم حفظ البيانات الوصفية في الملف. إذا كان صحيحا، فلن يحفظ المجمّع البيانات الوصفية للقواميس (المفتاح، غلاف المحتوى).
267
+ - _الوصف_: يشير إلى ما إذا كان سيتم حفظ البيانات الوصفية في الملف. إذا كان صحيحا، فلن يحفظ المجمّع البيانات الوصفية للقواميس (المفتاح، غلاف المحتوى). مفيد لمخرجات JSON i18next أو ICU MessageFormat لكل لغة.
256
268
  - _ملاحظة_: مفيد إذا تم استخدامه مع إضافة `loadJSON`.
257
- - _مثال_: إذا كان `true`:
269
+ - _مثال_:
270
+ إذا كان `true`:
258
271
  ```json
259
272
  {
260
273
  "key": "value"
@@ -274,3 +287,25 @@ npx intlayer fill # ملء الترجمات المفقودة
274
287
  - _النوع_: `boolean`
275
288
  - _الافتراضي_: `false`
276
289
  - _الوصف_: يشير إلى ما إذا كان يجب حفظ المكونات بعد تحويلها.
290
+
291
+ ### ملء الترجمات المفقودة
292
+
293
+ يوفر Intlayer أداة CLI لمساعدتك في ملء الترجمات المفقودة. يمكنك استخدام أمر `intlayer` لاختبار وملء الترجمات المفقودة من الكود الخاص بك.
294
+
295
+ ```bash
296
+ npx intlayer test # اختبار ما إذا كانت هناك ترجمات مفقودة
297
+ ```
298
+
299
+ ```bash
300
+ npx intlayer fill # ملء الترجمات المفقودة
301
+ ```
302
+
303
+ ### الاستخراج
304
+
305
+ يوفر Intlayer أداة CLI لاستخراج المحتوى من الكود الخاص بك. يمكنك استخدام أمر `intlayer extract` لاستخراج المحتوى من الكود الخاص بك.
306
+
307
+ ```bash
308
+ npx intlayer extract
309
+ ```
310
+
311
+ > لمزيد من التفاصيل، راجع [توثيق CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/cli/index.md)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-13
3
- updatedAt: 2026-03-11
3
+ updatedAt: 2026-03-12
4
4
  title: التهيئة
5
5
  description: تعلّم كيفية تهيئة Intlayer لتطبيقك. فهم الإعدادات والخيارات المختلفة المتاحة لتخصيص Intlayer حسب احتياجاتك.
6
6
  keywords:
@@ -15,7 +15,7 @@ slugs:
15
15
  - configuration
16
16
  history:
17
17
  - version: 8.3.0
18
- data: 2026-03-11
18
+ date: 2026-03-11
19
19
  changes: نقل 'baseDir' من تكوين 'content' إلى تكوين 'system'
20
20
  - version: 8.2.0
21
21
  date: 2026-03-09
@@ -92,7 +92,7 @@ history:
92
92
 
93
93
  ## مثال على ملف التهيئة
94
94
 
95
- ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
95
+ ````typescript fileName="intlayer.config.ts" codeFormat="typescript"
96
96
  import { Locales, type IntlayerConfig } from "intlayer";
97
97
  import { nextjsRewrite } from "intlayer/routing";
98
98
  import { z } from "zod";
@@ -190,7 +190,7 @@ const config: IntlayerConfig = {
190
190
  * Options: 'cookie', 'localStorage', 'sessionStorage', 'header', or an array of these.
191
191
  * Default: ['cookie', 'header']
192
192
  */
193
- storage: "cookie",
193
+ storage: ["cookie", "header"],
194
194
 
195
195
  /**
196
196
  * Base path for the application URLs.
@@ -327,6 +327,17 @@ const config: IntlayerConfig = {
327
327
  * Base URL for the AI API.
328
328
  */
329
329
  baseURL: "http://localhost:3000",
330
+
331
+ /**
332
+ * تسلسل البيانات
333
+ *
334
+ * الخيارات:
335
+ * - "json": معيار ، موثوق ؛ يستخدم المزيد من الرموز.
336
+ * - "toon": عدد أقل من الرموز المميزة ، أقل اتساقا من JSON.
337
+ *
338
+ * الافتراضي: "json"
339
+ */
340
+ dataSerialization: "json",
330
341
  },
331
342
 
332
343
  /**
@@ -426,42 +437,70 @@ const config: IntlayerConfig = {
426
437
  compiler: {
427
438
  /**
428
439
  * يشير إلى ما إذا كان يجب تمكين المجمّع.
440
+ *
441
+ * - false : تعطيل المجمّع.
442
+ * - true : تمكين المجمّع.
443
+ * - "build-only" : تخطي المجمّع أثناء التطوير لتسريع أوقات التشغيل.
444
+ *
445
+ * الافتراضي : false
429
446
  */
430
447
  enabled: true,
431
448
 
432
449
  /**
433
- * Pattern to traverse the code to optimize.
434
- */
435
- transformPattern: [
436
- "**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}",
437
- "!**/node_modules/**",
438
- ],
439
-
440
- /**
441
- * Pattern to exclude from the optimization.
450
+ * يحدد مسار ملفات الإخراج. يستبدل `outputDir`.
451
+ *
452
+ * - المسارات التي تبدأ بـ `./` يتم حلها بالنسبة لدليل المكون.
453
+ * - المسارات التي تبدأ بـ `/` يتم حلها بالنسبة لجذر المشروع (`baseDir`).
454
+ *
455
+ * - تضمين متغير `{{locale}}` في المسار سيمكن توليد قواميس منفصلة لكل لغة.
456
+ *
457
+ * أمثلة:
458
+ * ```ts
459
+ * {
460
+ * // إنشاء ملف .content.ts متعدد اللغات بجانب المكون
461
+ * output: ({ fileName, extension }) => `./${fileName}${extension}`,
462
+ *
463
+ * // output: './{{fileName}}{{extension}}', // تعبير مكافئ باستخدام قالب السلسلة
464
+ * }
465
+ * ```
466
+ *
467
+ * ```ts
468
+ * {
469
+ * // إنشاء ملفات JSON مركزية لكل لغة في جذر المشروع
470
+ * output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
471
+ *
472
+ * // output: '/locales/{{locale}}/{{key}}.content.json', // تعبير مكافئ باستخدام قالب السلسلة
473
+ * }
474
+ * ```
475
+ *
476
+ * قائمة المتغيرات:
477
+ * - `fileName`: اسم الملف.
478
+ * - `key`: مفتاح المحتوى.
479
+ * - `locale`: لغة المحتوى.
480
+ * - `extension`: امتداد الملف.
481
+ * - `componentFileName`: اسم ملف المكون.
482
+ * - `componentExtension`: امتداد ملف المكون.
483
+ * - `format`: تنسيق القاموس.
484
+ * - `componentFormat`: تنسيق قاموس المكون.
485
+ * - `componentDirPath`: مسار دليل المكون.
442
486
  */
443
- excludePattern: ["**/node_modules/**"],
487
+ output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
444
488
 
445
489
  /**
446
- * دليل الإخراج للقواميس المحسنة.
490
+ * يشير إلى ما إذا كان يجب حفظ المكونات بعد تحويلها.
491
+ * بهذه الطريقة، يمكن تشغيل المجمّع مرة واحدة فقط لتحويل التطبيق، ثم يمكن إزالته.
447
492
  */
448
- output: ({ key }) => `compiler/${key}.content.json`,
493
+ saveComponents: false,
449
494
 
450
495
  /**
451
- * أدخل المحتوى فقط في الملف الذي تم إنشاؤه، بدون مفتاح.
496
+ * أدخل المحتوى فقط في الملف الذي تم إنشاؤه. مفيد لمخرجات JSON i18next أو ICU MessageFormat لكل لغة.
452
497
  */
453
498
  noMetadata: false,
454
499
 
455
500
  /**
456
501
  * بادئة مفتاح القاموس
457
502
  */
458
- dictionaryKeyPrefix: "", // Remove base prefix
459
-
460
- /**
461
- * يشير إلى ما إذا كان يجب حفظ المكونات بعد تحويلها.
462
- * بهذه الطريقة، يمكن تشغيل المجمّع مرة واحدة فقط لتحويل التطبيق، ثم يمكن إزالته.
463
- */
464
- saveComponents: false,
503
+ dictionaryKeyPrefix: "", // إضافة بادئة اختيارية لمفاتيح القاموس المستخرجة
465
504
  },
466
505
 
467
506
  /**
@@ -480,7 +519,7 @@ const config: IntlayerConfig = {
480
519
  };
481
520
 
482
521
  export default config;
483
- ```
522
+ ````
484
523
 
485
524
  ## مرجع التهيئة
486
525
 
@@ -1042,7 +1081,7 @@ export default config;
1042
1081
 
1043
1082
  - **dictionaryKeyPrefix**:
1044
1083
  - _النوع_: `string`
1045
- - _الافتراضي_: `'comp-'`
1084
+ - _الافتراضي_: `''`
1046
1085
  - _الوصف_: بادئة لمفاتيح القاموس المستخرجة.
1047
1086
  - _المثال_: `'my-key-'`
1048
1087
  - _ملاحظة_: عند استخراج القواميس، يتم إنشاء المفتاح بناءً على اسم الملف. يتم إضافة هذه البادئة إلى المفتاح الذي تم إنشاؤه لمنع التضارب.
@@ -1066,24 +1105,28 @@ export default config;
1066
1105
  - _الوصف_: الأنماط التي تحدد الملفات التي يجب استبعادها أثناء التحسين.
1067
1106
  - _المثال_: `['**/node_modules/**', '!**/node_modules/react/**']`
1068
1107
 
1069
- - **outputDir**:
1070
- - _النوع_: `string`
1071
- - _الافتراضي_: `'compiler'`
1072
- - _الوصف_: الدليل الذي سيتم تخزين القواميس المستخرجة فيه، بالنسبة لمسار أساس مشروعك.
1073
-
1074
1108
  - **output**:
1075
1109
  - _النوع_: `FilePathPattern`
1076
- - _الافتراضي_: `({ key }) => 'compiler/${key}.content.json'`
1077
- - _الوصف_: يحدد مسار ملفات الإخراج. يستبدل `outputDir`. يتعامل مع المتغيرات الديناميكية مثل `{{locale}}` و `{{key}}` و `{{fileName}}` و `{{extension}}` و `{{format}}` و `{{dirPath}}` و `{{componentFileName}}` و `{{componentExtension}}` و `{{componentFormat}}`. يمكن تعيينه كسلسلة باستخدام تنسيق `'my/{{var}}/path'`، أو كدالة.
1078
- - _ملاحظة_: يتم حل مسار `./**/*` بالنسبة للمكون. يتم حل مسار `/**/*` بالنسبة لـ `baseDir` الخاص بـ Intlayer.
1079
- - _مثال_: `output: ({ locale, key }) => 'compiler/${locale}/${key}.json'`
1110
+ - _الافتراضي_: `undefined`
1111
+ - _الوصف_: يحدد مسار ملفات الإخراج. يستبدل `outputDir`. يدعم المتغيرات الديناميكية عبر قالب سلسلة أو دالة. المتغيرات المدعومة: `{{fileName}}`, `{{key}}`, `{{locale}}`, `{{extension}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{format}}`, `{{componentFormat}}`, `{{componentDirPath}}`.
1112
+ - _ملاحظة_: يتم حل المسارات التي تبدأ بـ `./` بالنسبة لدليل المكون. يتم حل المسارات التي تبدأ بـ `/` بالنسبة لجذر المشروع (`baseDir`).
1113
+ - _ملاحظة_: تضمين المتغير `{{locale}}` في المسار سيمكن من توليد قواميس منفصلة حسب اللغة.
1114
+ - _مثال_:
1115
+ - **إنشاء ملفات متعددة اللغات بجانب المكون**:
1116
+ - سلسلة: `'./{{fileName}}{{extension}}'`
1117
+ - دالة: `({ fileName, extension }) => \`./${fileName}${extension}\``
1118
+
1119
+ - **إخراج ملفات JSON مركزية حسب اللغة**:
1120
+ - سلسلة: `'/locales/{{locale}}/{{key}}.content.json'`
1121
+ - دالة: `({ key, locale }) => \`/locales/${locale}/${key}.content.json\``
1080
1122
 
1081
1123
  - **noMetadata**:
1082
1124
  - _النوع_: `boolean`
1083
1125
  - _الافتراضي_: `false`
1084
- - _الوصف_: يشير إلى ما إذا كان سيتم حفظ البيانات الوصفية في الملف. إذا كان صحيحا، فلن يحفظ المجمّع البيانات الوصفية للقواميس (المفتاح، غلاف المحتوى).
1126
+ - _الوصف_: يشير إلى ما إذا كان سيتم حفظ البيانات الوصفية في الملف. إذا كان صحيحا، فلن يحفظ المجمّع البيانات الوصفية للقواميس (المفتاح، غلاف المحتوى). مفيد لمخرجات JSON i18next أو ICU MessageFormat لكل لغة.
1085
1127
  - _ملاحظة_: مفيد إذا تم استخدامه مع إضافة `loadJSON`.
1086
- - _مثال_: إذا كان `true`:
1128
+ - _مثال_:
1129
+ إذا كان `true`:
1087
1130
  ```json
1088
1131
  {
1089
1132
  "key": "value"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-12-06
3
- updatedAt: 2025-12-30
3
+ updatedAt: 2026-03-12
4
4
  title: Next.js i18n - كيفية ترجمة تطبيق Next.js 16 في 2026
5
5
  description: اكتشف كيفية جعل موقع Next.js 16 الخاص بك متعدد اللغات. اتبع الوثائق لتدويل (i18n) وترجمته.
6
6
  keywords:
@@ -1562,6 +1562,179 @@ const Link = ({ href, children, ...props }) => {
1562
1562
  };
1563
1563
  ```
1564
1564
 
1565
+ ### (اختياري) خطوة 1 : استخراج محتوى مكوناتك
1566
+
1567
+ إذا كان لديك قاعدة بيانات كود موجودة، فقد يكون تحويل آلاف الملفات مستهلكًا للوقت.
1568
+
1569
+ لتسهيل هذه العملية، يقترح Intlayer [مترجمًا](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/compiler.md) / [مستخرجًا](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/cli/extract.md) لتحويل مكوناتك واستخراج المحتوى.
1570
+
1571
+ لإعداده، يمكنك إضافة قسم `compiler` في ملف `intlayer.config.ts` الخاص بك:
1572
+
1573
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
1574
+ import { type IntlayerConfig } from "intlayer";
1575
+
1576
+ const config: IntlayerConfig = {
1577
+ // ... بقية التكوين الخاص بك
1578
+ compiler: {
1579
+ /**
1580
+ * يشير إلى ما إذا كان يجب تمكين المترجم.
1581
+ */
1582
+ enabled: true,
1583
+
1584
+ /**
1585
+ * يحدد مسار ملفات المخرجات
1586
+ */
1587
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
1588
+
1589
+ /**
1590
+ * يشير إلى ما إذا كان يجب حفظ المكونات بعد تحويلها. بهذه الطريقة، يمكن تشغيل المترجم مرة واحدة فقط لتحويل التطبيق، ثم يمكن إزالته.
1591
+ */
1592
+ saveComponents: false,
1593
+
1594
+ /**
1595
+ * بادئة مفتاح القاموس
1596
+ */
1597
+ dictionaryKeyPrefix: "",
1598
+ },
1599
+ };
1600
+
1601
+ export default config;
1602
+ ```
1603
+
1604
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
1605
+ /** @type {import('intlayer').IntlayerConfig} */
1606
+ const config = {
1607
+ // ... بقية التكوين الخاص بك
1608
+ compiler: {
1609
+ /**
1610
+ * يشير إلى ما إذا كان يجب تمكين المترجم.
1611
+ */
1612
+ enabled: true,
1613
+
1614
+ /**
1615
+ * يحدد مسار ملفات المخرجات
1616
+ */
1617
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
1618
+
1619
+ /**
1620
+ * يشير إلى ما إذا كان يجب حفظ المكونات بعد تحويلها. بهذه الطريقة، يمكن تشغيل المترجم مرة واحدة فقط لتحويل التطبيق، ثم يمكن إزالته.
1621
+ */
1622
+ saveComponents: false,
1623
+
1624
+ /**
1625
+ * بادئة مفتاح القاموس
1626
+ */
1627
+ dictionaryKeyPrefix: "",
1628
+ },
1629
+ };
1630
+
1631
+ export default config;
1632
+ ```
1633
+
1634
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
1635
+ /** @type {import('intlayer').IntlayerConfig} */
1636
+ const config = {
1637
+ // ... بقية التكوين الخاص بك
1638
+ compiler: {
1639
+ /**
1640
+ * يشير إلى ما إذا كان يجب تمكين المترجم.
1641
+ */
1642
+ enabled: true,
1643
+
1644
+ /**
1645
+ * يحدد مسار ملفات المخرجات
1646
+ */
1647
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
1648
+
1649
+ /**
1650
+ * يشير إلى ما إذا كان يجب حفظ المكونات بعد تحويلها. بهذه الطريقة، يمكن تشغيل المترجم مرة واحدة فقط لتحويل التطبيق، ثم يمكن إزالته.
1651
+ */
1652
+ saveComponents: false,
1653
+
1654
+ /**
1655
+ * بادئة مفتاح القاموس
1656
+ */
1657
+ dictionaryKeyPrefix: "",
1658
+ },
1659
+ };
1660
+
1661
+ module.exports = config;
1662
+ ```
1663
+
1664
+ <Tabs>
1665
+ <Tab value='أمر الاستخراج'>
1666
+
1667
+ قم بتشغيل المستخرج لتحويل مكوناتك واستخراج المحتوى
1668
+
1669
+ ```bash packageManager="npm"
1670
+ npx intlayer extract
1671
+ ```
1672
+
1673
+ ```bash packageManager="pnpm"
1674
+ pnpm intlayer extract
1675
+ ```
1676
+
1677
+ ```bash packageManager="yarn"
1678
+ yarn intlayer extract
1679
+ ```
1680
+
1681
+ ```bash packageManager="bun"
1682
+ bunx intlayer extract
1683
+ ```
1684
+
1685
+ </Tab>
1686
+ <Tab value='مترجم Babel'>
1687
+
1688
+ ```bash packageManager="npm"
1689
+ npm install @intlayer/babel --save-dev
1690
+ ```
1691
+
1692
+ ```bash packageManager="pnpm"
1693
+ pnpm add @intlayer/babel --save-dev
1694
+ ```
1695
+
1696
+ ```bash packageManager="yarn"
1697
+ yarn add @intlayer/babel --save-dev
1698
+ ```
1699
+
1700
+ ```bash packageManager="bun"
1701
+ bun add @intlayer/babel --dev
1702
+ ```
1703
+
1704
+ ```js fileName="babel.config.js"
1705
+ const {
1706
+ intlayerExtractBabelPlugin,
1707
+ getExtractPluginOptions,
1708
+ } = require("@intlayer/babel");
1709
+
1710
+ module.exports = {
1711
+ presets: ["next/babel"],
1712
+ plugins: [
1713
+ // استخراج المحتوى من المكونات إلى القواميس
1714
+ [intlayerExtractBabelPlugin, getExtractPluginOptions()],
1715
+ ],
1716
+ };
1717
+ ```
1718
+
1719
+ ```bash packageManager="npm"
1720
+ npm run build # أو npm run dev
1721
+ ```
1722
+
1723
+ ```bash packageManager="pnpm"
1724
+ pnpm run build # Or pnpm run dev
1725
+ ```
1726
+
1727
+ ```bash packageManager="yarn"
1728
+ yarn build # Or yarn dev
1729
+ ```
1730
+
1731
+ ```bash packageManager="bun"
1732
+ bun run build # Or bun run dev
1733
+ ```
1734
+
1735
+ </Tab>
1736
+ </Tabs>
1737
+
1565
1738
  #### كيف يعمل
1566
1739
 
1567
1740
  - **اكتشاف الروابط الخارجية**: