@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
@@ -27,8 +27,191 @@ author: aymericzip
27
27
 
28
28
  ## Wie Enumeration funktioniert
29
29
 
30
- In Intlayer wird die Enumeration durch die Funktion `enu` realisiert, die bestimmte Schlüssel ihren entsprechenden Inhalten zuordnet. Diese Schlüssel können numerische Werte, Bereiche oder benutzerdefinierte Bezeichner darstellen. Bei Verwendung mit React Intlayer oder Next Intlayer wird der passende Inhalt automatisch basierend auf der Anwendungslokalisierung und den definierten Regeln ausgewählt.
30
+ <Tabs group="framework">
31
+ <Tab label="React" value="react">
31
32
 
33
+ 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:
34
+
35
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
36
+ import type { FC } from "react";
37
+ import { useIntlayer } from "react-intlayer";
38
+
39
+ const CarComponent: FC = () => {
40
+ const { numberOfCar } = useIntlayer("car_count");
41
+
42
+ return (
43
+ <div>
44
+ <p>
45
+ {
46
+ numberOfCar(0) // Output: No cars
47
+ }
48
+ </p>
49
+ <p>
50
+ {
51
+ numberOfCar(6) // Output: Some cars
52
+ }
53
+ </p>
54
+ <p>
55
+ {
56
+ numberOfCar(20) // Output: Many cars
57
+ }
58
+ </p>
59
+ <p>
60
+ {
61
+ numberOfCar(0.01) // Output: Fallback value
62
+ }
63
+ </p>
64
+ </div>
65
+ );
66
+ };
67
+ ```
68
+
69
+ </Tab>
70
+ <Tab label="Next.js" value="nextjs">
71
+
72
+ To use enumeration in Next.js Client Components, retrieve it via the `useIntlayer` hook. Here's an example:
73
+
74
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
75
+ "use client";
76
+
77
+ import type { FC } from "react";
78
+ import { useIntlayer } from "next-intlayer";
79
+
80
+ const CarComponent: FC = () => {
81
+ const { numberOfCar } = useIntlayer("car_count");
82
+
83
+ return (
84
+ <div>
85
+ <p>{numberOfCar(6)}</p>
86
+ </div>
87
+ );
88
+ };
89
+
90
+ export default CarComponent;
91
+ ```
92
+
93
+ </Tab>
94
+ <Tab label="Vue" value="vue">
95
+
96
+ To use enumeration in Vue components, retrieve it via the `useIntlayer` hook. Here's an example:
97
+
98
+ ```vue fileName="**/*.vue"
99
+ <script setup lang="ts">
100
+ import { useIntlayer } from "vue-intlayer";
101
+
102
+ const { numberOfCar } = useIntlayer("car_count");
103
+ </script>
104
+
105
+ <template>
106
+ <div>
107
+ <p>{{ numberOfCar(6) }}</p>
108
+ </div>
109
+ </template>
110
+ ```
111
+
112
+ </Tab>
113
+ <Tab label="Svelte" value="svelte">
114
+
115
+ To use enumeration in Svelte components, retrieve it via the `useIntlayer` hook. The store is accessed with `$`. Here's an example:
116
+
117
+ ```svelte fileName="**/*.svelte"
118
+ <script lang="ts">
119
+ import { useIntlayer } from "svelte-intlayer";
120
+
121
+ const content = useIntlayer("car_count");
122
+ </script>
123
+
124
+ <div>
125
+ <p>{$content.numberOfCar(6)}</p>
126
+ </div>
127
+ ```
128
+
129
+ </Tab>
130
+ <Tab label="Preact" value="preact">
131
+
132
+ To use enumeration in Preact components, retrieve it via the `useIntlayer` hook. Here's an example:
133
+
134
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
135
+ import type { FC } from "preact";
136
+ import { useIntlayer } from "preact-intlayer";
137
+
138
+ const CarComponent: FC = () => {
139
+ const { numberOfCar } = useIntlayer("car_count");
140
+
141
+ return (
142
+ <div>
143
+ <p>{numberOfCar(6)}</p>
144
+ </div>
145
+ );
146
+ };
147
+
148
+ export default CarComponent;
149
+ ```
150
+
151
+ </Tab>
152
+ <Tab label="Solid" value="solid">
153
+
154
+ To use enumeration in SolidJS components, retrieve it via the `useIntlayer` hook. Here's an example:
155
+
156
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
157
+ import type { Component } from "solid-js";
158
+ import { useIntlayer } from "solid-intlayer";
159
+
160
+ const CarComponent: Component = () => {
161
+ const { numberOfCar } = useIntlayer("car_count");
162
+
163
+ return (
164
+ <div>
165
+ <p>{numberOfCar(6)}</p>
166
+ </div>
167
+ );
168
+ };
169
+
170
+ export default CarComponent;
171
+ ```
172
+
173
+ </Tab>
174
+ <Tab label="Angular" value="angular">
175
+
176
+ To use enumeration in Angular components, retrieve it via the `useIntlayer` hook. Here's an example:
177
+
178
+ ```typescript fileName="app.component.ts" codeFormat="typescript"
179
+ import { Component } from "@angular/core";
180
+ import { useIntlayer } from "angular-intlayer";
181
+
182
+ @Component({
183
+ selector: "app-car",
184
+ template: `
185
+ <div>
186
+ <p>{{ content().numberOfCar(6) }}</p>
187
+ </div>
188
+ `,
189
+ })
190
+ export class CarComponent {
191
+ content = useIntlayer("car_count");
192
+ }
193
+ ```
194
+
195
+ </Tab>
196
+ <Tab label="Vanilla JS" value="vanilla">
197
+
198
+ To use enumeration with `vanilla-intlayer`, retrieve it via the `useIntlayer` hook. Here's an example:
199
+
200
+ ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]}
201
+ import { installIntlayer, useIntlayer } from "vanilla-intlayer";
202
+
203
+ installIntlayer();
204
+
205
+ const content = useIntlayer("car_count").onChange((newContent) => {
206
+ document.getElementById("cars")!.textContent = newContent.numberOfCar(6);
207
+ });
208
+
209
+ // Initial render
210
+ document.getElementById("cars")!.textContent = content.numberOfCar(6);
211
+ ```
212
+
213
+ </Tab>
214
+ </Tabs>
32
215
  ## Einrichtung der Enumeration
33
216
 
34
217
  Um eine Enumeration in Ihrem Intlayer-Projekt einzurichten, müssen Sie ein Inhaltsmodul erstellen, das Enumeration-Definitionen enthält. Hier ist ein Beispiel für eine einfache Enumeration der Anzahl von Autos:
@@ -83,7 +266,10 @@ In diesem Beispiel ordnet `enu` verschiedene Bedingungen spezifischen Inhalten z
83
266
 
84
267
  ## Verwendung von Enumeration mit React Intlayer
85
268
 
86
- Um Enumeration in einer React-Komponente zu verwenden, können Sie den `useIntlayer`-Hook aus dem `react-intlayer`-Paket nutzen. Dieser Hook ruft den korrekten Inhalt basierend auf der angegebenen ID ab. Hier ist ein Beispiel, wie man ihn verwendet:
269
+ <Tabs group="framework">
270
+ <Tab label="React" value="react">
271
+
272
+ 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
273
 
88
274
  ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
89
275
  import type { FC } from "react";
@@ -96,22 +282,22 @@ const CarComponent: FC = () => {
96
282
  <div>
97
283
  <p>
98
284
  {
99
- numberOfCar(0) // Ausgabe: Keine Autos
285
+ numberOfCar(0) // Output: No cars
100
286
  }
101
287
  </p>
102
288
  <p>
103
289
  {
104
- numberOfCar(6) // Ausgabe: Einige Autos
290
+ numberOfCar(6) // Output: Some cars
105
291
  }
106
292
  </p>
107
293
  <p>
108
294
  {
109
- numberOfCar(20) // Ausgabe: Viele Autos
295
+ numberOfCar(20) // Output: Many cars
110
296
  }
111
297
  </p>
112
298
  <p>
113
299
  {
114
- numberOfCar(0.01) // Ausgabe: Fallback-Wert
300
+ numberOfCar(0.01) // Output: Fallback value
115
301
  }
116
302
  </p>
117
303
  </div>
@@ -119,7 +305,152 @@ const CarComponent: FC = () => {
119
305
  };
120
306
  ```
