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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/dist/cjs/generated/docs.entry.cjs +320 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +320 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +16 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/cli/doc-review.md +110 -4
  8. package/docs/ar/cli/index.md +1 -1
  9. package/docs/ar/cli/scan.md +1 -1
  10. package/docs/ar/configuration.md +36 -3
  11. package/docs/ar/dictionary/condition.md +167 -5
  12. package/docs/ar/dictionary/enumeration.md +540 -6
  13. package/docs/ar/dictionary/file.md +151 -1
  14. package/docs/ar/dictionary/gender.md +168 -7
  15. package/docs/ar/dictionary/nesting.md +173 -65
  16. package/docs/ar/dictionary/plurial.md +174 -5
  17. package/docs/ar/dictionary/translation.md +156 -2
  18. package/docs/ar/dynamic_dictionaries/collections.md +1 -1
  19. package/docs/ar/dynamic_dictionaries/dynamic_content.md +1 -1
  20. package/docs/ar/dynamic_dictionaries/index.md +1 -1
  21. package/docs/ar/dynamic_dictionaries/variants.md +1 -1
  22. package/docs/ar/intlayer_with_vite+react.md +31 -31
  23. package/docs/ar/plugins/sync-json.md +222 -49
  24. package/docs/ar/releases/v8.md +187 -1
  25. package/docs/ar/releases/v9.md +232 -0
  26. package/docs/bn/cli/index.md +1 -1
  27. package/docs/bn/cli/scan.md +1 -1
  28. package/docs/bn/configuration.md +36 -3
  29. package/docs/cs/cli/index.md +1 -1
  30. package/docs/cs/cli/scan.md +1 -1
  31. package/docs/cs/configuration.md +35 -2
  32. package/docs/de/cli/doc-review.md +110 -4
  33. package/docs/de/cli/index.md +1 -1
  34. package/docs/de/cli/scan.md +1 -1
  35. package/docs/de/configuration.md +35 -2
  36. package/docs/de/dictionary/condition.md +167 -5
  37. package/docs/de/dictionary/enumeration.md +777 -7
  38. package/docs/de/dictionary/file.md +151 -1
  39. package/docs/de/dictionary/gender.md +168 -7
  40. package/docs/de/dictionary/nesting.md +173 -65
  41. package/docs/de/dictionary/plurial.md +347 -7
  42. package/docs/de/dictionary/translation.md +156 -2
  43. package/docs/de/dynamic_dictionaries/collections.md +1 -1
  44. package/docs/de/dynamic_dictionaries/dynamic_content.md +1 -1
  45. package/docs/de/dynamic_dictionaries/index.md +1 -1
  46. package/docs/de/dynamic_dictionaries/variants.md +1 -1
  47. package/docs/de/intlayer_with_vite+react.md +48 -48
  48. package/docs/de/migration_from_i18next_to_intlayer.md +1 -1
  49. package/docs/de/migration_from_next-i18next_to_intlayer.md +1 -1
  50. package/docs/de/migration_from_next-intl_to_intlayer.md +1 -1
  51. package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  52. package/docs/de/migration_from_react-i18next_to_intlayer.md +1 -1
  53. package/docs/de/migration_from_vue-i18n_to_intlayer.md +1 -1
  54. package/docs/de/plugins/sync-json.md +222 -49
  55. package/docs/de/releases/v8.md +197 -1
  56. package/docs/de/releases/v9.md +232 -0
  57. package/docs/en/CI_CD.md +7 -7
  58. package/docs/en/cli/ci.md +62 -8
  59. package/docs/en/cli/doc-review.md +110 -4
  60. package/docs/en/cli/index.md +1 -1
  61. package/docs/en/cli/scan.md +1 -1
  62. package/docs/en/compat/i18n-js.md +44 -0
  63. package/docs/en/compat/i18next.md +59 -0
  64. package/docs/en/compat/index.md +51 -0
  65. package/docs/en/compat/lingui.md +44 -0
  66. package/docs/en/compat/next-i18next.md +57 -0
  67. package/docs/en/compat/next-intl.md +59 -0
  68. package/docs/en/compat/next-translate.md +45 -0
  69. package/docs/en/compat/ngx-translate.md +45 -0
  70. package/docs/en/compat/nuxtjs-i18n.md +46 -0
  71. package/docs/en/compat/polyglot.md +45 -0
  72. package/docs/en/compat/react-i18next.md +58 -0
  73. package/docs/en/compat/react-intl.md +55 -0
  74. package/docs/en/compat/svelte-i18n.md +47 -0
  75. package/docs/en/compat/transloco.md +45 -0
  76. package/docs/en/compat/vue-i18n.md +58 -0
  77. package/docs/en/configuration.md +35 -2
  78. package/docs/en/dictionary/condition.md +163 -1
  79. package/docs/en/dictionary/enumeration.md +309 -7
  80. package/docs/en/dictionary/file.md +151 -1
  81. package/docs/en/dictionary/gender.md +162 -1
  82. package/docs/en/dictionary/nesting.md +173 -9
  83. package/docs/en/dictionary/plurial.md +155 -10
  84. package/docs/en/dictionary/translation.md +145 -52
  85. package/docs/en/dynamic_dictionaries/collections.md +1 -1
  86. package/docs/en/dynamic_dictionaries/dynamic_content.md +1 -1
  87. package/docs/en/dynamic_dictionaries/index.md +1 -1
  88. package/docs/en/dynamic_dictionaries/variants.md +1 -1
  89. package/docs/en/migration_from_i18next_to_intlayer.md +1 -1
  90. package/docs/en/migration_from_next-i18next_to_intlayer.md +1 -1
  91. package/docs/en/migration_from_next-intl_to_intlayer.md +1 -1
  92. package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  93. package/docs/en/migration_from_react-i18next_to_intlayer.md +1 -1
  94. package/docs/en/migration_from_vue-i18n_to_intlayer.md +1 -1
  95. package/docs/en/plugins/sync-json.md +56 -2
  96. package/docs/en/releases/v8.md +187 -1
  97. package/docs/en/releases/v9.md +220 -0
  98. package/docs/en-GB/cli/doc-review.md +110 -4
  99. package/docs/en-GB/cli/index.md +1 -1
  100. package/docs/en-GB/cli/scan.md +1 -1
  101. package/docs/en-GB/configuration.md +35 -2
  102. package/docs/en-GB/dictionary/condition.md +364 -1
  103. package/docs/en-GB/dictionary/enumeration.md +577 -5
  104. package/docs/en-GB/dictionary/file.md +317 -1
  105. package/docs/en-GB/dictionary/gender.md +375 -2
  106. package/docs/en-GB/dictionary/nesting.md +368 -71
  107. package/docs/en-GB/dictionary/plurial.md +347 -7
  108. package/docs/en-GB/dictionary/translation.md +320 -32
  109. package/docs/en-GB/dynamic_dictionaries/collections.md +1 -1
  110. package/docs/en-GB/dynamic_dictionaries/dynamic_content.md +1 -1
  111. package/docs/en-GB/dynamic_dictionaries/index.md +1 -1
  112. package/docs/en-GB/dynamic_dictionaries/variants.md +1 -1
  113. package/docs/en-GB/plugins/sync-json.md +245 -13
  114. package/docs/en-GB/releases/v8.md +1 -1
  115. package/docs/en-GB/releases/v9.md +220 -0
  116. package/docs/es/cli/doc-review.md +110 -4
  117. package/docs/es/cli/index.md +1 -1
  118. package/docs/es/cli/scan.md +1 -1
  119. package/docs/es/configuration.md +36 -3
  120. package/docs/es/dictionary/condition.md +167 -5
  121. package/docs/es/dictionary/enumeration.md +537 -12
  122. package/docs/es/dictionary/file.md +151 -1
  123. package/docs/es/dictionary/gender.md +168 -7
  124. package/docs/es/dictionary/nesting.md +173 -65
  125. package/docs/es/dictionary/plurial.md +347 -7
  126. package/docs/es/dictionary/translation.md +156 -2
  127. package/docs/es/dynamic_dictionaries/collections.md +1 -1
  128. package/docs/es/dynamic_dictionaries/dynamic_content.md +1 -1
  129. package/docs/es/dynamic_dictionaries/index.md +1 -1
  130. package/docs/es/dynamic_dictionaries/variants.md +1 -1
  131. package/docs/es/migration_from_i18next_to_intlayer.md +1 -1
  132. package/docs/es/migration_from_next-i18next_to_intlayer.md +1 -1
  133. package/docs/es/migration_from_next-intl_to_intlayer.md +1 -1
  134. package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  135. package/docs/es/migration_from_react-i18next_to_intlayer.md +1 -1
  136. package/docs/es/migration_from_vue-i18n_to_intlayer.md +1 -1
  137. package/docs/es/plugins/sync-json.md +222 -49
  138. package/docs/es/releases/v8.md +187 -1
  139. package/docs/es/releases/v9.md +228 -0
  140. package/docs/fr/cli/doc-review.md +110 -4
  141. package/docs/fr/cli/index.md +1 -1
  142. package/docs/fr/cli/scan.md +1 -1
  143. package/docs/fr/configuration.md +49 -16
  144. package/docs/fr/dictionary/condition.md +369 -6
  145. package/docs/fr/dictionary/enumeration.md +540 -6
  146. package/docs/fr/dictionary/file.md +151 -1
  147. package/docs/fr/dictionary/gender.md +168 -7
  148. package/docs/fr/dictionary/nesting.md +357 -86
  149. package/docs/fr/dictionary/plurial.md +174 -5
  150. package/docs/fr/dictionary/translation.md +156 -2
  151. package/docs/fr/dynamic_dictionaries/collections.md +1 -1
  152. package/docs/fr/dynamic_dictionaries/dynamic_content.md +1 -1
  153. package/docs/fr/dynamic_dictionaries/index.md +1 -1
  154. package/docs/fr/dynamic_dictionaries/variants.md +1 -1
  155. package/docs/fr/migration_from_i18next_to_intlayer.md +1 -1
  156. package/docs/fr/migration_from_next-i18next_to_intlayer.md +1 -1
  157. package/docs/fr/migration_from_next-intl_to_intlayer.md +1 -1
  158. package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  159. package/docs/fr/migration_from_react-i18next_to_intlayer.md +1 -1
  160. package/docs/fr/migration_from_vue-i18n_to_intlayer.md +1 -1
  161. package/docs/fr/plugins/sync-json.md +244 -12
  162. package/docs/fr/releases/v8.md +187 -1
  163. package/docs/fr/releases/v9.md +220 -0
  164. package/docs/hi/cli/doc-review.md +110 -4
  165. package/docs/hi/cli/index.md +1 -1
  166. package/docs/hi/cli/scan.md +1 -1
  167. package/docs/hi/configuration.md +49 -16
  168. package/docs/hi/dictionary/condition.md +167 -5
  169. package/docs/hi/dictionary/enumeration.md +540 -6
  170. package/docs/hi/dictionary/file.md +151 -1
  171. package/docs/hi/dictionary/gender.md +168 -7
  172. package/docs/hi/dictionary/nesting.md +173 -65
  173. package/docs/hi/dictionary/plurial.md +174 -5
  174. package/docs/hi/dictionary/translation.md +155 -5
  175. package/docs/hi/dynamic_dictionaries/collections.md +1 -1
  176. package/docs/hi/dynamic_dictionaries/dynamic_content.md +1 -1
  177. package/docs/hi/dynamic_dictionaries/index.md +1 -1
  178. package/docs/hi/dynamic_dictionaries/variants.md +1 -1
  179. package/docs/hi/plugins/sync-json.md +221 -48
  180. package/docs/hi/releases/v8.md +188 -2
  181. package/docs/hi/releases/v9.md +232 -0
  182. package/docs/id/cli/doc-review.md +110 -4
  183. package/docs/id/cli/index.md +1 -1
  184. package/docs/id/cli/scan.md +1 -1
  185. package/docs/id/configuration.md +35 -2
  186. package/docs/id/dictionary/condition.md +167 -5
  187. package/docs/id/dictionary/enumeration.md +540 -6
  188. package/docs/id/dictionary/file.md +318 -2
  189. package/docs/id/dictionary/gender.md +381 -8
  190. package/docs/id/dictionary/nesting.md +357 -86
  191. package/docs/id/dictionary/plurial.md +174 -5
  192. package/docs/id/dictionary/translation.md +156 -2
  193. package/docs/id/dynamic_dictionaries/collections.md +1 -1
  194. package/docs/id/dynamic_dictionaries/dynamic_content.md +1 -1
  195. package/docs/id/dynamic_dictionaries/index.md +1 -1
  196. package/docs/id/dynamic_dictionaries/variants.md +1 -1
  197. package/docs/id/plugins/sync-json.md +222 -49
  198. package/docs/id/releases/v8.md +191 -2
  199. package/docs/id/releases/v9.md +232 -0
  200. package/docs/it/cli/doc-review.md +110 -4
  201. package/docs/it/cli/index.md +1 -1
  202. package/docs/it/cli/scan.md +1 -1
  203. package/docs/it/configuration.md +49 -16
  204. package/docs/it/dictionary/condition.md +167 -5
  205. package/docs/it/dictionary/enumeration.md +540 -6
  206. package/docs/it/dictionary/file.md +318 -2
  207. package/docs/it/dictionary/gender.md +168 -7
  208. package/docs/it/dictionary/nesting.md +173 -65
  209. package/docs/it/dictionary/plurial.md +347 -7
  210. package/docs/it/dictionary/translation.md +156 -2
  211. package/docs/it/dynamic_dictionaries/collections.md +1 -1
  212. package/docs/it/dynamic_dictionaries/dynamic_content.md +1 -1
  213. package/docs/it/dynamic_dictionaries/index.md +1 -1
  214. package/docs/it/dynamic_dictionaries/variants.md +1 -1
  215. package/docs/it/intlayer_with_vite+react.md +0 -48
  216. package/docs/it/migration_from_i18next_to_intlayer.md +1 -1
  217. package/docs/it/migration_from_next-i18next_to_intlayer.md +1 -1
  218. package/docs/it/migration_from_next-intl_to_intlayer.md +1 -1
  219. package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  220. package/docs/it/migration_from_react-i18next_to_intlayer.md +1 -1
  221. package/docs/it/migration_from_vue-i18n_to_intlayer.md +1 -1
  222. package/docs/it/plugins/sync-json.md +224 -51
  223. package/docs/it/releases/v8.md +200 -2
  224. package/docs/it/releases/v9.md +232 -0
  225. package/docs/ja/cli/doc-review.md +110 -4
  226. package/docs/ja/cli/index.md +1 -1
  227. package/docs/ja/cli/scan.md +1 -1
  228. package/docs/ja/configuration.md +50 -17
  229. package/docs/ja/dictionary/condition.md +167 -5
  230. package/docs/ja/dictionary/enumeration.md +540 -6
  231. package/docs/ja/dictionary/file.md +151 -1
  232. package/docs/ja/dictionary/gender.md +168 -7
  233. package/docs/ja/dictionary/nesting.md +173 -65
  234. package/docs/ja/dictionary/plurial.md +174 -5
  235. package/docs/ja/dictionary/translation.md +169 -8
  236. package/docs/ja/dynamic_dictionaries/collections.md +1 -1
  237. package/docs/ja/dynamic_dictionaries/dynamic_content.md +1 -1
  238. package/docs/ja/dynamic_dictionaries/index.md +1 -1
  239. package/docs/ja/dynamic_dictionaries/variants.md +1 -1
  240. package/docs/ja/intlayer_with_vite+react.md +290 -0
  241. package/docs/ja/migration_from_i18next_to_intlayer.md +1 -1
  242. package/docs/ja/migration_from_next-i18next_to_intlayer.md +1 -1
  243. package/docs/ja/migration_from_next-intl_to_intlayer.md +1 -1
  244. package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  245. package/docs/ja/migration_from_react-i18next_to_intlayer.md +1 -1
  246. package/docs/ja/migration_from_vue-i18n_to_intlayer.md +1 -1
  247. package/docs/ja/plugins/sync-json.md +222 -49
  248. package/docs/ja/releases/v8.md +193 -4
  249. package/docs/ja/releases/v9.md +232 -0
  250. package/docs/ko/cli/doc-review.md +110 -4
  251. package/docs/ko/cli/index.md +1 -1
  252. package/docs/ko/cli/scan.md +1 -1
  253. package/docs/ko/configuration.md +49 -16
  254. package/docs/ko/dictionary/condition.md +167 -5
  255. package/docs/ko/dictionary/enumeration.md +540 -6
  256. package/docs/ko/dictionary/file.md +151 -1
  257. package/docs/ko/dictionary/gender.md +168 -7
  258. package/docs/ko/dictionary/nesting.md +173 -65
  259. package/docs/ko/dictionary/plurial.md +174 -5
  260. package/docs/ko/dictionary/translation.md +169 -8
  261. package/docs/ko/dynamic_dictionaries/collections.md +1 -1
  262. package/docs/ko/dynamic_dictionaries/dynamic_content.md +1 -1
  263. package/docs/ko/dynamic_dictionaries/index.md +1 -1
  264. package/docs/ko/dynamic_dictionaries/variants.md +1 -1
  265. package/docs/ko/intlayer_with_vite+react.md +48 -490
  266. package/docs/ko/migration_from_i18next_to_intlayer.md +1 -1
  267. package/docs/ko/migration_from_next-i18next_to_intlayer.md +1 -1
  268. package/docs/ko/migration_from_next-intl_to_intlayer.md +1 -1
  269. package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  270. package/docs/ko/migration_from_react-i18next_to_intlayer.md +1 -1
  271. package/docs/ko/migration_from_vue-i18n_to_intlayer.md +1 -1
  272. package/docs/ko/plugins/sync-json.md +223 -50
  273. package/docs/ko/releases/v8.md +192 -1
  274. package/docs/ko/releases/v9.md +232 -0
  275. package/docs/nl/cli/index.md +1 -1
  276. package/docs/nl/cli/scan.md +1 -1
  277. package/docs/nl/configuration.md +36 -3
  278. package/docs/pl/cli/doc-review.md +110 -4
  279. package/docs/pl/cli/index.md +1 -1
  280. package/docs/pl/cli/scan.md +1 -1
  281. package/docs/pl/configuration.md +35 -2
  282. package/docs/pl/dictionary/condition.md +167 -5
  283. package/docs/pl/dictionary/enumeration.md +540 -6
  284. package/docs/pl/dictionary/file.md +318 -2
  285. package/docs/pl/dictionary/gender.md +168 -7
  286. package/docs/pl/dictionary/nesting.md +173 -65
  287. package/docs/pl/dictionary/plurial.md +174 -5
  288. package/docs/pl/dictionary/translation.md +156 -2
  289. package/docs/pl/dynamic_dictionaries/collections.md +1 -1
  290. package/docs/pl/dynamic_dictionaries/dynamic_content.md +1 -1
  291. package/docs/pl/dynamic_dictionaries/index.md +1 -1
  292. package/docs/pl/dynamic_dictionaries/variants.md +1 -1
  293. package/docs/pl/plugins/sync-json.md +246 -14
  294. package/docs/pl/releases/v8.md +188 -2
  295. package/docs/pl/releases/v9.md +232 -0
  296. package/docs/pt/cli/doc-review.md +110 -4
  297. package/docs/pt/cli/index.md +1 -1
  298. package/docs/pt/cli/scan.md +1 -1
  299. package/docs/pt/configuration.md +49 -16
  300. package/docs/pt/dictionary/condition.md +167 -5
  301. package/docs/pt/dictionary/enumeration.md +540 -6
  302. package/docs/pt/dictionary/file.md +151 -1
  303. package/docs/pt/dictionary/gender.md +168 -7
  304. package/docs/pt/dictionary/nesting.md +173 -65
  305. package/docs/pt/dictionary/plurial.md +347 -7
  306. package/docs/pt/dictionary/translation.md +156 -2
  307. package/docs/pt/dynamic_dictionaries/collections.md +1 -1
  308. package/docs/pt/dynamic_dictionaries/dynamic_content.md +1 -1
  309. package/docs/pt/dynamic_dictionaries/index.md +1 -1
  310. package/docs/pt/dynamic_dictionaries/variants.md +1 -1
  311. package/docs/pt/migration_from_i18next_to_intlayer.md +1 -1
  312. package/docs/pt/migration_from_next-i18next_to_intlayer.md +1 -1
  313. package/docs/pt/migration_from_next-intl_to_intlayer.md +1 -1
  314. package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  315. package/docs/pt/migration_from_react-i18next_to_intlayer.md +1 -1
  316. package/docs/pt/migration_from_vue-i18n_to_intlayer.md +1 -1
  317. package/docs/pt/plugins/sync-json.md +222 -49
  318. package/docs/pt/releases/v8.md +187 -1
  319. package/docs/pt/releases/v9.md +232 -0
  320. package/docs/ru/cli/doc-review.md +110 -4
  321. package/docs/ru/cli/index.md +1 -1
  322. package/docs/ru/cli/scan.md +1 -1
  323. package/docs/ru/configuration.md +35 -2
  324. package/docs/ru/dictionary/condition.md +366 -39
  325. package/docs/ru/dictionary/enumeration.md +777 -7
  326. package/docs/ru/dictionary/file.md +318 -2
  327. package/docs/ru/dictionary/gender.md +168 -7
  328. package/docs/ru/dictionary/nesting.md +368 -71
  329. package/docs/ru/dictionary/plurial.md +347 -7
  330. package/docs/ru/dictionary/translation.md +321 -33
  331. package/docs/ru/dynamic_dictionaries/collections.md +1 -1
  332. package/docs/ru/dynamic_dictionaries/dynamic_content.md +1 -1
  333. package/docs/ru/dynamic_dictionaries/index.md +1 -1
  334. package/docs/ru/dynamic_dictionaries/variants.md +1 -1
  335. package/docs/ru/intlayer_with_vite+react.md +48 -47
  336. package/docs/ru/migration_from_i18next_to_intlayer.md +1 -1
  337. package/docs/ru/migration_from_next-i18next_to_intlayer.md +1 -1
  338. package/docs/ru/migration_from_next-intl_to_intlayer.md +1 -1
  339. package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  340. package/docs/ru/migration_from_react-i18next_to_intlayer.md +1 -1
  341. package/docs/ru/migration_from_vue-i18n_to_intlayer.md +1 -1
  342. package/docs/ru/plugins/sync-json.md +269 -95
  343. package/docs/ru/releases/v8.md +194 -2
  344. package/docs/ru/releases/v9.md +232 -0
  345. package/docs/tr/cli/doc-review.md +110 -4
  346. package/docs/tr/cli/index.md +1 -1
  347. package/docs/tr/cli/scan.md +1 -1
  348. package/docs/tr/configuration.md +35 -2
  349. package/docs/tr/dictionary/condition.md +167 -5
  350. package/docs/tr/dictionary/enumeration.md +540 -6
  351. package/docs/tr/dictionary/file.md +151 -1
  352. package/docs/tr/dictionary/gender.md +168 -7
  353. package/docs/tr/dictionary/nesting.md +173 -65
  354. package/docs/tr/dictionary/plurial.md +174 -5
  355. package/docs/tr/dictionary/translation.md +156 -2
  356. package/docs/tr/dynamic_dictionaries/collections.md +1 -1
  357. package/docs/tr/dynamic_dictionaries/dynamic_content.md +1 -1
  358. package/docs/tr/dynamic_dictionaries/index.md +1 -1
  359. package/docs/tr/dynamic_dictionaries/variants.md +1 -1
  360. package/docs/tr/migration_from_i18next_to_intlayer.md +1 -1
  361. package/docs/tr/migration_from_next-i18next_to_intlayer.md +1 -1
  362. package/docs/tr/migration_from_next-intl_to_intlayer.md +1 -1
  363. package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  364. package/docs/tr/migration_from_react-i18next_to_intlayer.md +1 -1
  365. package/docs/tr/migration_from_vue-i18n_to_intlayer.md +1 -1
  366. package/docs/tr/plugins/sync-json.md +222 -50
  367. package/docs/tr/releases/v8.md +187 -1
  368. package/docs/tr/releases/v9.md +232 -0
  369. package/docs/uk/cli/doc-review.md +110 -4
  370. package/docs/uk/cli/index.md +1 -1
  371. package/docs/uk/cli/scan.md +1 -1
  372. package/docs/uk/configuration.md +35 -2
  373. package/docs/uk/dictionary/condition.md +167 -5
  374. package/docs/uk/dictionary/enumeration.md +540 -6
  375. package/docs/uk/dictionary/file.md +318 -2
  376. package/docs/uk/dictionary/gender.md +381 -8
  377. package/docs/uk/dictionary/nesting.md +173 -65
  378. package/docs/uk/dictionary/plurial.md +174 -5
  379. package/docs/uk/dictionary/translation.md +156 -2
  380. package/docs/uk/dynamic_dictionaries/collections.md +1 -1
  381. package/docs/uk/dynamic_dictionaries/dynamic_content.md +1 -1
  382. package/docs/uk/dynamic_dictionaries/index.md +1 -1
  383. package/docs/uk/dynamic_dictionaries/variants.md +1 -1
  384. package/docs/uk/plugins/sync-json.md +56 -2
  385. package/docs/uk/releases/v8.md +191 -3
  386. package/docs/uk/releases/v9.md +232 -0
  387. package/docs/ur/cli/index.md +1 -1
  388. package/docs/ur/cli/scan.md +1 -1
  389. package/docs/ur/configuration.md +36 -3
  390. package/docs/vi/cli/doc-review.md +110 -4
  391. package/docs/vi/cli/index.md +1 -1
  392. package/docs/vi/cli/scan.md +1 -1
  393. package/docs/vi/configuration.md +50 -17
  394. package/docs/vi/dictionary/condition.md +167 -5
  395. package/docs/vi/dictionary/enumeration.md +591 -14
  396. package/docs/vi/dictionary/file.md +318 -2
  397. package/docs/vi/dictionary/gender.md +168 -7
  398. package/docs/vi/dictionary/nesting.md +357 -86
  399. package/docs/vi/dictionary/plurial.md +174 -5
  400. package/docs/vi/dictionary/translation.md +156 -2
  401. package/docs/vi/dynamic_dictionaries/collections.md +1 -1
  402. package/docs/vi/dynamic_dictionaries/dynamic_content.md +1 -1
  403. package/docs/vi/dynamic_dictionaries/index.md +1 -1
  404. package/docs/vi/dynamic_dictionaries/variants.md +1 -1
  405. package/docs/vi/plugins/sync-json.md +230 -57
  406. package/docs/vi/releases/v8.md +190 -1
  407. package/docs/vi/releases/v9.md +232 -0
  408. package/docs/zh/cli/doc-review.md +110 -4
  409. package/docs/zh/cli/index.md +1 -1
  410. package/docs/zh/cli/scan.md +1 -1
  411. package/docs/zh/configuration.md +49 -16
  412. package/docs/zh/dictionary/condition.md +167 -5
  413. package/docs/zh/dictionary/enumeration.md +540 -6
  414. package/docs/zh/dictionary/file.md +151 -1
  415. package/docs/zh/dictionary/gender.md +168 -7
  416. package/docs/zh/dictionary/nesting.md +173 -65
  417. package/docs/zh/dictionary/plurial.md +174 -5
  418. package/docs/zh/dictionary/translation.md +169 -8
  419. package/docs/zh/dynamic_dictionaries/collections.md +1 -1
  420. package/docs/zh/dynamic_dictionaries/dynamic_content.md +1 -1
  421. package/docs/zh/dynamic_dictionaries/index.md +1 -1
  422. package/docs/zh/dynamic_dictionaries/variants.md +1 -1
  423. package/docs/zh/intlayer_with_vite+react.md +48 -288
  424. package/docs/zh/plugins/sync-json.md +223 -50
  425. package/docs/zh/releases/v8.md +1 -1
  426. package/docs/zh/releases/v9.md +220 -0
  427. package/package.json +7 -7
  428. package/src/generated/docs.entry.ts +320 -0
  429. package/dist/esm/_virtual/_rolldown/runtime.mjs +0 -8
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-03-13
3
- updatedAt: 2025-12-13
3
+ updatedAt: 2026-06-21
4
4
  title: सिंक JSON प्लगइन
