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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. package/dist/cjs/generated/docs.entry.cjs +320 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +320 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +16 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/cli/doc-review.md +110 -4
  8. package/docs/ar/cli/index.md +1 -1
  9. package/docs/ar/cli/scan.md +1 -1
  10. package/docs/ar/configuration.md +36 -3
  11. package/docs/ar/dictionary/condition.md +167 -5
  12. package/docs/ar/dictionary/enumeration.md +540 -6
  13. package/docs/ar/dictionary/file.md +151 -1
  14. package/docs/ar/dictionary/gender.md +168 -7
  15. package/docs/ar/dictionary/nesting.md +173 -65
  16. package/docs/ar/dictionary/plurial.md +174 -5
  17. package/docs/ar/dictionary/translation.md +156 -2
  18. package/docs/ar/dynamic_dictionaries/collections.md +1 -1
  19. package/docs/ar/dynamic_dictionaries/dynamic_content.md +1 -1
  20. package/docs/ar/dynamic_dictionaries/index.md +1 -1
  21. package/docs/ar/dynamic_dictionaries/variants.md +1 -1
  22. package/docs/ar/intlayer_with_vite+react.md +31 -31
  23. package/docs/ar/releases/v8.md +187 -1
  24. package/docs/ar/releases/v9.md +232 -0
  25. package/docs/bn/cli/index.md +1 -1
  26. package/docs/bn/cli/scan.md +1 -1
  27. package/docs/bn/configuration.md +36 -3
  28. package/docs/cs/cli/index.md +1 -1
  29. package/docs/cs/cli/scan.md +1 -1
  30. package/docs/cs/configuration.md +35 -2
  31. package/docs/de/cli/doc-review.md +110 -4
  32. package/docs/de/cli/index.md +1 -1
  33. package/docs/de/cli/scan.md +1 -1
  34. package/docs/de/configuration.md +35 -2
  35. package/docs/de/dictionary/condition.md +167 -5
  36. package/docs/de/dictionary/enumeration.md +777 -7
  37. package/docs/de/dictionary/file.md +151 -1
  38. package/docs/de/dictionary/gender.md +168 -7
  39. package/docs/de/dictionary/nesting.md +173 -65
  40. package/docs/de/dictionary/plurial.md +347 -7
  41. package/docs/de/dictionary/translation.md +156 -2
  42. package/docs/de/dynamic_dictionaries/collections.md +1 -1
  43. package/docs/de/dynamic_dictionaries/dynamic_content.md +1 -1
  44. package/docs/de/dynamic_dictionaries/index.md +1 -1
  45. package/docs/de/dynamic_dictionaries/variants.md +1 -1
  46. package/docs/de/intlayer_with_vite+react.md +48 -48
  47. package/docs/de/migration_from_i18next_to_intlayer.md +1 -1
  48. package/docs/de/migration_from_next-i18next_to_intlayer.md +1 -1
  49. package/docs/de/migration_from_next-intl_to_intlayer.md +1 -1
  50. package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  51. package/docs/de/migration_from_react-i18next_to_intlayer.md +1 -1
  52. package/docs/de/migration_from_vue-i18n_to_intlayer.md +1 -1
  53. package/docs/de/releases/v8.md +197 -1
  54. package/docs/de/releases/v9.md +232 -0
  55. package/docs/en/CI_CD.md +7 -7
  56. package/docs/en/cli/ci.md +62 -8
  57. package/docs/en/cli/doc-review.md +110 -4
  58. package/docs/en/cli/index.md +1 -1
  59. package/docs/en/cli/scan.md +1 -1
  60. package/docs/en/compat/i18n-js.md +44 -0
  61. package/docs/en/compat/i18next.md +59 -0
  62. package/docs/en/compat/index.md +51 -0
  63. package/docs/en/compat/lingui.md +44 -0
  64. package/docs/en/compat/next-i18next.md +57 -0
  65. package/docs/en/compat/next-intl.md +59 -0
  66. package/docs/en/compat/next-translate.md +45 -0
  67. package/docs/en/compat/ngx-translate.md +45 -0
  68. package/docs/en/compat/nuxtjs-i18n.md +46 -0
  69. package/docs/en/compat/polyglot.md +45 -0
  70. package/docs/en/compat/react-i18next.md +58 -0
  71. package/docs/en/compat/react-intl.md +55 -0
  72. package/docs/en/compat/svelte-i18n.md +47 -0
  73. package/docs/en/compat/transloco.md +45 -0
  74. package/docs/en/compat/vue-i18n.md +58 -0
  75. package/docs/en/configuration.md +35 -2
  76. package/docs/en/dictionary/condition.md +163 -1
  77. package/docs/en/dictionary/enumeration.md +309 -7
  78. package/docs/en/dictionary/file.md +151 -1
  79. package/docs/en/dictionary/gender.md +162 -1
  80. package/docs/en/dictionary/nesting.md +173 -9
  81. package/docs/en/dictionary/plurial.md +155 -10
  82. package/docs/en/dictionary/translation.md +145 -52
  83. package/docs/en/dynamic_dictionaries/collections.md +1 -1
  84. package/docs/en/dynamic_dictionaries/dynamic_content.md +1 -1
  85. package/docs/en/dynamic_dictionaries/index.md +1 -1
  86. package/docs/en/dynamic_dictionaries/variants.md +1 -1
  87. package/docs/en/migration_from_i18next_to_intlayer.md +1 -1
  88. package/docs/en/migration_from_next-i18next_to_intlayer.md +1 -1
  89. package/docs/en/migration_from_next-intl_to_intlayer.md +1 -1
  90. package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  91. package/docs/en/migration_from_react-i18next_to_intlayer.md +1 -1
  92. package/docs/en/migration_from_vue-i18n_to_intlayer.md +1 -1
  93. package/docs/en/releases/v8.md +187 -1
  94. package/docs/en/releases/v9.md +220 -0
  95. package/docs/en-GB/cli/doc-review.md +110 -4
  96. package/docs/en-GB/cli/index.md +1 -1
  97. package/docs/en-GB/cli/scan.md +1 -1
  98. package/docs/en-GB/configuration.md +35 -2
  99. package/docs/en-GB/dictionary/condition.md +364 -1
  100. package/docs/en-GB/dictionary/enumeration.md +577 -5
  101. package/docs/en-GB/dictionary/file.md +317 -1
  102. package/docs/en-GB/dictionary/gender.md +375 -2
  103. package/docs/en-GB/dictionary/nesting.md +368 -71
  104. package/docs/en-GB/dictionary/plurial.md +347 -7
  105. package/docs/en-GB/dictionary/translation.md +320 -32
  106. package/docs/en-GB/dynamic_dictionaries/collections.md +1 -1
  107. package/docs/en-GB/dynamic_dictionaries/dynamic_content.md +1 -1
  108. package/docs/en-GB/dynamic_dictionaries/index.md +1 -1
  109. package/docs/en-GB/dynamic_dictionaries/variants.md +1 -1
  110. package/docs/en-GB/releases/v8.md +1 -1
  111. package/docs/en-GB/releases/v9.md +220 -0
  112. package/docs/es/cli/doc-review.md +110 -4
  113. package/docs/es/cli/index.md +1 -1
  114. package/docs/es/cli/scan.md +1 -1
  115. package/docs/es/configuration.md +36 -3
  116. package/docs/es/dictionary/condition.md +167 -5
  117. package/docs/es/dictionary/enumeration.md +537 -12
  118. package/docs/es/dictionary/file.md +151 -1
  119. package/docs/es/dictionary/gender.md +168 -7
  120. package/docs/es/dictionary/nesting.md +173 -65
  121. package/docs/es/dictionary/plurial.md +347 -7
  122. package/docs/es/dictionary/translation.md +156 -2
  123. package/docs/es/dynamic_dictionaries/collections.md +1 -1
  124. package/docs/es/dynamic_dictionaries/dynamic_content.md +1 -1
  125. package/docs/es/dynamic_dictionaries/index.md +1 -1
  126. package/docs/es/dynamic_dictionaries/variants.md +1 -1
  127. package/docs/es/migration_from_i18next_to_intlayer.md +1 -1
  128. package/docs/es/migration_from_next-i18next_to_intlayer.md +1 -1
  129. package/docs/es/migration_from_next-intl_to_intlayer.md +1 -1
  130. package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  131. package/docs/es/migration_from_react-i18next_to_intlayer.md +1 -1
  132. package/docs/es/migration_from_vue-i18n_to_intlayer.md +1 -1
  133. package/docs/es/releases/v8.md +187 -1
  134. package/docs/es/releases/v9.md +228 -0
  135. package/docs/fr/cli/doc-review.md +110 -4
  136. package/docs/fr/cli/index.md +1 -1
  137. package/docs/fr/cli/scan.md +1 -1
  138. package/docs/fr/configuration.md +49 -16
  139. package/docs/fr/dictionary/condition.md +369 -6
  140. package/docs/fr/dictionary/enumeration.md +540 -6
  141. package/docs/fr/dictionary/file.md +151 -1
  142. package/docs/fr/dictionary/gender.md +168 -7
  143. package/docs/fr/dictionary/nesting.md +357 -86
  144. package/docs/fr/dictionary/plurial.md +174 -5
  145. package/docs/fr/dictionary/translation.md +156 -2
  146. package/docs/fr/dynamic_dictionaries/collections.md +1 -1
  147. package/docs/fr/dynamic_dictionaries/dynamic_content.md +1 -1
  148. package/docs/fr/dynamic_dictionaries/index.md +1 -1
  149. package/docs/fr/dynamic_dictionaries/variants.md +1 -1
  150. package/docs/fr/migration_from_i18next_to_intlayer.md +1 -1
  151. package/docs/fr/migration_from_next-i18next_to_intlayer.md +1 -1
  152. package/docs/fr/migration_from_next-intl_to_intlayer.md +1 -1
  153. package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  154. package/docs/fr/migration_from_react-i18next_to_intlayer.md +1 -1
  155. package/docs/fr/migration_from_vue-i18n_to_intlayer.md +1 -1
  156. package/docs/fr/releases/v8.md +187 -1
  157. package/docs/fr/releases/v9.md +220 -0
  158. package/docs/hi/cli/doc-review.md +110 -4
  159. package/docs/hi/cli/index.md +1 -1
  160. package/docs/hi/cli/scan.md +1 -1
  161. package/docs/hi/configuration.md +49 -16
  162. package/docs/hi/dictionary/condition.md +167 -5
  163. package/docs/hi/dictionary/enumeration.md +540 -6
  164. package/docs/hi/dictionary/file.md +151 -1
  165. package/docs/hi/dictionary/gender.md +168 -7
  166. package/docs/hi/dictionary/nesting.md +173 -65
  167. package/docs/hi/dictionary/plurial.md +174 -5
  168. package/docs/hi/dictionary/translation.md +155 -5
  169. package/docs/hi/dynamic_dictionaries/collections.md +1 -1
  170. package/docs/hi/dynamic_dictionaries/dynamic_content.md +1 -1
  171. package/docs/hi/dynamic_dictionaries/index.md +1 -1
  172. package/docs/hi/dynamic_dictionaries/variants.md +1 -1
  173. package/docs/hi/releases/v8.md +188 -2
  174. package/docs/hi/releases/v9.md +232 -0
  175. package/docs/id/cli/doc-review.md +110 -4
  176. package/docs/id/cli/index.md +1 -1
  177. package/docs/id/cli/scan.md +1 -1
  178. package/docs/id/configuration.md +35 -2
  179. package/docs/id/dictionary/condition.md +167 -5
  180. package/docs/id/dictionary/enumeration.md +540 -6
  181. package/docs/id/dictionary/file.md +318 -2
  182. package/docs/id/dictionary/gender.md +381 -8
  183. package/docs/id/dictionary/nesting.md +357 -86
  184. package/docs/id/dictionary/plurial.md +174 -5
  185. package/docs/id/dictionary/translation.md +156 -2
  186. package/docs/id/dynamic_dictionaries/collections.md +1 -1
  187. package/docs/id/dynamic_dictionaries/dynamic_content.md +1 -1
  188. package/docs/id/dynamic_dictionaries/index.md +1 -1
  189. package/docs/id/dynamic_dictionaries/variants.md +1 -1
  190. package/docs/id/releases/v8.md +191 -2
  191. package/docs/id/releases/v9.md +232 -0
  192. package/docs/it/cli/doc-review.md +110 -4
  193. package/docs/it/cli/index.md +1 -1
  194. package/docs/it/cli/scan.md +1 -1
  195. package/docs/it/configuration.md +49 -16
  196. package/docs/it/dictionary/condition.md +167 -5
  197. package/docs/it/dictionary/enumeration.md +540 -6
  198. package/docs/it/dictionary/file.md +318 -2
  199. package/docs/it/dictionary/gender.md +168 -7
  200. package/docs/it/dictionary/nesting.md +173 -65
  201. package/docs/it/dictionary/plurial.md +347 -7
  202. package/docs/it/dictionary/translation.md +156 -2
  203. package/docs/it/dynamic_dictionaries/collections.md +1 -1
  204. package/docs/it/dynamic_dictionaries/dynamic_content.md +1 -1
  205. package/docs/it/dynamic_dictionaries/index.md +1 -1
  206. package/docs/it/dynamic_dictionaries/variants.md +1 -1
  207. package/docs/it/intlayer_with_vite+react.md +0 -48
  208. package/docs/it/migration_from_i18next_to_intlayer.md +1 -1
  209. package/docs/it/migration_from_next-i18next_to_intlayer.md +1 -1
  210. package/docs/it/migration_from_next-intl_to_intlayer.md +1 -1
  211. package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  212. package/docs/it/migration_from_react-i18next_to_intlayer.md +1 -1
  213. package/docs/it/migration_from_vue-i18n_to_intlayer.md +1 -1
  214. package/docs/it/releases/v8.md +200 -2
  215. package/docs/it/releases/v9.md +232 -0
  216. package/docs/ja/cli/doc-review.md +110 -4
  217. package/docs/ja/cli/index.md +1 -1
  218. package/docs/ja/cli/scan.md +1 -1
  219. package/docs/ja/configuration.md +50 -17
  220. package/docs/ja/dictionary/condition.md +167 -5
  221. package/docs/ja/dictionary/enumeration.md +540 -6
  222. package/docs/ja/dictionary/file.md +151 -1
  223. package/docs/ja/dictionary/gender.md +168 -7
  224. package/docs/ja/dictionary/nesting.md +173 -65
  225. package/docs/ja/dictionary/plurial.md +174 -5
  226. package/docs/ja/dictionary/translation.md +169 -8
  227. package/docs/ja/dynamic_dictionaries/collections.md +1 -1
  228. package/docs/ja/dynamic_dictionaries/dynamic_content.md +1 -1
  229. package/docs/ja/dynamic_dictionaries/index.md +1 -1
  230. package/docs/ja/dynamic_dictionaries/variants.md +1 -1
  231. package/docs/ja/intlayer_with_vite+react.md +290 -0
  232. package/docs/ja/migration_from_i18next_to_intlayer.md +1 -1
  233. package/docs/ja/migration_from_next-i18next_to_intlayer.md +1 -1
  234. package/docs/ja/migration_from_next-intl_to_intlayer.md +1 -1
  235. package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  236. package/docs/ja/migration_from_react-i18next_to_intlayer.md +1 -1
  237. package/docs/ja/migration_from_vue-i18n_to_intlayer.md +1 -1
  238. package/docs/ja/releases/v8.md +193 -4
  239. package/docs/ja/releases/v9.md +232 -0
  240. package/docs/ko/cli/doc-review.md +110 -4
  241. package/docs/ko/cli/index.md +1 -1
  242. package/docs/ko/cli/scan.md +1 -1
  243. package/docs/ko/configuration.md +49 -16
  244. package/docs/ko/dictionary/condition.md +167 -5
  245. package/docs/ko/dictionary/enumeration.md +540 -6
  246. package/docs/ko/dictionary/file.md +151 -1
  247. package/docs/ko/dictionary/gender.md +168 -7
  248. package/docs/ko/dictionary/nesting.md +173 -65
  249. package/docs/ko/dictionary/plurial.md +174 -5
  250. package/docs/ko/dictionary/translation.md +169 -8
  251. package/docs/ko/dynamic_dictionaries/collections.md +1 -1
  252. package/docs/ko/dynamic_dictionaries/dynamic_content.md +1 -1
  253. package/docs/ko/dynamic_dictionaries/index.md +1 -1
  254. package/docs/ko/dynamic_dictionaries/variants.md +1 -1
  255. package/docs/ko/intlayer_with_vite+react.md +48 -490
  256. package/docs/ko/migration_from_i18next_to_intlayer.md +1 -1
  257. package/docs/ko/migration_from_next-i18next_to_intlayer.md +1 -1
  258. package/docs/ko/migration_from_next-intl_to_intlayer.md +1 -1
  259. package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  260. package/docs/ko/migration_from_react-i18next_to_intlayer.md +1 -1
  261. package/docs/ko/migration_from_vue-i18n_to_intlayer.md +1 -1
  262. package/docs/ko/releases/v8.md +192 -1
  263. package/docs/ko/releases/v9.md +232 -0
  264. package/docs/nl/cli/index.md +1 -1
  265. package/docs/nl/cli/scan.md +1 -1
  266. package/docs/nl/configuration.md +36 -3
  267. package/docs/pl/cli/doc-review.md +110 -4
  268. package/docs/pl/cli/index.md +1 -1
  269. package/docs/pl/cli/scan.md +1 -1
  270. package/docs/pl/configuration.md +35 -2
  271. package/docs/pl/dictionary/condition.md +167 -5
  272. package/docs/pl/dictionary/enumeration.md +540 -6
  273. package/docs/pl/dictionary/file.md +318 -2
  274. package/docs/pl/dictionary/gender.md +168 -7
  275. package/docs/pl/dictionary/nesting.md +173 -65
  276. package/docs/pl/dictionary/plurial.md +174 -5
  277. package/docs/pl/dictionary/translation.md +156 -2
  278. package/docs/pl/dynamic_dictionaries/collections.md +1 -1
  279. package/docs/pl/dynamic_dictionaries/dynamic_content.md +1 -1
  280. package/docs/pl/dynamic_dictionaries/index.md +1 -1
  281. package/docs/pl/dynamic_dictionaries/variants.md +1 -1
  282. package/docs/pl/releases/v8.md +188 -2
  283. package/docs/pl/releases/v9.md +232 -0
  284. package/docs/pt/cli/doc-review.md +110 -4
  285. package/docs/pt/cli/index.md +1 -1
  286. package/docs/pt/cli/scan.md +1 -1
  287. package/docs/pt/configuration.md +49 -16
  288. package/docs/pt/dictionary/condition.md +167 -5
  289. package/docs/pt/dictionary/enumeration.md +540 -6
  290. package/docs/pt/dictionary/file.md +151 -1
  291. package/docs/pt/dictionary/gender.md +168 -7
  292. package/docs/pt/dictionary/nesting.md +173 -65
  293. package/docs/pt/dictionary/plurial.md +347 -7
  294. package/docs/pt/dictionary/translation.md +156 -2
  295. package/docs/pt/dynamic_dictionaries/collections.md +1 -1
  296. package/docs/pt/dynamic_dictionaries/dynamic_content.md +1 -1
  297. package/docs/pt/dynamic_dictionaries/index.md +1 -1
  298. package/docs/pt/dynamic_dictionaries/variants.md +1 -1
  299. package/docs/pt/migration_from_i18next_to_intlayer.md +1 -1
  300. package/docs/pt/migration_from_next-i18next_to_intlayer.md +1 -1
  301. package/docs/pt/migration_from_next-intl_to_intlayer.md +1 -1
  302. package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  303. package/docs/pt/migration_from_react-i18next_to_intlayer.md +1 -1
  304. package/docs/pt/migration_from_vue-i18n_to_intlayer.md +1 -1
  305. package/docs/pt/releases/v8.md +187 -1
  306. package/docs/pt/releases/v9.md +232 -0
  307. package/docs/ru/cli/doc-review.md +110 -4
  308. package/docs/ru/cli/index.md +1 -1
  309. package/docs/ru/cli/scan.md +1 -1
  310. package/docs/ru/configuration.md +35 -2
  311. package/docs/ru/dictionary/condition.md +366 -39
  312. package/docs/ru/dictionary/enumeration.md +777 -7
  313. package/docs/ru/dictionary/file.md +318 -2
  314. package/docs/ru/dictionary/gender.md +168 -7
  315. package/docs/ru/dictionary/nesting.md +368 -71
  316. package/docs/ru/dictionary/plurial.md +347 -7
  317. package/docs/ru/dictionary/translation.md +321 -33
  318. package/docs/ru/dynamic_dictionaries/collections.md +1 -1
  319. package/docs/ru/dynamic_dictionaries/dynamic_content.md +1 -1
  320. package/docs/ru/dynamic_dictionaries/index.md +1 -1
  321. package/docs/ru/dynamic_dictionaries/variants.md +1 -1
  322. package/docs/ru/intlayer_with_vite+react.md +48 -47
  323. package/docs/ru/migration_from_i18next_to_intlayer.md +1 -1
  324. package/docs/ru/migration_from_next-i18next_to_intlayer.md +1 -1
  325. package/docs/ru/migration_from_next-intl_to_intlayer.md +1 -1
  326. package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  327. package/docs/ru/migration_from_react-i18next_to_intlayer.md +1 -1
  328. package/docs/ru/migration_from_vue-i18n_to_intlayer.md +1 -1
  329. package/docs/ru/releases/v8.md +194 -2
  330. package/docs/ru/releases/v9.md +232 -0
  331. package/docs/tr/cli/doc-review.md +110 -4
  332. package/docs/tr/cli/index.md +1 -1
  333. package/docs/tr/cli/scan.md +1 -1
  334. package/docs/tr/configuration.md +35 -2
  335. package/docs/tr/dictionary/condition.md +167 -5
  336. package/docs/tr/dictionary/enumeration.md +540 -6
  337. package/docs/tr/dictionary/file.md +151 -1
  338. package/docs/tr/dictionary/gender.md +168 -7
  339. package/docs/tr/dictionary/nesting.md +173 -65
  340. package/docs/tr/dictionary/plurial.md +174 -5
  341. package/docs/tr/dictionary/translation.md +156 -2
  342. package/docs/tr/dynamic_dictionaries/collections.md +1 -1
  343. package/docs/tr/dynamic_dictionaries/dynamic_content.md +1 -1
  344. package/docs/tr/dynamic_dictionaries/index.md +1 -1
  345. package/docs/tr/dynamic_dictionaries/variants.md +1 -1
  346. package/docs/tr/migration_from_i18next_to_intlayer.md +1 -1
  347. package/docs/tr/migration_from_next-i18next_to_intlayer.md +1 -1
  348. package/docs/tr/migration_from_next-intl_to_intlayer.md +1 -1
  349. package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  350. package/docs/tr/migration_from_react-i18next_to_intlayer.md +1 -1
  351. package/docs/tr/migration_from_vue-i18n_to_intlayer.md +1 -1
  352. package/docs/tr/releases/v8.md +187 -1
  353. package/docs/tr/releases/v9.md +232 -0
  354. package/docs/uk/cli/doc-review.md +110 -4
  355. package/docs/uk/cli/index.md +1 -1
  356. package/docs/uk/cli/scan.md +1 -1
  357. package/docs/uk/configuration.md +35 -2
  358. package/docs/uk/dictionary/condition.md +167 -5
  359. package/docs/uk/dictionary/enumeration.md +540 -6
  360. package/docs/uk/dictionary/file.md +318 -2
  361. package/docs/uk/dictionary/gender.md +381 -8
  362. package/docs/uk/dictionary/nesting.md +173 -65
  363. package/docs/uk/dictionary/plurial.md +174 -5
  364. package/docs/uk/dictionary/translation.md +156 -2
  365. package/docs/uk/dynamic_dictionaries/collections.md +1 -1
  366. package/docs/uk/dynamic_dictionaries/dynamic_content.md +1 -1
  367. package/docs/uk/dynamic_dictionaries/index.md +1 -1
  368. package/docs/uk/dynamic_dictionaries/variants.md +1 -1
  369. package/docs/uk/releases/v8.md +191 -3
  370. package/docs/uk/releases/v9.md +232 -0
  371. package/docs/ur/cli/index.md +1 -1
  372. package/docs/ur/cli/scan.md +1 -1
  373. package/docs/ur/configuration.md +36 -3
  374. package/docs/vi/cli/doc-review.md +110 -4
  375. package/docs/vi/cli/index.md +1 -1
  376. package/docs/vi/cli/scan.md +1 -1
  377. package/docs/vi/configuration.md +50 -17
  378. package/docs/vi/dictionary/condition.md +167 -5
  379. package/docs/vi/dictionary/enumeration.md +591 -14
  380. package/docs/vi/dictionary/file.md +318 -2
  381. package/docs/vi/dictionary/gender.md +168 -7
  382. package/docs/vi/dictionary/nesting.md +357 -86
  383. package/docs/vi/dictionary/plurial.md +174 -5
  384. package/docs/vi/dictionary/translation.md +156 -2
  385. package/docs/vi/dynamic_dictionaries/collections.md +1 -1
  386. package/docs/vi/dynamic_dictionaries/dynamic_content.md +1 -1
  387. package/docs/vi/dynamic_dictionaries/index.md +1 -1
  388. package/docs/vi/dynamic_dictionaries/variants.md +1 -1
  389. package/docs/vi/releases/v8.md +190 -1
  390. package/docs/vi/releases/v9.md +232 -0
  391. package/docs/zh/cli/doc-review.md +110 -4
  392. package/docs/zh/cli/index.md +1 -1
  393. package/docs/zh/cli/scan.md +1 -1
  394. package/docs/zh/configuration.md +49 -16
  395. package/docs/zh/dictionary/condition.md +167 -5
  396. package/docs/zh/dictionary/enumeration.md +540 -6
  397. package/docs/zh/dictionary/file.md +151 -1
  398. package/docs/zh/dictionary/gender.md +168 -7
  399. package/docs/zh/dictionary/nesting.md +173 -65
  400. package/docs/zh/dictionary/plurial.md +174 -5
  401. package/docs/zh/dictionary/translation.md +169 -8
  402. package/docs/zh/dynamic_dictionaries/collections.md +1 -1
  403. package/docs/zh/dynamic_dictionaries/dynamic_content.md +1 -1
  404. package/docs/zh/dynamic_dictionaries/index.md +1 -1
  405. package/docs/zh/dynamic_dictionaries/variants.md +1 -1
  406. package/docs/zh/intlayer_with_vite+react.md +48 -288
  407. package/docs/zh/releases/v8.md +1 -1
  408. package/docs/zh/releases/v9.md +220 -0
  409. package/package.json +7 -7
  410. package/src/generated/docs.entry.ts +320 -0
  411. package/dist/esm/_virtual/_rolldown/runtime.mjs +0 -8