121
307
 
122
- In diesem Beispiel passt die Komponente ihre Ausgabe dynamisch basierend auf der Anzahl der Autos an. Der korrekte Inhalt wird automatisch ausgewählt, abhängig vom angegebenen Bereich.
308
+ </Tab>
309
+ <Tab label="Next.js" value="nextjs">
310
+
311
+ To use enumeration in Next.js Client Components, retrieve it via the `useIntlayer` hook. Here's an example:
312
+
313
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
314
+ "use client";
315
+
316
+ import type { FC } from "react";
317
+ import { useIntlayer } from "next-intlayer";
318
+
319
+ const CarComponent: FC = () => {
320
+ const { numberOfCar } = useIntlayer("car_count");
321
+
322
+ return (
323
+ <div>
324
+ <p>{numberOfCar(6)}</p>
325
+ </div>
326
+ );
327
+ };
328
+
329
+ export default CarComponent;
330
+ ```
331
+
332
+ </Tab>
333
+ <Tab label="Vue" value="vue">
334
+
335
+ To use enumeration in Vue components, retrieve it via the `useIntlayer` hook. Here's an example:
336
+
337
+ ```vue fileName="**/*.vue"
338
+ <script setup lang="ts">
339
+ import { useIntlayer } from "vue-intlayer";
340
+
341
+ const { numberOfCar } = useIntlayer("car_count");
342
+ </script>
343
+
344
+ <template>
345
+ <div>
346
+ <p>{{ numberOfCar(6) }}</p>
347
+ </div>
348
+ </template>
349
+ ```
350
+
351
+ </Tab>
352
+ <Tab label="Svelte" value="svelte">
353
+
354
+ To use enumeration in Svelte components, retrieve it via the `useIntlayer` hook. The store is accessed with `$`. Here's an example:
355
+
356
+ ```svelte fileName="**/*.svelte"
357
+ <script lang="ts">
358
+ import { useIntlayer } from "svelte-intlayer";
359
+
360
+ const content = useIntlayer("car_count");
361
+ </script>
362
+
363
+ <div>
364
+ <p>{$content.numberOfCar(6)}</p>
365
+ </div>
366
+ ```
367
+
368
+ </Tab>
369
+ <Tab label="Preact" value="preact">
370
+
371
+ To use enumeration in Preact components, retrieve it via the `useIntlayer` hook. Here's an example:
372
+
373
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
374
+ import type { FC } from "preact";
375
+ import { useIntlayer } from "preact-intlayer";
376
+
377
+ const CarComponent: FC = () => {
378
+ const { numberOfCar } = useIntlayer("car_count");
379
+
380
+ return (
381
+ <div>
382
+ <p>{numberOfCar(6)}</p>
383
+ </div>
384
+ );
385
+ };
386
+
387
+ export default CarComponent;
388
+ ```
389
+
390
+ </Tab>
391
+ <Tab label="Solid" value="solid">
392
+
393
+ To use enumeration in SolidJS components, retrieve it via the `useIntlayer` hook. Here's an example:
394
+
395
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
396
+ import type { Component } from "solid-js";
397
+ import { useIntlayer } from "solid-intlayer";
398
+
399
+ const CarComponent: Component = () => {
400
+ const { numberOfCar } = useIntlayer("car_count");
401
+
402
+ return (
403
+ <div>
404
+ <p>{numberOfCar(6)}</p>
405
+ </div>
406
+ );
407
+ };
408
+
409
+ export default CarComponent;
410
+ ```
411
+
412
+ </Tab>
413
+ <Tab label="Angular" value="angular">
414
+
415
+ To use enumeration in Angular components, retrieve it via the `useIntlayer` hook. Here's an example:
416
+
417
+ ```typescript fileName="app.component.ts" codeFormat="typescript"
418
+ import { Component } from "@angular/core";
419
+ import { useIntlayer } from "angular-intlayer";
420
+
421
+ @Component({
422
+ selector: "app-car",
423
+ template: `
424
+ <div>
425
+ <p>{{ content().numberOfCar(6) }}</p>
426
+ </div>
427
+ `,
428
+ })
429
+ export class CarComponent {
430
+ content = useIntlayer("car_count");
431
+ }
432
+ ```
433
+
434
+ </Tab>
435
+ <Tab label="Vanilla JS" value="vanilla">
436
+
437
+ To use enumeration with `vanilla-intlayer`, retrieve it via the `useIntlayer` hook. Here's an example:
438
+
439
+ ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]}
440
+ import { installIntlayer, useIntlayer } from "vanilla-intlayer";
441
+
442
+ installIntlayer();
443
+
444
+ const content = useIntlayer("car_count").onChange((newContent) => {
445
+ document.getElementById("cars")!.textContent = newContent.numberOfCar(6);
446
+ });
447
+
448
+ // Initial render
449
+ document.getElementById("cars")!.textContent = content.numberOfCar(6);
450
+ ```
451
+
452
+ </Tab>
453
+ </Tabs>
123
454
 
