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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) 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/plugins/sync-json.md +222 -49
  24. package/docs/ar/releases/v8.md +187 -1
  25. package/docs/ar/releases/v9.md +232 -0
  26. package/docs/bn/cli/index.md +1 -1
  27. package/docs/bn/cli/scan.md +1 -1
  28. package/docs/bn/configuration.md +36 -3
  29. package/docs/cs/cli/index.md +1 -1
  30. package/docs/cs/cli/scan.md +1 -1
  31. package/docs/cs/configuration.md +35 -2
  32. package/docs/de/cli/doc-review.md +110 -4
  33. package/docs/de/cli/index.md +1 -1
  34. package/docs/de/cli/scan.md +1 -1
  35. package/docs/de/configuration.md +35 -2
  36. package/docs/de/dictionary/condition.md +167 -5
  37. package/docs/de/dictionary/enumeration.md +777 -7
  38. package/docs/de/dictionary/file.md +151 -1
  39. package/docs/de/dictionary/gender.md +168 -7
  40. package/docs/de/dictionary/nesting.md +173 -65
  41. package/docs/de/dictionary/plurial.md +347 -7
  42. package/docs/de/dictionary/translation.md +156 -2
  43. package/docs/de/dynamic_dictionaries/collections.md +1 -1
  44. package/docs/de/dynamic_dictionaries/dynamic_content.md +1 -1
  45. package/docs/de/dynamic_dictionaries/index.md +1 -1
  46. package/docs/de/dynamic_dictionaries/variants.md +1 -1
  47. package/docs/de/intlayer_with_vite+react.md +48 -48
  48. package/docs/de/migration_from_i18next_to_intlayer.md +1 -1
  49. package/docs/de/migration_from_next-i18next_to_intlayer.md +1 -1
  50. package/docs/de/migration_from_next-intl_to_intlayer.md +1 -1
  51. package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  52. package/docs/de/migration_from_react-i18next_to_intlayer.md +1 -1
  53. package/docs/de/migration_from_vue-i18n_to_intlayer.md +1 -1
  54. package/docs/de/plugins/sync-json.md +222 -49
  55. package/docs/de/releases/v8.md +197 -1
  56. package/docs/de/releases/v9.md +232 -0
  57. package/docs/en/CI_CD.md +7 -7
  58. package/docs/en/cli/ci.md +62 -8
  59. package/docs/en/cli/doc-review.md +110 -4
  60. package/docs/en/cli/index.md +1 -1
  61. package/docs/en/cli/scan.md +1 -1
  62. package/docs/en/compat/i18n-js.md +44 -0
  63. package/docs/en/compat/i18next.md +59 -0
  64. package/docs/en/compat/index.md +51 -0
  65. package/docs/en/compat/lingui.md +44 -0
  66. package/docs/en/compat/next-i18next.md +57 -0
  67. package/docs/en/compat/next-intl.md +59 -0
  68. package/docs/en/compat/next-translate.md +45 -0
  69. package/docs/en/compat/ngx-translate.md +45 -0
  70. package/docs/en/compat/nuxtjs-i18n.md +46 -0
  71. package/docs/en/compat/polyglot.md +45 -0
  72. package/docs/en/compat/react-i18next.md +58 -0
  73. package/docs/en/compat/react-intl.md +55 -0
  74. package/docs/en/compat/svelte-i18n.md +47 -0
  75. package/docs/en/compat/transloco.md +45 -0
  76. package/docs/en/compat/vue-i18n.md +58 -0
  77. package/docs/en/configuration.md +35 -2
  78. package/docs/en/dictionary/condition.md +163 -1
  79. package/docs/en/dictionary/enumeration.md +309 -7
  80. package/docs/en/dictionary/file.md +151 -1
  81. package/docs/en/dictionary/gender.md +162 -1
  82. package/docs/en/dictionary/nesting.md +173 -9
  83. package/docs/en/dictionary/plurial.md +155 -10
  84. package/docs/en/dictionary/translation.md +145 -52
  85. package/docs/en/dynamic_dictionaries/collections.md +1 -1
  86. package/docs/en/dynamic_dictionaries/dynamic_content.md +1 -1
  87. package/docs/en/dynamic_dictionaries/index.md +1 -1
  88. package/docs/en/dynamic_dictionaries/variants.md +1 -1
  89. package/docs/en/migration_from_i18next_to_intlayer.md +1 -1
  90. package/docs/en/migration_from_next-i18next_to_intlayer.md +1 -1
  91. package/docs/en/migration_from_next-intl_to_intlayer.md +1 -1
  92. package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  93. package/docs/en/migration_from_react-i18next_to_intlayer.md +1 -1
  94. package/docs/en/migration_from_vue-i18n_to_intlayer.md +1 -1
  95. package/docs/en/plugins/sync-json.md +56 -2
  96. package/docs/en/releases/v8.md +187 -1
  97. package/docs/en/releases/v9.md +220 -0
  98. package/docs/en-GB/cli/doc-review.md +110 -4
  99. package/docs/en-GB/cli/index.md +1 -1
  100. package/docs/en-GB/cli/scan.md +1 -1
  101. package/docs/en-GB/configuration.md +35 -2
  102. package/docs/en-GB/dictionary/condition.md +364 -1
  103. package/docs/en-GB/dictionary/enumeration.md +577 -5
  104. package/docs/en-GB/dictionary/file.md +317 -1
  105. package/docs/en-GB/dictionary/gender.md +375 -2
  106. package/docs/en-GB/dictionary/nesting.md +368 -71
  107. package/docs/en-GB/dictionary/plurial.md +347 -7
  108. package/docs/en-GB/dictionary/translation.md +320 -32
  109. package/docs/en-GB/dynamic_dictionaries/collections.md +1 -1
  110. package/docs/en-GB/dynamic_dictionaries/dynamic_content.md +1 -1
  111. package/docs/en-GB/dynamic_dictionaries/index.md +1 -1
  112. package/docs/en-GB/dynamic_dictionaries/variants.md +1 -1
  113. package/docs/en-GB/plugins/sync-json.md +245 -13
  114. package/docs/en-GB/releases/v8.md +1 -1
  115. package/docs/en-GB/releases/v9.md +220 -0
  116. package/docs/es/cli/doc-review.md +110 -4
  117. package/docs/es/cli/index.md +1 -1
  118. package/docs/es/cli/scan.md +1 -1
  119. package/docs/es/configuration.md +36 -3
  120. package/docs/es/dictionary/condition.md +167 -5
  121. package/docs/es/dictionary/enumeration.md +537 -12
  122. package/docs/es/dictionary/file.md +151 -1
  123. package/docs/es/dictionary/gender.md +168 -7
  124. package/docs/es/dictionary/nesting.md +173 -65
  125. package/docs/es/dictionary/plurial.md +347 -7
  126. package/docs/es/dictionary/translation.md +156 -2
  127. package/docs/es/dynamic_dictionaries/collections.md +1 -1
  128. package/docs/es/dynamic_dictionaries/dynamic_content.md +1 -1
  129. package/docs/es/dynamic_dictionaries/index.md +1 -1
  130. package/docs/es/dynamic_dictionaries/variants.md +1 -1
  131. package/docs/es/migration_from_i18next_to_intlayer.md +1 -1
  132. package/docs/es/migration_from_next-i18next_to_intlayer.md +1 -1
  133. package/docs/es/migration_from_next-intl_to_intlayer.md +1 -1
  134. package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  135. package/docs/es/migration_from_react-i18next_to_intlayer.md +1 -1
  136. package/docs/es/migration_from_vue-i18n_to_intlayer.md +1 -1
  137. package/docs/es/plugins/sync-json.md +222 -49
  138. package/docs/es/releases/v8.md +187 -1
  139. package/docs/es/releases/v9.md +228 -0
  140. package/docs/fr/cli/doc-review.md +110 -4
  141. package/docs/fr/cli/index.md +1 -1
  142. package/docs/fr/cli/scan.md +1 -1
  143. package/docs/fr/configuration.md +49 -16
  144. package/docs/fr/dictionary/condition.md +369 -6
  145. package/docs/fr/dictionary/enumeration.md +540 -6
  146. package/docs/fr/dictionary/file.md +151 -1
  147. package/docs/fr/dictionary/gender.md +168 -7
  148. package/docs/fr/dictionary/nesting.md +357 -86
  149. package/docs/fr/dictionary/plurial.md +174 -5
  150. package/docs/fr/dictionary/translation.md +156 -2
  151. package/docs/fr/dynamic_dictionaries/collections.md +1 -1
  152. package/docs/fr/dynamic_dictionaries/dynamic_content.md +1 -1
  153. package/docs/fr/dynamic_dictionaries/index.md +1 -1
  154. package/docs/fr/dynamic_dictionaries/variants.md +1 -1
  155. package/docs/fr/migration_from_i18next_to_intlayer.md +1 -1
  156. package/docs/fr/migration_from_next-i18next_to_intlayer.md +1 -1
  157. package/docs/fr/migration_from_next-intl_to_intlayer.md +1 -1
  158. package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  159. package/docs/fr/migration_from_react-i18next_to_intlayer.md +1 -1
  160. package/docs/fr/migration_from_vue-i18n_to_intlayer.md +1 -1
  161. package/docs/fr/plugins/sync-json.md +244 -12
  162. package/docs/fr/releases/v8.md +187 -1
  163. package/docs/fr/releases/v9.md +220 -0
  164. package/docs/hi/cli/doc-review.md +110 -4
  165. package/docs/hi/cli/index.md +1 -1
  166. package/docs/hi/cli/scan.md +1 -1
  167. package/docs/hi/configuration.md +49 -16
  168. package/docs/hi/dictionary/condition.md +167 -5
  169. package/docs/hi/dictionary/enumeration.md +540 -6
  170. package/docs/hi/dictionary/file.md +151 -1
  171. package/docs/hi/dictionary/gender.md +168 -7
  172. package/docs/hi/dictionary/nesting.md +173 -65
  173. package/docs/hi/dictionary/plurial.md +174 -5
  174. package/docs/hi/dictionary/translation.md +155 -5
  175. package/docs/hi/dynamic_dictionaries/collections.md +1 -1
  176. package/docs/hi/dynamic_dictionaries/dynamic_content.md +1 -1
  177. package/docs/hi/dynamic_dictionaries/index.md +1 -1
  178. package/docs/hi/dynamic_dictionaries/variants.md +1 -1
  179. package/docs/hi/plugins/sync-json.md +221 -48
  180. package/docs/hi/releases/v8.md +188 -2
  181. package/docs/hi/releases/v9.md +232 -0
  182. package/docs/id/cli/doc-review.md +110 -4
  183. package/docs/id/cli/index.md +1 -1
  184. package/docs/id/cli/scan.md +1 -1
  185. package/docs/id/configuration.md +35 -2
  186. package/docs/id/dictionary/condition.md +167 -5
  187. package/docs/id/dictionary/enumeration.md +540 -6
  188. package/docs/id/dictionary/file.md +318 -2
  189. package/docs/id/dictionary/gender.md +381 -8
  190. package/docs/id/dictionary/nesting.md +357 -86
  191. package/docs/id/dictionary/plurial.md +174 -5
  192. package/docs/id/dictionary/translation.md +156 -2
  193. package/docs/id/dynamic_dictionaries/collections.md +1 -1
  194. package/docs/id/dynamic_dictionaries/dynamic_content.md +1 -1
  195. package/docs/id/dynamic_dictionaries/index.md +1 -1
  196. package/docs/id/dynamic_dictionaries/variants.md +1 -1
  197. package/docs/id/plugins/sync-json.md +222 -49
  198. package/docs/id/releases/v8.md +191 -2
  199. package/docs/id/releases/v9.md +232 -0
  200. package/docs/it/cli/doc-review.md +110 -4
  201. package/docs/it/cli/index.md +1 -1
  202. package/docs/it/cli/scan.md +1 -1
  203. package/docs/it/configuration.md +49 -16
  204. package/docs/it/dictionary/condition.md +167 -5
  205. package/docs/it/dictionary/enumeration.md +540 -6
  206. package/docs/it/dictionary/file.md +318 -2
  207. package/docs/it/dictionary/gender.md +168 -7
  208. package/docs/it/dictionary/nesting.md +173 -65
  209. package/docs/it/dictionary/plurial.md +347 -7
  210. package/docs/it/dictionary/translation.md +156 -2
  211. package/docs/it/dynamic_dictionaries/collections.md +1 -1
  212. package/docs/it/dynamic_dictionaries/dynamic_content.md +1 -1
  213. package/docs/it/dynamic_dictionaries/index.md +1 -1
  214. package/docs/it/dynamic_dictionaries/variants.md +1 -1
  215. package/docs/it/intlayer_with_vite+react.md +0 -48
  216. package/docs/it/migration_from_i18next_to_intlayer.md +1 -1
  217. package/docs/it/migration_from_next-i18next_to_intlayer.md +1 -1
  218. package/docs/it/migration_from_next-intl_to_intlayer.md +1 -1
  219. package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  220. package/docs/it/migration_from_react-i18next_to_intlayer.md +1 -1
  221. package/docs/it/migration_from_vue-i18n_to_intlayer.md +1 -1
  222. package/docs/it/plugins/sync-json.md +224 -51
  223. package/docs/it/releases/v8.md +200 -2
  224. package/docs/it/releases/v9.md +232 -0
  225. package/docs/ja/cli/doc-review.md +110 -4
  226. package/docs/ja/cli/index.md +1 -1
  227. package/docs/ja/cli/scan.md +1 -1
  228. package/docs/ja/configuration.md +50 -17
  229. package/docs/ja/dictionary/condition.md +167 -5
  230. package/docs/ja/dictionary/enumeration.md +540 -6
  231. package/docs/ja/dictionary/file.md +151 -1
  232. package/docs/ja/dictionary/gender.md +168 -7
  233. package/docs/ja/dictionary/nesting.md +173 -65
  234. package/docs/ja/dictionary/plurial.md +174 -5
  235. package/docs/ja/dictionary/translation.md +169 -8
  236. package/docs/ja/dynamic_dictionaries/collections.md +1 -1
  237. package/docs/ja/dynamic_dictionaries/dynamic_content.md +1 -1
  238. package/docs/ja/dynamic_dictionaries/index.md +1 -1
  239. package/docs/ja/dynamic_dictionaries/variants.md +1 -1
  240. package/docs/ja/intlayer_with_vite+react.md +290 -0
  241. package/docs/ja/migration_from_i18next_to_intlayer.md +1 -1
  242. package/docs/ja/migration_from_next-i18next_to_intlayer.md +1 -1
  243. package/docs/ja/migration_from_next-intl_to_intlayer.md +1 -1
  244. package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  245. package/docs/ja/migration_from_react-i18next_to_intlayer.md +1 -1
  246. package/docs/ja/migration_from_vue-i18n_to_intlayer.md +1 -1
  247. package/docs/ja/plugins/sync-json.md +222 -49
  248. package/docs/ja/releases/v8.md +193 -4
  249. package/docs/ja/releases/v9.md +232 -0
  250. package/docs/ko/cli/doc-review.md +110 -4
  251. package/docs/ko/cli/index.md +1 -1
  252. package/docs/ko/cli/scan.md +1 -1
  253. package/docs/ko/configuration.md +49 -16
  254. package/docs/ko/dictionary/condition.md +167 -5
  255. package/docs/ko/dictionary/enumeration.md +540 -6
  256. package/docs/ko/dictionary/file.md +151 -1
  257. package/docs/ko/dictionary/gender.md +168 -7
  258. package/docs/ko/dictionary/nesting.md +173 -65
  259. package/docs/ko/dictionary/plurial.md +174 -5
  260. package/docs/ko/dictionary/translation.md +169 -8
  261. package/docs/ko/dynamic_dictionaries/collections.md +1 -1
  262. package/docs/ko/dynamic_dictionaries/dynamic_content.md +1 -1
  263. package/docs/ko/dynamic_dictionaries/index.md +1 -1
  264. package/docs/ko/dynamic_dictionaries/variants.md +1 -1
  265. package/docs/ko/intlayer_with_vite+react.md +48 -490
  266. package/docs/ko/migration_from_i18next_to_intlayer.md +1 -1
  267. package/docs/ko/migration_from_next-i18next_to_intlayer.md +1 -1
  268. package/docs/ko/migration_from_next-intl_to_intlayer.md +1 -1
  269. package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  270. package/docs/ko/migration_from_react-i18next_to_intlayer.md +1 -1
  271. package/docs/ko/migration_from_vue-i18n_to_intlayer.md +1 -1
  272. package/docs/ko/plugins/sync-json.md +223 -50
  273. package/docs/ko/releases/v8.md +192 -1
  274. package/docs/ko/releases/v9.md +232 -0
  275. package/docs/nl/cli/index.md +1 -1
  276. package/docs/nl/cli/scan.md +1 -1
  277. package/docs/nl/configuration.md +36 -3
  278. package/docs/pl/cli/doc-review.md +110 -4
  279. package/docs/pl/cli/index.md +1 -1
  280. package/docs/pl/cli/scan.md +1 -1
  281. package/docs/pl/configuration.md +35 -2
  282. package/docs/pl/dictionary/condition.md +167 -5
  283. package/docs/pl/dictionary/enumeration.md +540 -6
  284. package/docs/pl/dictionary/file.md +318 -2
  285. package/docs/pl/dictionary/gender.md +168 -7
  286. package/docs/pl/dictionary/nesting.md +173 -65
  287. package/docs/pl/dictionary/plurial.md +174 -5
  288. package/docs/pl/dictionary/translation.md +156 -2
  289. package/docs/pl/dynamic_dictionaries/collections.md +1 -1
  290. package/docs/pl/dynamic_dictionaries/dynamic_content.md +1 -1
  291. package/docs/pl/dynamic_dictionaries/index.md +1 -1
  292. package/docs/pl/dynamic_dictionaries/variants.md +1 -1
  293. package/docs/pl/plugins/sync-json.md +246 -14
  294. package/docs/pl/releases/v8.md +188 -2
  295. package/docs/pl/releases/v9.md +232 -0
  296. package/docs/pt/cli/doc-review.md +110 -4
  297. package/docs/pt/cli/index.md +1 -1
  298. package/docs/pt/cli/scan.md +1 -1
  299. package/docs/pt/configuration.md +49 -16
  300. package/docs/pt/dictionary/condition.md +167 -5
  301. package/docs/pt/dictionary/enumeration.md +540 -6
  302. package/docs/pt/dictionary/file.md +151 -1
  303. package/docs/pt/dictionary/gender.md +168 -7
  304. package/docs/pt/dictionary/nesting.md +173 -65
  305. package/docs/pt/dictionary/plurial.md +347 -7
  306. package/docs/pt/dictionary/translation.md +156 -2
  307. package/docs/pt/dynamic_dictionaries/collections.md +1 -1
  308. package/docs/pt/dynamic_dictionaries/dynamic_content.md +1 -1
  309. package/docs/pt/dynamic_dictionaries/index.md +1 -1
  310. package/docs/pt/dynamic_dictionaries/variants.md +1 -1
  311. package/docs/pt/migration_from_i18next_to_intlayer.md +1 -1
  312. package/docs/pt/migration_from_next-i18next_to_intlayer.md +1 -1
  313. package/docs/pt/migration_from_next-intl_to_intlayer.md +1 -1
  314. package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  315. package/docs/pt/migration_from_react-i18next_to_intlayer.md +1 -1
  316. package/docs/pt/migration_from_vue-i18n_to_intlayer.md +1 -1
  317. package/docs/pt/plugins/sync-json.md +222 -49
  318. package/docs/pt/releases/v8.md +187 -1
  319. package/docs/pt/releases/v9.md +232 -0
  320. package/docs/ru/cli/doc-review.md +110 -4
  321. package/docs/ru/cli/index.md +1 -1
  322. package/docs/ru/cli/scan.md +1 -1
  323. package/docs/ru/configuration.md +35 -2
  324. package/docs/ru/dictionary/condition.md +366 -39
  325. package/docs/ru/dictionary/enumeration.md +777 -7
  326. package/docs/ru/dictionary/file.md +318 -2
  327. package/docs/ru/dictionary/gender.md +168 -7
  328. package/docs/ru/dictionary/nesting.md +368 -71
  329. package/docs/ru/dictionary/plurial.md +347 -7
  330. package/docs/ru/dictionary/translation.md +321 -33
  331. package/docs/ru/dynamic_dictionaries/collections.md +1 -1
  332. package/docs/ru/dynamic_dictionaries/dynamic_content.md +1 -1
  333. package/docs/ru/dynamic_dictionaries/index.md +1 -1
  334. package/docs/ru/dynamic_dictionaries/variants.md +1 -1
  335. package/docs/ru/intlayer_with_vite+react.md +48 -47
  336. package/docs/ru/migration_from_i18next_to_intlayer.md +1 -1
  337. package/docs/ru/migration_from_next-i18next_to_intlayer.md +1 -1
  338. package/docs/ru/migration_from_next-intl_to_intlayer.md +1 -1
  339. package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  340. package/docs/ru/migration_from_react-i18next_to_intlayer.md +1 -1
  341. package/docs/ru/migration_from_vue-i18n_to_intlayer.md +1 -1
  342. package/docs/ru/plugins/sync-json.md +269 -95
  343. package/docs/ru/releases/v8.md +194 -2
  344. package/docs/ru/releases/v9.md +232 -0
  345. package/docs/tr/cli/doc-review.md +110 -4
  346. package/docs/tr/cli/index.md +1 -1
  347. package/docs/tr/cli/scan.md +1 -1
  348. package/docs/tr/configuration.md +35 -2
  349. package/docs/tr/dictionary/condition.md +167 -5
  350. package/docs/tr/dictionary/enumeration.md +540 -6
  351. package/docs/tr/dictionary/file.md +151 -1
  352. package/docs/tr/dictionary/gender.md +168 -7
  353. package/docs/tr/dictionary/nesting.md +173 -65
  354. package/docs/tr/dictionary/plurial.md +174 -5
  355. package/docs/tr/dictionary/translation.md +156 -2
  356. package/docs/tr/dynamic_dictionaries/collections.md +1 -1
  357. package/docs/tr/dynamic_dictionaries/dynamic_content.md +1 -1
  358. package/docs/tr/dynamic_dictionaries/index.md +1 -1
  359. package/docs/tr/dynamic_dictionaries/variants.md +1 -1
  360. package/docs/tr/migration_from_i18next_to_intlayer.md +1 -1
  361. package/docs/tr/migration_from_next-i18next_to_intlayer.md +1 -1
  362. package/docs/tr/migration_from_next-intl_to_intlayer.md +1 -1
  363. package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  364. package/docs/tr/migration_from_react-i18next_to_intlayer.md +1 -1
  365. package/docs/tr/migration_from_vue-i18n_to_intlayer.md +1 -1
  366. package/docs/tr/plugins/sync-json.md +222 -50
  367. package/docs/tr/releases/v8.md +187 -1
  368. package/docs/tr/releases/v9.md +232 -0
  369. package/docs/uk/cli/doc-review.md +110 -4
  370. package/docs/uk/cli/index.md +1 -1
  371. package/docs/uk/cli/scan.md +1 -1
  372. package/docs/uk/configuration.md +35 -2
  373. package/docs/uk/dictionary/condition.md +167 -5
  374. package/docs/uk/dictionary/enumeration.md +540 -6
  375. package/docs/uk/dictionary/file.md +318 -2
  376. package/docs/uk/dictionary/gender.md +381 -8
  377. package/docs/uk/dictionary/nesting.md +173 -65
  378. package/docs/uk/dictionary/plurial.md +174 -5
  379. package/docs/uk/dictionary/translation.md +156 -2
  380. package/docs/uk/dynamic_dictionaries/collections.md +1 -1
  381. package/docs/uk/dynamic_dictionaries/dynamic_content.md +1 -1
  382. package/docs/uk/dynamic_dictionaries/index.md +1 -1
  383. package/docs/uk/dynamic_dictionaries/variants.md +1 -1
  384. package/docs/uk/plugins/sync-json.md +56 -2
  385. package/docs/uk/releases/v8.md +191 -3
  386. package/docs/uk/releases/v9.md +232 -0
  387. package/docs/ur/cli/index.md +1 -1
  388. package/docs/ur/cli/scan.md +1 -1
  389. package/docs/ur/configuration.md +36 -3
  390. package/docs/vi/cli/doc-review.md +110 -4
  391. package/docs/vi/cli/index.md +1 -1
  392. package/docs/vi/cli/scan.md +1 -1
  393. package/docs/vi/configuration.md +50 -17
  394. package/docs/vi/dictionary/condition.md +167 -5
  395. package/docs/vi/dictionary/enumeration.md +591 -14
  396. package/docs/vi/dictionary/file.md +318 -2
  397. package/docs/vi/dictionary/gender.md +168 -7
  398. package/docs/vi/dictionary/nesting.md +357 -86
  399. package/docs/vi/dictionary/plurial.md +174 -5
  400. package/docs/vi/dictionary/translation.md +156 -2
  401. package/docs/vi/dynamic_dictionaries/collections.md +1 -1
  402. package/docs/vi/dynamic_dictionaries/dynamic_content.md +1 -1
  403. package/docs/vi/dynamic_dictionaries/index.md +1 -1
  404. package/docs/vi/dynamic_dictionaries/variants.md +1 -1
  405. package/docs/vi/plugins/sync-json.md +230 -57
  406. package/docs/vi/releases/v8.md +190 -1
  407. package/docs/vi/releases/v9.md +232 -0
  408. package/docs/zh/cli/doc-review.md +110 -4
  409. package/docs/zh/cli/index.md +1 -1
  410. package/docs/zh/cli/scan.md +1 -1
  411. package/docs/zh/configuration.md +49 -16
  412. package/docs/zh/dictionary/condition.md +167 -5
  413. package/docs/zh/dictionary/enumeration.md +540 -6
  414. package/docs/zh/dictionary/file.md +151 -1
  415. package/docs/zh/dictionary/gender.md +168 -7
  416. package/docs/zh/dictionary/nesting.md +173 -65
  417. package/docs/zh/dictionary/plurial.md +174 -5
  418. package/docs/zh/dictionary/translation.md +169 -8
  419. package/docs/zh/dynamic_dictionaries/collections.md +1 -1
  420. package/docs/zh/dynamic_dictionaries/dynamic_content.md +1 -1
  421. package/docs/zh/dynamic_dictionaries/index.md +1 -1
  422. package/docs/zh/dynamic_dictionaries/variants.md +1 -1
  423. package/docs/zh/intlayer_with_vite+react.md +48 -288
  424. package/docs/zh/plugins/sync-json.md +223 -50
  425. package/docs/zh/releases/v8.md +1 -1
  426. package/docs/zh/releases/v9.md +220 -0
  427. package/package.json +7 -7
  428. package/src/generated/docs.entry.ts +320 -0
  429. package/dist/esm/_virtual/_rolldown/runtime.mjs +0 -8
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-13
3
- updatedAt: 2026-05-12
3
+ updatedAt: 2026-06-17
4
4
  title: Configuration