5
5
  description: Intlayer शब्दकोशों को तृतीय-पक्ष i18n JSON फ़ाइलों (i18next, next-intl, react-intl, vue-i18n, और अन्य) के साथ सिंक्रनाइज़ करें। अपने मौजूदा i18n को बनाए रखें जबकि Intlayer का उपयोग करके अपने संदेशों का प्रबंधन, अनुवाद और परीक्षण करें।
6
6
  keywords:
@@ -24,6 +24,9 @@ slugs:
24
24
  - sync-json
25
25
  youtubeVideo: https://www.youtube.com/watch?v=MpGMxniDHNg
26
26
  history:
27
+ - version: 9.0.0
28
+ date: 2026-06-21
29
+ changes: "splitKeys विकल्प जोड़ा गया (next-intl / react-intl एकल-फ़ाइल लेआउट के लिए प्रति शीर्ष-स्तरीय नेमस्पेस कुंजी एक शब्दकोश)"
27
30
  - version: 7.5.0
28
31
  date: 2025-12-13
29
32
  changes: "ICU और i18next प्रारूप समर्थन जोड़ा गया"
@@ -54,7 +57,7 @@ author: aymericzip
54
57
  - आप पहले से ही एक i18n लाइब्रेरी का उपयोग करते हैं और संदेशों को JSON फ़ाइलों में संग्रहीत करते हैं।