124
455
  ## Zusätzliche Ressourcen
125
456
 
@@ -130,3 +461,442 @@ Für detailliertere Informationen zur Konfiguration und Nutzung verweisen wir au
130
461
  - [Next Intlayer Dokumentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/intlayer_with_nextjs_15.md)
131
462
 
132
463
  Diese Ressourcen bieten weitere Einblicke in die Einrichtung und Nutzung von Intlayer in verschiedenen Umgebungen und mit unterschiedlichen Frameworks.
464
+
465
+ ### Using Ordinal Enumeration
466
+
467
+ <Tabs group="framework">
468
+ <Tab label="React" value="react">
469
+
470
+ 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:
471
+
472
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
473
+ import type { FC } from "react";
474
+ import { useIntlayer } from "react-intlayer";
475
+
476
+ const RankingComponent: FC<{ count: number }> = ({ count }) => {
477
+ const { ordinal } = useIntlayer("ranking_component");
478
+
479
+ // Get the last digit to determine the correct suffix
480
+ const lastDigit = Math.abs(count) % 10;
481
+
482
+ return (
483
+ <div>
484
+ <p>
485
+ {
486
+ ordinal(lastDigit)({ count }) // e.g., "5th place" for count=5
487
+ }
488
+ </p>
489
+ </div>
490
+ );
491
+ };
492
+ ```
493
+
494
+ </Tab>
495
+ <Tab label="Next.js" value="nextjs">
496
+
497
+ 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:
498
+
499
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
500
+ "use client";
501
+
502
+ import type { FC } from "react";
503
+ import { useIntlayer } from "next-intlayer";
504
+
505
+ const RankingComponent: FC<{ count: number }> = ({ count }) => {
506
+ const { ordinal } = useIntlayer("ranking_component");
507
+ const lastDigit = Math.abs(count) % 10;
508
+
509
+ return (
510
+ <div>
511
+ <p>{ordinal(lastDigit)({ count })}</p>
512
+ </div>
513
+ );
514
+ };
515
+
516
+ export default RankingComponent;
517
+ ```
518
+
519
+ </Tab>
520
+ <Tab label="Vue" value="vue">
521
+
522
+ 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:
523
+
524
+ ```vue fileName="**/*.vue"
525
+ <script setup lang="ts">
526
+ import { useIntlayer } from "vue-intlayer";
527
+
528
+ defineProps<{ count: number }>();
529
+
530
+ const { ordinal } = useIntlayer("ranking_component");
531
+ </script>
532
+
533
+ <template>
534
+ <div>
535
+ <p>{{ ordinal(Math.abs(count) % 10)({ count }) }}</p>
536
+ </div>
537
+ </template>
538
+ ```
539
+
540
+ </Tab>
541
+ <Tab label="Svelte" value="svelte">
542
+
543
+ 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:
544
+
545
+ ```svelte fileName="**/*.svelte"
546
+ <script lang="ts">
547
+ import { useIntlayer } from "svelte-intlayer";
548
+
549
+ export let count: number;
550
+
551
+ const content = useIntlayer("ranking_component");
552
+ $: lastDigit = Math.abs(count) % 10;
553
+ </script>
554
+
555
+ <div>
556
+ <p>{$content.ordinal(lastDigit)({ count })}</p>
557
+ </div>
558
+ ```
559
+
560
+ </Tab>
561
+ <Tab label="Preact" value="preact">
562
+
563
+ 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:
564
+
565
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
566
+ import type { FC } from "preact";
567
+ import { useIntlayer } from "preact-intlayer";
568
+
569
+ const RankingComponent: FC<{ count: number }> = ({ count }) => {
570
+ const { ordinal } = useIntlayer("ranking_component");
571
+ const lastDigit = Math.abs(count) % 10;
572
+
573
+ return (
574
+ <div>
575
+ <p>{ordinal(lastDigit)({ count })}</p>
576
+ </div>
577
+ );
578
+ };
579
+
580
+ export default RankingComponent;
581
+ ```
582
+
583
+ </Tab>
584
+ <Tab label="Solid" value="solid">
585
+
586
+ 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:
587
+
588
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
589
+ import type { Component } from "solid-js";
590
+ import { useIntlayer } from "solid-intlayer";
591
+
592
+ const RankingComponent: Component<{ count: number }> = (props) => {
593
+ const { ordinal } = useIntlayer("ranking_component");
594
+
595
+ return (
596
+ <div>
597
+ <p>{ordinal(Math.abs(props.count) % 10)({ count: props.count })}</p>
598
+ </div>
599
+ );
600
+ };
601
+
602
+ export default RankingComponent;
603
+ ```
604
+
605
+ </Tab>
606
+ <Tab label="Angular" value="angular">
607
+
608
+ 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:
609
+
610
+ ```typescript fileName="app.component.ts" codeFormat="typescript"
611
+ import { Component, Input } from "@angular/core";
612
+ import { useIntlayer } from "angular-intlayer";
613
+
614
+ @Component({
615
+ selector: "app-ranking",
616
+ template: `
617
+ <div>
618
+ <p>{{ content().ordinal(lastDigit())({ count }) }}</p>
619
+ </div>
620
+ `,
621
+ })
622
+ export class RankingComponent {
623
+ @Input() count!: number;
624
+
625
+ content = useIntlayer("ranking_component");
626
+
627
+ lastDigit() {
628
+ return Math.abs(this.count) % 10;
629
+ }
630
+ }
631
+ ```
632
+
633
+ </Tab>
634
+ <Tab label="Vanilla JS" value="vanilla">
635
+
636
+ 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:
637
+
638
+ ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]}
639
+ import { installIntlayer, useIntlayer } from "vanilla-intlayer";
640
+
641
+ installIntlayer();
642
+
643
+ const content = useIntlayer("ranking_component");
644
+ const lastDigit = Math.abs(5) % 10;
645
+
646
+ document.getElementById("ranking")!.textContent = content.ordinal(lastDigit)({
647
+ count: 5,
648
+ });
649
+ ```
650
+
651
+ </Tab>
652
+ </Tabs>
653
+
654
+ ## Combining Enumeration with Insert for Ordinal Numbers
655
+
656
+ A common use case is displaying ordinal numbers (1st, 2nd, 3rd, etc.). You can combine `enu` with `insert` to create dynamic ordinal content:
657
+
658
+ ```typescript fileName="**/*.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
659
+ import { enu, insert, type Dictionary } from "intlayer";
660
+
661
+ const rankingContent = {
662
+ key: "ranking_component",
663
+ content: {
664
+ ordinal: enu({
665
+ 1: insert("{{count}}st place"),
666
+ 2: insert("{{count}}nd place"),
667
+ 3: insert("{{count}}rd place"),
668
+ fallback: insert("{{count}}th place"),
669
+ }),
670
+ },
671
+ } satisfies Dictionary;
672
+
673
+ export default rankingContent;
674
+ ```
675
+
676
+ ```json fileName="**/*.content.json" contentDeclarationFormat="json"
677
+ {
678
+ "$schema": "https://intlayer.org/schema.json",
679
+ "key": "ranking_component",
680
+ "content": {
681
+ "ordinal": {
682
+ "nodeType": "enumeration",
683
+ "enumeration": {
684
+ "1": {
685
+ "nodeType": "insertion",
686
+ "insertion": "{{count}}st place"
687
+ },
688
+ "2": {
689
+ "nodeType": "insertion",
690
+ "insertion": "{{count}}nd place"
691
+ },
692
+ "3": {
693
+ "nodeType": "insertion",
694
+ "insertion": "{{count}}rd place"
695
+ },
696
+ "fallback": {
697
+ "nodeType": "insertion",
698
+ "insertion": "{{count}}th place"
699
+ }
700
+ }
701
+ }
702
+ }
703
+ }
704
+ ```
705
+
706
+ ### Using Ordinal Enumeration
707
+
708
+ <Tabs group="framework">
709
+ <Tab label="React" value="react">
710
+
711
+ 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:
712
+
713
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
714
+ import type { FC } from "react";
715
+ import { useIntlayer } from "react-intlayer";
716
+
717
+ const RankingComponent: FC<{ count: number }> = ({ count }) => {
718
+ const { ordinal } = useIntlayer("ranking_component");
719
+
720
+ // Get the last digit to determine the correct suffix
721
+ const lastDigit = Math.abs(count) % 10;
722
+
723
+ return (
724
+ <div>
725
+ <p>
726
+ {
727
+ ordinal(lastDigit)({ count }) // e.g., "5th place" for count=5
728
+ }
729
+ </p>
730
+ </div>
731
+ );
732
+ };
733
+ ```
734
+
735
+ </Tab>
736
+ <Tab label="Next.js" value="nextjs">
737
+
738
+ 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:
739
+
740
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
741
+ "use client";
742
+
743
+ import type { FC } from "react";
744
+ import { useIntlayer } from "next-intlayer";
745
+
746
+ const RankingComponent: FC<{ count: number }> = ({ count }) => {
747
+ const { ordinal } = useIntlayer("ranking_component");
748
+ const lastDigit = Math.abs(count) % 10;
749
+
750
+ return (
751
+ <div>
752
+ <p>{ordinal(lastDigit)({ count })}</p>
753
+ </div>
754
+ );
755
+ };
756
+
757
+ export default RankingComponent;
758
+ ```
759
+
760
+ </Tab>
761
+ <Tab label="Vue" value="vue">
762
+
763
+ 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:
764
+
765
+ ```vue fileName="**/*.vue"
766
+ <script setup lang="ts">
767
+ import { useIntlayer } from "vue-intlayer";
768
+
769
+ defineProps<{ count: number }>();
770
+
771
+ const { ordinal } = useIntlayer("ranking_component");
772
+ </script>
773
+
774
+ <template>
775
+ <div>
776
+ <p>{{ ordinal(Math.abs(count) % 10)({ count }) }}</p>
777
+ </div>
778
+ </template>
779
+ ```
780
+
781
+ </Tab>
782
+ <Tab label="Svelte" value="svelte">
783
+
784
+ 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:
785
+
786
+ ```svelte fileName="**/*.svelte"
787
+ <script lang="ts">
788
+ import { useIntlayer } from "svelte-intlayer";
789
+
790
+ export let count: number;
791
+
792
+ const content = useIntlayer("ranking_component");
793
+ $: lastDigit = Math.abs(count) % 10;
794
+ </script>
795
+
796
+ <div>
797
+ <p>{$content.ordinal(lastDigit)({ count })}</p>
798
+ </div>
799
+ ```
800
+
801
+ </Tab>
802
+ <Tab label="Preact" value="preact">
803
+
804
+ 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:
805
+
806
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
807
+ import type { FC } from "preact";
808
+ import { useIntlayer } from "preact-intlayer";
809
+
810
+ const RankingComponent: FC<{ count: number }> = ({ count }) => {
811
+ const { ordinal } = useIntlayer("ranking_component");
812
+ const lastDigit = Math.abs(count) % 10;
813
+
814
+ return (
815
+ <div>
816
+ <p>{ordinal(lastDigit)({ count })}</p>
817
+ </div>
818
+ );
819
+ };
820
+
821
+ export default RankingComponent;
822
+ ```
823
+
824
+ </Tab>
825
+ <Tab label="Solid" value="solid">
826
+
827
+ 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:
828
+
829
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
830
+ import type { Component } from "solid-js";
831
+ import { useIntlayer } from "solid-intlayer";
832
+
833
+ const RankingComponent: Component<{ count: number }> = (props) => {
834
+ const { ordinal } = useIntlayer("ranking_component");
835
+
836
+ return (
837
+ <div>
838
+ <p>{ordinal(Math.abs(props.count) % 10)({ count: props.count })}</p>
839
+ </div>
840
+ );
841
+ };
842
+
843
+ export default RankingComponent;
844
+ ```
845
+
846
+ </Tab>
847
+ <Tab label="Angular" value="angular">
848
+
849
+ 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:
850
+
851
+ ```typescript fileName="app.component.ts" codeFormat="typescript"
852
+ import { Component, Input } from "@angular/core";
853
+ import { useIntlayer } from "angular-intlayer";
854
+
855
+ @Component({
856
+ selector: "app-ranking",
857
+ template: `
858
+ <div>
859
+ <p>{{ content().ordinal(lastDigit())({ count }) }}</p>
860
+ </div>
861
+ `,
862
+ })
863
+ export class RankingComponent {
864
+ @Input() count!: number;
865
+
866
+ content = useIntlayer("ranking_component");
867
+
868
+ lastDigit() {
869
+ return Math.abs(this.count) % 10;
870
+ }
871
+ }
872
+ ```
873
+
874
+ </Tab>
875
+ <Tab label="Vanilla JS" value="vanilla">
876
+
877
+ 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:
878
+
879
+ ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]}
880
+ import { installIntlayer, useIntlayer } from "vanilla-intlayer";
881
+
882
+ installIntlayer();
883
+
884
+ const content = useIntlayer("ranking_component");
885
+ const lastDigit = Math.abs(5) % 10;
886
+
887
+ document.getElementById("ranking")!.textContent = content.ordinal(lastDigit)({
888
+ count: 5,
889
+ });
890
+ ```
891
+
892
+ </Tab>
893
+ </Tabs>
894
+ ## Additional Resources
895
+
896
+ For more detailed information on configuration and usage, refer to the following resources:
897
+
898
+ - [Intlayer CLI Documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/index.md)
899
+ - [React Intlayer Documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_create_react_app.md)
900
+ - [Next Intlayer Documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_nextjs_15.md)
901
+
902
+ These resources provide further insights into the setup and usage of Intlayer in different environments and with various frameworks.