@@ -31,93 +31,204 @@ Trong Intlayer, lồng nội dung được thực hiện thông qua hàm `nest`,
31
31
 
32
32
  ## Thiết lập lồng nội dung
33
33
 
34
- Để thiết lập lồng nội dung trong dự án Intlayer của bạn, trước tiên bạn định nghĩa nội dung cơ sở mà bạn muốn tái sử dụng. Sau đó, trong một module nội dung riêng biệt, bạn sử dụng hàm `nest` để nhập nội dung đó.
35
-
36
- ### Từ điển cơ sở
37
-
38
- Dưới đây là ví dụ về một từ điển cơ sở để lồng vào một từ điển khác:
39
-
40
- ```typescript fileName="firstDictionary.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
41
- import { type Dictionary } from "intlayer";
42
-
43
- const firstDictionary = {
44
- key: "key_of_my_first_dictionary",
45
- content: {
46
- content: "content",
47
- subContent: {
48
- contentNumber: 0,
49
- contentString: "string",
50
- },
51
- },
52
- } satisfies Dictionary;
53
-
54
- export default firstDictionary;
55
- ```
56
-
57
- ```json fileName="firstDictionary.content.json" contentDeclarationFormat="json"
58
- {
59
- "$schema": "https://intlayer.org/schema.json",
60
- "key": "key_of_my_first_dictionary",
61
- "content": {
62
- "content": "nội dung",
63
- "subContent": {
64
- "contentNumber": 0,
65
- "contentString": "chuỗi"
66
- }
67
- }
34
+ <Tabs group="framework">
35
+ <Tab label="React" value="react">
36
+
37
+ To use nested content in a React component, leverage the `useIntlayer` hook from the `react-intlayer` package. This hook retrieves the correct content based on the specified key. Here's an example of how to use it:
38
+
39
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
40
+ import type { FC } from "react";
41
+ import { useIntlayer } from "react-intlayer";
42
+
43
+ const NestComponent: FC = () => {
44
+ const { fullNestedContent, partialNestedContent } = useIntlayer(
45
+ "key_of_my_second_dictionary"
46
+ );
47
+
48
+ return (
49
+ <div>
50
+ <p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
51
+ <p>Partial Nested Value: {partialNestedContent}</p>
52
+ </div>
53
+ );
54
+ };
55
+
56
+ export default NestComponent;
57
+ ```
58
+
59
+ </Tab>
60
+ <Tab label="Next.js" value="nextjs">
61
+
62
+ To use nested content in Next.js Client Components, retrieve it via the `useIntlayer` hook. Here's an example:
63
+
64
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
65
+ "use client";
66
+
67
+ import type { FC } from "react";
68
+ import { useIntlayer } from "next-intlayer";
69
+
70
+ const NestComponent: FC = () => {
71
+ const { fullNestedContent, partialNestedContent } = useIntlayer(
72
+ "key_of_my_second_dictionary"
73
+ );
74
+
75
+ return (
76
+ <div>
77
+ <p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
78
+ <p>Partial Nested Value: {partialNestedContent}</p>
79
+ </div>
80
+ );
81
+ };
82
+
83
+ export default NestComponent;
84
+ ```
85
+
86
+ </Tab>
87
+ <Tab label="Vue" value="vue">
88
+
89
+ To use nested content in Vue components, retrieve it via the `useIntlayer` hook. Here's an example:
90
+
91
+ ```vue fileName="**/*.vue"
92
+ <script setup lang="ts">
93
+ import { useIntlayer } from "vue-intlayer";
94
+
95
+ const { fullNestedContent, partialNestedContent } = useIntlayer(
96
+ "key_of_my_second_dictionary"
97
+ );
98
+ </script>
99
+
100
+ <template>
101
+ <div>
102
+ <p>Full Nested Content: {{ JSON.stringify(fullNestedContent) }}</p>
103
+ <p>Partial Nested Value: {{ partialNestedContent }}</p>
104
+ </div>
105
+ </template>
106
+ ```
107
+
108
+ </Tab>
109
+ <Tab label="Svelte" value="svelte">
110
+
111
+ To use nested content in Svelte components, retrieve it via the `useIntlayer` hook. The store is accessed with `$`. Here's an example:
112
+
113
+ ```svelte fileName="**/*.svelte"
114
+ <script lang="ts">
115
+ import { useIntlayer } from "svelte-intlayer";
116
+
117
+ const content = useIntlayer("key_of_my_second_dictionary");
118
+ </script>
119
+
120
+ <div>
121
+ <p>Full Nested Content: {JSON.stringify($content.fullNestedContent)}</p>
122
+ <p>Partial Nested Value: {$content.partialNestedContent}</p>
123
+ </div>
124
+ ```
125
+
126
+ </Tab>
127
+ <Tab label="Preact" value="preact">
128
+
129
+ To use nested content in Preact components, retrieve it via the `useIntlayer` hook. Here's an example:
130
+
131
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
132
+ import type { FC } from "preact";
133
+ import { useIntlayer } from "preact-intlayer";
134
+
135
+ const NestComponent: FC = () => {
136
+ const { fullNestedContent, partialNestedContent } = useIntlayer(
137
+ "key_of_my_second_dictionary"
138
+ );
139
+
140
+ return (
141
+ <div>
142
+ <p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
143
+ <p>Partial Nested Value: {partialNestedContent}</p>
144
+ </div>
145
+ );
146
+ };
147
+
148
+ export default NestComponent;
149
+ ```
150
+
151
+ </Tab>
152
+ <Tab label="Solid" value="solid">
153
+
154
+ To use nested content 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 NestComponent: Component = () => {
161
+ const { fullNestedContent, partialNestedContent } = useIntlayer(
162
+ "key_of_my_second_dictionary"
163
+ );
164
+
165
+ return (
166
+ <div>
167
+ <p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
168
+ <p>Partial Nested Value: {partialNestedContent}</p>
169
+ </div>
170
+ );
171
+ };
172
+
173
+ export default NestComponent;
174
+ ```
175
+
176
+ </Tab>
177
+ <Tab label="Angular" value="angular">
178
+
179
+ To use nested content in Angular components, retrieve it via the `useIntlayer` hook. Here's an example:
180
+
181
+ ```typescript fileName="app.component.ts" codeFormat="typescript"
182
+ import { Component } from "@angular/core";
183
+ import { useIntlayer } from "angular-intlayer";
184
+
185
+ @Component({
186
+ selector: "app-nest",
187
+ template: `
188
+ <div>
189
+ <p>
190
+ Full Nested Content: {{ JSON.stringify(content().fullNestedContent) }}
191
+ </p>
192
+ <p>Partial Nested Value: {{ content().partialNestedContent }}</p>
193
+ </div>
194
+ `,
195
+ })
196
+ export class NestComponent {
197
+ content = useIntlayer("key_of_my_second_dictionary");
198
+ JSON = JSON;
68
199
  }