5
5
  description: Learn how to configure Intlayer for your application. Understand the various settings and options available to customize Intlayer to your needs.
6
6
  keywords:
@@ -14,6 +14,9 @@ slugs:
14
14
  - concept
15
15
  - configuration
16
16
  history:
17
+ - version: 8.10.0
18
+ date: 2026-06-17
19
+ changes: "Add `format` option to the dictionary configuration"
17
20
  - version: 8.9.4
18
21
  date: 2026-05-12
19
22
  changes: "Add support for LM Studio provider"
@@ -135,6 +138,7 @@ Intlayer accepts JSON, JS, MJS, and TS configuration file formats:
135
138
  ````typescript fileName="intlayer.config.ts" codeFormat="typescript"
136
139
  import { Locales, type IntlayerConfig } from "intlayer";
137
140
  import { nextjsRewrite } from "intlayer/routing";
141
+ import { syncJSON } from "@intlayer/sync-json-plugin";
138
142
  import { z } from "zod";
139
143
 
140
144
  /**
@@ -586,10 +590,38 @@ const config: IntlayerConfig = {
586
590
  }),
587
591
  },
588
592
 
593
+ /**
594
+ * Dictionary configuration.
595
+ */
596
+ dictionary: {
597
+ /**
598
+ * Controls how dictionaries are imported.
599
+ * - "static": Statically imported at build time.
600
+ * - "dynamic": Dynamically imported using Suspense.
601
+ * - "fetch": Fetched dynamically via the live sync API.
602
+ */
603
+ importMode: "static",
604
+
605
+ /**
606
+ * The default message format for all dictionaries in the project.
607
+ * - 'intlayer': Native intlayer format (default).
608
+ * - 'icu': ICU message format (used by next-intl, react-intl, etc.).
609
+ * - 'i18next': i18next interpolation format (used by i18next, react-i18next, next-i18next).
610
+ * - 'vue-i18n': Vue I18n format (used by vue-i18n).
611
+ * - 'po': GNU Gettext PO format.
612
+ */
613
+ format: "icu",
614
+ },
615
+
589
616
  /**
590
617
  * Plugins configuration.
591
618
  */
