@intlayer/docs 5.8.0-canary.0 → 5.8.1-canary.0

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 (223) hide show
  1. package/blog/ar/intlayer_with_next-i18next.md +2 -2
  2. package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +96 -219
  3. package/blog/ar/react-i18next_vs_react-intl_vs_intlayer.md +88 -129
  4. package/blog/ar/vue-i18n_vs_intlayer.md +268 -0
  5. package/blog/de/intlayer_with_next-i18next.md +2 -2
  6. package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
  7. package/blog/de/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
  8. package/blog/de/vue-i18n_vs_intlayer.md +268 -0
  9. package/blog/en/intlayer_with_next-i18next.md +2 -2
  10. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
  11. package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +88 -120
  12. package/blog/en/vue-i18n_vs_intlayer.md +276 -0
  13. package/blog/en-GB/intlayer_with_next-i18next.md +2 -2
  14. package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +85 -218
  15. package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +80 -130
  16. package/blog/en-GB/vue-i18n_vs_intlayer.md +258 -0
  17. package/blog/es/intlayer_with_next-i18next.md +2 -2
  18. package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
  19. package/blog/es/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
  20. package/blog/es/vue-i18n_vs_intlayer.md +268 -0
  21. package/blog/fr/intlayer_with_next-i18next.md +2 -2
  22. package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +91 -214
  23. package/blog/fr/react-i18next_vs_react-intl_vs_intlayer.md +86 -127
  24. package/blog/fr/vue-i18n_vs_intlayer.md +269 -0
  25. package/blog/hi/intlayer_with_next-i18next.md +2 -2
  26. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +97 -220
  27. package/blog/hi/react-i18next_vs_react-intl_vs_intlayer.md +89 -130
  28. package/blog/hi/vue-i18n_vs_intlayer.md +268 -0
  29. package/blog/it/intlayer_with_next-i18next.md +2 -2
  30. package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +91 -214
  31. package/blog/it/react-i18next_vs_react-intl_vs_intlayer.md +86 -127
  32. package/blog/it/vue-i18n_vs_intlayer.md +268 -0
  33. package/blog/ja/intlayer_with_next-i18next.md +2 -2
  34. package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
  35. package/blog/ja/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
  36. package/blog/ja/vue-i18n_vs_intlayer.md +268 -0
  37. package/blog/ko/intlayer_with_next-i18next.md +2 -2
  38. package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +95 -217
  39. package/blog/ko/react-i18next_vs_react-intl_vs_intlayer.md +89 -130
  40. package/blog/ko/vue-i18n_vs_intlayer.md +268 -0
  41. package/blog/pt/intlayer_with_next-i18next.md +2 -2
  42. package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
  43. package/blog/pt/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
  44. package/blog/pt/vue-i18n_vs_intlayer.md +268 -0
  45. package/blog/ru/intlayer_with_next-i18next.md +2 -2
  46. package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +94 -217
  47. package/blog/ru/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
  48. package/blog/ru/vue-i18n_vs_intlayer.md +268 -0
  49. package/blog/zh/intlayer_with_next-i18next.md +2 -2
  50. package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
  51. package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
  52. package/blog/zh/vue-i18n_vs_intlayer.md +269 -0
  53. package/dist/cjs/generated/blog.entry.cjs +41 -0
  54. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  55. package/dist/esm/generated/blog.entry.mjs +41 -0
  56. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  57. package/dist/types/generated/blog.entry.d.ts +1 -0
  58. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  59. package/docs/ar/formatters.md +417 -31
  60. package/docs/ar/how_works_intlayer.md +2 -4
  61. package/docs/ar/interest_of_intlayer.md +7 -10
  62. package/docs/ar/intlayer_CMS.md +2 -3
  63. package/docs/ar/intlayer_visual_editor.md +2 -3
  64. package/docs/ar/intlayer_with_tanstack.md +1 -1
  65. package/docs/ar/introduction.md +4 -4
  66. package/docs/de/formatters.md +444 -34
  67. package/docs/de/introduction.md +2 -2
  68. package/docs/en/dictionary/enumeration.md +2 -2
  69. package/docs/en/dictionary/function_fetching.md +2 -2
  70. package/docs/en/dictionary/get_started.md +2 -2
  71. package/docs/en/dictionary/translation.md +2 -2
  72. package/docs/en/formatters.md +383 -15
  73. package/docs/en/how_works_intlayer.md +2 -4
  74. package/docs/en/interest_of_intlayer.md +48 -29
  75. package/docs/en/intlayer_CMS.md +2 -3
  76. package/docs/en/intlayer_visual_editor.md +2 -3
  77. package/docs/en/intlayer_with_create_react_app.md +2 -2
  78. package/docs/en/intlayer_with_express.md +2 -2
  79. package/docs/en/intlayer_with_tanstack.md +1 -1
  80. package/docs/en/introduction.md +4 -4
  81. package/docs/en/packages/express-intlayer/index.md +2 -2
  82. package/docs/en/packages/intlayer/getConfiguration.md +2 -3
  83. package/docs/en/packages/intlayer/getEnumeration.md +2 -7
  84. package/docs/en/packages/intlayer/getHTMLTextDir.md +2 -4
  85. package/docs/en/packages/intlayer/getLocaleLang.md +2 -4
  86. package/docs/en/packages/intlayer/getLocaleName.md +2 -3
  87. package/docs/en/packages/intlayer/getLocalizedUrl.md +2 -8
  88. package/docs/en/packages/intlayer/getMultilingualUrls.md +2 -7
  89. package/docs/en/packages/intlayer/getPathWithoutLocale.md +2 -3
  90. package/docs/en/packages/intlayer/getTranslation.md +2 -4
  91. package/docs/en/packages/intlayer/index.md +2 -2
  92. package/docs/en/packages/next-intlayer/index.md +2 -2
  93. package/docs/en/packages/next-intlayer/t.md +2 -2
  94. package/docs/en/packages/next-intlayer/useDictionary.md +2 -2
  95. package/docs/en/packages/next-intlayer/useIntlayer.md +2 -2
  96. package/docs/en/packages/next-intlayer/useLocale.md +2 -2
  97. package/docs/en/packages/react-intlayer/index.md +2 -2
  98. package/docs/en/packages/react-intlayer/t.md +2 -2
  99. package/docs/en/packages/react-intlayer/useI18n.md +2 -2
  100. package/docs/en/packages/react-intlayer/useIntlayer.md +2 -2
  101. package/docs/en/packages/react-intlayer/useLocale.md +2 -2
  102. package/docs/en/packages/react-scripts-intlayer/index.md +2 -2
  103. package/docs/en/packages/solid-intlayer/index.md +2 -2
  104. package/docs/en/packages/vite-intlayer/index.md +2 -2
  105. package/docs/en-GB/formatters.md +402 -16
  106. package/docs/en-GB/how_works_intlayer.md +2 -4
  107. package/docs/en-GB/interest_of_intlayer.md +7 -10
  108. package/docs/en-GB/intlayer_with_tanstack.md +1 -1
  109. package/docs/en-GB/introduction.md +2 -2
  110. package/docs/es/formatters.md +438 -28
  111. package/docs/es/how_works_intlayer.md +2 -4
  112. package/docs/es/interest_of_intlayer.md +7 -10
  113. package/docs/es/intlayer_with_tanstack.md +1 -1
  114. package/docs/es/introduction.md +2 -2
  115. package/docs/fr/formatters.md +438 -28
  116. package/docs/fr/how_works_intlayer.md +2 -4
  117. package/docs/fr/interest_of_intlayer.md +7 -10
  118. package/docs/fr/intlayer_with_tanstack.md +1 -1
  119. package/docs/fr/introduction.md +2 -2
  120. package/docs/hi/formatters.md +430 -39
  121. package/docs/hi/how_works_intlayer.md +2 -4
  122. package/docs/hi/interest_of_intlayer.md +7 -10
  123. package/docs/hi/intlayer_with_tanstack.md +1 -1
  124. package/docs/hi/introduction.md +2 -2
  125. package/docs/it/formatters.md +438 -30
  126. package/docs/it/how_works_intlayer.md +2 -4
  127. package/docs/it/interest_of_intlayer.md +7 -10
  128. package/docs/it/intlayer_with_tanstack.md +1 -1
  129. package/docs/it/introduction.md +2 -2
  130. package/docs/ja/formatters.md +435 -47
  131. package/docs/ja/how_works_intlayer.md +2 -4
  132. package/docs/ja/interest_of_intlayer.md +7 -10
  133. package/docs/ja/intlayer_with_tanstack.md +1 -1
  134. package/docs/ja/introduction.md +2 -2
  135. package/docs/ko/formatters.md +432 -41
  136. package/docs/ko/how_works_intlayer.md +2 -4
  137. package/docs/ko/interest_of_intlayer.md +7 -10
  138. package/docs/ko/intlayer_with_tanstack.md +1 -1
  139. package/docs/ko/introduction.md +2 -2
  140. package/docs/pt/formatters.md +416 -30
  141. package/docs/pt/how_works_intlayer.md +2 -4
  142. package/docs/pt/intlayer_with_tanstack.md +1 -1
  143. package/docs/pt/introduction.md +2 -2
  144. package/docs/ru/autoFill.md +2 -2
  145. package/docs/ru/configuration.md +1 -40
  146. package/docs/ru/formatters.md +438 -28
  147. package/docs/ru/how_works_intlayer.md +5 -7
  148. package/docs/ru/index.md +1 -1
  149. package/docs/ru/interest_of_intlayer.md +8 -11
  150. package/docs/ru/intlayer_CMS.md +7 -8
  151. package/docs/ru/intlayer_cli.md +4 -7
  152. package/docs/ru/intlayer_visual_editor.md +5 -6
  153. package/docs/ru/intlayer_with_angular.md +1 -1
  154. package/docs/ru/intlayer_with_create_react_app.md +5 -5
  155. package/docs/ru/intlayer_with_lynx+react.md +1 -1
  156. package/docs/ru/intlayer_with_nextjs_15.md +3 -3
  157. package/docs/ru/intlayer_with_nextjs_page_router.md +2 -2
  158. package/docs/ru/intlayer_with_nuxt.md +1 -1
  159. package/docs/ru/intlayer_with_react_native+expo.md +2 -2
  160. package/docs/ru/intlayer_with_tanstack.md +3 -3
  161. package/docs/ru/intlayer_with_vite+preact.md +3 -3
  162. package/docs/ru/intlayer_with_vite+react.md +3 -3
  163. package/docs/ru/intlayer_with_vite+solid.md +1 -1
  164. package/docs/ru/intlayer_with_vite+svelte.md +1 -1
  165. package/docs/ru/intlayer_with_vite+vue.md +2 -2
  166. package/docs/ru/introduction.md +5 -5
  167. package/docs/ru/locale_mapper.md +1 -1
  168. package/docs/ru/packages/@intlayer/api/index.md +2 -2
  169. package/docs/ru/packages/@intlayer/chokidar/index.md +1 -1
  170. package/docs/ru/packages/@intlayer/cli/index.md +2 -2
  171. package/docs/ru/packages/@intlayer/config/index.md +2 -2
  172. package/docs/ru/packages/@intlayer/core/index.md +2 -2
  173. package/docs/ru/packages/@intlayer/design-system/index.md +2 -2
  174. package/docs/ru/packages/@intlayer/dictionary-entry/index.md +2 -2
  175. package/docs/ru/packages/@intlayer/editor/index.md +1 -1
  176. package/docs/ru/packages/@intlayer/editor-react/index.md +1 -1
  177. package/docs/ru/packages/@intlayer/webpack/index.md +1 -1
  178. package/docs/ru/packages/angular-intlayer/index.md +1 -1
  179. package/docs/ru/packages/express-intlayer/index.md +3 -3
  180. package/docs/ru/packages/express-intlayer/t.md +1 -1
  181. package/docs/ru/packages/intlayer/getEnumeration.md +3 -8
  182. package/docs/ru/packages/intlayer/getTranslation.md +3 -5
  183. package/docs/ru/packages/intlayer/getTranslationContent.md +1 -3
  184. package/docs/ru/packages/intlayer/index.md +3 -3
  185. package/docs/ru/packages/intlayer-cli/index.md +1 -1
  186. package/docs/ru/packages/intlayer-editor/index.md +2 -2
  187. package/docs/ru/packages/lynx-intlayer/index.md +1 -1
  188. package/docs/ru/packages/next-intlayer/index.md +4 -4
  189. package/docs/ru/packages/next-intlayer/t.md +4 -4
  190. package/docs/ru/packages/next-intlayer/useLocale.md +3 -3
  191. package/docs/ru/packages/nuxt-intlayer/index.md +1 -1
  192. package/docs/ru/packages/preact-intlayer/index.md +1 -1
  193. package/docs/ru/packages/react-intlayer/index.md +4 -4
  194. package/docs/ru/packages/react-intlayer/t.md +4 -4
  195. package/docs/ru/packages/react-native-intlayer/index.md +1 -1
  196. package/docs/ru/packages/react-scripts-intlayer/index.md +3 -3
  197. package/docs/ru/packages/solid-intlayer/index.md +3 -3
  198. package/docs/ru/packages/svelte-intlayer/index.md +1 -1
  199. package/docs/ru/packages/vite-intlayer/index.md +3 -3
  200. package/docs/ru/packages/vue-intlayer/index.md +1 -1
  201. package/docs/ru/per_locale_file.md +1 -1
  202. package/docs/ru/roadmap.md +3 -5
  203. package/docs/ru/vs_code_extension.md +1 -1
  204. package/docs/zh/formatters.md +446 -38
  205. package/docs/zh/how_works_intlayer.md +2 -4
  206. package/docs/zh/interest_of_intlayer.md +7 -10
  207. package/docs/zh/intlayer_with_tanstack.md +1 -1
  208. package/docs/zh/introduction.md +2 -2
  209. package/frequent_questions/ar/domain_routing.md +1 -1
  210. package/frequent_questions/en/domain_routing.md +1 -1
  211. package/frequent_questions/en-GB/domain_routing.md +1 -1
  212. package/frequent_questions/es/domain_routing.md +1 -1
  213. package/frequent_questions/fr/domain_routing.md +1 -1
  214. package/frequent_questions/hi/domain_routing.md +1 -1
  215. package/frequent_questions/it/domain_routing.md +1 -1
  216. package/frequent_questions/ko/domain_routing.md +1 -1
  217. package/frequent_questions/pt/domain_routing.md +1 -1
  218. package/frequent_questions/ru/domain_routing.md +1 -1
  219. package/frequent_questions/ru/get_locale_cookie.md +4 -4
  220. package/frequent_questions/ru/static_rendering.md +1 -2
  221. package/frequent_questions/zh/domain_routing.md +1 -1
  222. package/package.json +9 -11
  223. package/src/generated/blog.entry.ts +42 -1
