@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
@@ -31,93 +31,204 @@ Di Intlayer, penanaman dicapai melalui fungsi `nest`, yang memungkinkan Anda mer
31
31
 
32
32
  ## Menyiapkan Penanaman
33
33
 
34
- Untuk menyiapkan penanaman dalam proyek Intlayer Anda, pertama-tama Anda mendefinisikan konten dasar yang ingin Anda gunakan kembali. Kemudian, dalam modul konten terpisah, Anda menggunakan fungsi `nest` untuk mengimpor konten tersebut.
35
-
36
- ### Kamus Dasar
37
-
38
- Berikut adalah contoh kamus dasar untuk ditanamkan dalam kamus lain:
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": "content",
63
- "subContent": {
64
- "contentNumber": 0,
65
- "contentString": "string"
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
- ### Referensi dengan Nest
72
-
73
- Sekarang, buat modul konten lain yang menggunakan fungsi `nest` untuk mereferensikan konten di atas. Anda dapat mereferensikan seluruh konten atau nilai nested tertentu:
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
- // Mereferensikan seluruh dictionary:
82
- fullNestedContent: nest("key_of_my_first_dictionary"),
83
- // Mereferensikan nilai nested tertentu:
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
- Sebagai parameter kedua, Anda dapat menentukan jalur ke nilai yang bersarang di dalam konten tersebut. Jika tidak ada jalur yang diberikan, seluruh konten dari kamus yang dirujuk akan dikembalikan.
223
+ </Tab>
224
+ </Tabs>
117
225
 
118
226
  ## Menggunakan Nesting dengan React Intlayer
119
227
 
120
- Untuk menggunakan konten bersarang dalam komponen React, manfaatkan hook `useIntlayer` dari paket `react-intlayer`. Hook ini mengambil konten yang benar berdasarkan kunci yang ditentukan. Berikut adalah contoh cara menggunakannya:
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
- {/* Output: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
136
- </p>
137
- <p>
138
- Nilai Bersarang Parsial: {partialNestedContent}
139
- {/* Output: 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
  ## Sumber Daya Tambahan
149
420
 
150
421
  Untuk informasi lebih rinci tentang konfigurasi dan penggunaan, lihat sumber daya berikut:
@@ -35,12 +35,181 @@ Berbeda dengan [`enu`](https://github.com/aymericzip/intlayer/blob/main/docs/doc
35
35
 
36
36
  ## Kapan Menggunakan `plural` vs `enu`
37
37
 
38
- | Kasus penggunaan | Helper |
39
- | ------------------------------------------------------------------------ | -------- |
40
- | Bentuk jamak gramatikal yang sadar lokal (satu apel / dua apel / 5 apel) | `plural` |
41
- | Rentang numerik khusus (`<5`, `>=10`) atau bucket non-CLDR | `enu` |
38
+ <Tabs group="framework">
39
+ <Tab label="React" value="react">
42
40
 
43
- Jika Anda hanya menargetkan bahasa Inggris atau Indonesia (yang hanya memiliki `one` / `other` atau bahkan tidak memiliki perubahan bentuk jamak yang kompleks), keduanya berfungsi. Untuk bahasa apa pun dengan perbedaan `few` / `many` / `two`, lebih baik gunakan `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
  ## Menyiapkan Konten Jamak
46
215