592
- plugins: [],
619
+ plugins: [
620
+ syncJSON({
621
+ format: "icu",
622
+ source: ({ locale }) => `./messages/${locale}.json`,
623
+ }),
624
+ ],
593
625
  };
594
626
 
595
627
  export default config;
@@ -886,6 +918,7 @@ For more information about content declaration files and how configuration value
886
918
  | `contentAutoTransformation` | Automatically transforms content strings into typed nodes (markdown, HTML, or insertion). | `boolean` &#124; <br/> `{ markdown?: boolean; html?: boolean; insertion?: boolean }` | `false` | `true` | • Markdown: `### Title` → `md('### Title')`.<br/>• HTML: `<div>Title</div>` → `html('<div>Title</div>')`.<br/>• Insertion: `Hello {{name}}` → `insert('Hello {{name}}')`. |
887
919
  | `location` | Indicates where dictionary files are stored and their CMS synchronization mode. | `'local'` &#124; <br/> `'remote'` &#124; <br/> `'hybrid'` &#124; <br/> `'plugin'` &#124; <br/> `string` | `'local'` | `'hybrid'` | • `'local'`: managed locally only.<br/>• `'remote'`: managed remotely only (CMS).<br/>• `'hybrid'`: managed both locally and remotely.<br/>• `'plugin'` or custom string: managed by a plugin or custom source. |