@@ -1,6 +1,6 @@
1
1
  ---
2
- createdAt: 2024-08-11
3
- updatedAt: 2025-06-29
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-08-23
4
4
  title: Intlayer وnext-i18next
5
5
  description: قم بدمج Intlayer مع next-i18next لتطبيق Next.js
6
6
  keywords:
@@ -1,285 +1,162 @@
1
1
  ---
2
- createdAt: 2024-08-11
3
- updatedAt: 2025-06-29
4
- title: next-i18next vs next-intl vs Intlayer
5
- description: قارن بين next-i18next باستخدام next-intl و Intlayer للتدويل الدولي (i18n) لتطبيق Next.js
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-08-23
4
+ title: next-i18next مقابل next-intl مقابل Intlayer
5
+ description: مقارنة بين next-i18next و next-intl و Intlayer لتدويل (i18n) تطبيق Next.js
6
6
  keywords:
7
7
  - next-intl
8
8
  - next-i18next
9
9
  - Intlayer
10
10
  - التدويل
11
- - التوثيق
11
+ - مدونة
12
12
  - Next.js
13
- - JavaScript
13
+ - جافاسكريبت
14
14
  - React
15
15
  slugs:
16
16
  - blog
17
17
  - next-i18next-vs-next-intl-vs-intlayer