69
200
  ```
70
201
 
71
- ### Tham chiếu với Nest
72
-
73
- Bây giờ, tạo một module nội dung khác sử dụng hàm `nest` để tham chiếu đến nội dung trên. Bạn có thể tham chiếu toàn bộ nội dung hoặc một giá trị lồng nhau cụ thể:
74
-
75
- ```typescript fileName="secondDictionary.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
76
- import { nest, type Dictionary } from "intlayer";
77
-
78
- const myNestingContent = {
79
- key: "key_of_my_second_dictionary",
80
- content: {
81
- // Tham chiếu toàn bộ dictionary:
82
- fullNestedContent: nest("key_of_my_first_dictionary"),
83
- // Tham chiếu một giá trị lồng nhau cụ thể:
84
- partialNestedContent: nest(
85
- "key_of_my_first_dictionary",
86
- "subContent.contentNumber"
87
- ),
88
- },
89
- } satisfies Dictionary;
90
-
91
- export default myNestingContent;
92
- ```
93
-
94
- ```json fileName="secondDictionary.content.json" contentDeclarationFormat="json"
95
- {
96
- "$schema": "https://intlayer.org/schema.json",
97
- "key": "key_of_my_second_dictionary",
98
- "content": {
99
- "fullNestedContent": {
100
- "nodeType": "nested",
101
- "nested": {
102
- "dictionaryKey": "key_of_my_first_dictionary"
103
- }
104
- },
105
- "partialNestedContent": {
106
- "nodeType": "nested",
107
- "nested": {
108
- "dictionaryKey": "key_of_my_first_dictionary",
109
- "path": "subContent.contentNumber"
110
- }
111
- }
202
+ </Tab>
203
+ <Tab label="Vanilla JS" value="vanilla">
204
+
205
+ To use nested content with `vanilla-intlayer`, retrieve it via the `useIntlayer` hook. Here's an example:
206
+
207
+ ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]}
208
+ import { installIntlayer, useIntlayer } from "vanilla-intlayer";
209
+
210
+ installIntlayer();
211
+
212
+ const content = useIntlayer("key_of_my_second_dictionary").onChange(
213
+ (newContent) => {
214
+ document.getElementById("nested")!.textContent =
215
+ newContent.partialNestedContent;
112
216
  }
113
- }
217
+ );
218
+
219
+ // Initial render
220
+ document.getElementById("nested")!.textContent = content.partialNestedContent;
114
221
  ```
115
222
 
116
- Là tham số thứ hai, bạn có thể chỉ định một đường dẫn đến một giá trị lồng bên trong nội dung đó. Khi không có đường dẫn được cung cấp, toàn bộ nội dung của từ điển được tham chiếu sẽ được trả về.
223
+ </Tab>
224
+ </Tabs>
117
225
 
118
226
  ## Sử dụng Nesting với React Intlayer
119
227
 
120
- Để sử dụng nội dung lồng trong một component React, hãy tận dụng hook `useIntlayer` từ package `react-intlayer`. Hook này lấy nội dung chính xác dựa trên key được chỉ định. Dưới đây là ví dụ về cách sử dụng:
228
+ <Tabs group="framework">
229
+ <Tab label="React" value="react">
230
+
231
+ To use nested content in a React component, leverage the `useIntlayer` hook from the `react-intlayer` package. This hook retrieves the correct content based on the specified key. Here's an example of how to use it:
121
232
 
122
233
  ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
123
234
  import type { FC } from "react";
@@ -130,14 +241,35 @@ const NestComponent: FC = () => {
130
241
 
131
242
  return (
132
243
  <div>
133
- <p>
134
- Full Nested Content: {JSON.stringify(fullNestedContent)}
135
- {/* Kết quả: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
136
- </p>
137
- <p>
138
- Giá trị Lồng Một Phần: {partialNestedContent}
139
- {/* Kết quả: 0 */}
140
- </p>
244
+ <p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
245
+ <p>Partial Nested Value: {partialNestedContent}</p>
246
+ </div>
247
+ );
248
+ };
249
+
250
+ export default NestComponent;
251
+ ```
252
+
253
+ </Tab>
254
+ <Tab label="Next.js" value="nextjs">
255
+
256
+ To use nested content in Next.js Client Components, retrieve it via the `useIntlayer` hook. Here's an example:
257
+
258
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
259
+ "use client";
260
+
261
+ import type { FC } from "react";
262
+ import { useIntlayer } from "next-intlayer";
263
+
264
+ const NestComponent: FC = () => {
265
+ const { fullNestedContent, partialNestedContent } = useIntlayer(
266
+ "key_of_my_second_dictionary"
267
+ );
268
+
269
+ return (
270
+ <div>
271
+ <p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
272
+ <p>Partial Nested Value: {partialNestedContent}</p>
141
273
  </div>
142
274
  );
143
275
  };