888
920
  | `importMode` | Controls how dictionaries are imported. | `'static'` &#124; <br/> `'dynamic'` &#124; <br/> `'fetch'` | `'static'` | `'dynamic'` | • `'static'`: imported statically (replaces `useIntlayer` with `useDictionary`).<br/>• `'dynamic'`: imported dynamically via Suspense (replaces with `useDictionaryDynamic`).<br/>• `'fetch'`: fetched via live sync API; falls back to `'dynamic'` on failure.<br/>• Relies on `@intlayer/babel` and `@intlayer/swc` plugins.<br/>• Keys must be declared statically.<br/>• Ignored if `optimize` is disabled.<br/>• Does not affect `getIntlayer`, `getDictionary`, `useDictionary`, etc. |
921
+ | `format` | The default message format for all dictionaries in the project. | `'intlayer'` &#124; <br/> `'icu'` &#124; <br/> `'i18next'` &#124; <br/> `'vue-i18n'` &#124; <br/> `'po'` | `'intlayer'` | `'icu'` | • `'intlayer'`: Native intlayer format.<br/>• `'icu'`: ICU message format.<br/>• `'i18next'`: i18next interpolation format.<br/>• `'vue-i18n'`: Vue I18n format.<br/>• `'po'`: GNU Gettext PO format. |
889
922
  | `priority` | Priority of the dictionary. Higher values take precedence over lower ones when resolving conflicts between dictionaries. | `number` | `undefined` | `1` | |