18
18
  ---
19
19
 
20
- # next-i18next VS next-intl VS Intlayer | Next.js Internationalization (i18n)
20
+ # next-i18next مقابل next-intl مقابل intlayer | التدويل في Next.js (i18n)
21
21
 
22
- فيما يلي مقارنة موجزة بين **ثلاث مكتبات شائعة** لتدويل (i18n) تطبيق Next.js: **next-intl**، **next-i18next**، و **Intlayer**.
22
+ تُقارن هذه الدليل بين ثلاث خيارات شائعة للتدويل (i18n) لـ **Next.js**: **next-intl**، **next-i18next**، و **Intlayer**.
23
+ نركز على **موجه التطبيقات في Next.js 13+** (مع **مكونات خادم React**) ونقيّم:
23
24
 
24
- يسلط هذا المستند الضوء على المعايير الرئيسية:
25
+ 1. **البنية والتنظيم المحتوى**
26
+ 2. **TypeScript والأمان**
27
+ 3. **معالجة الترجمات المفقودة**
28
+ 4. **التوجيه والوسيط**
29
+ 5. **الأداء وسلوك التحميل**
30
+ 6. **تجربة المطور (DX)، الأدوات والصيانة**
31
+ 7. **تحسين محركات البحث (SEO) وقابلية التوسع في المشاريع الكبيرة**
25
32
 
26
- 1. **البنية المعمارية** (الحفاظ على الترجمات بالقرب من مكوناتها)
27
- 2. **دعم TypeScript**
28
- 3. **إدارة الترجمات المفقودة**
29
- 4. **دعم مكونات الخادم**
30
- 5. **توجيه مُحسّن & middleware** لـ Next.js
31
- 6. **بساطة الإعداد**
32
-
33
- يوفر الدليل أيضًا **نظرة عميقة على Intlayer**، مما يوضح لماذا يمكن أن يكون خيارًا قويًا - خاصة لـ Next.js 13+، بما في ذلك **موجه التطبيقات** و **مكونات الخادم**.
33
+ > **ملخص**: يمكن لجميع الثلاثة تعريب تطبيق Next.js. إذا كنت تريد **محتوى مخصص للمكونات**، **أنواع TypeScript صارمة**، **فحوصات مفاتيح مفقودة أثناء البناء**، **قواميس معزولة بالشجرة (tree-shaken)**، و**موجه تطبيقات من الدرجة الأولى + مساعدي SEO**، فإن **Intlayer** هو الخيار الأكثر اكتمالاً وحداثة.
34
34
 