@@ -145,6 +277,145 @@ const NestComponent: FC = () => {
145
277
  export default NestComponent;
146
278
  ```
147
279
 
280
+ </Tab>
281
+ <Tab label="Vue" value="vue">
282
+
283
+ To use nested content in Vue components, retrieve it via the `useIntlayer` hook. Here's an example:
284
+
285
+ ```vue fileName="**/*.vue"
286
+ <script setup lang="ts">
287
+ import { useIntlayer } from "vue-intlayer";
288
+
289
+ const { fullNestedContent, partialNestedContent } = useIntlayer(
290
+ "key_of_my_second_dictionary"
291
+ );
292
+ </script>
293
+
294
+ <template>
295
+ <div>
296
+ <p>Full Nested Content: {{ JSON.stringify(fullNestedContent) }}</p>
297
+ <p>Partial Nested Value: {{ partialNestedContent }}</p>
298
+ </div>
299
+ </template>
300
+ ```
301
+
302
+ </Tab>
303
+ <Tab label="Svelte" value="svelte">
304
+
305
+ To use nested content in Svelte components, retrieve it via the `useIntlayer` hook. The store is accessed with `$`. Here's an example:
306
+
307
+ ```svelte fileName="**/*.svelte"
308
+ <script lang="ts">
309
+ import { useIntlayer } from "svelte-intlayer";
310
+
311
+ const content = useIntlayer("key_of_my_second_dictionary");
312
+ </script>
313
+
314
+ <div>
315
+ <p>Full Nested Content: {JSON.stringify($content.fullNestedContent)}</p>
316
+ <p>Partial Nested Value: {$content.partialNestedContent}</p>
317
+ </div>
318
+ ```
319
+
320
+ </Tab>
321
+ <Tab label="Preact" value="preact">
322
+
323
+ To use nested content in Preact components, retrieve it via the `useIntlayer` hook. Here's an example:
324
+
325
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
326
+ import type { FC } from "preact";
327
+ import { useIntlayer } from "preact-intlayer";
328
+
329
+ const NestComponent: FC = () => {
330
+ const { fullNestedContent, partialNestedContent } = useIntlayer(
331
+ "key_of_my_second_dictionary"
332
+ );
333
+
334
+ return (
335
+ <div>
336
+ <p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
337
+ <p>Partial Nested Value: {partialNestedContent}</p>
338
+ </div>
339
+ );
340
+ };
341
+
342
+ export default NestComponent;
343
+ ```
344
+
345
+ </Tab>
346
+ <Tab label="Solid" value="solid">
347
+
348
+ To use nested content in SolidJS components, retrieve it via the `useIntlayer` hook. Here's an example:
349
+
350
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
351
+ import type { Component } from "solid-js";
352
+ import { useIntlayer } from "solid-intlayer";
353
+
354
+ const NestComponent: Component = () => {
355
+ const { fullNestedContent, partialNestedContent } = useIntlayer(
356
+ "key_of_my_second_dictionary"
357
+ );
358
+
359
+ return (
360
+ <div>
361
+ <p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
362
+ <p>Partial Nested Value: {partialNestedContent}</p>
363
+ </div>
364
+ );
365
+ };
366
+
367
+ export default NestComponent;
368
+ ```
369
+
370
+ </Tab>
371
+ <Tab label="Angular" value="angular">
372
+
373
+ To use nested content in Angular components, retrieve it via the `useIntlayer` hook. Here's an example:
374
+
375
+ ```typescript fileName="app.component.ts" codeFormat="typescript"
376
+ import { Component } from "@angular/core";
377
+ import { useIntlayer } from "angular-intlayer";
378
+
379
+ @Component({
380
+ selector: "app-nest",
381
+ template: `
382
+ <div>
383
+ <p>
384
+ Full Nested Content: {{ JSON.stringify(content().fullNestedContent) }}
385
+ </p>
386
+ <p>Partial Nested Value: {{ content().partialNestedContent }}</p>
387
+ </div>
388
+ `,
389
+ })
390
+ export class NestComponent {
391
+ content = useIntlayer("key_of_my_second_dictionary");
392
+ JSON = JSON;
393
+ }
394
+ ```
395
+
396
+ </Tab>
397
+ <Tab label="Vanilla JS" value="vanilla">
398
+
399
+ To use nested content with `vanilla-intlayer`, retrieve it via the `useIntlayer` hook. Here's an example:
400
+
401
+ ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]}
402
+ import { installIntlayer, useIntlayer } from "vanilla-intlayer";
403
+
404
+ installIntlayer();
405
+
406
+ const content = useIntlayer("key_of_my_second_dictionary").onChange(
407
+ (newContent) => {
408
+ document.getElementById("nested")!.textContent =
409
+ newContent.partialNestedContent;
410
+ }
411
+ );
412
+
413
+ // Initial render
414
+ document.getElementById("nested")!.textContent = content.partialNestedContent;
415
+ ```
416
+
417
+ </Tab>
418
+ </Tabs>
148
419
  ## Tài Nguyên Bổ Sung
149
420
 
150
421
  Để biết thêm thông tin chi tiết về cấu hình và cách sử dụng, vui lòng tham khảo các tài nguyên sau:
@@ -35,12 +35,181 @@ Không giống như [`enu`](https://github.com/aymericzip/intlayer/blob/main/doc
35
35
 
36
36
  ## Khi nào nên sử dụng `plural` so với `enu`
37
37
 
38
- | Trường hợp sử dụng | Trợ giúp |
39
- | ------------------------------------------------------------------------------------ | -------- |
40
- | Các dạng số nhiều ngữ pháp dựa trên ngôn ngữ (một quả táo / hai quả táo / 5 quả táo) | `plural` |
41
- | Phạm vi số tùy chỉnh (`<5`, `>=10`) hoặc các nhóm không thuộc CLDR | `enu` |
38
+ <Tabs group="framework">
39
+ <Tab label="React" value="react">
42
40
 
43
- Nếu bạn chỉ nhắm mục tiêu tiếng Anh hoặc tiếng Việt (vốn chỉ có `one` / `other` hoặc không sự thay đổi hình thái phức tạp cho số nhiều), cả hai đều hoạt động. Đối với bất kỳ ngôn ngữ nào sự phân biệt `few` / `many` / `two`, hãy ưu tiên `plural`.
41
+ To use plural content inside a React component, retrieve it via the `useIntlayer` hook and call it with a count. The active locale and the count are combined to pick the matching CLDR category.
42
+
43
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
44
+ import type { FC } from "react";
45
+ import { useIntlayer } from "react-intlayer";
46
+
47
+ const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
48
+ const { totalOpenings } = useIntlayer("total_openings");
49
+
50
+ return (
51
+ <div>
52
+ <p>{totalOpenings(count)}</p>
53
+ </div>
54
+ );
55
+ };
56
+
57
+ export default OpeningsComponent;
58
+ ```
59
+
60
+ </Tab>
61
+ <Tab label="Next.js" value="nextjs">
62
+
63
+ To use plural content in Next.js Client Components, retrieve it via the `useIntlayer` hook and call it with a count. Here's an example:
64
+
65
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
66
+ "use client";
67
+
68
+ import type { FC } from "react";
69
+ import { useIntlayer } from "next-intlayer";
70
+
71
+ const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
72
+ const { totalOpenings } = useIntlayer("total_openings");
73
+
74
+ return (
75
+ <div>
76
+ <p>{totalOpenings(count)}</p>
77
+ </div>
78
+ );
79
+ };
80
+
81
+ export default OpeningsComponent;
82
+ ```
83
+
84
+ </Tab>
85
+ <Tab label="Vue" value="vue">
86
+
87
+ To use plural content in Vue components, retrieve it via the `useIntlayer` hook and call it with a count. Here's an example:
88
+
89
+ ```vue fileName="**/*.vue"
90
+ <script setup lang="ts">
91
+ import { useIntlayer } from "vue-intlayer";
92
+
93
+ defineProps<{ count: number }>();
94
+
95
+ const { totalOpenings } = useIntlayer("total_openings");
96
+ </script>
97
+
98
+ <template>
99
+ <div>
100
+ <p>{{ totalOpenings(count) }}</p>
101
+ </div>
102
+ </template>
103
+ ```
104
+
105
+ </Tab>
106
+ <Tab label="Svelte" value="svelte">
107
+
108
+ To use plural content in Svelte components, retrieve it via the `useIntlayer` hook and call it with a count. The store is accessed with `$`. Here's an example:
109
+
110
+ ```svelte fileName="**/*.svelte"
111
+ <script lang="ts">
112
+ import { useIntlayer } from "svelte-intlayer";
113
+
114
+ export let count: number;
115
+
116
+ const content = useIntlayer("total_openings");
117
+ </script>
118
+
119
+ <div>
120
+ <p>{$content.totalOpenings(count)}</p>
121
+ </div>
122
+ ```
123
+
124
+ </Tab>
125
+ <Tab label="Preact" value="preact">
126
+
127
+ To use plural content in Preact components, retrieve it via the `useIntlayer` hook and call it with a count. Here's an example:
128
+
129
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
130
+ import type { FC } from "preact";
131
+ import { useIntlayer } from "preact-intlayer";
132
+
133
+ const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
134
+ const { totalOpenings } = useIntlayer("total_openings");
135
+
136
+ return (
137
+ <div>
138
+ <p>{totalOpenings(count)}</p>
139
+ </div>
140
+ );
141
+ };
142
+
143
+ export default OpeningsComponent;
144
+ ```
145
+
146
+ </Tab>
147
+ <Tab label="Solid" value="solid">
148
+
149
+ To use plural content in SolidJS components, retrieve it via the `useIntlayer` hook and call it with a count. Here's an example:
150
+
151
+ ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
152
+ import type { Component } from "solid-js";
153
+ import { useIntlayer } from "solid-intlayer";
154
+
155
+ const OpeningsComponent: Component<{ count: number }> = (props) => {
156
+ const { totalOpenings } = useIntlayer("total_openings");
157
+
158
+ return (
159
+ <div>
160
+ <p>{totalOpenings(props.count)}</p>
161
+ </div>
162
+ );
163
+ };
164
+
165
+ export default OpeningsComponent;
166
+ ```
167
+
168
+ </Tab>
169
+ <Tab label="Angular" value="angular">
170
+
171
+ To use plural content in Angular components, retrieve it via the `useIntlayer` hook and call it with a count. Here's an example:
172
+
173
+ ```typescript fileName="app.component.ts" codeFormat="typescript"
174
+ import { Component, Input } from "@angular/core";
175
+ import { useIntlayer } from "angular-intlayer";
176
+
177
+ @Component({
178
+ selector: "app-openings",
179
+ template: `
180
+ <div>
181
+ <p>{{ content().totalOpenings(count) }}</p>
182
+ </div>
183
+ `,
184
+ })
185
+ export class OpeningsComponent {
186
+ @Input() count!: number;
187
+
188
+ content = useIntlayer("total_openings");
189
+ }
190
+ ```
191
+
192
+ </Tab>
193
+ <Tab label="Vanilla JS" value="vanilla">
194
+
195
+ To use plural content with `vanilla-intlayer`, retrieve it via the `useIntlayer` hook and call it with a count. Here's an example:
196
+
197
+ ```typescript fileName="**/*.ts" codeFormat={["typescript", "esm"]}
198
+ import { installIntlayer, useIntlayer } from "vanilla-intlayer";
199
+
200
+ installIntlayer();
201
+
202
+ const content = useIntlayer("total_openings").onChange((newContent) => {
203
+ document.getElementById("openings")!.textContent =
204
+ newContent.totalOpenings(5);
205
+ });
206
+
207
+ // Initial render
208
+ document.getElementById("openings")!.textContent = content.totalOpenings(5);
209
+ ```
210
+
211
+ </Tab>
212
+ </Tabs>
44
213
 
45
214
  ## Thiết lập nội dung số nhiều
46
215