890
923
  | `live` | Deprecated - use `importMode: 'fetch'` instead. Indicated whether dictionary content was fetched dynamically via the live sync API. | `boolean` | `undefined` | | Renamed to `importMode: 'fetch'` in v8.0.0. |
891
924
  | `schema` | Auto-generated by Intlayer for JSON schema validation. | `'https://intlayer.org/schema.json'` | auto-generated | | Do not modify manually. |
@@ -69,7 +69,10 @@ export default myConditionalContent;
69
69
 
70
70
  > If no fallback is declared, the last key declared will be taken as a fallback if the condition is not validated.
71
71
 
72
- ## Using Conditional Content with React Intlayer
72
+ ## Using Conditional Content
73
+
74
+ <Tabs group="framework">
75
+ <Tab label="React" value="react">
73
76
 
74
77
  To utilize conditional content within a React component, import and use the `useIntlayer` hook from the `react-intlayer` package. This hook fetches the content for the specified key and allows you to pass in a condition to select the appropriate output.
75
78
 
@@ -113,6 +116,165 @@ const ConditionalComponent: FC = () => {
113
116
  export default ConditionalComponent;
114
117
  ```
115
118
 
119
+ </Tab>
120
+ <Tab label="Next.js" value="nextjs">
121
+
122
+ To utilize conditional content in Next.js Client Components, retrieve it via the `useIntlayer` hook. Here's an example:
123
+
124
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
125
+ "use client";
126
+
127
+ import type { FC } from "react";
128
+ import { useIntlayer } from "next-intlayer";
129
+
130
+ const ConditionalComponent: FC = () => {
131
+ const { myCondition } = useIntlayer("my_key");
132
+
133
+ return (
134
+ <div>
135
+ <p>{myCondition(true)}</p>
136
+ <p>{myCondition(false)}</p>
137
+ </div>
138
+ );
139
+ };
140
+
141
+ export default ConditionalComponent;
142
+ ```
143
+
144
+ </Tab>
145
+ <Tab label="Vue" value="vue">
146
+
147
+ To utilize conditional content in Vue components, retrieve it via the `useIntlayer` hook. Here's an example:
148
+
149
+ ```vue fileName="**/*.vue"
150
+ <script setup lang="ts">
151
+ import { useIntlayer } from "vue-intlayer";
152
+
153
+ const { myCondition } = useIntlayer("my_key");
154
+ </script>
155
+
156
+ <template>
157
+ <div>
158
+ <p>{{ myCondition(true) }}</p>
159
+ <p>{{ myCondition(false) }}</p>
160
+ </div>
161
+ </template>
162
+ ```
163
+
164
+ </Tab>
165
+ <Tab label="Svelte" value="svelte">
166
+
167
+ To utilize conditional content in Svelte components, retrieve it via the `useIntlayer` hook. The store is accessed with `$`. Here's an example:
168
+
169
+ ```svelte fileName="**/*.svelte"
170
+ <script lang="ts">
171
+ import { useIntlayer } from "svelte-intlayer";
172
+
173
+ const content = useIntlayer("my_key");
174
+ </script>
175
+
176
+ <div>
177
+ <p>{$content.myCondition(true)}</p>
178
+ <p>{$content.myCondition(false)}</p>
179
+ </div>
180
+ ```
181
+
182
+ </Tab>
183
+ <Tab label="Preact" value="preact">
184
+
185
+ To utilize conditional content in Preact components, retrieve it via the `useIntlayer` hook. Here's an example:
186
+
187
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
188
+ import type { FC } from "preact";
189
+ import { useIntlayer } from "preact-intlayer";
190
+
191
+ const ConditionalComponent: FC = () => {
192
+ const { myCondition } = useIntlayer("my_key");
193
+
194
+ return (
195
+ <div>
196
+ <p>{myCondition(true)}</p>
197
+ <p>{myCondition(false)}</p>
198
+ </div>
199
+ );
200
+ };
201
+
202
+ export default ConditionalComponent;
203
+ ```
204
+
205
+ </Tab>
206
+ <Tab label="Solid" value="solid">
207
+
208
+ To utilize conditional content in SolidJS components, retrieve it via the `useIntlayer` hook. Here's an example:
209
+
210
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
211
+ import type { Component } from "solid-js";
212
+ import { useIntlayer } from "solid-intlayer";
213
+
214
+ const ConditionalComponent: Component = () => {
215
+ const { myCondition } = useIntlayer("my_key");
216
+
217
+ return (
218
+ <div>
219
+ <p>{myCondition(true)}</p>
220
+ <p>{myCondition(false)}</p>
221
+ </div>
222
+ );
223
+ };
224
+
225
+ export default ConditionalComponent;
226
+ ```
227
+
228
+ </Tab>
229
+ <Tab label="Angular" value="angular">
230
+
231
+ To utilize conditional content in Angular components, retrieve it via the `useIntlayer` hook. Here's an example:
232
+
233
+ ```typescript fileName="app.component.ts" codeFormat="typescript"
234
+ import { Component } from "@angular/core";
235
+ import { useIntlayer } from "angular-intlayer";
236
+
237
+ @Component({
238
+ selector: "app-conditional",
239
+ template: `
240
+ <div>
241
+ <p>{{ content().myCondition(true) }}</p>
242
+ <p>{{ content().myCondition(false) }}</p>
243
+ </div>
244
+ `,
245
+ })
246
+ export class ConditionalComponent {
247
+ content = useIntlayer("my_key");
248
+ }
249
+ ```
250
+
251
+ </Tab>
252
+ <Tab label="Vanilla JS" value="vanilla">
253
+
254
+ To utilize conditional content with `vanilla-intlayer`, retrieve it via the `useIntlayer` hook. Here's an example:
255
+
256
+ ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]}
257
+ import { installIntlayer, useIntlayer } from "vanilla-intlayer";
258
+
259
+ installIntlayer();
260
+
261
+ const content = useIntlayer("my_key").onChange((newContent) => {
262
+ document.getElementById("true-content")!.textContent =
263
+ newContent.myCondition(true);
264
+ document.getElementById("false-content")!.textContent =
265
+ newContent.myCondition(false);
266
+ });
267
+
268
+ // Initial render
269
+ document.getElementById("true-content")!.textContent =
270
+ content.myCondition(true);
271
+ document.getElementById("false-content")!.textContent =
272
+ content.myCondition(false);
273
+ ```
274
+
275
+ </Tab>
276
+ </Tabs>
277
+
116
278
  ## Additional Resources
117
279
 
118
280
  For more detailed information on configuration and usage, refer to the following resources:
@@ -81,7 +81,10 @@ In this example, `enu` maps various conditions to specific content. When used in
81
81
 
82
82
  > If no fallback is declared, the function will return `undefined` if no keys match.
83
83
 
84
- ## Using Enumeration with React Intlayer
84
+ ## Using Enumeration
85
+
86
+ <Tabs group="framework">
87
+ <Tab label="React" value="react">
85
88
 
86
89
  To use enumeration in a React component, you can leverage the `useIntlayer` hook from the `react-intlayer` package. This hook retrieves the correct content based on the specified ID. Here's an example of how to use it:
87
90
 
@@ -119,7 +122,152 @@ const CarComponent: FC = () => {
119
122
  };
120
123
  ```
