@intlayer/docs 5.8.1-canary.0 → 6.0.0-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 (378) hide show
  1. package/blog/ar/rag_powered_documentation_assistant.md +282 -0
  2. package/blog/de/rag_powered_documentation_assistant.md +282 -0
  3. package/blog/en/rag_powered_documentation_assistant.md +289 -0
  4. package/blog/en-GB/rag_powered_documentation_assistant.md +284 -0
  5. package/blog/es/rag_powered_documentation_assistant.md +308 -0
  6. package/blog/fr/rag_powered_documentation_assistant.md +308 -0
  7. package/blog/hi/rag_powered_documentation_assistant.md +284 -0
  8. package/blog/it/rag_powered_documentation_assistant.md +284 -0
  9. package/blog/ja/rag_powered_documentation_assistant.md +284 -0
  10. package/blog/ko/rag_powered_documentation_assistant.md +283 -0
  11. package/blog/pt/rag_powered_documentation_assistant.md +284 -0
  12. package/blog/ru/rag_powered_documentation_assistant.md +284 -0
  13. package/blog/tr/index.md +69 -0
  14. package/blog/tr/internationalization_and_SEO.md +273 -0
  15. package/blog/tr/intlayer_with_i18next.md +162 -0
  16. package/blog/tr/intlayer_with_next-i18next.md +367 -0
  17. package/blog/tr/intlayer_with_next-intl.md +392 -0
  18. package/blog/tr/intlayer_with_react-i18next.md +346 -0
  19. package/blog/tr/intlayer_with_react-intl.md +345 -0
  20. package/blog/tr/list_i18n_technologies/CMS/drupal.md +143 -0
  21. package/blog/tr/list_i18n_technologies/CMS/wix.md +167 -0
  22. package/blog/tr/list_i18n_technologies/CMS/wordpress.md +188 -0
  23. package/blog/tr/list_i18n_technologies/frameworks/angular.md +125 -0
  24. package/blog/tr/list_i18n_technologies/frameworks/flutter.md +150 -0
  25. package/blog/tr/list_i18n_technologies/frameworks/react-native.md +217 -0
  26. package/blog/tr/list_i18n_technologies/frameworks/react.md +155 -0
  27. package/blog/tr/list_i18n_technologies/frameworks/svelte.md +129 -0
  28. package/blog/tr/list_i18n_technologies/frameworks/vue.md +130 -0
  29. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +170 -0
  30. package/blog/tr/rag_powered_documentation_assistant.md +284 -0
  31. package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +162 -0
  32. package/blog/tr/vue-i18n_vs_intlayer.md +276 -0
  33. package/blog/tr/what_is_internationalization.md +166 -0
  34. package/blog/zh/rag_powered_documentation_assistant.md +284 -0
  35. package/dist/cjs/generated/blog.entry.cjs +212 -0
  36. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  37. package/dist/cjs/generated/docs.entry.cjs +660 -132
  38. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  39. package/dist/cjs/generated/frequentQuestions.entry.cjs +84 -0
  40. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  41. package/dist/cjs/generated/legal.entry.cjs +6 -0
  42. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  43. package/dist/esm/generated/blog.entry.mjs +212 -0
  44. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  45. package/dist/esm/generated/docs.entry.mjs +660 -132
  46. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  47. package/dist/esm/generated/frequentQuestions.entry.mjs +84 -0
  48. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  49. package/dist/esm/generated/legal.entry.mjs +6 -0
  50. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  51. package/dist/types/generated/blog.entry.d.ts +1 -0
  52. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  53. package/dist/types/generated/docs.entry.d.ts +5 -2
  54. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  55. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  56. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  57. package/docs/ar/autoFill.md +41 -40
  58. package/docs/ar/configuration.md +202 -199
  59. package/docs/ar/dictionary/content_file.md +1059 -0
  60. package/docs/ar/intlayer_CMS.md +4 -4
  61. package/docs/ar/intlayer_with_nestjs.md +271 -0
  62. package/docs/ar/intlayer_with_nextjs_page_router.md +1 -1
  63. package/docs/ar/intlayer_with_react_router_v7.md +533 -0
  64. package/docs/ar/intlayer_with_tanstack.md +465 -299
  65. package/docs/ar/intlayer_with_vite+preact.md +7 -7
  66. package/docs/ar/intlayer_with_vite+react.md +7 -7
  67. package/docs/ar/intlayer_with_vite+vue.md +9 -9
  68. package/docs/ar/packages/vite-intlayer/index.md +3 -3
  69. package/docs/ar/readme.md +261 -0
  70. package/docs/ar/testing.md +199 -0
  71. package/docs/de/autoFill.md +42 -19
  72. package/docs/de/configuration.md +155 -147
  73. package/docs/de/dictionary/content_file.md +1059 -0
  74. package/docs/de/intlayer_CMS.md +4 -5
  75. package/docs/de/intlayer_with_nestjs.md +270 -0
  76. package/docs/de/intlayer_with_nextjs_page_router.md +1 -1
  77. package/docs/de/intlayer_with_react_router_v7.md +537 -0
  78. package/docs/de/intlayer_with_tanstack.md +469 -302
  79. package/docs/de/intlayer_with_vite+preact.md +7 -7
  80. package/docs/de/intlayer_with_vite+react.md +7 -7
  81. package/docs/de/intlayer_with_vite+vue.md +9 -9
  82. package/docs/de/packages/vite-intlayer/index.md +3 -3
  83. package/docs/de/readme.md +261 -0
  84. package/docs/de/testing.md +200 -0
  85. package/docs/en/CI_CD.md +4 -6
  86. package/docs/en/autoFill.md +25 -5
  87. package/docs/en/configuration.md +45 -54
  88. package/docs/en/dictionary/content_file.md +1054 -0
  89. package/docs/en/intlayer_CMS.md +8 -7
  90. package/docs/en/intlayer_cli.md +112 -5
  91. package/docs/en/intlayer_with_nestjs.md +268 -0
  92. package/docs/en/intlayer_with_nextjs_page_router.md +1 -1
  93. package/docs/en/intlayer_with_react_router_v7.md +531 -0
  94. package/docs/en/intlayer_with_tanstack.md +463 -294
  95. package/docs/en/intlayer_with_vite+preact.md +8 -8
  96. package/docs/en/intlayer_with_vite+react.md +8 -8
  97. package/docs/en/intlayer_with_vite+vue.md +8 -8
  98. package/docs/en/packages/intlayer/getLocalizedUrl.md +102 -25
  99. package/docs/en/packages/vite-intlayer/index.md +3 -3
  100. package/docs/en/readme.md +261 -0
  101. package/docs/en/testing.md +200 -0
  102. package/docs/en-GB/autoFill.md +29 -6
  103. package/docs/en-GB/configuration.md +79 -71
  104. package/docs/en-GB/dictionary/content_file.md +1084 -0
  105. package/docs/en-GB/intlayer_CMS.md +4 -5
  106. package/docs/en-GB/intlayer_with_nestjs.md +268 -0
  107. package/docs/en-GB/intlayer_with_nextjs_page_router.md +1 -1
  108. package/docs/en-GB/intlayer_with_react_router_v7.md +533 -0
  109. package/docs/en-GB/intlayer_with_tanstack.md +466 -299
  110. package/docs/en-GB/intlayer_with_vite+preact.md +7 -7
  111. package/docs/en-GB/intlayer_with_vite+react.md +7 -7
  112. package/docs/en-GB/intlayer_with_vite+vue.md +9 -9
  113. package/docs/en-GB/packages/vite-intlayer/index.md +3 -3
  114. package/docs/en-GB/readme.md +261 -0
  115. package/docs/en-GB/testing.md +200 -0
  116. package/docs/es/autoFill.md +45 -23
  117. package/docs/es/configuration.md +171 -167
  118. package/docs/es/dictionary/content_file.md +1088 -0
  119. package/docs/es/intlayer_CMS.md +4 -5
  120. package/docs/es/intlayer_with_nestjs.md +268 -0
  121. package/docs/es/intlayer_with_nextjs_page_router.md +1 -1
  122. package/docs/es/intlayer_with_react_router_v7.md +533 -0
  123. package/docs/es/intlayer_with_tanstack.md +469 -280
  124. package/docs/es/intlayer_with_vite+preact.md +7 -7
  125. package/docs/es/intlayer_with_vite+react.md +7 -7
  126. package/docs/es/intlayer_with_vite+vue.md +9 -9
  127. package/docs/es/packages/vite-intlayer/index.md +3 -3
  128. package/docs/es/readme.md +261 -0
  129. package/docs/es/testing.md +200 -0
  130. package/docs/fr/autoFill.md +47 -24
  131. package/docs/fr/configuration.md +213 -198
  132. package/docs/fr/dictionary/content_file.md +1054 -0
  133. package/docs/fr/intlayer_CMS.md +4 -5
  134. package/docs/fr/intlayer_with_nestjs.md +268 -0
  135. package/docs/fr/intlayer_with_nextjs_page_router.md +1 -1
  136. package/docs/fr/intlayer_with_react_router_v7.md +549 -0
  137. package/docs/fr/intlayer_with_tanstack.md +465 -279
  138. package/docs/fr/intlayer_with_vite+preact.md +7 -7
  139. package/docs/fr/intlayer_with_vite+react.md +7 -7
  140. package/docs/fr/intlayer_with_vite+vue.md +9 -9
  141. package/docs/fr/packages/vite-intlayer/index.md +3 -3
  142. package/docs/fr/readme.md +261 -0
  143. package/docs/fr/testing.md +200 -0
  144. package/docs/hi/autoFill.md +47 -25
  145. package/docs/hi/configuration.md +194 -189
  146. package/docs/hi/dictionary/content_file.md +1056 -0
  147. package/docs/hi/intlayer_CMS.md +4 -5
  148. package/docs/hi/intlayer_with_nestjs.md +269 -0
  149. package/docs/hi/intlayer_with_nextjs_page_router.md +1 -1
  150. package/docs/hi/intlayer_with_react_router_v7.md +533 -0
  151. package/docs/hi/intlayer_with_tanstack.md +467 -282
  152. package/docs/hi/intlayer_with_vite+preact.md +7 -7
  153. package/docs/hi/intlayer_with_vite+react.md +7 -7
  154. package/docs/hi/intlayer_with_vite+vue.md +9 -9
  155. package/docs/hi/packages/vite-intlayer/index.md +3 -3
  156. package/docs/hi/readme.md +261 -0
  157. package/docs/hi/testing.md +200 -0
  158. package/docs/it/autoFill.md +46 -24
  159. package/docs/it/configuration.md +169 -161
  160. package/docs/it/dictionary/content_file.md +1061 -0
  161. package/docs/it/intlayer_CMS.md +4 -5
  162. package/docs/it/intlayer_with_nestjs.md +268 -0
  163. package/docs/it/intlayer_with_nextjs_page_router.md +1 -1
  164. package/docs/it/intlayer_with_react_router_v7.md +535 -0
  165. package/docs/it/intlayer_with_tanstack.md +467 -301
  166. package/docs/it/intlayer_with_vite+preact.md +7 -7
  167. package/docs/it/intlayer_with_vite+react.md +7 -7
  168. package/docs/it/intlayer_with_vite+vue.md +9 -9
  169. package/docs/it/packages/vite-intlayer/index.md +3 -3
  170. package/docs/it/readme.md +261 -0
  171. package/docs/it/testing.md +200 -0
  172. package/docs/ja/autoFill.md +45 -23
  173. package/docs/ja/configuration.md +243 -204
  174. package/docs/ja/dictionary/content_file.md +1064 -0
  175. package/docs/ja/intlayer_CMS.md +4 -5
  176. package/docs/ja/intlayer_with_nestjs.md +268 -0
  177. package/docs/ja/intlayer_with_nextjs_page_router.md +1 -1
  178. package/docs/ja/intlayer_with_react_router_v7.md +534 -0
  179. package/docs/ja/intlayer_with_tanstack.md +467 -303
  180. package/docs/ja/intlayer_with_vite+preact.md +7 -7
  181. package/docs/ja/intlayer_with_vite+react.md +7 -7
  182. package/docs/ja/intlayer_with_vite+vue.md +9 -9
  183. package/docs/ja/packages/vite-intlayer/index.md +3 -3
  184. package/docs/ja/readme.md +263 -0
  185. package/docs/ja/testing.md +200 -0
  186. package/docs/ko/autoFill.md +39 -16
  187. package/docs/ko/configuration.md +217 -197
  188. package/docs/ko/dictionary/content_file.md +1060 -0
  189. package/docs/ko/intlayer_CMS.md +4 -5
  190. package/docs/ko/intlayer_with_nestjs.md +268 -0
  191. package/docs/ko/intlayer_with_nextjs_page_router.md +1 -1
  192. package/docs/ko/intlayer_with_react_router_v7.md +540 -0
  193. package/docs/ko/intlayer_with_tanstack.md +466 -302
  194. package/docs/ko/intlayer_with_vite+preact.md +7 -7
  195. package/docs/ko/intlayer_with_vite+react.md +7 -7
  196. package/docs/ko/intlayer_with_vite+vue.md +9 -9
  197. package/docs/ko/packages/vite-intlayer/index.md +3 -3
  198. package/docs/ko/readme.md +261 -0
  199. package/docs/ko/testing.md +200 -0
  200. package/docs/pt/autoFill.md +39 -15
  201. package/docs/pt/configuration.md +165 -147
  202. package/docs/pt/dictionary/content_file.md +1062 -0
  203. package/docs/pt/intlayer_CMS.md +4 -5
  204. package/docs/pt/intlayer_with_nestjs.md +271 -0
  205. package/docs/pt/intlayer_with_nextjs_page_router.md +1 -1
  206. package/docs/pt/intlayer_with_react_router_v7.md +535 -0
  207. package/docs/pt/intlayer_with_tanstack.md +469 -300
  208. package/docs/pt/intlayer_with_vite+preact.md +7 -7
  209. package/docs/pt/intlayer_with_vite+react.md +7 -7
  210. package/docs/pt/intlayer_with_vite+vue.md +9 -9
  211. package/docs/pt/packages/vite-intlayer/index.md +3 -3
  212. package/docs/pt/readme.md +261 -0
  213. package/docs/pt/testing.md +200 -0
  214. package/docs/ru/autoFill.md +52 -30
  215. package/docs/ru/configuration.md +164 -117
  216. package/docs/ru/dictionary/content_file.md +1064 -0
  217. package/docs/ru/intlayer_CMS.md +4 -4
  218. package/docs/ru/intlayer_with_nestjs.md +270 -0
  219. package/docs/ru/intlayer_with_nextjs_page_router.md +1 -1
  220. package/docs/ru/intlayer_with_react_router_v7.md +534 -0
  221. package/docs/ru/intlayer_with_tanstack.md +470 -305
  222. package/docs/ru/intlayer_with_vite+preact.md +7 -7
  223. package/docs/ru/intlayer_with_vite+react.md +7 -7
  224. package/docs/ru/intlayer_with_vite+vue.md +9 -9
  225. package/docs/ru/packages/vite-intlayer/index.md +3 -3
  226. package/docs/ru/readme.md +261 -0
  227. package/docs/ru/testing.md +202 -0
  228. package/docs/tr/CI_CD.md +198 -0
  229. package/docs/tr/autoFill.md +201 -0
  230. package/docs/tr/configuration.md +585 -0
  231. package/docs/tr/dictionary/condition.md +243 -0
  232. package/docs/tr/dictionary/content_file.md +1055 -0
  233. package/docs/tr/dictionary/enumeration.md +251 -0
  234. package/docs/tr/dictionary/file.md +228 -0
  235. package/docs/tr/dictionary/function_fetching.md +218 -0
  236. package/docs/tr/dictionary/gender.md +279 -0
  237. package/docs/tr/dictionary/insertion.md +191 -0
  238. package/docs/tr/dictionary/markdown.md +385 -0
  239. package/docs/tr/dictionary/nesting.md +279 -0
  240. package/docs/tr/dictionary/translation.md +315 -0
  241. package/docs/tr/formatters.md +618 -0
  242. package/docs/tr/how_works_intlayer.md +254 -0
  243. package/docs/tr/index.md +168 -0
  244. package/docs/tr/interest_of_intlayer.md +288 -0
  245. package/docs/tr/intlayer_CMS.md +347 -0
  246. package/docs/tr/intlayer_cli.md +570 -0
  247. package/docs/tr/intlayer_visual_editor.md +269 -0
  248. package/docs/tr/intlayer_with_angular.md +694 -0
  249. package/docs/tr/intlayer_with_create_react_app.md +1218 -0
  250. package/docs/tr/intlayer_with_express.md +415 -0
  251. package/docs/tr/intlayer_with_lynx+react.md +511 -0
  252. package/docs/tr/intlayer_with_nestjs.md +268 -0
  253. package/docs/tr/intlayer_with_nextjs_14.md +1029 -0
  254. package/docs/tr/intlayer_with_nextjs_15.md +1506 -0
  255. package/docs/tr/intlayer_with_nextjs_page_router.md +1484 -0
  256. package/docs/tr/intlayer_with_nuxt.md +773 -0
  257. package/docs/tr/intlayer_with_react_native+expo.md +660 -0
  258. package/docs/tr/intlayer_with_react_router_v7.md +531 -0
  259. package/docs/tr/intlayer_with_tanstack.md +452 -0
  260. package/docs/tr/intlayer_with_vite+preact.md +1673 -0
  261. package/docs/tr/intlayer_with_vite+react.md +1632 -0
  262. package/docs/tr/intlayer_with_vite+solid.md +288 -0
  263. package/docs/tr/intlayer_with_vite+svelte.md +288 -0
  264. package/docs/tr/intlayer_with_vite+vue.md +1042 -0
  265. package/docs/tr/introduction.md +209 -0
  266. package/docs/tr/locale_mapper.md +244 -0
  267. package/docs/tr/mcp_server.md +207 -0
  268. package/docs/tr/packages/@intlayer/api/index.md +58 -0
  269. package/docs/tr/packages/@intlayer/chokidar/index.md +57 -0
  270. package/docs/tr/packages/@intlayer/cli/index.md +47 -0
  271. package/docs/tr/packages/@intlayer/config/index.md +142 -0
  272. package/docs/tr/packages/@intlayer/core/index.md +51 -0
  273. package/docs/tr/packages/@intlayer/design-system/index.md +47 -0
  274. package/docs/tr/packages/@intlayer/dictionary-entry/index.md +53 -0
  275. package/docs/tr/packages/@intlayer/editor/index.md +47 -0
  276. package/docs/tr/packages/@intlayer/editor-react/index.md +47 -0
  277. package/docs/tr/packages/@intlayer/webpack/index.md +61 -0
  278. package/docs/tr/packages/angular-intlayer/index.md +59 -0
  279. package/docs/tr/packages/express-intlayer/index.md +258 -0
  280. package/docs/tr/packages/express-intlayer/t.md +459 -0
  281. package/docs/tr/packages/intlayer/getConfiguration.md +151 -0
  282. package/docs/tr/packages/intlayer/getEnumeration.md +165 -0
  283. package/docs/tr/packages/intlayer/getHTMLTextDir.md +127 -0
  284. package/docs/tr/packages/intlayer/getLocaleLang.md +87 -0
  285. package/docs/tr/packages/intlayer/getLocaleName.md +124 -0
  286. package/docs/tr/packages/intlayer/getLocalizedUrl.md +324 -0
  287. package/docs/tr/packages/intlayer/getMultilingualUrls.md +225 -0
  288. package/docs/tr/packages/intlayer/getPathWithoutLocale.md +81 -0
  289. package/docs/tr/packages/intlayer/getTranslation.md +196 -0
  290. package/docs/tr/packages/intlayer/getTranslationContent.md +195 -0
  291. package/docs/tr/packages/intlayer/index.md +505 -0
  292. package/docs/tr/packages/intlayer-cli/index.md +71 -0
  293. package/docs/tr/packages/intlayer-editor/index.md +139 -0
  294. package/docs/tr/packages/lynx-intlayer/index.md +85 -0
  295. package/docs/tr/packages/next-intlayer/index.md +154 -0
  296. package/docs/tr/packages/next-intlayer/t.md +354 -0
  297. package/docs/tr/packages/next-intlayer/useDictionary.md +270 -0
  298. package/docs/tr/packages/next-intlayer/useIntlayer.md +265 -0
  299. package/docs/tr/packages/next-intlayer/useLocale.md +133 -0
  300. package/docs/tr/packages/nuxt-intlayer/index.md +59 -0
  301. package/docs/tr/packages/preact-intlayer/index.md +55 -0
  302. package/docs/tr/packages/react-intlayer/index.md +148 -0
  303. package/docs/tr/packages/react-intlayer/t.md +304 -0
  304. package/docs/tr/packages/react-intlayer/useDictionary.md +554 -0
  305. package/docs/tr/packages/react-intlayer/useI18n.md +478 -0
  306. package/docs/tr/packages/react-intlayer/useIntlayer.md +253 -0
  307. package/docs/tr/packages/react-intlayer/useLocale.md +212 -0
  308. package/docs/tr/packages/react-native-intlayer/index.md +85 -0
  309. package/docs/tr/packages/react-scripts-intlayer/index.md +82 -0
  310. package/docs/tr/packages/solid-intlayer/index.md +56 -0
  311. package/docs/tr/packages/svelte-intlayer/index.md +55 -0
  312. package/docs/tr/packages/vite-intlayer/index.md +82 -0
  313. package/docs/tr/packages/vue-intlayer/index.md +59 -0
  314. package/docs/tr/per_locale_file.md +321 -0
  315. package/docs/tr/readme.md +261 -0
  316. package/docs/tr/roadmap.md +338 -0
  317. package/docs/tr/testing.md +200 -0
  318. package/docs/tr/vs_code_extension.md +154 -0
  319. package/docs/zh/autoFill.md +40 -18
  320. package/docs/zh/configuration.md +245 -226
  321. package/docs/zh/dictionary/content_file.md +1064 -0
  322. package/docs/zh/intlayer_CMS.md +4 -5
  323. package/docs/zh/intlayer_with_nestjs.md +268 -0
  324. package/docs/zh/intlayer_with_nextjs_page_router.md +1 -1
  325. package/docs/zh/intlayer_with_react_router_v7.md +535 -0
  326. package/docs/zh/intlayer_with_tanstack.md +468 -278
  327. package/docs/zh/intlayer_with_vite+preact.md +7 -7
  328. package/docs/zh/intlayer_with_vite+react.md +7 -7
  329. package/docs/zh/intlayer_with_vite+vue.md +7 -7
  330. package/docs/zh/packages/vite-intlayer/index.md +3 -3
  331. package/docs/zh/readme.md +261 -0
  332. package/docs/zh/testing.md +198 -0
  333. package/frequent_questions/tr/SSR_Next_no_[locale].md +105 -0
  334. package/frequent_questions/tr/array_as_content_declaration.md +72 -0
  335. package/frequent_questions/tr/build_dictionaries.md +59 -0
  336. package/frequent_questions/tr/build_error_CI_CD.md +75 -0
  337. package/frequent_questions/tr/customized_locale_list.md +65 -0
  338. package/frequent_questions/tr/domain_routing.md +114 -0
  339. package/frequent_questions/tr/esbuild_error.md +30 -0
  340. package/frequent_questions/tr/get_locale_cookie.md +142 -0
  341. package/frequent_questions/tr/intlayer_command_undefined.md +156 -0
  342. package/frequent_questions/tr/locale_incorect_in_url.md +74 -0
  343. package/frequent_questions/tr/static_rendering.md +45 -0
  344. package/frequent_questions/tr/translated_path_url.md +56 -0
  345. package/frequent_questions/tr/unknown_command.md +98 -0
  346. package/legal/tr/privacy_notice.md +83 -0
  347. package/legal/tr/terms_of_service.md +55 -0
  348. package/package.json +13 -13
  349. package/src/generated/blog.entry.ts +212 -0
  350. package/src/generated/docs.entry.ts +663 -135
  351. package/src/generated/frequentQuestions.entry.ts +85 -1
  352. package/src/generated/legal.entry.ts +7 -1
  353. package/docs/ar/dictionary/content_extention_customization.md +0 -100
  354. package/docs/ar/dictionary/get_started.md +0 -527
  355. package/docs/de/dictionary/content_extention_customization.md +0 -100
  356. package/docs/de/dictionary/get_started.md +0 -531
  357. package/docs/en/dictionary/content_extention_customization.md +0 -102
  358. package/docs/en/dictionary/get_started.md +0 -529
  359. package/docs/en-GB/dictionary/content_extention_customization.md +0 -100
  360. package/docs/en-GB/dictionary/get_started.md +0 -591
  361. package/docs/es/dictionary/content_extention_customization.md +0 -100
  362. package/docs/es/dictionary/get_started.md +0 -527
  363. package/docs/fr/dictionary/content_extention_customization.md +0 -100
  364. package/docs/fr/dictionary/get_started.md +0 -527
  365. package/docs/hi/dictionary/content_extention_customization.md +0 -100
  366. package/docs/hi/dictionary/get_started.md +0 -527
  367. package/docs/it/dictionary/content_extention_customization.md +0 -113
  368. package/docs/it/dictionary/get_started.md +0 -573
  369. package/docs/ja/dictionary/content_extention_customization.md +0 -113
  370. package/docs/ja/dictionary/get_started.md +0 -576
  371. package/docs/ko/dictionary/content_extention_customization.md +0 -100
  372. package/docs/ko/dictionary/get_started.md +0 -530
  373. package/docs/pt/dictionary/content_extention_customization.md +0 -100
  374. package/docs/pt/dictionary/get_started.md +0 -532
  375. package/docs/ru/dictionary/content_extention_customization.md +0 -100
  376. package/docs/ru/dictionary/get_started.md +0 -575
  377. package/docs/zh/dictionary/content_extention_customization.md +0 -117
  378. package/docs/zh/dictionary/get_started.md +0 -533