35
35
  ---
36
36
 
37
- ## نظرة عامة على كل مكتبة
38
-
39
- ### 1. next-intl
37
+ ## التموقع على مستوى عالٍ
40
38
 
41
- **التركيز الرئيسي**: إعداد سريع وسهل مع نهج خفيف لتوطين.
39
+ - **next-intl** - تنسيق رسائل خفيف الوزن وبسيط مع دعم قوي لـ Next.js. الكتالوجات المركزية شائعة؛ تجربة المطور بسيطة، لكن الأمان والصيانة على نطاق واسع تبقى في الغالب مسؤوليتك.
40
+ - **next-i18next** - i18next في قالب Next.js. نظام بيئي ناضج وميزات عبر الإضافات (مثل ICU)، لكن التكوين قد يكون مطولًا وتميل الكتالوجات إلى المركزية مع نمو المشاريع.
41
+ - **Intlayer** - نموذج محتوى يركز على المكونات لـ Next.js، **أنواع TypeScript صارمة**، **فحوصات أثناء وقت البناء**، **عزل القواميس بالشجرة (tree-shaking)**، **وسائط مدمجة ومساعدي SEO**، محرر/نظام إدارة محتوى بصري اختياري، وترجمات بمساعدة الذكاء الاصطناعي.
42
42
 
43
- - **البنية المعمارية**: تشجع على تجميع الترجمات في مجلد واحد (مثل `locales/`) لكنها تسمح أيضًا باستراتيجيات متعددة. لا تفرض بدقة بنية "ترجمة لكل مكون".
44
- - **دعم TypeScript**: تكامل أساسي مع TypeScript. توجد بعض تعريفات النوع، لكنها ليست مركزة بكثافة على التوليد التلقائي لتعريفات TypeScript من ملفات الترجمة الخاصة بك.
45
- - **الترجمات المفقودة**: آلية تراجع أساسية. بشكل افتراضي، تتراجع إلى مفتاح أو سلسلة محلية افتراضية. لا توجد أدوات قوية خارج الصندوق لعمليات فحص الترجمات المفقودة المتقدمة.
46
- - **دعم مكونات الخادم**: تعمل مع Next.js 13+ بشكل عام، لكن النمط أقل تخصصًا للاستخدام العميق على جانب الخادم (مثل مكونات الخادم مع توجيه ديناميكي معقد).
47
- - **التوجيه و middleware**: الدعم المتاح محدود. يعتمد عادة على `Middleware` في Next.js لاكتشاف المحلية، أو التكوين اليدوي لإعادة كتابة مسارات المحلية.
48
- - **بساطة الإعداد**: بسيطة جدًا. الحد الأدنى من الكود المبدئي مطلوب.
43
+ ---
49
44
 
50
- **استخدمها عندما**: تريد نهجًا أبسط أو تشعر بالراحة في إدارة الترجمات الخاصة بك بطرق أكثر تقليدية (مثل مجلد واحد مع ملفات JSON محلية).
45
+ ## مقارنة الميزات جنبًا إلى جنب (مركز على Next.js)
46
+
47
+ | الميزة | `next-intlayer` (Intlayer) | `next-intl` | `next-i18next` |
48
+ | ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
49
+ | **الترجمات بالقرب من المكونات** | ✅ نعم، المحتوى موضوع بجانب كل مكون | ❌ لا | ❌ لا |
50
+ | **تكامل TypeScript** | ✅ متقدم، أنواع صارمة مولدة تلقائيًا | ✅ جيد | ⚠️ أساسي |
51
+ | **كشف الترجمات المفقودة** | ✅ تمييز أخطاء TypeScript وتحذير/خطأ أثناء وقت البناء | ⚠️ استرجاع وقت التشغيل | ⚠️ استرجاع وقت التشغيل |
52
+ | **المحتوى الغني (JSX/Markdown/المكونات)** | ✅ دعم مباشر | ❌ غير مصمم للعقد الغنية | ⚠️ محدود |
53
+ | **الترجمة المدعومة بالذكاء الاصطناعي** | ✅ نعم، يدعم عدة مزودي ذكاء اصطناعي. يمكن استخدامه باستخدام مفاتيح API الخاصة بك. يأخذ في الاعتبار سياق تطبيقك ونطاق المحتوى | ❌ لا | ❌ لا |
54
+ | **المحرر المرئي** | ✅ نعم، محرر مرئي محلي + نظام إدارة محتوى اختياري؛ يمكنه إخراج محتوى قاعدة الشيفرة؛ قابل للتضمين | ❌ لا / متوفر عبر منصات التوطين الخارجية | ❌ لا / متوفر عبر منصات التوطين الخارجية |
55
+ | **التوجيه المحلي** | ✅ نعم، يدعم المسارات المحلية مباشرة (يعمل مع Next.js و Vite) | ✅ مدمج، يدعم App Router جزء `[locale]` | ✅ مدمج |
56
+ | **توليد المسارات الديناميكية** | ✅ نعم | ✅ نعم | ✅ نعم |
57
+ | **التصريف الجمعي** | ✅ أنماط قائمة على التعداد | ✅ جيد | ✅ جيد |
58
+ | **التنسيق (التواريخ، الأرقام، العملات)** | ✅ منسقات محسّنة (Intl في الخلفية) | ✅ جيد (مساعدات Intl) | ✅ جيد (مساعدات Intl) |
59
+ | **تنسيق المحتوى** | ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml قيد العمل) | ✅ .json, .js, .ts | ⚠️ .json |
60
+ | **دعم ICU** | ⚠️ قيد العمل | ✅ نعم | ⚠️ عبر الإضافة (`i18next-icu`) |
61
+ | **مساعدو تحسين محركات البحث (hreflang، خريطة الموقع)** | ✅ أدوات مدمجة: مساعدات لخريطة الموقع، robots.txt، البيانات الوصفية | ✅ جيد | ✅ جيد |
62
+ | **النظام البيئي / المجتمع** | ⚠️ أصغر حجماً لكنه ينمو بسرعة ويتسم بالتفاعل | ✅ متوسط الحجم، يركز على Next.js | ✅ متوسط الحجم، يركز على Next.js |
63
+ | **التصيير على جانب الخادم ومكونات الخادم** | ✅ نعم، مُبسّط للتصيير على جانب الخادم / مكونات React Server | ⚠️ مدعوم على مستوى الصفحة ولكن يحتاج إلى تمرير دوال t على شجرة المكونات لمكونات الخادم الفرعية | ⚠️ مدعوم على مستوى الصفحة ولكن يحتاج إلى تمرير دوال t على شجرة المكونات لمكونات الخادم الفرعية |
64
+ | **Tree-shaking (تحميل المحتوى المستخدم فقط)** | ✅ نعم، لكل مكون أثناء وقت البناء عبر إضافات Babel/SWC | ⚠️ جزئي | ⚠️ جزئي |
65
+ | **التحميل الكسول** | ✅ نعم، لكل لغة / لكل قاموس | ✅ نعم (لكل مسار/لكل لغة)، يحتاج إلى إدارة مساحة الأسماء | ✅ نعم (لكل مسار/لكل لغة)، يحتاج إلى إدارة مساحة الأسماء |
66
+ | **تنظيف المحتوى غير المستخدم** | ✅ نعم، لكل قاموس أثناء وقت البناء | ❌ لا، يمكن إدارته يدويًا باستخدام إدارة مساحة الأسماء | ❌ لا، يمكن إدارته يدويًا باستخدام إدارة مساحة الأسماء |
67
+ | **إدارة المشاريع الكبيرة** | ✅ يشجع على التكوين المعياري، مناسب لأنظمة التصميم | ✅ معياري مع الإعداد | ✅ معياري مع الإعداد |
51
68
 