121
124
 
122
- In this example, the component dynamically adjusts its output based on the number of cars. The correct content is chosen automatically, depending on the specified range.
125
+ </Tab>
126
+ <Tab label="Next.js" value="nextjs">
127
+
128
+ To use enumeration in Next.js Client Components, retrieve it via the `useIntlayer` hook. Here's an example:
129
+
130
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
131
+ "use client";
132
+
133
+ import type { FC } from "react";
134
+ import { useIntlayer } from "next-intlayer";
135
+
136
+ const CarComponent: FC = () => {
137
+ const { numberOfCar } = useIntlayer("car_count");
138
+
139
+ return (
140
+ <div>
141
+ <p>{numberOfCar(6)}</p>
142
+ </div>
143
+ );
144
+ };
145
+
146
+ export default CarComponent;
147
+ ```
148
+
149
+ </Tab>
150
+ <Tab label="Vue" value="vue">
151
+
152
+ To use enumeration in Vue components, retrieve it via the `useIntlayer` hook. Here's an example:
153
+
154
+ ```vue fileName="**/*.vue"
155
+ <script setup lang="ts">
156
+ import { useIntlayer } from "vue-intlayer";
157
+
158
+ const { numberOfCar } = useIntlayer("car_count");
159
+ </script>
160
+
161
+ <template>
162
+ <div>
163
+ <p>{{ numberOfCar(6) }}</p>
164
+ </div>
165
+ </template>
166
+ ```
167
+
168
+ </Tab>
169
+ <Tab label="Svelte" value="svelte">
170
+
171
+ To use enumeration in Svelte components, retrieve it via the `useIntlayer` hook. The store is accessed with `$`. Here's an example:
172
+
173
+ ```svelte fileName="**/*.svelte"
174
+ <script lang="ts">
175
+ import { useIntlayer } from "svelte-intlayer";
176
+
177
+ const content = useIntlayer("car_count");
178
+ </script>
179
+
180
+ <div>
181
+ <p>{$content.numberOfCar(6)}</p>
182
+ </div>
183
+ ```
184
+
185
+ </Tab>
186
+ <Tab label="Preact" value="preact">
187
+
188
+ To use enumeration in Preact components, retrieve it via the `useIntlayer` hook. Here's an example:
189
+
190
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
191
+ import type { FC } from "preact";
192
+ import { useIntlayer } from "preact-intlayer";
193
+
194
+ const CarComponent: FC = () => {
195
+ const { numberOfCar } = useIntlayer("car_count");
196
+
197
+ return (
198
+ <div>
199
+ <p>{numberOfCar(6)}</p>
200
+ </div>
201
+ );
202
+ };
203
+
204
+ export default CarComponent;
205
+ ```
206
+
207
+ </Tab>
208
+ <Tab label="Solid" value="solid">
209
+
210
+ To use enumeration in SolidJS components, retrieve it via the `useIntlayer` hook. Here's an example:
211
+
212
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
213
+ import type { Component } from "solid-js";
214
+ import { useIntlayer } from "solid-intlayer";
215
+
216
+ const CarComponent: Component = () => {
217
+ const { numberOfCar } = useIntlayer("car_count");
218
+
219
+ return (
220
+ <div>
221
+ <p>{numberOfCar(6)}</p>
222
+ </div>
223
+ );
224
+ };
225
+
226
+ export default CarComponent;
227
+ ```
228
+
229
+ </Tab>
230
+ <Tab label="Angular" value="angular">
231
+
232
+ To use enumeration in Angular components, retrieve it via the `useIntlayer` hook. Here's an example:
233
+
234
+ ```typescript fileName="app.component.ts" codeFormat="typescript"
235
+ import { Component } from "@angular/core";
236
+ import { useIntlayer } from "angular-intlayer";
237
+
238
+ @Component({
239
+ selector: "app-car",
240
+ template: `
241
+ <div>
242
+ <p>{{ content().numberOfCar(6) }}</p>
243
+ </div>
244
+ `,
245
+ })
246
+ export class CarComponent {
247
+ content = useIntlayer("car_count");
248
+ }
249
+ ```
250
+
251
+ </Tab>
252
+ <Tab label="Vanilla JS" value="vanilla">
253
+
254
+ To use enumeration with `vanilla-intlayer`, retrieve it via the `useIntlayer` hook. Here's an example:
255
+
256
+ ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]}
257
+ import { installIntlayer, useIntlayer } from "vanilla-intlayer";
258
+
259
+ installIntlayer();
260
+
261
+ const content = useIntlayer("car_count").onChange((newContent) => {
262
+ document.getElementById("cars")!.textContent = newContent.numberOfCar(6);
263
+ });
264
+
265
+ // Initial render
266
+ document.getElementById("cars")!.textContent = content.numberOfCar(6);
267
+ ```
268
+
269
+ </Tab>
270
+ </Tabs>
123
271
 