55
58
  - आप AI-सहायता प्राप्त भराई, CI में परीक्षण, और कंटेंट ऑप्स चाहते हैं बिना अपने रेंडरिंग रनटाइम को बदले।
56
59
 
57
- ## स्थापना
60
+ ## Installation
58
61
 
59
62
  ```bash
60
63
  pnpm add -D @intlayer/sync-json-plugin
@@ -62,7 +65,63 @@ pnpm add -D @intlayer/sync-json-plugin
62
65
  npm i -D @intlayer/sync-json-plugin
63
66
  ```
64
67
 
65
- ## त्वरित शुरुआत
68
+ ## Plugins
69
+
70
+ This package provides two plugins:
71
+
72
+ - `loadJSON`: Load JSON files into Intlayer dictionaries.
73
+ - This plugin is used to load JSON files from a source and will be loaded into Intlayer dictionaries. It can scan all the codebase and search for specific JSON files.
74
+ This plugin can be used
75
+ - if you use an i18n library that impose a specific location for your JSON to be loaded (ex: `next-intl`, `i18next`, `react-intl`, `vue-i18n`, etc.), but you want to place your content declaration where you want in your code base.
76
+ - It can also be used if you want to fetch your messages from a remote source (ex: a CMS, a API, etc.) and store your messages in JSON files.
77
+
78
+ > Under the hood, this plugin will scan all the codebase and search for specific JSON files and load them into Intlayer dictionaries.
79
+ > Note that this plugin will not write the output and translations back to the JSON files.
80
+
81
+ - `syncJSON`: Synchronize JSON files with Intlayer dictionaries.
82
+ - This plugin is used to synchronize JSON files with Intlayer dictionaries. It can scan the given location and load the JSON that match the pattern for specific JSON files. This plugin is useful if you want to get the benefits of Intlayer while using another i18n library.
83
+
84
+ ## Using both plugins
85
+
86
+ ```ts fileName="intlayer.config.ts"
87
+ import { Locales, type IntlayerConfig } from "intlayer";
88
+ import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";
89
+
90
+ const config: IntlayerConfig = {
91
+ internationalization: {
92
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
93
+ defaultLocale: Locales.ENGLISH,
94
+ },
95
+
96
+ // Keep your current JSON files in sync with Intlayer dictionaries
97
+ plugins: [
98
+ /**
99
+ * Will load all the JSON files in the src that match the pattern {key}.i18n json
100
+ */
101
+ loadJSON({
102
+ source: ({ key }) => `./src/**/${key}.i18n.json`,
103
+ locale: Locales.ENGLISH,
104
+ priority: 1, // Ensures these JSON files take precedence over files at `./locales/en/${key}.json`
105
+ format: "intlayer", // Format of the JSON content
106
+ }),
107
+ /**
108
+ * Will load, and write the output and translations back to the JSON files in the locales directory
109
+ */
110
+ syncJSON({
111
+ format: "i18next",
112
+ source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
113
+ priority: 0,
114
+ format: "i18next",
115
+ }),
116
+ ],
117
+ };
118
+
119
+ export default config;
120
+ ```
121
+
122
+ ## `syncJSON` plugin
123
+
124
+ ### Quick start
66
125
 