52
69
  ---
53
70
 
54
- ### 2. next-i18next
71
+ ## مقارنة متعمقة
55
72
 
56
- **التركيز الرئيسي**: حل مثبت عبر الزمن يستخدم `i18next` تحت الغطاء، ومتبع على نطاق واسع لمشاريع Next.js.
73
+ ### 1) البنية القابلة للتوسع
57
74
 
58
- - **البنية المعمارية**: غالبًا ما تنظم الترجمات في مجلد `public/locales`. لم يتم تصميمه خصيصًا للحفاظ على الترجمات "بالقرب" من كل مكون، على الرغم من أنه يمكنك اعتماد بنية مختلفة يدويًا.
59
- - **دعم TypeScript**: تغطية معقولة لـ TypeScript لكنها تتطلب تكوينًا مخصصًا للترجمات المــــعــنونة و الـhooks المعنونة.
60
- - **الترجمات المفقودة**: يقدم i18next التداخل/التراجعات. ومع ذلك، فإن اكتشاف الترجمة المفقودة عادةً ما يحتاج إلى إعداد إضافي أو مكونات إضافية.
61
- - **دعم مكونات الخادم**: تم توثيق الاستخدام الأساسي مع Next.js 13، ولكن قد يكون الاستخدام المتقدم (مثل التكامل العميق بمكونات الخادم، وإنشاء المسارات الديناميكية) مرهقًا.
62
- - **التوجيه و middleware**: يعتمد بقوة على `Middleware` في Next.js وإعادة الكتابة لمسارات المحلية. قد تحتاج إلى الغوص في تكوين i18next المتقدم للإعدادات الأكثر تعقيدًا.
63
- - **بساطة الإعداد**: نهج مألوف لأولئك المألوفين مع i18next. ومع ذلك، يمكن أن تصبح أكثر تعقيدًا عندما تكون الميزات المتقدمة مطلوبة (مثل الفضاءات، وموارد محلية افتراضية متعددة، إلخ).
75
+ - **next-intl / next-i18next**: الافتراضي هو **كتالوجات مركزية** لكل لغة (بالإضافة إلى **مساحات الأسماء** في i18next). يعمل بشكل جيد في البداية، لكنه غالبًا ما يصبح مساحة مشتركة كبيرة مع زيادة الترابط وتغير المفاتيح بشكل متكرر.
76
+ - **Intlayer**: يشجع على وجود **قواميس لكل مكون** (أو لكل ميزة) **متمركزة** مع الكود الذي تخدمه. هذا يقلل العبء الذهني، ويسهل تكرار/ترحيل أجزاء واجهة المستخدم، ويقلل من النزاعات بين الفرق المختلفة. المحتوى غير المستخدم يكون من السهل اكتشافه وحذفه بشكل طبيعي.
64
77
 
65
- **استخدمها عندما**: تكون قد التزمت بالفعل بنظام `i18next` أو لديك ترجمات موجودة تعتمد على i18next.
78
+ **لماذا هذا مهم:** في قواعد الشيفرة الكبيرة أو إعدادات أنظمة التصميم، **المحتوى المعياري** يتوسع بشكل أفضل من الكتالوجات الأحادية.
66
79
 
67
80
  ---
68
81
 
69
- ### 3. Intlayer
70
-
71
- **التركيز الرئيسي**: مكتبة توطين حديثة ومفتوحة المصدر مصممة خصيصًا لـ Next.js **موجه التطبيقات** (12، 13، 14، و 15) مع دعم مدمج لـ **مكونات الخادم** و **Turbopack**.
82
+ ### 2) TypeScript والأمان
72
83
 
73
- #### المزايا الرئيسية
84
+ - **next-intl**: دعم قوي لـ TypeScript، لكن **المفاتيح ليست مُعرفة بصرامة بشكل افتراضي**؛ ستحتاج للحفاظ على أنماط الأمان يدويًا.
85
+ - **next-i18next**: تعريفات أساسية للخطافات؛ **التعريف الصارم للمفاتيح يتطلب أدوات/إعدادات إضافية**.
86
+ - **Intlayer**: **ينشئ أنواعًا صارمة** من محتواك. **الإكمال التلقائي في بيئة التطوير** و**أخطاء وقت الترجمة** تكتشف الأخطاء المطبعية والمفاتيح المفقودة قبل النشر.
74
87
 