124
272
  ## Combining Enumeration with Insert for Ordinal Numbers
125
273
 
@@ -173,7 +321,10 @@ export default rankingContent;
173
321
  }
174
322
  ```
175
323
 
176
- ### Using Ordinal Enumeration in React
324
+ ### Using Ordinal Enumeration
325
+
326
+ <Tabs group="framework">
327
+ <Tab label="React" value="react">
177
328
 
178
329
  To use this in a React component, call the enumeration with the last digit of the number to get the correct suffix, then pass the full count as the insertion value:
179
330
 
@@ -197,16 +348,167 @@ const RankingComponent: FC<{ count: number }> = ({ count }) => {
197
348
  </div>
198
349
  );
199
350
  };
351
+ ```
352
+
353
+ </Tab>
354
+ <Tab label="Next.js" value="nextjs">
355
+
356
+ To use this in Next.js Client Components, call the enumeration with the last digit of the number to get the correct suffix, then pass the full count as the insertion value:
357
+
358
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
359
+ "use client";
360
+
361
+ import type { FC } from "react";
362
+ import { useIntlayer } from "next-intlayer";
363
+
364
+ const RankingComponent: FC<{ count: number }> = ({ count }) => {
365
+ const { ordinal } = useIntlayer("ranking_component");
366
+ const lastDigit = Math.abs(count) % 10;
367
+
368
+ return (
369
+ <div>
370
+ <p>{ordinal(lastDigit)({ count })}</p>
371
+ </div>
372
+ );
373
+ };
200
374
 
