@intlayer/docs 8.12.5-canary.0 → 9.0.0-canary.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. package/dist/cjs/generated/docs.entry.cjs +320 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +320 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +16 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/cli/doc-review.md +110 -4
  8. package/docs/ar/cli/index.md +1 -1
  9. package/docs/ar/cli/scan.md +1 -1
  10. package/docs/ar/configuration.md +36 -3
  11. package/docs/ar/dictionary/condition.md +167 -5
  12. package/docs/ar/dictionary/enumeration.md +540 -6
  13. package/docs/ar/dictionary/file.md +151 -1
  14. package/docs/ar/dictionary/gender.md +168 -7
  15. package/docs/ar/dictionary/nesting.md +173 -65
  16. package/docs/ar/dictionary/plurial.md +174 -5
  17. package/docs/ar/dictionary/translation.md +156 -2
  18. package/docs/ar/dynamic_dictionaries/collections.md +1 -1
  19. package/docs/ar/dynamic_dictionaries/dynamic_content.md +1 -1
  20. package/docs/ar/dynamic_dictionaries/index.md +1 -1
  21. package/docs/ar/dynamic_dictionaries/variants.md +1 -1
  22. package/docs/ar/intlayer_with_vite+react.md +31 -31
  23. package/docs/ar/releases/v8.md +187 -1
  24. package/docs/ar/releases/v9.md +232 -0
  25. package/docs/bn/cli/index.md +1 -1
  26. package/docs/bn/cli/scan.md +1 -1
  27. package/docs/bn/configuration.md +36 -3
  28. package/docs/cs/cli/index.md +1 -1
  29. package/docs/cs/cli/scan.md +1 -1
  30. package/docs/cs/configuration.md +35 -2
  31. package/docs/de/cli/doc-review.md +110 -4
  32. package/docs/de/cli/index.md +1 -1
  33. package/docs/de/cli/scan.md +1 -1
  34. package/docs/de/configuration.md +35 -2
  35. package/docs/de/dictionary/condition.md +167 -5
  36. package/docs/de/dictionary/enumeration.md +777 -7
  37. package/docs/de/dictionary/file.md +151 -1
  38. package/docs/de/dictionary/gender.md +168 -7
  39. package/docs/de/dictionary/nesting.md +173 -65
  40. package/docs/de/dictionary/plurial.md +347 -7
  41. package/docs/de/dictionary/translation.md +156 -2
  42. package/docs/de/dynamic_dictionaries/collections.md +1 -1
  43. package/docs/de/dynamic_dictionaries/dynamic_content.md +1 -1
  44. package/docs/de/dynamic_dictionaries/index.md +1 -1
  45. package/docs/de/dynamic_dictionaries/variants.md +1 -1
  46. package/docs/de/intlayer_with_vite+react.md +48 -48
  47. package/docs/de/migration_from_i18next_to_intlayer.md +1 -1
  48. package/docs/de/migration_from_next-i18next_to_intlayer.md +1 -1
  49. package/docs/de/migration_from_next-intl_to_intlayer.md +1 -1
  50. package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  51. package/docs/de/migration_from_react-i18next_to_intlayer.md +1 -1
  52. package/docs/de/migration_from_vue-i18n_to_intlayer.md +1 -1
  53. package/docs/de/releases/v8.md +197 -1
  54. package/docs/de/releases/v9.md +232 -0
  55. package/docs/en/CI_CD.md +7 -7
  56. package/docs/en/cli/ci.md +62 -8
  57. package/docs/en/cli/doc-review.md +110 -4
  58. package/docs/en/cli/index.md +1 -1
  59. package/docs/en/cli/scan.md +1 -1
  60. package/docs/en/compat/i18n-js.md +44 -0
  61. package/docs/en/compat/i18next.md +59 -0
  62. package/docs/en/compat/index.md +51 -0
  63. package/docs/en/compat/lingui.md +44 -0
  64. package/docs/en/compat/next-i18next.md +57 -0
  65. package/docs/en/compat/next-intl.md +59 -0
  66. package/docs/en/compat/next-translate.md +45 -0
  67. package/docs/en/compat/ngx-translate.md +45 -0
  68. package/docs/en/compat/nuxtjs-i18n.md +46 -0
  69. package/docs/en/compat/polyglot.md +45 -0
  70. package/docs/en/compat/react-i18next.md +58 -0
  71. package/docs/en/compat/react-intl.md +55 -0
  72. package/docs/en/compat/svelte-i18n.md +47 -0
  73. package/docs/en/compat/transloco.md +45 -0
  74. package/docs/en/compat/vue-i18n.md +58 -0
  75. package/docs/en/configuration.md +35 -2
  76. package/docs/en/dictionary/condition.md +163 -1
  77. package/docs/en/dictionary/enumeration.md +309 -7
  78. package/docs/en/dictionary/file.md +151 -1
  79. package/docs/en/dictionary/gender.md +162 -1
  80. package/docs/en/dictionary/nesting.md +173 -9
  81. package/docs/en/dictionary/plurial.md +155 -10
  82. package/docs/en/dictionary/translation.md +145 -52
  83. package/docs/en/dynamic_dictionaries/collections.md +1 -1
  84. package/docs/en/dynamic_dictionaries/dynamic_content.md +1 -1
  85. package/docs/en/dynamic_dictionaries/index.md +1 -1
  86. package/docs/en/dynamic_dictionaries/variants.md +1 -1
  87. package/docs/en/migration_from_i18next_to_intlayer.md +1 -1
  88. package/docs/en/migration_from_next-i18next_to_intlayer.md +1 -1
  89. package/docs/en/migration_from_next-intl_to_intlayer.md +1 -1
  90. package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  91. package/docs/en/migration_from_react-i18next_to_intlayer.md +1 -1
  92. package/docs/en/migration_from_vue-i18n_to_intlayer.md +1 -1
  93. package/docs/en/releases/v8.md +187 -1
  94. package/docs/en/releases/v9.md +220 -0
  95. package/docs/en-GB/cli/doc-review.md +110 -4
  96. package/docs/en-GB/cli/index.md +1 -1
  97. package/docs/en-GB/cli/scan.md +1 -1
  98. package/docs/en-GB/configuration.md +35 -2
  99. package/docs/en-GB/dictionary/condition.md +364 -1
  100. package/docs/en-GB/dictionary/enumeration.md +577 -5
  101. package/docs/en-GB/dictionary/file.md +317 -1
  102. package/docs/en-GB/dictionary/gender.md +375 -2
  103. package/docs/en-GB/dictionary/nesting.md +368 -71
  104. package/docs/en-GB/dictionary/plurial.md +347 -7
  105. package/docs/en-GB/dictionary/translation.md +320 -32
  106. package/docs/en-GB/dynamic_dictionaries/collections.md +1 -1
  107. package/docs/en-GB/dynamic_dictionaries/dynamic_content.md +1 -1
  108. package/docs/en-GB/dynamic_dictionaries/index.md +1 -1
  109. package/docs/en-GB/dynamic_dictionaries/variants.md +1 -1
  110. package/docs/en-GB/releases/v8.md +1 -1
  111. package/docs/en-GB/releases/v9.md +220 -0
  112. package/docs/es/cli/doc-review.md +110 -4
  113. package/docs/es/cli/index.md +1 -1
  114. package/docs/es/cli/scan.md +1 -1
  115. package/docs/es/configuration.md +36 -3
  116. package/docs/es/dictionary/condition.md +167 -5
  117. package/docs/es/dictionary/enumeration.md +537 -12
  118. package/docs/es/dictionary/file.md +151 -1
  119. package/docs/es/dictionary/gender.md +168 -7
  120. package/docs/es/dictionary/nesting.md +173 -65
  121. package/docs/es/dictionary/plurial.md +347 -7
  122. package/docs/es/dictionary/translation.md +156 -2
  123. package/docs/es/dynamic_dictionaries/collections.md +1 -1
  124. package/docs/es/dynamic_dictionaries/dynamic_content.md +1 -1
  125. package/docs/es/dynamic_dictionaries/index.md +1 -1
  126. package/docs/es/dynamic_dictionaries/variants.md +1 -1
  127. package/docs/es/migration_from_i18next_to_intlayer.md +1 -1
  128. package/docs/es/migration_from_next-i18next_to_intlayer.md +1 -1
  129. package/docs/es/migration_from_next-intl_to_intlayer.md +1 -1
  130. package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  131. package/docs/es/migration_from_react-i18next_to_intlayer.md +1 -1
  132. package/docs/es/migration_from_vue-i18n_to_intlayer.md +1 -1
  133. package/docs/es/releases/v8.md +187 -1
  134. package/docs/es/releases/v9.md +228 -0
  135. package/docs/fr/cli/doc-review.md +110 -4
  136. package/docs/fr/cli/index.md +1 -1
  137. package/docs/fr/cli/scan.md +1 -1
  138. package/docs/fr/configuration.md +49 -16
  139. package/docs/fr/dictionary/condition.md +369 -6
  140. package/docs/fr/dictionary/enumeration.md +540 -6
  141. package/docs/fr/dictionary/file.md +151 -1
  142. package/docs/fr/dictionary/gender.md +168 -7
  143. package/docs/fr/dictionary/nesting.md +357 -86
  144. package/docs/fr/dictionary/plurial.md +174 -5
  145. package/docs/fr/dictionary/translation.md +156 -2
  146. package/docs/fr/dynamic_dictionaries/collections.md +1 -1
  147. package/docs/fr/dynamic_dictionaries/dynamic_content.md +1 -1
  148. package/docs/fr/dynamic_dictionaries/index.md +1 -1
  149. package/docs/fr/dynamic_dictionaries/variants.md +1 -1
  150. package/docs/fr/migration_from_i18next_to_intlayer.md +1 -1
  151. package/docs/fr/migration_from_next-i18next_to_intlayer.md +1 -1
  152. package/docs/fr/migration_from_next-intl_to_intlayer.md +1 -1
  153. package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  154. package/docs/fr/migration_from_react-i18next_to_intlayer.md +1 -1
  155. package/docs/fr/migration_from_vue-i18n_to_intlayer.md +1 -1
  156. package/docs/fr/releases/v8.md +187 -1
  157. package/docs/fr/releases/v9.md +220 -0
  158. package/docs/hi/cli/doc-review.md +110 -4
  159. package/docs/hi/cli/index.md +1 -1
  160. package/docs/hi/cli/scan.md +1 -1
  161. package/docs/hi/configuration.md +49 -16
  162. package/docs/hi/dictionary/condition.md +167 -5
  163. package/docs/hi/dictionary/enumeration.md +540 -6
  164. package/docs/hi/dictionary/file.md +151 -1
  165. package/docs/hi/dictionary/gender.md +168 -7
  166. package/docs/hi/dictionary/nesting.md +173 -65
  167. package/docs/hi/dictionary/plurial.md +174 -5
  168. package/docs/hi/dictionary/translation.md +155 -5
  169. package/docs/hi/dynamic_dictionaries/collections.md +1 -1
  170. package/docs/hi/dynamic_dictionaries/dynamic_content.md +1 -1
  171. package/docs/hi/dynamic_dictionaries/index.md +1 -1
  172. package/docs/hi/dynamic_dictionaries/variants.md +1 -1
  173. package/docs/hi/releases/v8.md +188 -2
  174. package/docs/hi/releases/v9.md +232 -0
  175. package/docs/id/cli/doc-review.md +110 -4
  176. package/docs/id/cli/index.md +1 -1
  177. package/docs/id/cli/scan.md +1 -1
  178. package/docs/id/configuration.md +35 -2
  179. package/docs/id/dictionary/condition.md +167 -5
  180. package/docs/id/dictionary/enumeration.md +540 -6
  181. package/docs/id/dictionary/file.md +318 -2
  182. package/docs/id/dictionary/gender.md +381 -8
  183. package/docs/id/dictionary/nesting.md +357 -86
  184. package/docs/id/dictionary/plurial.md +174 -5
  185. package/docs/id/dictionary/translation.md +156 -2
  186. package/docs/id/dynamic_dictionaries/collections.md +1 -1
  187. package/docs/id/dynamic_dictionaries/dynamic_content.md +1 -1
  188. package/docs/id/dynamic_dictionaries/index.md +1 -1
  189. package/docs/id/dynamic_dictionaries/variants.md +1 -1
  190. package/docs/id/releases/v8.md +191 -2
  191. package/docs/id/releases/v9.md +232 -0
  192. package/docs/it/cli/doc-review.md +110 -4
  193. package/docs/it/cli/index.md +1 -1
  194. package/docs/it/cli/scan.md +1 -1
  195. package/docs/it/configuration.md +49 -16
  196. package/docs/it/dictionary/condition.md +167 -5
  197. package/docs/it/dictionary/enumeration.md +540 -6
  198. package/docs/it/dictionary/file.md +318 -2
  199. package/docs/it/dictionary/gender.md +168 -7
  200. package/docs/it/dictionary/nesting.md +173 -65
  201. package/docs/it/dictionary/plurial.md +347 -7
  202. package/docs/it/dictionary/translation.md +156 -2
  203. package/docs/it/dynamic_dictionaries/collections.md +1 -1
  204. package/docs/it/dynamic_dictionaries/dynamic_content.md +1 -1
  205. package/docs/it/dynamic_dictionaries/index.md +1 -1
  206. package/docs/it/dynamic_dictionaries/variants.md +1 -1
  207. package/docs/it/intlayer_with_vite+react.md +0 -48
  208. package/docs/it/migration_from_i18next_to_intlayer.md +1 -1
  209. package/docs/it/migration_from_next-i18next_to_intlayer.md +1 -1
  210. package/docs/it/migration_from_next-intl_to_intlayer.md +1 -1
  211. package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  212. package/docs/it/migration_from_react-i18next_to_intlayer.md +1 -1
  213. package/docs/it/migration_from_vue-i18n_to_intlayer.md +1 -1
  214. package/docs/it/releases/v8.md +200 -2
  215. package/docs/it/releases/v9.md +232 -0
  216. package/docs/ja/cli/doc-review.md +110 -4
  217. package/docs/ja/cli/index.md +1 -1
  218. package/docs/ja/cli/scan.md +1 -1
  219. package/docs/ja/configuration.md +50 -17
  220. package/docs/ja/dictionary/condition.md +167 -5
  221. package/docs/ja/dictionary/enumeration.md +540 -6
  222. package/docs/ja/dictionary/file.md +151 -1
  223. package/docs/ja/dictionary/gender.md +168 -7
  224. package/docs/ja/dictionary/nesting.md +173 -65
  225. package/docs/ja/dictionary/plurial.md +174 -5
  226. package/docs/ja/dictionary/translation.md +169 -8
  227. package/docs/ja/dynamic_dictionaries/collections.md +1 -1
  228. package/docs/ja/dynamic_dictionaries/dynamic_content.md +1 -1
  229. package/docs/ja/dynamic_dictionaries/index.md +1 -1
  230. package/docs/ja/dynamic_dictionaries/variants.md +1 -1
  231. package/docs/ja/intlayer_with_vite+react.md +290 -0
  232. package/docs/ja/migration_from_i18next_to_intlayer.md +1 -1
  233. package/docs/ja/migration_from_next-i18next_to_intlayer.md +1 -1
  234. package/docs/ja/migration_from_next-intl_to_intlayer.md +1 -1
  235. package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  236. package/docs/ja/migration_from_react-i18next_to_intlayer.md +1 -1
  237. package/docs/ja/migration_from_vue-i18n_to_intlayer.md +1 -1
  238. package/docs/ja/releases/v8.md +193 -4
  239. package/docs/ja/releases/v9.md +232 -0
  240. package/docs/ko/cli/doc-review.md +110 -4
  241. package/docs/ko/cli/index.md +1 -1
  242. package/docs/ko/cli/scan.md +1 -1
  243. package/docs/ko/configuration.md +49 -16
  244. package/docs/ko/dictionary/condition.md +167 -5
  245. package/docs/ko/dictionary/enumeration.md +540 -6
  246. package/docs/ko/dictionary/file.md +151 -1
  247. package/docs/ko/dictionary/gender.md +168 -7
  248. package/docs/ko/dictionary/nesting.md +173 -65
  249. package/docs/ko/dictionary/plurial.md +174 -5
  250. package/docs/ko/dictionary/translation.md +169 -8
  251. package/docs/ko/dynamic_dictionaries/collections.md +1 -1
  252. package/docs/ko/dynamic_dictionaries/dynamic_content.md +1 -1
  253. package/docs/ko/dynamic_dictionaries/index.md +1 -1
  254. package/docs/ko/dynamic_dictionaries/variants.md +1 -1
  255. package/docs/ko/intlayer_with_vite+react.md +48 -490
  256. package/docs/ko/migration_from_i18next_to_intlayer.md +1 -1
  257. package/docs/ko/migration_from_next-i18next_to_intlayer.md +1 -1
  258. package/docs/ko/migration_from_next-intl_to_intlayer.md +1 -1
  259. package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  260. package/docs/ko/migration_from_react-i18next_to_intlayer.md +1 -1
  261. package/docs/ko/migration_from_vue-i18n_to_intlayer.md +1 -1
  262. package/docs/ko/releases/v8.md +192 -1
  263. package/docs/ko/releases/v9.md +232 -0
  264. package/docs/nl/cli/index.md +1 -1
  265. package/docs/nl/cli/scan.md +1 -1
  266. package/docs/nl/configuration.md +36 -3
  267. package/docs/pl/cli/doc-review.md +110 -4
  268. package/docs/pl/cli/index.md +1 -1
  269. package/docs/pl/cli/scan.md +1 -1
  270. package/docs/pl/configuration.md +35 -2
  271. package/docs/pl/dictionary/condition.md +167 -5
  272. package/docs/pl/dictionary/enumeration.md +540 -6
  273. package/docs/pl/dictionary/file.md +318 -2
  274. package/docs/pl/dictionary/gender.md +168 -7
  275. package/docs/pl/dictionary/nesting.md +173 -65
  276. package/docs/pl/dictionary/plurial.md +174 -5
  277. package/docs/pl/dictionary/translation.md +156 -2
  278. package/docs/pl/dynamic_dictionaries/collections.md +1 -1
  279. package/docs/pl/dynamic_dictionaries/dynamic_content.md +1 -1
  280. package/docs/pl/dynamic_dictionaries/index.md +1 -1
  281. package/docs/pl/dynamic_dictionaries/variants.md +1 -1
  282. package/docs/pl/releases/v8.md +188 -2
  283. package/docs/pl/releases/v9.md +232 -0
  284. package/docs/pt/cli/doc-review.md +110 -4
  285. package/docs/pt/cli/index.md +1 -1
  286. package/docs/pt/cli/scan.md +1 -1
  287. package/docs/pt/configuration.md +49 -16
  288. package/docs/pt/dictionary/condition.md +167 -5
  289. package/docs/pt/dictionary/enumeration.md +540 -6
  290. package/docs/pt/dictionary/file.md +151 -1
  291. package/docs/pt/dictionary/gender.md +168 -7
  292. package/docs/pt/dictionary/nesting.md +173 -65
  293. package/docs/pt/dictionary/plurial.md +347 -7
  294. package/docs/pt/dictionary/translation.md +156 -2
  295. package/docs/pt/dynamic_dictionaries/collections.md +1 -1
  296. package/docs/pt/dynamic_dictionaries/dynamic_content.md +1 -1
  297. package/docs/pt/dynamic_dictionaries/index.md +1 -1
  298. package/docs/pt/dynamic_dictionaries/variants.md +1 -1
  299. package/docs/pt/migration_from_i18next_to_intlayer.md +1 -1
  300. package/docs/pt/migration_from_next-i18next_to_intlayer.md +1 -1
  301. package/docs/pt/migration_from_next-intl_to_intlayer.md +1 -1
  302. package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  303. package/docs/pt/migration_from_react-i18next_to_intlayer.md +1 -1
  304. package/docs/pt/migration_from_vue-i18n_to_intlayer.md +1 -1
  305. package/docs/pt/releases/v8.md +187 -1
  306. package/docs/pt/releases/v9.md +232 -0
  307. package/docs/ru/cli/doc-review.md +110 -4
  308. package/docs/ru/cli/index.md +1 -1
  309. package/docs/ru/cli/scan.md +1 -1
  310. package/docs/ru/configuration.md +35 -2
  311. package/docs/ru/dictionary/condition.md +366 -39
  312. package/docs/ru/dictionary/enumeration.md +777 -7
  313. package/docs/ru/dictionary/file.md +318 -2
  314. package/docs/ru/dictionary/gender.md +168 -7
  315. package/docs/ru/dictionary/nesting.md +368 -71
  316. package/docs/ru/dictionary/plurial.md +347 -7
  317. package/docs/ru/dictionary/translation.md +321 -33
  318. package/docs/ru/dynamic_dictionaries/collections.md +1 -1
  319. package/docs/ru/dynamic_dictionaries/dynamic_content.md +1 -1
  320. package/docs/ru/dynamic_dictionaries/index.md +1 -1
  321. package/docs/ru/dynamic_dictionaries/variants.md +1 -1
  322. package/docs/ru/intlayer_with_vite+react.md +48 -47
  323. package/docs/ru/migration_from_i18next_to_intlayer.md +1 -1
  324. package/docs/ru/migration_from_next-i18next_to_intlayer.md +1 -1
  325. package/docs/ru/migration_from_next-intl_to_intlayer.md +1 -1
  326. package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  327. package/docs/ru/migration_from_react-i18next_to_intlayer.md +1 -1
  328. package/docs/ru/migration_from_vue-i18n_to_intlayer.md +1 -1
  329. package/docs/ru/releases/v8.md +194 -2
  330. package/docs/ru/releases/v9.md +232 -0
  331. package/docs/tr/cli/doc-review.md +110 -4
  332. package/docs/tr/cli/index.md +1 -1
  333. package/docs/tr/cli/scan.md +1 -1
  334. package/docs/tr/configuration.md +35 -2
  335. package/docs/tr/dictionary/condition.md +167 -5
  336. package/docs/tr/dictionary/enumeration.md +540 -6
  337. package/docs/tr/dictionary/file.md +151 -1
  338. package/docs/tr/dictionary/gender.md +168 -7
  339. package/docs/tr/dictionary/nesting.md +173 -65
  340. package/docs/tr/dictionary/plurial.md +174 -5
  341. package/docs/tr/dictionary/translation.md +156 -2
  342. package/docs/tr/dynamic_dictionaries/collections.md +1 -1
  343. package/docs/tr/dynamic_dictionaries/dynamic_content.md +1 -1
  344. package/docs/tr/dynamic_dictionaries/index.md +1 -1
  345. package/docs/tr/dynamic_dictionaries/variants.md +1 -1
  346. package/docs/tr/migration_from_i18next_to_intlayer.md +1 -1
  347. package/docs/tr/migration_from_next-i18next_to_intlayer.md +1 -1
  348. package/docs/tr/migration_from_next-intl_to_intlayer.md +1 -1
  349. package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  350. package/docs/tr/migration_from_react-i18next_to_intlayer.md +1 -1
  351. package/docs/tr/migration_from_vue-i18n_to_intlayer.md +1 -1
  352. package/docs/tr/releases/v8.md +187 -1
  353. package/docs/tr/releases/v9.md +232 -0
  354. package/docs/uk/cli/doc-review.md +110 -4
  355. package/docs/uk/cli/index.md +1 -1
  356. package/docs/uk/cli/scan.md +1 -1
  357. package/docs/uk/configuration.md +35 -2
  358. package/docs/uk/dictionary/condition.md +167 -5
  359. package/docs/uk/dictionary/enumeration.md +540 -6
  360. package/docs/uk/dictionary/file.md +318 -2
  361. package/docs/uk/dictionary/gender.md +381 -8
  362. package/docs/uk/dictionary/nesting.md +173 -65
  363. package/docs/uk/dictionary/plurial.md +174 -5
  364. package/docs/uk/dictionary/translation.md +156 -2
  365. package/docs/uk/dynamic_dictionaries/collections.md +1 -1
  366. package/docs/uk/dynamic_dictionaries/dynamic_content.md +1 -1
  367. package/docs/uk/dynamic_dictionaries/index.md +1 -1
  368. package/docs/uk/dynamic_dictionaries/variants.md +1 -1
  369. package/docs/uk/releases/v8.md +191 -3
  370. package/docs/uk/releases/v9.md +232 -0
  371. package/docs/ur/cli/index.md +1 -1
  372. package/docs/ur/cli/scan.md +1 -1
  373. package/docs/ur/configuration.md +36 -3
  374. package/docs/vi/cli/doc-review.md +110 -4
  375. package/docs/vi/cli/index.md +1 -1
  376. package/docs/vi/cli/scan.md +1 -1
  377. package/docs/vi/configuration.md +50 -17
  378. package/docs/vi/dictionary/condition.md +167 -5
  379. package/docs/vi/dictionary/enumeration.md +591 -14
  380. package/docs/vi/dictionary/file.md +318 -2
  381. package/docs/vi/dictionary/gender.md +168 -7
  382. package/docs/vi/dictionary/nesting.md +357 -86
  383. package/docs/vi/dictionary/plurial.md +174 -5
  384. package/docs/vi/dictionary/translation.md +156 -2
  385. package/docs/vi/dynamic_dictionaries/collections.md +1 -1
  386. package/docs/vi/dynamic_dictionaries/dynamic_content.md +1 -1
  387. package/docs/vi/dynamic_dictionaries/index.md +1 -1
  388. package/docs/vi/dynamic_dictionaries/variants.md +1 -1
  389. package/docs/vi/releases/v8.md +190 -1
  390. package/docs/vi/releases/v9.md +232 -0
  391. package/docs/zh/cli/doc-review.md +110 -4
  392. package/docs/zh/cli/index.md +1 -1
  393. package/docs/zh/cli/scan.md +1 -1
  394. package/docs/zh/configuration.md +49 -16
  395. package/docs/zh/dictionary/condition.md +167 -5
  396. package/docs/zh/dictionary/enumeration.md +540 -6
  397. package/docs/zh/dictionary/file.md +151 -1
  398. package/docs/zh/dictionary/gender.md +168 -7
  399. package/docs/zh/dictionary/nesting.md +173 -65
  400. package/docs/zh/dictionary/plurial.md +174 -5
  401. package/docs/zh/dictionary/translation.md +169 -8
  402. package/docs/zh/dynamic_dictionaries/collections.md +1 -1
  403. package/docs/zh/dynamic_dictionaries/dynamic_content.md +1 -1
  404. package/docs/zh/dynamic_dictionaries/index.md +1 -1
  405. package/docs/zh/dynamic_dictionaries/variants.md +1 -1
  406. package/docs/zh/intlayer_with_vite+react.md +48 -288
  407. package/docs/zh/releases/v8.md +1 -1
  408. package/docs/zh/releases/v9.md +220 -0
  409. package/package.json +7 -7
  410. package/src/generated/docs.entry.ts +320 -0
  411. package/dist/esm/_virtual/_rolldown/runtime.mjs +0 -8