67
126
  अपने `intlayer.config.ts` में प्लगइन जोड़ें और इसे अपनी मौजूदा JSON संरचना की ओर इंगित करें।
68
127
 
@@ -81,6 +140,7 @@ const config: IntlayerConfig = {
81
140
  syncJSON({
82
141
  // प्रति-लोकल, प्रति-नेमस्पेस लेआउट (जैसे, next-intl, i18next नेमस्पेस के साथ)
83
142
  source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
143
+ format: "icu",
84
144
  }),
85
145
  ],
86
146
  };
@@ -91,14 +151,27 @@ export default config;
91
151
  वैकल्पिक: प्रति-लोकल एकल फ़ाइल (i18next/react-intl सेटअप में सामान्य):
92
152
 
93
153
  ```ts fileName="intlayer.config.ts"
94
- plugins: [
95
- syncJSON({
96
- source: ({ locale }) => `./locales/${locale}.json`,
97
- }),
98
- ];
154
+ import { Locales, type IntlayerConfig } from "intlayer";
155
+ import { syncJSON } from "@intlayer/sync-json-plugin";
156
+
157
+ const config: IntlayerConfig = {
158
+ internationalization: {
159
+ locales: [Locales.ENGLISH, Locales.FRENCH],
160
+ defaultLocale: Locales.ENGLISH,
161
+ },
162
+ plugins: [
163
+ syncJSON({
164
+ format: "i18next",
165
+ source: ({ locale }) => `./locales/${locale}.json`,
166
+ format: "i18next",
167
+ }),
168
+ ],
169
+ };
170
+
171
+ export default config;
99
172
  ```