201
375
  export default RankingComponent;
202
376
  ```
203
377
 
204
- In this example:
378
+ </Tab>
379
+ <Tab label="Vue" value="vue">
205
380
 
206
- - `ordinal(lastDigit)` selects the correct enumeration entry based on the last digit (1 "st", 2 "nd", 3 "rd", others "th")
207
- - `({ count })` passes the full number to the `insert` function to replace `{{count}}` in the string
381
+ To use this in Vue components, call the enumeration with the last digit of the number to get the correct suffix, then pass the full count as the insertion value:
382
+
383
+ ```vue fileName="**/*.vue"
384
+ <script setup lang="ts">
385
+ import { useIntlayer } from "vue-intlayer";
386
+
387
+ defineProps<{ count: number }>();
388
+
389
+ const { ordinal } = useIntlayer("ranking_component");
390
+ </script>
391
+
392
+ <template>
393
+ <div>
394
+ <p>{{ ordinal(Math.abs(count) % 10)({ count }) }}</p>
395
+ </div>
396
+ </template>
397
+ ```
398
+
399
+ </Tab>
400
+ <Tab label="Svelte" value="svelte">
401
+
402
+ To use this in Svelte components, call the enumeration with the last digit of the number to get the correct suffix, then pass the full count as the insertion value:
403
+
404
+ ```svelte fileName="**/*.svelte"
405
+ <script lang="ts">
406
+ import { useIntlayer } from "svelte-intlayer";
407
+
408
+ export let count: number;
409
+
410
+ const content = useIntlayer("ranking_component");
411
+ $: lastDigit = Math.abs(count) % 10;
412
+ </script>
413
+
414
+ <div>
415
+ <p>{$content.ordinal(lastDigit)({ count })}</p>
416
+ </div>
417
+ ```
418
+
419
+ </Tab>
420
+ <Tab label="Preact" value="preact">
421
+
422
+ To use this in Preact components, call the enumeration with the last digit of the number to get the correct suffix, then pass the full count as the insertion value:
423
+
424
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
425
+ import type { FC } from "preact";
426
+ import { useIntlayer } from "preact-intlayer";
427
+
428
+ const RankingComponent: FC<{ count: number }> = ({ count }) => {
429
+ const { ordinal } = useIntlayer("ranking_component");
430
+ const lastDigit = Math.abs(count) % 10;
431
+
432
+ return (
433
+ <div>
434
+ <p>{ordinal(lastDigit)({ count })}</p>
435
+ </div>
436
+ );
437
+ };
438
+
439
+ export default RankingComponent;
440
+ ```
441
+
442
+ </Tab>
443
+ <Tab label="Solid" value="solid">
444
+
445
+ To use this in SolidJS components, call the enumeration with the last digit of the number to get the correct suffix, then pass the full count as the insertion value:
446
+
447
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
448
+ import type { Component } from "solid-js";
449
+ import { useIntlayer } from "solid-intlayer";
450
+
451
+ const RankingComponent: Component<{ count: number }> = (props) => {
452
+ const { ordinal } = useIntlayer("ranking_component");
453
+
454
+ return (
455
+ <div>
456
+ <p>{ordinal(Math.abs(props.count) % 10)({ count: props.count })}</p>
457
+ </div>
458
+ );
459
+ };
460
+
461
+ export default RankingComponent;
462
+ ```
463
+
464
+ </Tab>
465
+ <Tab label="Angular" value="angular">
466
+
467
+ To use this in Angular components, call the enumeration with the last digit of the number to get the correct suffix, then pass the full count as the insertion value:
468
+
469
+ ```typescript fileName="app.component.ts" codeFormat="typescript"
470
+ import { Component, Input } from "@angular/core";
471
+ import { useIntlayer } from "angular-intlayer";
472
+
473
+ @Component({
474
+ selector: "app-ranking",
475
+ template: `
476
+ <div>
477
+ <p>{{ content().ordinal(lastDigit())({ count }) }}</p>
478
+ </div>
479
+ `,
480
+ })
481
+ export class RankingComponent {
482
+ @Input() count!: number;
483
+
484
+ content = useIntlayer("ranking_component");
485
+
486
+ lastDigit() {
487
+ return Math.abs(this.count) % 10;
488
+ }
489
+ }
490
+ ```
491
+
492
+ </Tab>
493
+ <Tab label="Vanilla JS" value="vanilla">
494
+
495
+ To use this with `vanilla-intlayer`, call the enumeration with the last digit of the number to get the correct suffix, then pass the full count as the insertion value:
496
+
497
+ ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]}
498
+ import { installIntlayer, useIntlayer } from "vanilla-intlayer";
499
+
500
+ installIntlayer();
501
+
502
+ const content = useIntlayer("ranking_component");
503
+ const lastDigit = Math.abs(5) % 10;
504
+
505
+ document.getElementById("ranking")!.textContent = content.ordinal(lastDigit)({
506
+ count: 5,
507
+ });
508
+ ```
208
509
 
209
- This pattern allows you to display ordinal numbers correctly: "1st place", "2nd place", "3rd place", "4th place", "5th place", etc.
510
+ </Tab>
511
+ </Tabs>
210
512
 
211
513
  ## Additional Resources
212
514