@@ -27,46 +27,180 @@ author: aymericzip
27
27
 
28
28
  ## Defining Translations
29
29
 
30
- The `t` function in `intlayer` allows you to declare content in multiple languages. This function ensures type safety, raising an error if any translations are missing, which is particularly useful in TypeScript environments.
30
+ <Tabs group="framework">
31
+ <Tab label="React" value="react">
31
32
 
32
- Here is an example of how to declare content with translations.
33
+ With `react-intlayer`, you can use translations in React components. Here's an example:
33
34
 
34
- ```typescript fileName="**/*.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
35
- import { t, type Dictionary } from "intlayer";
35
+ ```jsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
36
+ import type { FC } from "react";
37
+ import { useIntlayer } from "react-intlayer";
36
38
 
37
- interface Content {
38
- welcomeMessage: string;
39
- }
39
+ const MyComponent: FC = () => {
40
+ const content = useIntlayer("multi_lang");
40
41
 
41
- export default {
42
- key: "multi_lang",
43
- content: {
44
- welcomeMessage: t({
45
- en: "Welcome to our application",
46
- fr: "Bienvenue dans notre application",
47
- es: "Bienvenido a nuestra aplicación",
48
- }),
49
- },
50
- } satisfies Dictionary<Content>;
42
+ return (
43
+ <div>
44
+ <p>{content.welcomeMessage}</p>
45
+ </div>
46
+ );
47
+ };
48
+
49
+ export default MyComponent;
51
50
  ```
52
51
 
53
- ```json fileName="**/*.content.json" contentDeclarationFormat="json"
54
- {
55
- "$schema": "https://intlayer.org/schema.json",
56
- "key": "multi_lang",
57
- "content": {
58
- "welcomeMessage": {
59
- "nodeType": "translation",
60
- "translation": {
61
- "en": "Welcome to our application",
62
- "fr": "Bienvenue dans notre application",
63
- "es": "Bienvenido a nuestra aplicación"
64
- }
65
- }
66
- }
52
+ This component fetches the corresponding translation based on the current locale set in your application.
53
+
54
+ </Tab>
55
+ <Tab label="Next.js" value="nextjs">
56
+
57
+ With `next-intlayer`, you can use translations in React Server Components or Client Components. Here's an example in a Client Component:
58
+
59
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
60
+ "use client";
61
+
62
+ import type { FC } from "react";
63
+ import { useIntlayer } from "next-intlayer";
64
+
65
+ const MyComponent: FC = () => {
66
+ const content = useIntlayer("multi_lang");
67
+
68
+ return (
69
+ <div>
70
+ <p>{content.welcomeMessage}</p>
71
+ </div>
72
+ );
73
+ };
74
+
75
+ export default MyComponent;
76
+ ```
77
+
78
+ </Tab>
79
+ <Tab label="Vue" value="vue">
80
+
81
+ With `vue-intlayer`, you can use translations in Vue components. Here's an example:
82
+
83
+ ```vue fileName="**/*.vue"
84
+ <script setup lang="ts">
85
+ import { useIntlayer } from "vue-intlayer";
86
+
87
+ const content = useIntlayer("multi_lang");
88
+ </script>
89
+
90
+ <template>
91
+ <div>
92
+ <p>{{ content.welcomeMessage }}</p>
93
+ </div>
94
+ </template>
95
+ ```
96
+
97
+ </Tab>
98
+ <Tab label="Svelte" value="svelte">
99
+
100
+ With `svelte-intlayer`, you can use translations in Svelte components. The hook returns a Svelte store. Here's an example:
101
+
102
+ ```svelte fileName="**/*.svelte"
103
+ <script lang="ts">
104
+ import { useIntlayer } from "svelte-intlayer";
105
+
106
+ const content = useIntlayer("multi_lang");
107
+ </script>
108
+
109
+ <div>
110
+ <p>{$content.welcomeMessage}</p>
111
+ </div>
112
+ ```
113
+
114
+ </Tab>
115
+ <Tab label="Preact" value="preact">
116
+
117
+ With `preact-intlayer`, you can use translations in Preact components. Here's an example:
118
+
119
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
120
+ import type { FC } from "preact";
121
+ import { useIntlayer } from "preact-intlayer";
122
+
123
+ const MyComponent: FC = () => {
124
+ const content = useIntlayer("multi_lang");
125
+
126
+ return (
127
+ <div>
128
+ <p>{content.welcomeMessage}</p>
129
+ </div>
130
+ );
131
+ };
132
+
133
+ export default MyComponent;
134
+ ```
135
+
136
+ </Tab>
137
+ <Tab label="Solid" value="solid">
138
+
139
+ With `solid-intlayer`, you can use translations in SolidJS components. Here's an example:
140
+
141
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
142
+ import type { Component } from "solid-js";
143
+ import { useIntlayer } from "solid-intlayer";
144
+
145
+ const MyComponent: Component = () => {
146
+ const content = useIntlayer("multi_lang");
147
+
148
+ return (
149
+ <div>
150
+ <p>{content.welcomeMessage}</p>
151
+ </div>
152
+ );
153
+ };
154
+
155
+ export default MyComponent;
156
+ ```
157
+
158
+ </Tab>
159
+ <Tab label="Angular" value="angular">
160
+
161
+ With `angular-intlayer`, you can use translations in Angular components. Here's an example:
162
+
163
+ ```typescript fileName="app.component.ts" codeFormat="typescript"
164
+ import { Component } from "@angular/core";
165
+ import { useIntlayer } from "angular-intlayer";
166
+
167
+ @Component({
168
+ selector: "app-my-component",
169
+ template: `
170
+ <div>
171
+ <p>{{ content().welcomeMessage }}</p>
172
+ </div>
173
+ `,
174
+ })
175
+ export class MyComponent {
176
+ content = useIntlayer("multi_lang");
67
177
  }
68
178
  ```
69
179
 
180
+ </Tab>
181
+ <Tab label="Vanilla JS" value="vanilla">
182
+
183
+ With `vanilla-intlayer`, you can use translations by subscribing to content changes. Here's an example:
184
+
185
+ ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]}
186
+ import { installIntlayer, useIntlayer } from "vanilla-intlayer";
187
+
188
+ installIntlayer();
189
+
190
+ const content = useIntlayer("multi_lang").onChange((newContent) => {
191
+ document.getElementById("welcome-message")!.textContent = String(
192
+ newContent.welcomeMessage
193
+ );
194
+ });
195
+
196
+ // Initial render
197
+ document.getElementById("welcome-message")!.textContent = String(
198
+ content.welcomeMessage
199
+ );
200
+ ```
201
+
202
+ </Tab>
203
+ </Tabs>
70
204
  ## Configuration for Locales
71
205
 
72
206
  To ensure proper translation handling, you can configure the accepted locales in `intlayer.config.ts`. This configuration allows you to define the languages that your application supports:
@@ -85,7 +219,10 @@ export default config;
85
219
 
86
220
  ## Using Translations in React Components
87
221
 
88
- With `react-intlayer`, you can use translations in React components. Here is an example:
222
+ <Tabs group="framework">
223
+ <Tab label="React" value="react">
224
+
225
+ With `react-intlayer`, you can use translations in React components. Here's an example:
89
226
 
90
227
  ```jsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
91
228
  import type { FC } from "react";
@@ -106,6 +243,157 @@ export default MyComponent;
106
243
 
107
244
  This component fetches the corresponding translation based on the current locale set in your application.
108
245
 
246
+ </Tab>
247
+ <Tab label="Next.js" value="nextjs">
248
+
249
+ With `next-intlayer`, you can use translations in React Server Components or Client Components. Here's an example in a Client Component:
250
+
251
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
252
+ "use client";
253
+
254
+ import type { FC } from "react";
255
+ import { useIntlayer } from "next-intlayer";
256
+
257
+ const MyComponent: FC = () => {
258
+ const content = useIntlayer("multi_lang");
259
+
260
+ return (
261
+ <div>
262
+ <p>{content.welcomeMessage}</p>
263
+ </div>
264
+ );
265
+ };
266
+
267
+ export default MyComponent;
268
+ ```
269
+
270
+ </Tab>
271
+ <Tab label="Vue" value="vue">
272
+
273
+ With `vue-intlayer`, you can use translations in Vue components. Here's an example:
274
+
275
+ ```vue fileName="**/*.vue"
276
+ <script setup lang="ts">
277
+ import { useIntlayer } from "vue-intlayer";
278
+
279
+ const content = useIntlayer("multi_lang");
280
+ </script>
281
+
282
+ <template>
283
+ <div>
284
+ <p>{{ content.welcomeMessage }}</p>
285
+ </div>
286
+ </template>
287
+ ```
288
+
289
+ </Tab>
290
+ <Tab label="Svelte" value="svelte">
291
+
292
+ With `svelte-intlayer`, you can use translations in Svelte components. The hook returns a Svelte store. Here's an example:
293
+
294
+ ```svelte fileName="**/*.svelte"
295
+ <script lang="ts">
296
+ import { useIntlayer } from "svelte-intlayer";
297
+
298
+ const content = useIntlayer("multi_lang");
299
+ </script>
300
+
301
+ <div>
302
+ <p>{$content.welcomeMessage}</p>
303
+ </div>
304
+ ```
305
+
306
+ </Tab>
307
+ <Tab label="Preact" value="preact">
308
+
309
+ With `preact-intlayer`, you can use translations in Preact components. Here's an example:
310
+
311
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
312
+ import type { FC } from "preact";
313
+ import { useIntlayer } from "preact-intlayer";
314
+
315
+ const MyComponent: FC = () => {
316
+ const content = useIntlayer("multi_lang");
317
+
318
+ return (
319
+ <div>
320
+ <p>{content.welcomeMessage}</p>
321
+ </div>
322
+ );
323
+ };
324
+
325
+ export default MyComponent;
326
+ ```
327
+
328
+ </Tab>
329
+ <Tab label="Solid" value="solid">
330
+
331
+ With `solid-intlayer`, you can use translations in SolidJS components. Here's an example:
332
+
333
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
334
+ import type { Component } from "solid-js";
335
+ import { useIntlayer } from "solid-intlayer";
336
+
337
+ const MyComponent: Component = () => {
338
+ const content = useIntlayer("multi_lang");
339
+
340
+ return (
341
+ <div>
342
+ <p>{content.welcomeMessage}</p>
343
+ </div>
344
+ );
345
+ };
346
+
347
+ export default MyComponent;
348
+ ```
349
+
350
+ </Tab>
351
+ <Tab label="Angular" value="angular">
352
+
353
+ With `angular-intlayer`, you can use translations in Angular components. Here's an example:
354
+
355
+ ```typescript fileName="app.component.ts" codeFormat="typescript"
356
+ import { Component } from "@angular/core";
357
+ import { useIntlayer } from "angular-intlayer";
358
+
359
+ @Component({
360
+ selector: "app-my-component",
361
+ template: `
362
+ <div>
363
+ <p>{{ content().welcomeMessage }}</p>
364
+ </div>
365
+ `,
366
+ })
367
+ export class MyComponent {
368
+ content = useIntlayer("multi_lang");
369
+ }
370
+ ```
371
+
372
+ </Tab>
373
+ <Tab label="Vanilla JS" value="vanilla">
374
+
375
+ With `vanilla-intlayer`, you can use translations by subscribing to content changes. Here's an example:
376
+
377
+ ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]}
378
+ import { installIntlayer, useIntlayer } from "vanilla-intlayer";
379
+
380
+ installIntlayer();
381
+
382
+ const content = useIntlayer("multi_lang").onChange((newContent) => {
383
+ document.getElementById("welcome-message")!.textContent = String(
384
+ newContent.welcomeMessage
385
+ );
386
+ });
387
+
388
+ // Initial render
389
+ document.getElementById("welcome-message")!.textContent = String(
390
+ content.welcomeMessage
391
+ );
392
+ ```
393
+
394
+ </Tab>
395
+ </Tabs>
396
+
109
397
  ## Custom Content Objects
110
398
 
111
399
  `intlayer` supports custom content objects for translation, allowing you to define more complex structures while ensuring type safety. Here's an example with a custom object:
@@ -14,7 +14,7 @@ slugs:
14
14
  - concept
15
15
  - collections
16
16
  history:
17
- - version: 8.13.0
17
+ - version: 9.0.0
18
18
  date: 2026-06-12
19
19
  changes: "Release of the collection dictionaries feature"
20
20
  author: aymericzip
@@ -15,7 +15,7 @@ slugs:
15
15
  - concept
16
16
  - dynamic-records
17
17
  history:
18
- - version: 8.13.0
18
+ - version: 9.0.0
19
19
  date: 2026-06-12
20
20
  changes: "Release of the dynamic content feature"
21
21
  author: aymericzip
@@ -15,7 +15,7 @@ slugs:
15
15
  - concept
16
16
  - dynamic-dictionaries
17
17
  history:
18
- - version: 8.13.0
18
+ - version: 9.0.0
19
19
  date: 2026-06-12
20
20
  changes: "Release of the dynamic dictionaries feature"
21
21
  author: aymericzip
@@ -15,7 +15,7 @@ slugs:
15
15
  - concept
16
16
  - variants
17
17
  history:
18
- - version: 8.13.0
18
+ - version: 9.0.0
19
19
  date: 2026-06-12
20
20
  changes: "Release of the variants feature"
21
21
  author: aymericzip
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-09-22
3
- updatedAt: 2026-01-26
3
+ updatedAt: 2026-06-14
4
4
  title: New Intlayer v8 - What's new?
5
5
  description: Discover what's new in Intlayer v8. Major improvements in developer experience, content validation, and dictionary management.
6
6
  keywords:
@@ -0,0 +1,220 @@
1
+ ---
2
+ createdAt: 2026-06-14
3
+ updatedAt: 2026-06-14
4
+ title: New Intlayer v9 - What's new?
5
+ description: Discover what's new in Intlayer v9. Introducing drop-in compatibility packages for popular i18n libraries and support for Collections, Variants, and Dynamic Records.
6
+ keywords:
7
+ - Intlayer
8
+ - Compatibility
9
+ - Migration
10
+ - Collections
11
+ - Variants
12
+ - Dynamic Records
13
+ - i18next
14
+ - next-intl
15
+ - vue-i18n
16
+ slugs:
17
+ - doc
18
+ - releases
19
+ - v9
20
+ author: aymericzip
21
+ ---
22
+
23
+ # New Intlayer v9 - What's new?
24
+
25
+ Welcome to Intlayer v9! This major release marks a huge milestone in simplifying the migration path to Intlayer with **Compat Adapter Packages** for major i18n libraries (`react-i18next`, `next-intl`, `vue-i18n`, etc.) and adds support for rich content structures: **Collections**, **Variants**, and **Dynamic Records**.
26
+
27
+ ## Table of contents
28
+
29
+ <TOC levels={[2]} maxDepth={1} />
30
+
31
+ ---
32
+
33
+ ## Compat Adapter Packages
34
+
35
+ Migrating to Intlayer from popular i18n libraries is now easier than ever. We have created five compat packages that expose the **exact same public APIs** as standard i18n libraries but delegate all translation work to Intlayer at runtime.
36
+
37
+ ### Expose Same Public API with Strict Typing
38
+
39
+ By replacing imports, you get all the benefits of Intlayer (including compile-time type safety against your actual dictionaries) with minimal code changes:
40
+
41
+ - `@intlayer/i18next`
42
+ - `@intlayer/react-i18next`
43
+ - `@intlayer/next-intl`
44
+ - `@intlayer/next-i18next`
45
+ - `@intlayer/vue-i18n`
46
+
47
+ For example, simply change:
48
+
49
+ ```ts
50
+ import { useTranslation } from "react-i18next";
51
+ ```
52
+
53
+ to:
54
+
55
+ ```ts
56
+ import { useTranslation } from "@intlayer/react-i18next";
57
+ ```
58
+
59
+ Your keys will now be **strictly typed** against your Intlayer dictionaries, offering full dot-path auto-completion in your IDE!
60
+
61
+ ### Bundler Alias Plugins (Vite, Next.js, Turbopack)
62
+
63
+ To allow migrating without rewriting all your import statements manually, each compat adapter package includes a **custom bundler plugin** (Vite or Next.js) under the `/plugin` subpath.
64
+
65
+ These plugins automatically rewrite existing imports (e.g. `react-i18next` or `next-intl`) to their `@intlayer/*` equivalents at build time.
66
+
67
+ #### Next.js (Webpack / Turbopack) Example
68
+
69
+ Instead of `withIntlayer`, wrap your Next.js configuration with the compat plugin:
70
+
71
+ ```ts fileName="next.config.ts"
72
+ import { createNextI18nPlugin } from "@intlayer/next-i18next/plugin";
73
+ import type { NextConfig } from "next";
74
+
75
+ const withIntlayer = createNextI18nPlugin();
76
+ const nextConfig: NextConfig = {};
77
+
78
+ export default withIntlayer(nextConfig);
79
+ ```
80
+
81
+ #### Vite (React, Vue, Solid, Svelte) Example
82
+
83
+ ```ts fileName="vite.config.ts"
84
+ import vueI18nVitePlugin from "@intlayer/vue-i18n/plugin";
85
+
86
+ export default defineConfig({
87
+ plugins: [vueI18nVitePlugin()],
88
+ });
89
+ ```
90
+
91
+ ---
92
+
93
+ ## Mutualized Runtime Resolver
94
+
95
+ All compat adapters now route translation resolution through a single, highly optimised runtime parser: `@intlayer/core/messageFormat`.
96
+
97
+ - **Interpolate Message**: Resolves standard `{{var}}` (whitespace & dot-paths), ICU formatted args (`{v, number, percent}` etc.), and bare `{var}` templates.
98
+ - **Message Node Resolver**: Resolves nested nodes: `insert()`, `plural()` (CLDR plural rules), `enu()` (enumeration), `gender()`, HTML tags, arrays, and callable function nodes.
99
+ - **Tokenised Tag Parser**: Supports inline XML/HTML tags and numbered tags (e.g., `<1>children</1>`) to power rich-text rendering out of the box.
100
+
101
+ ---
102
+
103
+ ## Feature Spec: Collections, Variants & Dynamic Records
104
+
105
+ Intlayer v9 expands beyond static key-value objects, allowing dictionaries to declare dynamic layout structures that are fully typed end-to-end.
106
+
107
+ ### 1. Collections
108
+
109
+ Define a CMS-managed list of ordered items (e.g. FAQs, products, or blog lists):
110
+
111
+ ```ts fileName="faq.content.ts"
112
+ import { t, type Dictionary } from "intlayer";
113
+
114
+ export default {
115
+ key: "faq",
116
+ content: [
117
+ {
118
+ question: t({ en: "What is Intlayer?", fr: "Qu'est-ce qu'Intlayer ?" }),
119
+ answer: t({ en: "An i18n toolkit.", fr: "Une boîte à outils i18n." }),
120
+ },
121
+ ],
122
+ } satisfies Dictionary;
123
+ ```
124
+
125
+ #### Usage:
126
+
127
+ ```ts
128
+ // Fetch all items
129
+ const allFaqs = useIntlayer("faq"); // -> { question: string, answer: string }[]
130
+
131
+ // Fetch single item by index
132
+ const faq = useIntlayer("faq", { item: 1 }); // -> { question: string, answer: string }
133
+ ```
134
+
135
+ ### 2. Variants
136
+
137
+ Deliver A/B tests, seasonal headers, feature flags, or custom landing pages:
138
+
139
+ ```ts fileName="hero.content.ts"
140
+ import { t, type Dictionary } from "intlayer";
141
+
142
+ export default {
143
+ key: "hero-banner",
144
+ variant: "default",
145
+ content: {
146
+ control: t({ en: "Welcome", fr: "Bienvenue" }),
147
+ black_friday: t({ en: "Shop now", fr: "Acheter maintenant" }),
148
+ },
149
+ } satisfies Dictionary;
150
+ ```
151
+
152
+ #### Usage:
153
+
154
+ ```ts
155
+ const banner = useIntlayer("hero-banner", { variant: "black_friday" });
156
+ ```
157
+
158
+ ### 3. Dynamic Records
159
+
160
+ Define dictionaries whose entries are loaded dynamically at runtime via query IDs:
161
+
162
+ ```ts fileName="product.content.ts"
163
+ import { t, type Dictionary } from "intlayer";
164
+
165
+ export default {
166
+ key: "product-copy",
167
+ meta: {
168
+ id: "prod_123",
169
+ category: "books",
170
+ },
171
+ content: {
172
+ title: t({ en: "Clean Code", fr: "Code Propre" }),
173
+ },
174
+ } satisfies Dictionary;
175
+ ```
176
+
177
+ #### Usage:
178
+
179
+ ```ts
180
+ // Fetches only the requested item dynamically (requires Suspense)
181
+ const product = useIntlayer("product-copy", {
182
+ id: "prod_123",
183
+ category: "books",
184
+ });
185
+ ```
186
+
187
+ ---
188
+
189
+ ## Dynamic Loading & Bundle Size Optimisations
190
+
191
+ To keep bundles extremely small, Intlayer v9 supports dynamic lazy loading.
192
+
193
+ In your configuration, set `importMode` to `'dynamic'` or `'fetch'`:
194
+
195
+ ```ts fileName="intlayer.config.ts"
196
+ export default {
197
+ dictionary: {
198
+ importMode: "dynamic", // "static" | "dynamic" | "fetch"
199
+ },
200
+ };
201
+ ```
202
+
203
+ At build time, `@intlayer/swc` and `@intlayer/babel` scan your files and replace `useIntlayer` / `getIntlayer` calls with tree-shakeable wrappers (`useDictionary` / `useDictionaryDynamic`). Only the content required for the selected collection item, variant, or locale is loaded, preventing your production bundle from containing unused translations.
204
+
205
+ ---
206
+
207
+ ## Migration notes from v8
208
+
209
+ If you are upgrading from v8, note that the v9 does not include breaking changes. But here are the key changes:
210
+
211
+ - **Locales & Dialects**: If using external i18n dependencies, add their respective compat adapter plugins in your configuration or bundler setup to automatically rewrite imports.
212
+ - **Custom Selectors**: When calling `useIntlayer`, the second parameter is now reserved for an option object containing `{ locale, item, variant, id }`. If you previously passed a locale string directly, you can still do so, but using the options object is recommended for advanced selections.
213
+
214
+ ---
215
+
216
+ ## Useful links
217
+
218
+ - [Compat Adapter Packages Guide](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/index.md)
219
+ - [Dynamic Dictionaries - Collections, Variants & Dynamic Records](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dynamic_dictionaries/index.md)
220
+ - [Configuration Reference](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md)