100
173
 
101
- ### यह कैसे काम करता है
174
+ #### How it works
102
175
 
103
176
  - पढ़ें: प्लगइन आपके `source` बिल्डर से JSON फ़ाइलों को खोजता है और उन्हें Intlayer शब्दकोश के रूप में लोड करता है।
104
177
  - लिखें: बिल्ड और भराई के बाद, यह स्थानीयकृत JSON को उसी पथों पर वापस लिखता है (फॉर्मेटिंग समस्याओं से बचने के लिए अंतिम नई लाइन के साथ)।
@@ -112,6 +185,7 @@ syncJSON({
112
185
  location?: string, // वैकल्पिक लेबल, डिफ़ॉल्ट: "plugin"
113
186
  priority?: number, // संघर्ष समाधान के लिए वैकल्पिक प्राथमिकता, डिफ़ॉल्ट: 0
114
187
  format?: 'intlayer' | 'icu' | 'i18next', // वैकल्पिक फ़ॉर्मेटर, Intlayer रनटाइम संगतता के लिए उपयोग किया जाता है
188
+ splitKeys?: boolean, // वैकल्पिक, एक एकल फ़ाइल को प्रति शीर्ष-स्तरीय कुंजी एक शब्दकोश में विभाजित करें (स्वचालित रूप से पता लगाया गया)
115
189
  });
116
190
  ```
117
191
 
@@ -136,7 +210,39 @@ syncJSON({
136
210
  }),
137
211
  ```
138
212
 
139
- ## कई JSON स्रोत और प्राथमिकता
213
+ #### `splitKeys` (बूलियन)
214
+
215
+ यह नियंत्रित करता है कि एक एकल JSON फ़ाइल जिसके **पहले-स्तर की कुंजियाँ नेमस्पेस हैं** उसे पूरी फ़ाइल को रखने वाले एक एकल शब्दकोश के बजाय, प्रति शीर्ष-स्तरीय कुंजी एक शब्दकोश बनना चाहिए या नहीं।
216
+
217
+ यह `next-intl` और `react-intl` जैसी लाइब्रेरी के नेमस्पेस मॉडल से मेल खाता है, जहाँ एक `messages/{locale}.json` फ़ाइल अपने पहले-स्तर की कुंजियों द्वारा कई नेमस्पेस को समूहित करती है, प्रत्येक को स्वतंत्र रूप से संबोधित किया जाता है (उदाहरण के लिए `useTranslations('Hero')` `Hero` शब्दकोश में हल होता है)।
218
+
219
+ - `undefined` (डिफ़ॉल्ट): **स्वचालित रूप से पता लगाया गया** — फ़ाइल तब विभाजित होती है जब `source` पैटर्न में कोई `{key}` खंड नहीं होता है (एक फ़ाइल हर नेमस्पेस को रखती है), और अन्यथा एक एकल शब्दकोश के रूप में रखा जाता है (प्रति कुंजी एक फ़ाइल)।
220
+ - `true`: हमेशा प्रत्येक शीर्ष-स्तरीय कुंजी को उसके अपने शब्दकोश में विभाजित करें।
221
+ - `false`: कभी विभाजित न करें; पूरी फ़ाइल एक एकल शब्दकोश बन जाती है।
222
+
223
+ एकल `messages/{locale}.json` फ़ाइल को देखते हुए:
224
+
225
+ ```json fileName="messages/en.json"
226
+ {
227
+ "Hero": { "title": "Full-stack developer" },
228
+ "Nav": { "work": "Work", "about": "About" },
229
+ "About": { "lead": "I build apps end to end." }
230
+ }
231
+ ```
232
+
233
+ ```ts fileName="intlayer.config.ts"
234
+ syncJSON({
235
+ format: "icu",
236
+ source: ({ locale }) => `./messages/${locale}.json`,
237
+ // splitKeys: true, // implied because the pattern has no `{key}` segment
238
+ }),
239
+ ```
240
+
241
+ यह तीन शब्दकोश — `Hero`, `Nav`, और `About` — उत्पन्न करता है, ताकि `useTranslations('Hero')` (next-intl) सही ढंग से हल हो सके। वापस लिखने पर, सभी नेमस्पेस को उसी प्रति-लोकल फ़ाइल में फिर से इकट्ठा किया जाता है।
242
+
243
+ > जब आप अपने `source` में स्पष्ट `{key}` खंड रखते हैं (उदाहरण के लिए `./locales/${locale}/${key}.json`), तो प्रत्येक फ़ाइल पहले से ही एक नेमस्पेस होती है, इसलिए विभाजन डिफ़ॉल्ट रूप से अक्षम होता है।
244
+
245
+ ### Multiple JSON sources and priority
140
246
 
141
247
  आप विभिन्न JSON स्रोतों को सिंक्रनाइज़ करने के लिए कई `syncJSON` प्लगइन्स जोड़ सकते हैं। यह तब उपयोगी होता है जब आपके प्रोजेक्ट में कई i18n लाइब्रेरीज़ या विभिन्न JSON संरचनाएँ हों।
142
248
 