75
- 1. **البنية المعمارية**
88
+ **لماذا هذا مهم:** التعريف الصارم يحول الفشل إلى الجانب **الأيسر** (CI/البناء) بدلاً من الجانب **الأيمن** (وقت التشغيل).
76
89
 
77
- - تشجع على وضع **الترجمات بجانب مكوناتها**. يمكن أن تحتوي كل صفحة أو مكون على ملف `.content.ts` (أو JSON) خاص بها - لا مزيد من البحث في مجلد ترجمة عملاق.
78
- - يجعل ذلك الشيفرة الخاصة بك أكثر **وحدوية وقابلة للصيانة**، خاصة في قواعد الشيفرة الكبيرة.
79
-
80
- 2. **دعم TypeScript**
81
-
82
- - **تعريفات نوع تم إنشاؤها تلقائيًا**: في اللحظة التي تعرف فيها محتواك، يقوم Intlayer بإنشاء أنواع تدعم الإكمال التلقائي والتقاط أخطاء الترجمة.
83
- - يقلل من الأخطاء أثناء التشغيل مثل المفاتيح المفقودة ويقدم **الإكمال التلقائي المتقدم** مباشرة في IDE الخاص بك.
84
-
85
- 3. **إدارة الترجمات المفقودة**
90
+ ---
86
91
 
87
- - خلال البناء، يمكن لـ Intlayer **اكتشاف مفاتيح الترجمة المفقودة** وإلقاء التحذيرات أو الأخطاء.
88
- - يضمن ذلك أنك لن تشحن أبدًا نصًا مفقودًا عبر لغاتك.
92
+ ### 3) التعامل مع الترجمات المفقودة
89
93
 
90
- 4. **محسن لمكونات الخادم**
94
+ - **next-intl / next-i18next**: تعتمد على **الاستعادات في وقت التشغيل** (مثل عرض المفتاح أو اللغة الافتراضية). البناء لا يفشل.
95
+ - **Intlayer**: **الكشف أثناء البناء** مع **تحذيرات/أخطاء** للمواقع أو المفاتيح المفقودة.
91
96
 
92
- - متوافق تمامًا مع **موجه التطبيقات** لـ Next.js ونموذج **مكونات الخادم** الجديد.
93
- - يقدم موفري خدمات متخصصين (`IntlayerServerProvider`، `IntlayerClientProvider`) لـ **عزل سياق الخادم** (مهم عند التعامل مع Next.js 13+).
97
+ **لماذا هذا مهم:** اكتشاف الفجوات أثناء البناء يمنع ظهور "سلاسل غامضة" في الإنتاج ويتماشى مع بوابات الإصدار الصارمة.
94
98
 
95
- 5. **توجيه مُحسّن & middleware**
99
+ ---
96
100
 