@@ -0,0 +1,1054 @@
1
+ ---
2
+ createdAt: 2025-02-07
3
+ updatedAt: 2025-09-20
4
+ title: Fichier de Contenu
5
+ description: Apprenez à personnaliser les extensions pour vos fichiers de déclaration de contenu. Suivez cette documentation pour implémenter efficacement des conditions dans votre projet.
6
+ keywords:
7
+ - Fichier de Contenu
8
+ - Documentation
9
+ - Intlayer
10
+ slugs:
11
+ - doc
12
+ - concept
13
+ - content
14
+ ---
15
+
16
+ # Fichier de Contenu
17
+
18
+ <iframe title="i18n, Markdown, JSON… une solution unique pour tout gérer | Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/1VHgSY_j9_I?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
19
+
20
+ ## Qu'est-ce qu'un Fichier de Contenu ?
21
+
22
+ Un fichier de contenu dans Intlayer est un fichier qui contient des définitions de dictionnaires.
23
+ Ces fichiers déclarent le contenu textuel de votre application, les traductions et les ressources.
24
+ Les fichiers de contenu sont traités par Intlayer pour générer des dictionnaires.
25
+
26
+ Les dictionnaires seront le résultat final que votre application importera en utilisant le hook `useIntlayer`.
27
+
28
+ ### Concepts Clés
29
+
30
+ #### Dictionnaire
31
+
32
+ Un dictionnaire est une collection structurée de contenu organisée par clés. Chaque dictionnaire contient :
33
+
34
+ - **Clé** : Un identifiant unique pour le dictionnaire
35
+ - **Contenu** : Les valeurs de contenu réelles (texte, nombres, objets, etc.)
36
+ - **Métadonnées** : Informations supplémentaires comme le titre, la description, les tags, etc.
37
+
38
+ #### Fichier de Contenu
39
+
40
+ Exemple de fichier de contenu :
41
+
42
+ ```tsx fileName="src/example.content.tsx" contentDeclarationFormat="typescript"
43
+ import { type ReactNode } from "react";
44
+ import {
45
+ t,
46
+ enu,
47
+ cond,
48
+ nest,
49
+ md,
50
+ insert,
51
+ file,
52
+ type Dictionary,
53
+ } from "intlayer";
54
+
55
+ interface Content {
56
+ imbricatedContent: {
57
+ imbricatedContent2: {
58
+ stringContent: string;
59
+ numberContent: number;
60
+ booleanContent: boolean;
61
+ javaScriptContent: string;
62
+ };
63
+ };
64
+ multilingualContent: string;
65
+ quantityContent: string;
66
+ conditionalContent: string;
67
+ markdownContent: never;
68
+ externalContent: string;
69
+ insertionContent: string;
70
+ nestedContent: string;
71
+ fileContent: string;
72
+ jsxContent: ReactNode;
73
+ }
74
+
75
+ export default {
76
+ key: "page",
77
+ content: {
78
+ imbricatedContent: {
79
+ imbricatedContent2: {
80
+ stringContent: "Bonjour le monde",
81
+ numberContent: 123,
82
+ booleanContent: true,
83
+ javaScriptContent: `${process.env.NODE_ENV}`,
84
+ },
85
+ },
86
+ multilingualContent: t({
87
+ en: "English content",
88
+ "en-GB": "English content (UK)",
89
+ fr: "Contenu français",
90
+ es: "Contenido en español",
91
+ }),
92
+ quantityContent: enu({
93
+ "<-1": "Moins d'une voiture négative",
94
+ "-1": "Moins une voiture",
95
+ "0": "Pas de voitures",
96
+ "1": "Une voiture",
97
+ ">5": "Quelques voitures",
98
+ ">19": "Beaucoup de voitures",
99
+ }),
100
+ conditionalContent: cond({
101
+ true: "La validation est activée",
102
+ false: "La validation est désactivée",
103
+ }),
104
+ insertionContent: insert("Bonjour {{name}} !"),
105
+ nestedContent: nest(
106
+ "navbar", // La clé du dictionnaire à imbriquer
107
+ "login.button" // [Optionnel] Le chemin vers le contenu à imbriquer
108
+ ),
109
+ fileContent: file("./path/to/file.txt"),
110
+ externalContent: fetch("https://example.com").then((res) => res.json()),
111
+ markdownContent: md("# Exemple Markdown"),
112
+
113
+ /*
114
+ * Disponible uniquement avec `react-intlayer` ou `next-intlayer`
115
+ */
116
+ jsxContent: <h1>Mon titre</h1>,
117
+ },
118
+ } satisfies Dictionary<Content>; // [optionnel] Dictionary est générique et vous permet de renforcer le formatage de votre dictionnaire
119
+ ```
120
+
121
+ ```javascript fileName="src/example.content.mjx" contentDeclarationFormat="esm"
122
+ import { t, enu, cond, nest, md, insert, file } from "intlayer";
123
+
124
+ /** @type {import('intlayer').Dictionary} */
125
+ export default {
126
+ key: "page",
127
+ content: {
128
+ imbricatedContent: {
129
+ imbricatedContent2: {
130
+ stringContent: "Hello World",
131
+ numberContent: 123,
132
+ booleanContent: true,
133
+ javaScriptContent: `${process.env.NODE_ENV}`,
134
+ },
135
+ imbricatedArray: [1, 2, 3],
136
+ },
137
+ multilingualContent: t({
138
+ en: "English content",
139
+ "en-GB": "English content (UK)",
140
+ fr: "Contenu français",
141
+ es: "Contenido en español",
142
+ }),
143
+ quantityContent: enu({
144
+ "<-1": "Moins qu'une voiture en moins un",
145
+ "-1": "Une voiture en moins un",
146
+ "0": "Aucune voiture",
147
+ "1": "Une voiture",
148
+ ">5": "Quelques voitures",
149
+ ">19": "Beaucoup de voitures",
150
+ }),
151
+ conditionalContent: cond({
152
+ true: "La validation est activée",
153
+ false: "La validation est désactivée",
154
+ }),
155
+ insertionContent: insert("Bonjour {{name}} !"),
156
+ nestedContent: nest(
157
+ "navbar", // La clé du dictionnaire à imbriquer
158
+ "login.button" // [Optionnel] Le chemin vers le contenu à imbriquer
159
+ ),
160
+ markdownContent: md("# Exemple Markdown"),
161
+ fileContent: file("./path/to/file.txt"),
162
+ externalContent: fetch("https://example.com").then((res) => res.json())
163
+
164
+ // Disponible uniquement avec `react-intlayer` ou `next-intlayer`
165
+ jsxContent: <h1>Mon titre</h1>,
166
+ },
167
+ };
168
+ ```
169
+
170
+ ```javascript fileName="src/example.content.cjx" contentDeclarationFormat="commonjs"
171
+ const { t, enu, cond, nest, md, insert, file } = require("intlayer");
172
+
173
+ /** @type {import('intlayer').Dictionary} */
174
+ module.exports = {
175
+ key: "page",
176
+ content: {
177
+ imbricatedContent: {
178
+ imbricatedContent2: {
179
+ stringContent: "Hello World",
180
+ numberContent: 123,
181
+ booleanContent: true,
182
+ javaScriptContent: `${process.env.NODE_ENV}`,
183
+ },
184
+ imbricatedArray: [1, 2, 3],
185
+ },
186
+ multilingualContent: t({
187
+ fr: "Contenu français",
188
+ en: "English content",
189
+ "en-GB": "English content (UK)",
190
+ es: "Spanish content",
191
+ }),
192
+ quantityContent: enu({
193
+ "<-1": "Moins d'une voiture en moins",
194
+ "-1": "Une voiture en moins",
195
+ "0": "Aucune voiture",
196
+ "1": "Une voiture",
197
+ ">5": "Quelques voitures",
198
+ ">19": "Beaucoup de voitures",
199
+ }),
200
+ conditionalContent: cond({
201
+ true: "La validation est activée",
202
+ false: "La validation est désactivée",
203
+ }),
204
+ insertionContent: insert("Bonjour {{name}} !"),
205
+ nestedContent: nest(
206
+ "navbar", // La clé du dictionnaire à imbriquer
207
+ "login.button" // [Optionnel] Le chemin vers le contenu à imbriquer
208
+ ),
209
+ markdownContent: md("# Exemple Markdown"),
210
+ fileContent: file("./path/to/file.txt"),
211
+ externalContent: fetch("https://example.com").then((res) => res.json())
212
+
213
+ // Disponible uniquement avec `react-intlayer` ou `next-intlayer`
214
+ jsxContent: <h1>Mon titre</h1>,
215
+ },
216
+ };
217
+ ```
218
+
219
+ ```json5 fileName="src/example.content.json" contentDeclarationFormat="json"
220
+ {
221
+ "$schema": "https://intlayer.org/schema.json",
222
+ "key": "page",
223
+ "content": {
224
+ "imbricatedContent": {
225
+ "imbricatedContent2": {
226
+ "stringContent": "Bonjour le monde",
227
+ "numberContent": 123,
228
+ "booleanContent": true,
229
+ },
230
+ "imbricatedArray": [1, 2, 3],
231
+ },
232
+ "multilingualContent": {
233
+ "nodeType": "translation",
234
+ "translation": {
235
+ "en": "English content",
236
+ "en-GB": "English content (UK)",
237
+ "fr": "Contenu français",
238
+ "es": "Spanish content",
239
+ },
240
+ },
241
+ "quantityContent": {
242
+ "nodeType": "enumeration",
243
+ "enumeration": {
244
+ "0": "Pas de voitures",
245
+ "1": "Une voiture",
246
+ "<-1": "Moins d'une voiture négative",
247
+ "-1": "Moins une voiture",
248
+ ">5": "Quelques voitures",
249
+ ">19": "Beaucoup de voitures",
250
+ },
251
+ },
252
+ "conditionalContent": {
253
+ "nodeType": "condition",
254
+ "condition": {
255
+ "true": "La validation est activée",
256
+ "false": "La validation est désactivée",
257
+ },
258
+ },
259
+ "insertionContent": {
260
+ "nodeType": "insertion",
261
+ "insertion": "Bonjour {{name}} !",
262
+ },
263
+ "nestedContent": {
264
+ "nodeType": "nested",
265
+ "nested": { "dictionaryKey": "app" },
266
+ },
267
+ "markdownContent": {
268
+ "nodeType": "markdown",
269
+ "markdown": "# Exemple de Markdown",
270
+ },
271
+ "fileContent": {
272
+ "nodeType": "file",
273
+ "file": "./path/to/file.txt",
274
+ },
275
+ "jsxContent": {
276
+ "type": "h1",
277
+ "key": null,
278
+ "ref": null,
279
+ "props": {
280
+ "children": ["Mon titre"],
281
+ },
282
+ },
283
+ },
284
+ }
285
+ ```
286
+
287
+ #### Nœuds de contenu
288
+
289
+ Les nœuds de contenu sont les éléments de base du contenu du dictionnaire. Ils peuvent être :
290
+
291
+ - **Valeurs primitives** : chaînes de caractères, nombres, booléens, null, undefined
292
+ - **Nœuds typés** : Types de contenu spéciaux comme les traductions, conditions, markdown, etc.
293
+ - **Fonctions** : Contenu dynamique pouvant être évalué à l'exécution [voir Récupération de fonctions](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/function_fetching.md)
294
+ - **Contenu imbriqué** : Références à d'autres dictionnaires
295
+
296
+ #### Types de contenu
297
+
298
+ Intlayer prend en charge divers types de contenu via des nœuds typés :
299
+
300
+ - **Contenu de traduction** : Texte multilingue avec des valeurs spécifiques à chaque locale [voir Contenu de traduction](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/translation_content.md)
301
+ - **Contenu conditionnel** : Contenu conditionnel basé sur des expressions booléennes [voir Contenu conditionnel](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/condition_content.md)
302
+ - **Contenu d'énumération** : Contenu qui varie en fonction de valeurs énumérées [voir Contenu d'énumération](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/enumeration_content.md)
303
+ - **Contenu d'insertion** : Contenu pouvant être inséré dans un autre contenu [voir Contenu d'insertion](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/insertion_content.md)
304
+ - **Contenu Markdown** : Contenu en texte enrichi au format Markdown [voir Contenu Markdown](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/markdown_content.md)
305
+ - **Contenu Imbriqué** : Références à d’autres dictionnaires [voir Contenu Imbriqué](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/nested_content.md)
306
+ - **Contenu Genré** : Contenu qui varie selon le genre [voir Contenu Genré](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/gender_content.md)
307
+ - **Contenu Fichier** : Références à des fichiers externes [voir Contenu Fichier](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/file_content.md)
308
+
309
+ ## Structure du Dictionnaire
310
+
311
+ Un dictionnaire dans Intlayer est défini par le type `Dictionary` et contient plusieurs propriétés qui contrôlent son comportement :
312
+
313
+ ### Propriétés requises
314
+
315
+ #### `key` (string)
316
+
317
+ L'identifiant du dictionnaire. Si plusieurs dictionnaires ont la même clé, Intlayer les fusionnera automatiquement.
318
+
319
+ > Utilisez la convention de nommage kebab-case (par exemple, `"about-page-meta"`).
320
+
321
+ #### Content (string | number | boolean | object | array | function)
322
+
323
+ La propriété `content` contient les données réelles du dictionnaire et supporte :
324
+
325
+ - **Valeurs primitives** : chaînes de caractères, nombres, booléens, null, undefined
326
+ - **Nœuds typés** : types de contenu spéciaux utilisant les fonctions d'aide d'Intlayer
327
+ - **Objets imbriqués** : structures de données complexes
328
+ - **Tableaux** : collections de contenu
329
+ - **Fonctions** : évaluation dynamique du contenu
330
+
331
+ ### Propriétés optionnelles
332
+
333
+ #### `title` (string)
334
+
335
+ Titre lisible par l'humain pour le dictionnaire qui aide à l'identifier dans les éditeurs et les systèmes CMS. Ceci est particulièrement utile lors de la gestion d'un grand nombre de dictionnaires ou lors du travail avec des interfaces de gestion de contenu.
336
+
337
+ **Exemple :**
338
+
339
+ ```typescript
340
+ {
341
+ key: "about-page-meta",
342
+ title: "Métadonnées de la page À propos",
343
+ content: { /* ... */ }
344
+ }
345
+ ```
346
+
347
+ #### `description` (string)
348
+
349
+ Description détaillée expliquant l'objectif du dictionnaire, les directives d'utilisation et toute considération spéciale. Cette description est également utilisée comme contexte pour la génération de traduction assistée par IA, ce qui est précieux pour maintenir la qualité et la cohérence des traductions.
350
+
351
+ **Exemple :**
352
+
353
+ ```typescript
354
+ {
355
+ key: "about-page-meta",
356
+ description: [
357
+ "Ce dictionnaire gère les métadonnées de la page À propos",
358
+ "Considérez les bonnes pratiques pour le SEO :",
359
+ "- Le titre doit comporter entre 50 et 60 caractères",
360
+ "- La description doit comporter entre 150 et 160 caractères",
361
+ ].join('\n'),
362
+ content: { /* ... */ }
363
+ }
364
+ ```
365
+
366
+ #### `tags` (string[])
367
+
368
+ Tableau de chaînes de caractères pour catégoriser et organiser les dictionnaires. Les tags fournissent un contexte supplémentaire et peuvent être utilisés pour filtrer, rechercher ou organiser les dictionnaires dans les éditeurs et les systèmes de gestion de contenu.
369
+
370
+ **Exemple :**
371
+
372
+ ```typescript
373
+ {
374
+ key: "about-page-meta",
375
+ tags: ["metadata", "about-page", "seo"],
376
+ content: { /* ... */ }
377
+ }
378
+ ```
379
+
380
+ #### `locale` (LocalesValues)
381
+
382
+ Transforme le dictionnaire en un dictionnaire par locale où chaque champ déclaré dans le contenu sera automatiquement transformé en un nœud de traduction. Lorsque cette propriété est définie :
383
+
384
+ - Le dictionnaire est traité comme un dictionnaire à langue unique
385
+ - Chaque champ devient un nœud de traduction pour cette langue spécifique
386
+ - Vous ne devez PAS utiliser de nœuds de traduction (`t()`) dans le contenu lorsque cette propriété est utilisée
387
+ - En l'absence de cette propriété, le dictionnaire sera traité comme un dictionnaire multilingue
388
+
389
+ > Voir [Déclaration de contenu par langue dans Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/per_locale_file.md) pour plus d'informations.
390
+
391
+ **Exemple :**
392
+
393
+ ```json
394
+ // Dictionnaire par langue
395
+ {
396
+ "key": "about-page",
397
+ "locale": "en",
398
+ "content": {
399
+ "title": "About Us", // Ceci devient un nœud de traduction pour 'en'
400
+ "description": "Learn more about our company"
401
+ }
402
+ }
403
+ ```
404
+
405
+ #### `autoFill` (AutoFill)
406
+
407
+ Instructions pour remplir automatiquement le contenu du dictionnaire à partir de sources externes. Cela peut être configuré globalement dans `intlayer.config.ts` ou par dictionnaire. Supporte plusieurs formats :
408
+
409
+ - **`true`** : Activer le remplissage automatique pour toutes les locales
410
+ - **`string`** : Chemin vers un fichier unique ou un modèle avec des variables
411
+ - **`object`** : Chemins de fichiers par locale
412
+
413
+ **Exemples :**
414
+
415
+ ```json
416
+ // Activer pour toutes les locales
417
+ {
418
+ "autoFill": true
419
+ }
420
+ // Fichier unique
421
+ {
422
+ "autoFill": "./translations/aboutPage.content.json"
423
+ }
424
+ // Modèle avec variables
425
+ {
426
+ "autoFill": "/messages/{{locale}}/{{key}}/{{fileName}}.content.json"
427
+ }
428
+ // Configuration fine par locale
429
+ {
430
+ "autoFill": {
431
+ "en": "./translations/en/aboutPage.content.json",
432
+ "fr": "./translations/fr/aboutPage.content.json",
433
+ "es": "./translations/es/aboutPage.content.json"
434
+ }
435
+ }
436
+ ```
437
+
438
+ **Variables disponibles :**
439
+
440
+ - `{{locale}}` – Code de la locale (ex. `fr`, `es`)
441
+ - `{{fileName}}` – Nom du fichier (ex. `example`)
442
+ - `{{key}}` – Clé du dictionnaire (ex. `example`)
443
+
444
+ > Voir [Configuration de l’auto-remplissage dans Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/autoFill.md) pour plus d’informations.
445
+
446
+ ##### `priority` (nombre)
447
+
448
+ Indique la priorité du dictionnaire pour la résolution des conflits. Lorsque plusieurs dictionnaires contiennent la même clé, celui avec le numéro de priorité le plus élevé écrasera les autres. Ceci est utile pour gérer les hiérarchies de contenu et les surcharges.
449
+
450
+ **Exemple :**
451
+
452
+ ```typescript
453
+ // Dictionnaire de base
454
+ {
455
+ key: "welcome-message",
456
+ priority: 1,
457
+ content: { message: "Welcome!" }
458
+ }
459
+
460
+ // Dictionnaire de surcharge
461
+ {
462
+ key: "welcome-message",
463
+ priority: 10,
464
+ content: { message: "Bienvenue dans notre service premium !" }
465
+ }
466
+ // Ceci remplacera le dictionnaire de base
467
+ ```
468
+
469
+ ### Propriétés CMS
470
+
471
+ ##### `version` (string)
472
+
473
+ Identifiant de version pour les dictionnaires distants. Permet de suivre quelle version du dictionnaire est actuellement utilisée, particulièrement utile lors de l'utilisation de systèmes de gestion de contenu distants.
474
+
475
+ ##### `live` (boolean)
476
+
477
+ Pour les dictionnaires distants, indique si le dictionnaire doit être récupéré en direct à l'exécution. Lorsqu'il est activé :
478
+
479
+ - Nécessite que `importMode` soit défini sur "live" dans `intlayer.config.ts`
480
+ - Nécessite qu'un serveur live soit en fonctionnement
481
+ - Le dictionnaire sera récupéré à l'exécution via l'API de synchronisation live
482
+ - Si en mode live mais que la récupération échoue, revient à la valeur dynamique
483
+ - Si non live, le dictionnaire est transformé au moment de la compilation pour une performance optimale
484
+
485
+ ### Propriétés Système (Générées automatiquement)
486
+
487
+ Ces propriétés sont générées automatiquement par Intlayer et ne doivent pas être modifiées manuellement :
488
+
489
+ ##### `$schema` (string)
490
+
491
+ Schéma JSON utilisé pour la validation de la structure du dictionnaire. Ajouté automatiquement par Intlayer pour garantir l'intégrité du dictionnaire.
492
+
493
+ ##### `id` (string)
494
+
495
+ Pour les dictionnaires distants, il s'agit de l'identifiant unique du dictionnaire sur le serveur distant. Utilisé pour récupérer et gérer le contenu distant.
496
+
497
+ ##### `localId` (LocalDictionaryId)
498
+
499
+ Identifiant unique pour les dictionnaires locaux. Généré automatiquement par Intlayer pour aider à identifier le dictionnaire et déterminer s'il est local ou distant, ainsi que sa localisation.
500
+
501
+ ##### `localIds` (LocalDictionaryId[])
502
+
503
+ Pour les dictionnaires fusionnés, ce tableau contient les identifiants de tous les dictionnaires qui ont été fusionnés ensemble. Utile pour suivre la source du contenu fusionné.
504
+
505
+ ##### `filePath` (string)
506
+
507
+ Le chemin du fichier du dictionnaire local, indiquant à partir de quel fichier `.content` le dictionnaire a été généré. Aide au débogage et au suivi de la source.
508
+
509
+ ##### `versions` (string[])
510
+
511
+ Pour les dictionnaires distants, ce tableau contient toutes les versions disponibles du dictionnaire. Aide à suivre quelles versions sont disponibles pour utilisation.
512
+
513
+ ##### `autoFilled` (true)
514
+
515
+ Indique si le dictionnaire a été automatiquement rempli à partir de sources externes. En cas de conflits, les dictionnaires de base prévaudront sur les dictionnaires auto-remplis.
516
+
517
+ ##### `location` ('distant' | 'locale')
518
+
519
+ Indique l'emplacement du dictionnaire :
520
+
521
+ - `'locale'` : Dictionnaire local (à partir des fichiers de contenu)
522
+ - `'distant'` : Dictionnaire distant (à partir d'une source externe)
523
+
524
+ ## Types de nœuds de contenu
525
+
526
+ Intlayer fournit plusieurs types de nœuds de contenu spécialisés qui étendent les valeurs primitives de base :
527
+
528
+ ### Contenu de traduction (`t`)
529
+
530
+ Contenu multilingue qui varie selon la locale :
531
+
532
+ ```typescript
533
+ import { t } from "intlayer";
534
+
535
+ // TypeScript/JavaScript
536
+ multilingualContent: t({
537
+ en: "Welcome to our website",
538
+ fr: "Bienvenue sur notre site web",
539
+ es: "Bienvenido a nuestro sitio web",
540
+ });
541
+ ```
542
+
543
+ ### Contenu conditionnel (`cond`)
544
+
545
+ Contenu qui change en fonction de conditions booléennes :
546
+
547
+ ```typescript
548
+ import { cond } from "intlayer";
549
+
550
+ conditionalContent: cond({
551
+ true: "User is logged in",
552
+ false: "Please log in to continue",
553
+ });
554
+ ```
555
+
556
+ ### Contenu d'énumération (`enu`)
557
+
558
+ Contenu qui varie en fonction de valeurs énumérées :
559
+
560
+ ```typescript
561
+ import { enu } from "intlayer";
562
+
563
+ statusContent: enu({
564
+ pending: "Votre demande est en attente",
565
+ approved: "Votre demande a été approuvée",
566
+ rejected: "Votre demande a été rejetée",
567
+ });
568
+ ```
569
+
570
+ ### Contenu d'insertion (`insert`)
571
+
572
+ Contenu qui peut être inséré dans un autre contenu :
573
+
574
+ ```typescript
575
+ import { insert } from "intlayer";
576
+
577
+ insertionContent: insert("Ce texte peut être inséré n'importe où");
578
+ ```
579
+
580
+ ### Contenu imbriqué (`nest`)
581
+
582
+ Références à d'autres dictionnaires :
583
+
584
+ ```typescript
585
+ import { nest } from "intlayer";
586
+
587
+ nestedContent: nest("about-page");
588
+ ```
589
+
590
+ ### Contenu Markdown (`md`)
591
+
592
+ Contenu riche au format Markdown :
593
+
594
+ ```typescript
595
+ import { md } from "intlayer";
596
+
597
+ markdownContent: md(
598
+ "# Bienvenue\n\nCeci est un texte en **gras** avec des [liens](https://example.com)"
599
+ );
600
+ ```
601
+
602
+ ### Contenu selon le genre (`gender`)
603
+
604
+ Contenu qui varie selon le genre :
605
+
606
+ ```typescript
607
+ import { gender } from "intlayer";
608
+
609
+ genderContent: gender({
610
+ male: "Il est développeur",
611
+ female: "Elle est développeuse",
612
+ other: "Ils sont développeurs",
613
+ });
614
+ ```
615
+
616
+ ### Contenu de fichier (`file`)
617
+
618
+ Références à des fichiers externes :
619
+
620
+ ```typescript
621
+ import { file } from "intlayer";
622
+
623
+ fileContent: file("./path/to/content.txt");
624
+ ```
625
+
626
+ ## Création de fichiers de contenu
627
+
628
+ ### Structure de base d’un fichier de contenu
629
+
630
+ Un fichier de contenu exporte un objet par défaut qui satisfait le type `Dictionary` :
631
+
632
+ ```typescript
633
+ // example.content.ts
634
+ import { t, cond, nest, md, insert, file } from "intlayer";
635
+
636
+ export default {
637
+ key: "welcome-page",
638
+ title: "Contenu de la page d’accueil",
639
+ description:
640
+ "Contenu pour la page d'accueil principale incluant la section héro et les fonctionnalités",
641
+ tags: ["page", "accueil", "page-d-accueil"],
642
+ content: {
643
+ hero: {
644
+ title: t({
645
+ en: "Welcome to Our Platform",
646
+ fr: "Bienvenue sur Notre Plateforme",
647
+ es: "Bienvenido a Nuestra Plataforma",
648
+ }),
649
+ subtitle: t({
650
+ en: "Build amazing applications with ease",
651
+ fr: "Construisez des applications incroyables avec facilité",
652
+ es: "Construye aplicaciones increíbles con facilidad",
653
+ }),
654
+ cta: cond({
655
+ true: t({
656
+ en: "Get Started",
657
+ fr: "Commencer",
658
+ es: "Comenzar",
659
+ }),
660
+ false: t({
661
+ en: "Sign Up",
662
+ fr: "S'inscrire",
663
+ es: "Registrarse",
664
+ }),
665
+ }),
666
+ },
667
+ features: [
668
+ {
669
+ title: t({
670
+ en: "Easy to Use",
671
+ fr: "Facile à Utiliser",
672
+ es: "Fácil de Usar",
673
+ }),
674
+ description: t({
675
+ en: "Intuitive interface for all skill levels",
676
+ fr: "Interface intuitive pour tous les niveaux",
677
+ es: "Interfaz intuitiva para todos los niveles",
678
+ }),
679
+ },
680
+ ],
681
+ documentation: nest("documentation"),
682
+ readme: file("./README.md"),
683
+ },
684
+ } satisfies Dictionary;
685
+ ```
686
+
687
+ ### Fichier de contenu JSON
688
+
689
+ Vous pouvez également créer des fichiers de contenu au format JSON :
690
+
691
+ ```json
692
+ {
693
+ "key": "welcome-page",
694
+ "title": "Contenu de la page d'accueil",
695
+ "description": "Contenu pour la page d'accueil principale",
696
+ "tags": ["page", "accueil"],
697
+ "content": {
698
+ "hero": {
699
+ "title": {
700
+ "nodeType": "translation",
701
+ "translation": {
702
+ "en": "Welcome to Our Platform",
703
+ "fr": "Bienvenue sur Notre Plateforme"
704
+ }
705
+ },
706
+ "subtitle": {
707
+ "nodeType": "translation",
708
+ "translation": {
709
+ "en": "Build amazing applications with ease",
710
+ "fr": "Construisez des applications incroyables avec facilité"
711
+ }
712
+ }
713
+ }
714
+ }
715
+ }
716
+ ```
717
+
718
+ ### Fichiers de contenu par langue
719
+
720
+ Pour les dictionnaires par langue, spécifiez la propriété `locale` :
721
+
722
+ ```typescript
723
+ // welcome-page.en.content.ts
724
+ export default {
725
+ key: "welcome-page",
726
+ locale: "en",
727
+ content: {
728
+ hero: {
729
+ title: "Welcome to Our Platform",
730
+ subtitle: "Build amazing applications with ease",
731
+ },
732
+ },
733
+ } satisfies Dictionary;
734
+ ```
735
+
736
+ ```typescript
737
+ // welcome-page.fr.content.ts
738
+ export default {
739
+ key: "welcome-page",
740
+ locale: "fr",
741
+ content: {
742
+ hero: {
743
+ title: "Bienvenue sur Notre Plateforme",
744
+ subtitle: "Construisez des applications incroyables avec facilité",
745
+ },
746
+ },
747
+ } satisfies Dictionary;
748
+ ```
749
+
750
+ ## Extensions des fichiers de contenu
751
+
752
+ Intlayer vous permet de personnaliser les extensions de vos fichiers de déclaration de contenu. Cette personnalisation offre une flexibilité dans la gestion de projets à grande échelle et aide à éviter les conflits avec d'autres modules.
753
+
754
+ ### Extensions par défaut
755
+
756
+ Par défaut, Intlayer surveille tous les fichiers avec les extensions suivantes pour les déclarations de contenu :
757
+
758
+ - `.content.json`
759
+ - `.content.ts`
760
+ - `.content.tsx`
761
+ - `.content.js`
762
+ - `.content.jsx`
763
+ - `.content.mjs`
764
+ - `.content.mjx`
765
+ - `.content.cjs`
766
+ - `.content.cjx`
767
+
768
+ Ces extensions par défaut conviennent à la plupart des applications. Cependant, lorsque vous avez des besoins spécifiques, vous pouvez définir des extensions personnalisées pour rationaliser le processus de construction et réduire le risque de conflits avec d'autres composants.
769
+
770
+ > Pour personnaliser les extensions de fichiers qu'Intlayer utilise pour identifier les fichiers de déclaration de contenu, vous pouvez les spécifier dans le fichier de configuration d'Intlayer. Cette approche est bénéfique pour les projets à grande échelle où limiter la portée du processus de surveillance améliore les performances de construction.
771
+
772
+ ## Concepts Avancés
773
+
774
+ ### Fusion de Dictionnaires
775
+
776
+ Lorsque plusieurs dictionnaires ont la même clé, Intlayer les fusionne automatiquement. Le comportement de fusion dépend de plusieurs facteurs :
777
+
778
+ - **Priorité** : Les dictionnaires avec des valeurs de `priority` plus élevées remplacent ceux avec des valeurs plus basses
779
+ - **Auto-remplissage vs Base** : Les dictionnaires de base remplacent les dictionnaires auto-remplis
780
+ - **Localisation** : Les dictionnaires locaux remplacent les dictionnaires distants (lorsque les priorités sont égales)
781
+
782
+ ### Sécurité de type
783
+
784
+ Intlayer offre un support complet de TypeScript pour les fichiers de contenu :
785
+
786
+ ```typescript
787
+ // Définissez votre type de contenu
788
+ interface WelcomePageContent {
789
+ hero: {
790
+ title: string;
791
+ subtitle: string;
792
+ cta: string;
793
+ };
794
+ features: Array<{
795
+ title: string;
796
+ description: string;
797
+ }>;
798
+ }
799
+
800
+ // Utilisez-le dans votre dictionnaire
801
+ export default {
802
+ key: "welcome-page",
803
+ content: {
804
+ // TypeScript fournira l'autocomplétion et la vérification de type
805
+ hero: {
806
+ title: "Bienvenue",
807
+ subtitle: "Créez des applications incroyables",
808
+ cta: "Commencer",
809
+ },
810
+ },
811
+ } satisfies Dictionary<WelcomePageContent>;
812
+ ```
813
+
814
+ ### Imbrication de nœuds
815
+
816
+ Vous pouvez sans problème imbriquer des fonctions les unes dans les autres.
817
+
818
+ Exemple :
819
+
820
+ ```javascript fileName="src/example.content.tsx" contentDeclarationFormat="typescript"
821
+ import { t, enu, cond, nest, md, type Dictionary } from "intlayer";
822
+
823
+ const getName = async () => "John Doe";
824
+
825
+ export default {
826
+ key: "page",
827
+ content: {
828
+ // `getIntlayer('page','en').hiMessage` retourne `['Hi', ' ', 'John Doe']`
829
+ hiMessage: [
830
+ t({
831
+ en: "Hi",
832
+ fr: "Salut",
833
+ es: "Hola",
834
+ }),
835
+ " ",
836
+ getName(),
837
+ ],
838
+ // Contenu composite imbriquant condition, énumération et contenu multilingue
839
+ // `getIntlayer('page','en').advancedContent(true)(10)` retourne 'Multiple items found'
840
+ advancedContent: cond({
841
+ true: enu({
842
+ "0": t({
843
+ en: "No items found",
844
+ fr: "Aucun article trouvé",
845
+ es: "No se encontraron artículos",
846
+ }),
847
+ "1": t({
848
+ en: "One item found",
849
+ fr: "Un article trouvé",
850
+ es: "Se encontró un artículo",
851
+ }),
852
+ ">1": t({
853
+ en: "Multiple items found",
854
+ fr: "Plusieurs articles trouvés",
855
+ es: "Se encontraron múltiples artículos",
856
+ }),
857
+ }),
858
+ false: t({
859
+ en: "No valid data available",
860
+ fr: "Aucune donnée valide disponible",
861
+ es: "No hay datos válidos disponibles",
862
+ }),
863
+ }),
864
+ },
865
+ } satisfies Dictionary;
866
+ ```
867
+
868
+ ```javascript fileName="src/example.content.mjx" contentDeclarationFormat="esm"
869
+ import { t, enu, cond, nest, md } from "intlayer";
870
+
871
+ const getName = async () => "John Doe";
872
+
873
+ /** @type {import('intlayer').Dictionary} */
874
+ export default {
875
+ key: "page",
876
+ content: {
877
+ // `getIntlayer('page','en').hiMessage` retourne `['Salut', ' ', 'John Doe']`
878
+ hiMessage: [
879
+ t({
880
+ en: "Hi",
881
+ fr: "Salut",
882
+ es: "Hola",
883
+ }),
884
+ " ",
885
+ getName(),
886
+ ],
887
+ // Contenu composite imbriquant condition, énumération et contenu multilingue
888
+ // `getIntlayer('page','en').advancedContent(true)(10)` retourne 'Plusieurs articles trouvés'
889
+ advancedContent: cond({
890
+ true: enu({
891
+ "0": t({
892
+ en: "No items found",
893
+ fr: "Aucun article trouvé",
894
+ es: "No se encontraron artículos",
895
+ }),
896
+ "1": t({
897
+ en: "One item found",
898
+ fr: "Un article trouvé",
899
+ es: "Se encontró un artículo",
900
+ }),
901
+ ">1": t({
902
+ en: "Multiple items found",
903
+ fr: "Plusieurs articles trouvés",
904
+ es: "Se encontraron múltiples artículos",
905
+ }),
906
+ }),
907
+ false: t({
908
+ en: "No valid data available",
909
+ fr: "Aucune donnée valide disponible",
910
+ es: "No hay datos válidos disponibles",
911
+ }),
912
+ }),
913
+ },
914
+ };
915
+ ```
916
+
917
+ ```javascript fileName="src/example.content.cjx" contentDeclarationFormat="commonjs"
918
+ const { t, enu, cond, nest, md } = require("intlayer");
919
+
920
+ const getName = async () => "John Doe";
921
+
922
+ /** @type {import('intlayer').Dictionary} */
923
+ module.exports = {
924
+ key: "page",
925
+ content: {
926
+ // `getIntlayer('page','en').hiMessage` retourne `['Salut', ' ', 'John Doe']`
927
+ hiMessage: [
928
+ t({
929
+ en: "Hi",
930
+ fr: "Salut",
931
+ es: "Hola",
932
+ }),
933
+ " ",
934
+ getName(),
935
+ ],
936
+ // Contenu composite imbriquant condition, énumération et contenu multilingue
937
+ // `getIntlayer('page','fr').advancedContent(true)(10)` retourne 'Plusieurs articles trouvés'
938
+ advancedContent: cond({
939
+ true: enu({
940
+ "0": t({
941
+ en: "No items found",
942
+ fr: "Aucun article trouvé",
943
+ es: "No se encontraron artículos",
944
+ }),
945
+ "1": t({
946
+ en: "One item found",
947
+ fr: "Un article trouvé",
948
+ es: "Se encontró un artículo",
949
+ }),
950
+ ">1": t({
951
+ en: "Multiple items found",
952
+ fr: "Plusieurs articles trouvés",
953
+ es: "Se encontraron múltiples artículos",
954
+ }),
955
+ }),
956
+ false: t({
957
+ en: "No valid data available",
958
+ fr: "Aucune donnée valide disponible",
959
+ es: "No hay datos válidos disponibles",
960
+ }),
961
+ }),
962
+ },
963
+ };
964
+ ```
965
+
966
+ ```json5 fileName="src/example.content.json" contentDeclarationFormat="json"
967
+ {
968
+ "$schema": "https://intlayer.org/schema.json",
969
+ "key": "page",
970
+ "content": {
971
+ "hiMessage": {
972
+ "nodeType": "composite",
973
+ "composite": [
974
+ {
975
+ "nodeType": "translation",
976
+ "translation": {
977
+ "en": "Hi",
978
+ "fr": "Salut",
979
+ "es": "Hola",
980
+ },
981
+ },
982
+ " ",
983
+ "John Doe",
984
+ ],
985
+ },
986
+ "advancedContent": {
987
+ "nodeType": "condition",
988
+ "condition": {
989
+ "true": {
990
+ "nodeType": "enumeration",
991
+ "enumeration": {
992
+ "0": {
993
+ "nodeType": "translation",
994
+ "translation": {
995
+ "en": "No items found",
996
+ "fr": "Aucun article trouvé",
997
+ "es": "No se encontraron artículos",
998
+ },
999
+ },
1000
+ "1": {
1001
+ "nodeType": "translation",
1002
+ "translation": {
1003
+ "en": "One item found",
1004
+ "fr": "Un article trouvé",
1005
+ "es": "Se encontró un artículo",
1006
+ },
1007
+ },
1008
+ ">1": {
1009
+ "nodeType": "translation",
1010
+ "translation": {
1011
+ "en": "Multiple items found",
1012
+ "fr": "Plusieurs articles trouvés",
1013
+ "es": "Se encontraron múltiples artículos",
1014
+ },
1015
+ },
1016
+ },
1017
+ },
1018
+ "false": {
1019
+ "nodeType": "translation",
1020
+ "translation": {
1021
+ "en": "No valid data available",
1022
+ "fr": "Aucune donnée valide disponible",
1023
+ "es": "No hay datos válidos disponibles",
1024
+ },
1025
+ },
1026
+ },
1027
+ },
1028
+ },
1029
+ }
1030
+ ```
1031
+
1032
+ ### Bonnes pratiques
1033
+
1034
+ 1. **Conventions de nommage** :
1035
+ - Utilisez le kebab-case pour les clés du dictionnaire (`"about-page-meta"`)
1036
+ - Regroupez le contenu lié sous le même préfixe de clé
1037
+
1038
+ 2. **Organisation du contenu** :
1039
+ - Gardez le contenu lié ensemble dans le même dictionnaire
1040
+ - Utilisez des objets imbriqués pour organiser des structures de contenu complexes
1041
+ - Exploitez les tags pour la catégorisation
1042
+ - Utilisez `autoFill` pour remplir automatiquement les traductions manquantes
1043
+
1044
+ 3. **Performance** :
1045
+ - Ajustez la configuration du contenu pour limiter la portée des fichiers surveillés
1046
+ - Utilisez des dictionnaires en direct uniquement lorsque des mises à jour en temps réel sont nécessaires (par exemple, tests A/B, etc.)
1047
+ - Assurez-vous que le plugin de transformation de build (`@intlayer/swc` ou `@intlayer/babel`) est activé pour optimiser le dictionnaire au moment de la compilation
1048
+
1049
+ ## Historique de la documentation
1050
+
1051
+ | Version | Date | Modifications |
1052
+ | ------- | ---------- | ------------------------------------ |
1053
+ | 6.0.0 | 2025-09-20 | Ajout de la documentation des champs |
1054
+ | 5.5.10 | 2025-06-29 | Historique initial |