@@ -189,73 +295,140 @@ const config: IntlayerConfig = {
189
295
  export default config;
190
296
  ```
191
297
 
192
- ### संघर्ष समाधान
298
+ ## Load JSON plugin
193
299
 
194
- जब एक ही अनुवाद कुंजी कई JSON स्रोतों में मौजूद होती है:
300
+ ### Quick start
195
301
 
196
- 1. सबसे उच्च प्राथमिकता वाला प्लगइन अंतिम मान निर्धारित करता है
197
- 2. कम प्राथमिकता वाले स्रोत गायब कुंजी के लिए फॉलबैक के रूप में उपयोग किए जाते हैं
198
- 3. यह आपको लेगेसी अनुवाद बनाए रखने की अनुमति देता है जबकि आप धीरे-धीरे नए संरचनाओं में माइग्रेट कर रहे होते हैं
302
+ Add the plugin to your `intlayer.config.ts` to ingest existing JSON files as Intlayer dictionaries. This plugin is read‑only (no writes to disk):
199
303
 
200
- ## एकीकरण
304
+ ```ts fileName="intlayer.config.ts"
305
+ import { Locales, type IntlayerConfig } from "intlayer";
306
+ import { loadJSON } from "@intlayer/sync-json-plugin";
201
307
 
202
- नीचे सामान्य मैपिंग दी गई हैं। अपने रनटाइम को बिना छुए रखें; केवल प्लगइन जोड़ें।
308
+ const config: IntlayerConfig = {
309
+ internationalization: {
310
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
311
+ defaultLocale: Locales.ENGLISH,
312
+ },
203
313
 
204
- ### i18next
314
+ plugins: [
315
+ // Ingest JSON messages located anywhere in your source tree
316
+ loadJSON({
317
+ source: ({ key }) => `./src/**/${key}.i18n.json`,
318
+ // Load a single locale per plugin instance (defaults to the config defaultLocale)
319
+ locale: Locales.ENGLISH,
320
+ priority: 0,
321
+ }),
322
+ ],
323
+ };
205
324
 
206
- सामान्य फ़ाइल लेआउट: `./public/locales/{locale}/{namespace}.json` या `./locales/{locale}/{namespace}.json`।
325
+ export default config;
326
+ ```
327
+
328
+ Alternative: per‑locale layout, still read‑only (only the selected locale is loaded):
207
329
 
208
330
  ```ts fileName="intlayer.config.ts"
209
- import { syncJSON } from "@intlayer/sync-json-plugin";
331
+ import { Locales, type IntlayerConfig } from "intlayer";
332
+ import { loadJSON } from "@intlayer/sync-json-plugin";
210
333
 
211
- export default {
334
+ const config: IntlayerConfig = {
335
+ internationalization: {
336
+ locales: [Locales.ENGLISH, Locales.FRENCH],
337
+ defaultLocale: Locales.ENGLISH,
338
+ },
212
339
  plugins: [
213
- syncJSON({
214
- format: "i18next",
340
+ loadJSON({
341
+ // Only files for Locales.FRENCH will be loaded from this pattern
215
342
  source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
343
+ locale: Locales.FRENCH,
216
344
  }),
217
345
  ],
218
346
  };
347
+
348
+ export default config;
219
349
  ```
220
350
 
221
- ### next-intl
351
+ ### How it works
222
352
 
223
- प्रति-लोकल JSON संदेश (अक्सर `./messages/{locale}.json`) या प्रति-नेमस्पेस।
353
+ - Discover: builds a glob from your `source` builder and collects matching JSON files.
354
+ - Ingest: loads each JSON file as an Intlayer dictionary with the provided `locale`.
355
+ - Read‑only: does not write or format output files; use `syncJSON` if you need round‑trip sync.
356
+ - Auto‑fill ready: defines a `fill` pattern so `intlayer content fill` can populate missing keys.
224
357
 
225
- ```ts fileName="intlayer.config.ts"
226
- plugins: [
227
- syncJSON({
228
- source: ({ locale, key }) => `./messages/${locale}/${key}.json`,
229
- }),
230
- ];
358
+ ### API
359
+
360
+ ```ts
361
+ loadJSON({
362
+ // Build paths to your JSON. `locale` is optional if your structure has no locale segment
363
+ source: ({ key, locale }) => string,
364
+
365
+ // Target locale for the dictionaries loaded by this plugin instance
366
+ // Defaults to configuration.internationalization.defaultLocale
367
+ locale?: Locale,
368
+
369
+ // Optional label to identify the source
370
+ location?: string, // default: "plugin"
371
+
372
+ // Priority used for conflict resolution against other sources
373
+ priority?: number, // default: 0
374
+
375
+ // Optional formatter for the JSON content
376
+ format?: 'intlayer' | 'icu' | 'i18next', // default: 'intlayer'
377
+
378
+ // एक एकल फ़ाइल को प्रति शीर्ष-स्तरीय कुंजी एक शब्दकोश में विभाजित करें (स्वचालित रूप से पता लगाया गया)
379
+ splitKeys?: boolean,
380
+ });
231
381
  ```
232
382
 
233
- देखें: `docs/hi/intlayer_with_next-intl.md`।
383
+ #### `format` ('intlayer' | 'icu' | 'i18next')
234
384
 
235
- ### react-intl
385
+ Specifies the formatter to use for the dictionary content when loading JSON files. This allows using different message formatting syntaxes compatible with various i18n libraries.
236
386
 
237
- प्रति लोकल एकल JSON सामान्य है:
387
+ - `'intlayer'`: The default Intlayer formatter (default).
388
+ - `'icu'`: Uses ICU message formatting (compatible with libraries like react-intl, vue-i18n).
389
+ - `'i18next'`: Uses i18next message formatting (compatible with i18next, next-i18next, Solid-i18next).
238
390
 
239
- ```ts fileName="intlayer.config.ts"
240
- plugins: [
241
- syncJSON({
242
- source: ({ locale }) => `./locales/${locale}.json`,
243
- }),
244
- ];
391
+ **Example:**
392
+
393
+ ```ts
394
+ loadJSON({
395
+ source: ({ key }) => `./src/**/${key}.i18n.json`,
396
+ locale: Locales.ENGLISH,
397
+ format: "icu", // Use ICU formatting for compatibility
398
+ }),
245
399
  ```
246
400
 
247
- ### vue-i18n
401
+ #### `splitKeys` (बूलियन)
248
402
 
249
- प्रति-लोकल या प्रति-नेमस्पेस एकल फ़ाइल हो सकती है:
403
+ [`syncJSON`](#splitkeys-boolean) के समान व्यवहार: जब एक एकल JSON फ़ाइल अपने पहले-स्तर की कुंजियों द्वारा कई नेमस्पेस को समूहित करती है, तो प्रत्येक शीर्ष-स्तरीय कुंजी अपना स्वयं का शब्दकोश बन जाती है।
250
404
 
251
- ```ts fileName="intlayer.config.ts"
252
- plugins: [
253
- syncJSON({
254
- source: ({ key, locale }) => `./src/locales/${locale}/${key}.json`,
255
- }),
256
- ];
405
+ - `undefined` (डिफ़ॉल्ट): **स्वचालित रूप से पता लगाया गया** — जब `source` पैटर्न में कोई `{key}` खंड नहीं होता है तो विभाजित करें, अन्यथा एकल शब्दकोश।
406
+ - `true` / `false`: विभाजन को लागू करें या अक्षम करें।
407
+
408
+ ```ts
409
+ loadJSON({
410
+ source: ({ locale }) => `./messages/${locale}.json`,
411
+ format: "icu",
412
+ // splitKeys auto-enabled: `Hero`, `Nav`, `About`, … each become a dictionary
413
+ }),
257
414
  ```
258
415
 
416
+ ### Behavior and conventions
417
+
418
+ - If your `source` mask includes a locale placeholder, only files for the selected `locale` are ingested.
419
+ - यदि आपके मास्क में कोई `{key}` खंड नहीं है, तो फ़ाइल की प्रत्येक शीर्ष-स्तरीय कुंजी डिफ़ॉल्ट रूप से अपना स्वयं का शब्दकोश बन जाती है (देखें [`splitKeys`](#splitkeys-boolean))। पूरी फ़ाइल को एक एकल `index` शब्दकोश के रूप में लोड करने के लिए `splitKeys: false` सेट करें।
420
+ - Keys are derived from file paths by substituting the `{key}` placeholder in your `source` builder.
421
+ - The plugin only uses discovered files and does not fabricate missing locales or keys.
422
+ - The `fill` path is inferred from your `source` and used to update missing values via CLI when you opt‑in.
423
+
424
+ ## Conflict resolution
425
+
426
+ जब एक ही अनुवाद कुंजी कई JSON स्रोतों में मौजूद होती है:
427
+
428
+ 1. सबसे उच्च प्राथमिकता वाला प्लगइन अंतिम मान निर्धारित करता है
429
+ 2. कम प्राथमिकता वाले स्रोत गायब कुंजी के लिए फॉलबैक के रूप में उपयोग किए जाते हैं
430
+ 3. यह आपको लेगेसी अनुवाद बनाए रखने की अनुमति देता है जबकि आप धीरे-धीरे नए संरचनाओं में माइग्रेट कर रहे होते हैं
431
+
259
432
  ## CLI
260
433
 
261
434
  सिंक किए गए JSON फ़ाइलों को अन्य `.content` फ़ाइलों के रूप में माना जाएगा। इसका मतलब है कि सभी intlayer कमांड सिंक किए गए JSON फ़ाइलों के लिए उपलब्ध होंगे। जिनमें शामिल हैं:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-09-22
3
- updatedAt: 2026-01-26
3
+ updatedAt: 2026-06-14
4
4
  title: "नया Intlayer v8 - क्या नया है?"
5
5
  description: "जानें Intlayer v8 में क्या नया है। डेवलपर अनुभव, सामग्री सत्यापन, और शब्दकोश प्रबंधन में प्रमुख सुधार।"
6
6
  keywords:
@@ -409,6 +409,16 @@ v7 में, यदि कोई प्रदाता परिभाषित
409
409
 
410
410
  ---
411
411
 
412
+ ## YAML और Markdown सामग्री फ़ाइलें (v8.10.0)
413
+
414
+ अब आप सीधे `.content.md` और `.content.yaml` फ़ाइल एक्सटेंशन का उपयोग करके सामग्री घोषित कर सकते हैं। यह लंबी सामग्री, ब्लॉग, दस्तावेज़ और गोपनीयता नीतियों के लिए बिल्कुल सही है।
415
+
416
+ ये फ़ाइलें विज़ुअल एडिटर (Visual Editor) से पूरी तरह से संपादन योग्य हैं, जो गैर-तकनीकी टीम के सदस्यों के लिए एक सुव्यवस्थित वर्कफ़्लो प्रदान करती हैं।
417
+
418
+ अधिक जानकारी के लिए, [YAML सामग्री फ़ाइल दस्तावेज़](https://intlayer.org/doc/concept/content#yaml-content-file) और [Markdown सामग्री फ़ाइल दस्तावेज़](https://intlayer.org/doc/concept/content/markdown) देखें।
419
+
420
+ ---
421
+
412
422
  ## कस्टम URL पुनर्लेखन
413
423
 
414
424
  Intlayer v8 **कस्टम URL पुनर्लेखन (Custom URL Rewrites)** के लिए समर्थन पेश करता है, जिससे आप ऐसी भाषा-विशिष्ट पथ परिभाषित कर सकते हैं जो मानक `/locale/path` संरचना से भिन्न होते हैं। यह स्थानीय SEO को बेहतर बनाने और गैर-अंग्रेजी बोलने वालों के लिए अधिक प्राकृतिक उपयोगकर्ता अनुभव प्रदान करने के लिए एक शक्तिशाली विशेषता है।
@@ -753,6 +763,58 @@ export default {
753
763
  </Tab>
754
764
  </Tabs>
755
765
 
766
+ ## Unicode CLDR बहुवचन नियम (v8.8.0)
767
+
768
+ Unicode CLDR प्रोजेक्ट द्वारा परिभाषित बहुवचन नियमों के आधार पर एक नया `plural` नोड हेल्पर पेश किया गया है, जो जटिल भाषाओं के लिए समर्थन में सुधार करता है।
769
+
770
+ ```typescript fileName="src/openings.content.ts"
771
+ import { plural, t, type Dictionary } from "intlayer";
772
+
773
+ const openingsContent = {
774
+ key: "total_openings",
775
+ content: {
776
+ totalOpenings: t({
777
+ en: plural({
778
+ one: "{{count}} opening",
779
+ other: "{{count}} openings",
780
+ }),
781
+ fr: plural({
782
+ one: "{{count}} offre",
783
+ other: "{{count}} offres",
784
+ }),
785
+ }),
786
+ },
787
+ } satisfies Dictionary;
788
+
789
+ export default openingsContent;
790
+ ```
791
+
792
+ इसके बाद आप अपने फ्रेमवर्क घटक में गतिशील रूप से (dynamically) काउंट पास कर सकते हैं:
793
+
794
+ ```tsx
795
+ import type { FC } from "react";
796
+ import { useIntlayer } from "react-intlayer";
797
+
798
+ const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
799
+ const { totalOpenings } = useIntlayer("total_openings");
800
+
801
+ return (
802
+ <div>
803
+ {/* अंग्रेजी में: */}
804
+ {/* count=0 → "0 openings" (other) */}
805
+ {/* count=1 → "1 opening" (one) */}
806
+ {/* count=2 → "2 openings" (other) */}
807
+ {/* count=21 → "21 openings" (other) */}
808
+ <p>{totalOpenings(count)}</p>
809
+ </div>
810
+ );
811
+ };
812
+ ```
813
+
814
+ अधिक जानकारी के लिए, [बहुवचनीकरण दस्तावेज़ (Pluralization Documentation)](https://intlayer.org/doc/concept/content/plural) देखें।
815
+
816
+ ---
817
+
756
818
  ## सामग्री स्कीमा सत्यापन
757
819
 
758
820
  Intlayer v8 शब्दकोशों (dictionaries) के लिए स्कीमा सत्यापन पेश करता है। अब आप Zod का उपयोग करके अपने कॉन्फ़िगरेशन में पुन: प्रयोज्य सत्यापन स्कीमा परिभाषित कर सकते हैं और उन्हें अपनी सामग्री फ़ाइलों पर लागू कर सकते हैं। यह सुनिश्चित करता है कि आपकी सामग्री हमेशा अपेक्षित संरचना का पालन करे, बिल्ड समय पर त्रुटियों को पकड़ ले।
@@ -797,6 +859,34 @@ export default aboutPageMetaContent;
797
859
 
798
860
  ---
799
861
 
862
+ ## TypeScript: IntlayerNode प्रिमिटिव एक्सेसर्स (Primitive Accessors)
863
+
864
+ सामग्री नोड्स पर सीधे प्रिमिटिव जावास्क्रिप्ट विधियों (primitive JavaScript methods) को कॉल करने की अनुमति देने के लिए `IntlayerNode` प्रकार को अपडेट किया गया है। यह आपकी स्थानीयकृत सामग्री के साथ सीधे बातचीत करना संभव बनाता है जैसे कि यह एक मानक स्ट्रिंग, नंबर, बूलियन या एरे प्रिमिटिव हो।
865
+
866
+ React, Preact, Solid, Svelte, Vue, और Angular में समर्थित।
867
+
868
+ ### स्ट्रिंग उदाहरण (String Example)
869
+
870
+ ```typescript
871
+ content.placeholder; // IntlayerNode<string> लौटाता है
872
+ content.placeholder.value; // string लौटाता है
873
+ content.placeholder.toString(); // string लौटाता है
874
+ content.placeholder.toLowerCase(); // string लौटाता है
875
+ String(content.placeholder); // string लौटाता है
876
+ content.placeholder.toUpperCase(); // अपरकेस स्ट्रिंग लौटाता है
877
+ content.placeholder.replace("a", "b"); // संशोधित स्ट्रिंग लौटाता है
878
+ ```
879
+
880
+ ### एरे उदाहरण (Array Example)
881
+
882
+ ```typescript
883
+ content.myArrayOfString // IntlayerNode<Array<string>> लौटाता है
884
+ content.myArrayOfString.find(...) // तत्व (element) लौटाता है
885
+ content.myArrayOfString.join(', ') // संयुक्त स्ट्रिंग लौटाता है
886
+ ```
887
+
888
+ ---
889
+
800
890
  ### उन्नत स्वचालित सामग्री पहचान
801
891
 
802
892
  v8 में, Intlayer आपकी सामग्री स्ट्रिंग्स में मार्कडाउन सिंटैक्स, HTML टैग और वेरिएबल इनसर्शन को बुद्धिमानी से पहचानता है। इसका मतलब है कि आप अक्सर `md()`, `html()`, या `insert()` जैसे सहायक कार्यों को छोड़ सकते हैं।
@@ -1002,6 +1092,17 @@ Intlayer VSCode एक्सटेंशन को आपके अंतर्
1002
1092
 
1003
1093
  ---
1004
1094
 
1095
+ ## टूलिंग: C++ वॉचर और OXC-आधारित LSP (v8.12.0)
1096
+
1097
+ Intlayer v8.12.0 डेवलपर अनुभव में बड़े सुधार लाता है:
1098
+
1099
+ - **Parcel Watcher**: सामग्री वॉचर (content watcher) को `chokidar` से `@parcel/watcher` पर माइग्रेट कर दिया गया है, जो तेज़ अपडेट और काफी कम मेमोरी खपत प्रदान करने के लिए मूल C++ फ़ाइल वॉचिंग का लाभ उठाता है।
1100
+ - **नया लैंग्वेज सर्वर प्रोटोकॉल (LSP)**: एक बिल्कुल नया LSP अब उपलब्ध है। OXC-आधारित पार्सिंग के साथ निर्मित, यह आपके IDE और AI एजेंटों को `useIntlayer('my-key')` कॉल को उनकी संबंधित `.content` फ़ाइलों के साथ सहजता से जोड़ने में मदद करता है, और इसके विपरीत भी।
1101
+
1102
+ अधिक जानकारी के लिए, [LSP दस्तावेज़](https://intlayer.org/doc/lsp) देखें।
1103
+
1104
+ ---
1105
+
1005
1106
  ## कंपाइलर अनुकूलन
1006
1107
 
1007
1108
  Intlayer v8 में मार्कडाउन और HTML कंपाइलर के लिए एक नई कैशिंग लेयर शामिल है। यह सुनिश्चित करता है कि एक ही कॉन्फ़िगरेशन के साथ समान सामग्री स्ट्रिंग्स केवल एक बार पार्स की जाती हैं, जिससे री-रेंडर के दौरान या कई स्थानों पर समान सामग्री का उपयोग करते समय ओवरहेड काफी कम हो जाता है।
@@ -1057,6 +1158,48 @@ Intlayer v8 में मार्कडाउन और HTML कंपाइल
1057
1158
 
1058
1159
  ---
1059
1160
 
1161
+ ## प्रायोगिक बिल्ड अनुकूलन: Minify और Purge (v8.7.0)
1162
+
1163
+ Intlayer v8.7.0 आपके प्रोडक्शन बंडल को अनुकूलित करने के लिए डिज़ाइन की गई आपकी `intlayer.config.ts` में नई प्रायोगिक बिल्ड सुविधाएँ पेश करता है:
1164
+
1165
+ - **डिक्शनरी मिनिफिकेशन (Dictionary Minification)**: आकार घटाने के लिए डिक्शनरी फ़ाइलों को छोटा (minify) करता है।
1166
+ - **अनुपयोगी कुंजी पर्जिंग (Unused Key Purging)**: डिक्शनरी से अनुपयोगी अनुवाद कुंजियों को स्कैन और हटाता है, सक्रिय कुंजियों का नाम बदलकर छोटे वर्णों में कर देता है (उदा. `"products" -> "a"`, `"pricing" -> "b"`)। यह बंडल के आकार को 5% तक कम कर देता है।
1167
+ - **TypeScript जांच अक्षम करें**: संकलन (compilation) चरण के दौरान TypeScript टाइपचेकिंग को अक्षम करके बिल्ड को तेज़ करें।
1168
+
1169
+ ```typescript fileName="intlayer.config.ts"
1170
+ import { Locales, type IntlayerConfig } from "intlayer";
1171
+
1172
+ const config: IntlayerConfig = {
1173
+ internationalization: {
1174
+ locales: [Locales.ENGLISH, Locales.FRENCH],
1175
+ defaultLocale: Locales.ENGLISH,
1176
+ },
1177
+ dictionary: {
1178
+ importMode: "dynamic",
1179
+ },
1180
+ build: {
1181
+ /**
1182
+ * बंडल के आकार को कम करने के लिए डिक्शनरी को छोटा (minify) करें।
1183
+ */
1184
+ minify: true,
1185
+
1186
+ /**
1187
+ * डिक्शनरी में अनुपयोगी कुंजियों को हटाएँ (purge करें)
1188
+ */
1189
+ purge: true,
1190
+
1191
+ /**
1192
+ * इंगित करता है कि क्या बिल्ड को TypeScript प्रकारों की जांच करनी चाहिए
1193
+ */
1194
+ checkTypes: false,
1195
+ },
1196
+ };
1197
+
1198
+ export default config;
1199
+ ```
1200
+
1201
+ ---
1202
+
1060
1203
  ## लचीलापन: एकीकृत आयात मोड (Unified Import Mode)
1061
1204
 
1062
1205
  `live` बूलियन प्रॉपर्टी को अधिक व्यापक `importMode` प्रॉपर्टी के पक्ष में हटा दिया गया है। यह शब्दकोशों को लोड करने के तरीके की स्पष्ट परिभाषा की अनुमति देता है: स्थिर रूप से, गतिशील रूप से, या लाइव सिंक के माध्यम से।
@@ -1164,7 +1307,7 @@ export default {
1164
1307
 
1165
1308
  ## सामग्री और कोड निर्देशिका पृथक्करण
1166
1309
 
1167
- Intlayer v8 सामग्री परिभाषा फ़ाइलों के कॉन्फ़िगरेशन को कोड परिवर्तन के कॉन्फ़िगरेशन से अलग करता है। यह अधिक सटीक निगरानी और स्कैनिंग की अनुमति देता है, जिससे बिल्ड प्रदर्शन में सुधार होता है।
1310
+ Intlayer v8 सामग्री परिभाषा फ़ाइलों के कॉन्फ़िगरेशन को कोड परिवर्तन के कॉन्फ़िगरेशन से अलग करता है। यह अधिक सटीक निगरानी और स्कैनिंग की अनुमति देता, जिससे बिल्ड प्रदर्शन में सुधार होता है।
1168
1311
 
1169
1312
  पहले, `contentDir` का उपयोग `.content.*` फ़ाइलों को देखने और `useIntlayer` कॉल्स के लिए कोड स्कैन करने दोनों के लिए किया जाता था। अब:
1170
1313
 
@@ -1204,6 +1347,49 @@ Svelte में मार्कडाउन और HTML सामग्री
1204
1347
 
1205
1348
  ---
1206
1349
 
1350
+ ## Angular समर्थन: Vite बंडलर (v8.11.0)
1351
+
1352
+ Angular उपयोगकर्ताओं के लिए, Intlayer अब एक नए कस्टम esbuild प्लगइन के माध्यम से मूल रूप से Vite बंडलर का समर्थन करता, जिससे विकास और बिल्ड समय तेज़ हो जाता है।
1353
+
1354
+ कॉन्फ़िगरेशन के विवरण के लिए, [Angular पर्यावरण दस्तावेज़ (Angular Environment Documentation)](https://intlayer.org/doc/environment/angular) देखें।
1355
+
1356
+ ---
1357
+
1358
+ ## साइटमैप जनरेशन (v8.6.0)
1359
+
1360
+ Intlayer अब आपके लोकेल्स और राउटिंग मोड के आधार पर स्वचालित रूप से साइटमैप जेनरेट करता है। यह विशेष रूप से TanStack Router जैसे राउटर आर्किटेक्चर में SEO अनुकूलन के लिए उपयोगी है:
1361
+
1362
+ ```typescript fileName="src/routes/sitemap.xml.ts"
1363
+ import { createFileRoute } from "@tanstack/react-router";
1364
+ import { generateSitemap } from "intlayer";
1365
+
1366
+ const SITE_URL = (
1367
+ import.meta.env.VITE_SITE_URL ?? "http://localhost:3000"
1368
+ ).replace(/\/$/, "");
1369
+
1370
+ export const Route = createFileRoute("/sitemap.xml")({
1371
+ server: {
1372
+ handlers: {
1373
+ GET: async () => {
1374
+ const sitemap = generateSitemap(
1375
+ [
1376
+ { path: "/", changefreq: "daily", priority: 1.0 },
1377
+ { path: "/about", changefreq: "monthly", priority: 0.8 },
1378
+ ],
1379
+ { siteUrl: SITE_URL }
1380
+ );
1381
+
1382
+ return new Response(sitemap, {
1383
+ headers: { "Content-Type": "application/xml" },
1384
+ });
1385
+ },
1386
+ },
1387
+ },
1388
+ });
1389
+ ```
1390
+
1391
+ ---
1392
+
1207
1393
  ## v7 से माइग्रेशन नोट्स
1208
1394
 
1209
1395
  ### कॉन्फ़िगरेशन परिवर्तन