97
- - يتضمن [**`intlayerMiddleware`**](#) لاكتشاف المحلية تلقائيًا (عبر ملفات تعريف الارتباط أو رؤوس المتصفح) وتوليد المسارات المتقدمة.
98
- - يتعامل ديناميكيًا مع المسارات المحلية (مثل `/en-US/about` مقابل `/fr/about`) مع تكوين بسيط.
99
- - يقدم طرق مساعدة مثل `getMultilingualUrls` لتوليد روابط لغات بديلة (رائع لـ **SEO**).
101
+ ### 4) التوجيه، الوسيط واستراتيجية عناوين URL
100
102
 
101
- 6. **إعداد مبسط**
102
- - ملف إعداد واحد (`intlayer.config.ts`) لتعريف محلياتك، المحلية الافتراضية، وتفضيلات التكامل.
103
- - مكون إضافي Wrapper `withIntlayer(nextConfig)` الذي **يحقن** جميع متغيرات البيئة والمراقبين لمحتواك.
104
- - **لا تكوينات تراجع كبيرة** - يتم تصميم النظام ليعمل "فقط" مع الحد الأدنى من الاحتكاك.
103
+ - الثلاثة يعملون مع **التوجيه المحلي في Next.js** على App Router.
104
+ - **Intlayer** يذهب أبعد من ذلك مع **الوسيط الدولي (i18n middleware)** (كشف اللغة عبر الرؤوس/الكوكيز) و**المساعدين** لتوليد عناوين URL محلية ووسوم `<link rel="alternate" hreflang="…">`.
105
105
 
106
- > **النتيجة النهائية**: Intlayer هو حل حديث يريد **دفع أفضل الممارسات**: من **الحفاظ على الترجمات قريبة** من كل مكون React، إلى تقديم **دعم TS قوي** و **سهولة الاستخدام على الجانب الخادم**، بينما **يقلل بشكل كبير من الأكواد المبدئية**.
106
+ **لماذا هذا مهم:** تقليل طبقات الربط المخصصة؛ **تجربة مستخدم متسقة** و**تحسين محركات البحث نظيف** عبر اللغات.
107
107
 
108
108
  ---
109
109
 
110
- ## مقارنة الميزات جنبًا إلى جنب
111
-
112
- | **الميزة** | **next-intl** | **next-i18next** | **Intlayer** |
113
- | ------------------------------------------ | --------------------------------- | ----------------------------------------------- | --------------------------------------- |
114
- | **الحفاظ على الترجمات بالقرب من المكونات** | جزئي - عادةً مجلد محلي واحد | ليس افتراضيًا - غالبًا ما يكون `public/locales` | **نعم - موصى به وسهل** |
115
- | **توليد TypeScript تلقائي** | تعريفات TypeScript أساسية | دعم TypeScript أساسي | **نعم - متقدم خارج الصندوق** |
116
- | **اكتشاف الترجمات المفقودة** | في الغالب سلاسل تراجع | في الغالب سلاسل تراجع | **نعم - فحوصات في وقت البناء** |
117
- | **دعم مكونات الخادم** | تعمل لكن ليست متخصصة | مدعومة لكنها قد تكون مرهقة | **دعم كامل مع موفري خدمات متخصصين** |
118
- | **التوجيه & middleware** | مدمج يدويًا مع middleware في Next | موفر عبر إعادة كتابة التكوين | **middleware i18n مخصص + روابط متقدمة** |
119
- | **تعقيد الإعداد** | بسيطة، تكوينات الحد الأدنى | تقليدية، يمكن أن تكون مرهقة للاستخدام المتقدم | **ملف إعداد واحد وملحق** |
120
-
121
- ---
110
+ ### 5) توافق مكونات الخادم (RSC)
122
111
 
123
- ## لماذا Intlayer؟
112
+ - **الجميع** يدعم Next.js 13+.
113
+ - **Intlayer** يسهل **الحد الفاصل بين الخادم والعميل** بواجهة برمجة تطبيقات موحدة ومزودين مصممين لـ RSC، بحيث لا تحتاج إلى تمرير منسقات أو دوال الترجمة عبر شجرة المكونات.
124
114
 
125
- للفرق التي تنتقل إلى أو تبني على **موجه التطبيقات لـ Next.js** (الإصدارات 13، 14، أو 15) مع **مكونات الخادم**، يوفر Intlayer:
115
+ **لماذا هذا مهم:** نموذج ذهني أنظف وحالات حافة أقل في الأشجار المختلطة.
126
116
 
127
- 1. **بنية معمارية مبسطة**
117
+ ---
128
118
 
129
- - تحتوي كل مسار أو مكون على ترجماته الخاصة. هذا يعزز الوضوح وقابلية الصيانة.
119
+ ### 6) الأداء وسلوك التحميل
130
120
 
131
- 2. **تكامل قوي مع TypeScript**
121
+ - **next-intl / next-i18next**: تحكم جزئي عبر **مساحات الأسماء** و**تقسيمات على مستوى المسار**؛ خطر تجميع سلاسل غير مستخدمة إذا تم التراخي في الانضباط.
122
+ - **Intlayer**: يقوم بـ **تحليل الشجرة** أثناء البناء و**تحميل كسول لكل قاموس/لغة**. المحتوى غير المستخدم لا يتم شحنه.
132
123
 
133
- - تحصل على أمان على مستوى المترجم، مما يتجنب المفاتيح المفقودة أو المليئة بالأخطاء.
124
+ **لماذا هذا مهم:** حزم أصغر وتشغيل أسرع، خاصة على المواقع متعددة اللغات.
134
125
 
135
- 3. **تنبيهات حقيقية لترجمات مفقودة**
126
+ ---
136
127
 
137
- - إذا نسيت مفتاحًا أو ترجمة لغة، سيتم تحذيرك عند وقت البناء (بدلاً من شحن واجهة مستخدم غير مكتملة).
128
+ ### 7) تجربة المطور، الأدوات والصيانة
138
129
 
139
- 4. **توجيه متقدم مدمج**
130
+ - **next-intl / next-i18next**: عادةً ما تقوم بربط منصات خارجية للترجمات وسير العمل التحريري.
131
+ - **Intlayer**: يأتي مع **محرر بصري مجاني** و**نظام إدارة محتوى اختياري** (متوافق مع Git أو خارجي). بالإضافة إلى **امتداد VSCode** لتأليف المحتوى و**ترجمات بمساعدة الذكاء الاصطناعي** باستخدام مفاتيح المزود الخاصة بك.
140
132
 
141
- - يتضمن اكتشاف محلي تلقائي، وتوليد ديناميكي للمسارات، وإدارة سهله لروابط الـURL المحلية.
142
- - لا يتطلب `intlayerMiddleware` القياسية إعادة كتابة مخصصة عميقة.
133
+ **لماذا هذا مهم:** يقلل من تكلفة العمليات ويقصر دورة التواصل بين المطورين ومؤلفي المحتوى.
143
134
 
144
- 5. **إعداد موحد**
135
+ ---
145
136
 
146
- - كود بسيط: فقط عرّف `intlayer.config.ts`،Wrap `next.config` مع `withIntlayer`، وأضف middleware الرسمي.
147
- - استخدام واضح ومباشر لكل من **مكونات الخادم** و **العميل** عبر `IntlayerServerProvider` و `IntlayerClientProvider`.
137
+ ## متى تختار أي منها؟
148
138
 
149
- 6. **صديق SEO**
150
- - المساعدة المدمجة (`getMultilingualUrls`، سمات `hrefLang`، إلخ) تسهل إنتاج صفحات وخ خرائط مواقع متوافقة مع SEO.
139
+ - **اختر next-intl** إذا كنت تريد حلاً **بسيطًا**، وتشعر بالراحة مع الكتالوجات المركزية، وكان تطبيقك **صغير إلى متوسط الحجم**.
140
+ - **اختر next-i18next** إذا كنت تحتاج إلى **نظام الإضافات الخاص بـ i18next** (مثل قواعد ICU المتقدمة عبر الإضافات) وكان فريقك يعرف i18next بالفعل، مع قبول **المزيد من التهيئة** من أجل المرونة.
141
+ - **اختر Intlayer** إذا كنت تقدر **المحتوى المخصص للمكونات**، و**TypeScript الصارم**، و**ضمانات وقت البناء**، و**إزالة الشفرات غير المستخدمة (tree-shaking)**، وأدوات التوجيه/SEO/التحرير المدمجة - خاصةً لـ **Next.js App Router** وقواعد الشفرات الكبيرة والمودولية.
151
142
 
152
143
  ---
153
144
 
154
- ## مثال: Intlayer في العمل
155
-
156
- فيما يلي مقتطف مختصر جداً يوضح كيفية استخدام Intlayer في مشروع Next.js 15. لمزيد من التفاصيل وأمثلة الكود، [تحقق من دليل Intlayer الكامل](#).
157
-
158
- <details>
159
- <summary>مثال خطوة بخطوة</summary>
160
-
161
- 1. **التثبيت والتكوين**
162
-
163
- ```bash
164
- npm install intlayer next-intlayer
165
- ```
166
-
167
- ```ts
168
- // intlayer.config.ts
169
- import { Locales, type IntlayerConfig } from "intlayer";
170
-
171
- const config: IntlayerConfig = {
172
- internationalization: {
173
- locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
174
- defaultLocale: Locales.ENGLISH,
175
- },
176
- };
177
- export default config;
178
- ```
179
-
180
- 2. **استخدم المكون الإضافي**
181
-
182
- ```ts
183
- // next.config.mjs
184
- import { withIntlayer } from "next-intlayer/server";
185
-
186
- /** @type {import('next').NextConfig} */
187
- const nextConfig = {};
188
-
189
- export default withIntlayer(nextConfig);
190
- ```
191
-
192
- 3. **أضف Middleware**
193
-
194
- ```ts
195
- // src/middleware.ts
196
- export { intlayerMiddleware as middleware } from "next-intlayer/middleware";
197
-
198
- export const config = {
199
- matcher:
200
- "/((?!api|static|assets|robots|sitemap|sw|service-worker|manifest|.*\\..*|_next).*)",
201
- };
202
- ```
203
-
204
- 4. **إنشاء تخطيط محلي**
205
-
206
- ```tsx
207
- // src/app/[locale]/layout.tsx
208
- import { getHTMLTextDir } from "intlayer";
209
- import { NextLayoutIntlayer } from "next-intlayer";
210
-
211
- const LocaleLayout: NextLayoutIntlayer = async ({ children, params }) => {
212
- const { locale } = params;
213
- return (
214
- <html lang={locale} dir={getHTMLTextDir(locale)}>
215
- <body>{children}</body>
216
- </html>
217
- );
218
- };
219
-
220
- export { generateStaticParams } from "next-intlayer";
221
- export default LocaleLayout;
222
- ```
223
-
224
- 5. **إعلان واستخدام المحتوى**
225
-
226
- ```tsx
227
- // src/app/[locale]/page.content.ts
228
- import { t } from "intlayer";
229
-
230
- export default {
231
- key: "page",
232
- content: {
233
- getStarted: {
234
- main: t({
235
- en: "Get started by editing",
236
- fr: "Commencez par éditer",
237
- es: "Comience por editar",
238
- }),
239
- pageLink: "src/app/page.tsx",
240
- },
241
- },
242
- };
243
- ```
244
-
245
- ```tsx
246
- // src/app/[locale]/page.tsx
247
- import { IntlayerServerProvider } from "next-intlayer/server";
248
- import { IntlayerClientProvider, useIntlayer } from "next-intlayer";
249
-
250
- const PageContent = () => {
251
- const { content } = useIntlayer("page");
252
- return (
253
- <>
254
- <p>{content.getStarted.main}</p>
255
- <code>{content.getStarted.pageLink}</code>
256
- </>
257
- );
258
- };
259
-
260
- export default function Page({ params }) {
261
- return (
262
- <IntlayerServerProvider locale={params.locale}>
263
- <IntlayerClientProvider locale={params.locale}>
264
- <PageContent />
265
- </IntlayerClientProvider>
266
- </IntlayerServerProvider>
267
- );
268
- }
269
- ```
270
-
271
- </details>
145
+ ## ملاحظات عملية للترحيل (من next-intl / next-i18next إلى Intlayer)
146
+
147
+ - **ابدأ بالميزات بشكل منفصل**: انقل مسارًا أو مكونًا واحدًا في كل مرة إلى **القواميس المحلية**.
148
+ - **احتفظ بالكتالوجات القديمة بالتوازي**: استخدم جسرًا أثناء الترحيل؛ تجنب التغيير الجذري المفاجئ.
149
+ - **فعّل الفحوصات الصارمة**: دع اكتشاف وقت البناء يكشف الفجوات مبكرًا.
150
+ - **اعتمد الوسائط الوسيطة والمساعدين**: قم بتوحيد اكتشاف اللغة وعلامات SEO على مستوى الموقع.
151
+ - **قِس حجم الحزم**: توقع **تقليل حجم الحزمة** مع حذف المحتوى غير المستخدم.
272
152
 
273
153
  ---
274
154
 
275
- ## الخاتمة
155
+ ## الخلاصة
276
156
 
277
- كل حل, **next-intl**، **next-i18next**، و **Intlayer**, أثبت فعاليته لمشاريع Next.js متعددة اللغات. ومع ذلك، فإن **Intlayer** تذهب أبعد من ذلك من خلال:
157
+ جميع المكتبات الثلاث تنجح في التوطين الأساسي. الفرق هو **كمية العمل التي يجب عليك القيام بها** لتحقيق إعداد قوي وقابل للتوسع في **Next.js الحديث**:
278
158
 
279
- - **تشجيع بناء بنية ترجمة على مستوى المكونات**
280
- - التكامل بسلاسة مع **Next.js 13+ و مكونات الخادم**
281
- - تقديم **توليد TypeScript** قوي للشفرة الأكثر أماناً
282
- - التعامل مع **الترجمات المفقودة** عند بناء الشيفرة
283
- - توفير **نهج إعداد مبسط**، مع توجيه و middleware متقدمان
159
+ - مع **Intlayer**، فإن **المحتوى المعياري**، و**TypeScript الصارم**، و**السلامة أثناء وقت البناء**، و**حزم الشجرة المهشمة**، و**موجه التطبيقات من الدرجة الأولى + أدوات SEO** هي **الإعدادات الافتراضية**، وليست مهامًا شاقة.
160
+ - إذا كانت فرقك تقدر **قابلية الصيانة والسرعة** في تطبيق متعدد اللغات يعتمد على المكونات، فإن Intlayer تقدم **التجربة الأكثر اكتمالًا** اليوم.
284
161
 
285
- إذا كنت ترغب في ميزات i18n **حديثة** مصممة لموجه تطبيقات Next.js وتبحث عن تجربة **مكتوبة بالكامل** دون ربط يدوي للترجمات المفقودة، أو إعدادات المسار، أو خطوات بناء معقدة، فإن **Intlayer** هي خيار جذاب. فهي لا تقصر من وقت الإعداد الخاص بك فحسب، بل تضمن أيضًا نهجًا أكثر صيانة وقابلية للتوسع للترجمات لفريقك.
162
+ راجع مستند ['لماذا Intlayer؟'](https://intlayer.org/doc/why) لمزيد من التفاصيل.