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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. package/dist/cjs/generated/docs.entry.cjs +320 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +320 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +16 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/cli/doc-review.md +110 -4
  8. package/docs/ar/cli/index.md +1 -1
  9. package/docs/ar/cli/scan.md +1 -1
  10. package/docs/ar/configuration.md +36 -3
  11. package/docs/ar/dictionary/condition.md +167 -5
  12. package/docs/ar/dictionary/enumeration.md +540 -6
  13. package/docs/ar/dictionary/file.md +151 -1
  14. package/docs/ar/dictionary/gender.md +168 -7
  15. package/docs/ar/dictionary/nesting.md +173 -65
  16. package/docs/ar/dictionary/plurial.md +174 -5
  17. package/docs/ar/dictionary/translation.md +156 -2
  18. package/docs/ar/dynamic_dictionaries/collections.md +1 -1
  19. package/docs/ar/dynamic_dictionaries/dynamic_content.md +1 -1
  20. package/docs/ar/dynamic_dictionaries/index.md +1 -1
  21. package/docs/ar/dynamic_dictionaries/variants.md +1 -1
  22. package/docs/ar/intlayer_with_vite+react.md +31 -31
  23. package/docs/ar/releases/v8.md +187 -1
  24. package/docs/ar/releases/v9.md +232 -0
  25. package/docs/bn/cli/index.md +1 -1
  26. package/docs/bn/cli/scan.md +1 -1
  27. package/docs/bn/configuration.md +36 -3
  28. package/docs/cs/cli/index.md +1 -1
  29. package/docs/cs/cli/scan.md +1 -1
  30. package/docs/cs/configuration.md +35 -2
  31. package/docs/de/cli/doc-review.md +110 -4
  32. package/docs/de/cli/index.md +1 -1
  33. package/docs/de/cli/scan.md +1 -1
  34. package/docs/de/configuration.md +35 -2
  35. package/docs/de/dictionary/condition.md +167 -5
  36. package/docs/de/dictionary/enumeration.md +777 -7
  37. package/docs/de/dictionary/file.md +151 -1
  38. package/docs/de/dictionary/gender.md +168 -7
  39. package/docs/de/dictionary/nesting.md +173 -65
  40. package/docs/de/dictionary/plurial.md +347 -7
  41. package/docs/de/dictionary/translation.md +156 -2
  42. package/docs/de/dynamic_dictionaries/collections.md +1 -1
  43. package/docs/de/dynamic_dictionaries/dynamic_content.md +1 -1
  44. package/docs/de/dynamic_dictionaries/index.md +1 -1
  45. package/docs/de/dynamic_dictionaries/variants.md +1 -1
  46. package/docs/de/intlayer_with_vite+react.md +48 -48
  47. package/docs/de/migration_from_i18next_to_intlayer.md +1 -1
  48. package/docs/de/migration_from_next-i18next_to_intlayer.md +1 -1
  49. package/docs/de/migration_from_next-intl_to_intlayer.md +1 -1
  50. package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  51. package/docs/de/migration_from_react-i18next_to_intlayer.md +1 -1
  52. package/docs/de/migration_from_vue-i18n_to_intlayer.md +1 -1
  53. package/docs/de/releases/v8.md +197 -1
  54. package/docs/de/releases/v9.md +232 -0
  55. package/docs/en/CI_CD.md +7 -7
  56. package/docs/en/cli/ci.md +62 -8
  57. package/docs/en/cli/doc-review.md +110 -4
  58. package/docs/en/cli/index.md +1 -1
  59. package/docs/en/cli/scan.md +1 -1
  60. package/docs/en/compat/i18n-js.md +44 -0
  61. package/docs/en/compat/i18next.md +59 -0
  62. package/docs/en/compat/index.md +51 -0
  63. package/docs/en/compat/lingui.md +44 -0
  64. package/docs/en/compat/next-i18next.md +57 -0
  65. package/docs/en/compat/next-intl.md +59 -0
  66. package/docs/en/compat/next-translate.md +45 -0
  67. package/docs/en/compat/ngx-translate.md +45 -0
  68. package/docs/en/compat/nuxtjs-i18n.md +46 -0
  69. package/docs/en/compat/polyglot.md +45 -0
  70. package/docs/en/compat/react-i18next.md +58 -0
  71. package/docs/en/compat/react-intl.md +55 -0
  72. package/docs/en/compat/svelte-i18n.md +47 -0
  73. package/docs/en/compat/transloco.md +45 -0
  74. package/docs/en/compat/vue-i18n.md +58 -0
  75. package/docs/en/configuration.md +35 -2
  76. package/docs/en/dictionary/condition.md +163 -1
  77. package/docs/en/dictionary/enumeration.md +309 -7
  78. package/docs/en/dictionary/file.md +151 -1
  79. package/docs/en/dictionary/gender.md +162 -1
  80. package/docs/en/dictionary/nesting.md +173 -9
  81. package/docs/en/dictionary/plurial.md +155 -10
  82. package/docs/en/dictionary/translation.md +145 -52
  83. package/docs/en/dynamic_dictionaries/collections.md +1 -1
  84. package/docs/en/dynamic_dictionaries/dynamic_content.md +1 -1
  85. package/docs/en/dynamic_dictionaries/index.md +1 -1
  86. package/docs/en/dynamic_dictionaries/variants.md +1 -1
  87. package/docs/en/migration_from_i18next_to_intlayer.md +1 -1
  88. package/docs/en/migration_from_next-i18next_to_intlayer.md +1 -1
  89. package/docs/en/migration_from_next-intl_to_intlayer.md +1 -1
  90. package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  91. package/docs/en/migration_from_react-i18next_to_intlayer.md +1 -1
  92. package/docs/en/migration_from_vue-i18n_to_intlayer.md +1 -1
  93. package/docs/en/releases/v8.md +187 -1
  94. package/docs/en/releases/v9.md +220 -0
  95. package/docs/en-GB/cli/doc-review.md +110 -4
  96. package/docs/en-GB/cli/index.md +1 -1
  97. package/docs/en-GB/cli/scan.md +1 -1
  98. package/docs/en-GB/configuration.md +35 -2
  99. package/docs/en-GB/dictionary/condition.md +364 -1
  100. package/docs/en-GB/dictionary/enumeration.md +577 -5
  101. package/docs/en-GB/dictionary/file.md +317 -1
  102. package/docs/en-GB/dictionary/gender.md +375 -2
  103. package/docs/en-GB/dictionary/nesting.md +368 -71
  104. package/docs/en-GB/dictionary/plurial.md +347 -7
  105. package/docs/en-GB/dictionary/translation.md +320 -32
  106. package/docs/en-GB/dynamic_dictionaries/collections.md +1 -1
  107. package/docs/en-GB/dynamic_dictionaries/dynamic_content.md +1 -1
  108. package/docs/en-GB/dynamic_dictionaries/index.md +1 -1
  109. package/docs/en-GB/dynamic_dictionaries/variants.md +1 -1
  110. package/docs/en-GB/releases/v8.md +1 -1
  111. package/docs/en-GB/releases/v9.md +220 -0
  112. package/docs/es/cli/doc-review.md +110 -4
  113. package/docs/es/cli/index.md +1 -1
  114. package/docs/es/cli/scan.md +1 -1
  115. package/docs/es/configuration.md +36 -3
  116. package/docs/es/dictionary/condition.md +167 -5
  117. package/docs/es/dictionary/enumeration.md +537 -12
  118. package/docs/es/dictionary/file.md +151 -1
  119. package/docs/es/dictionary/gender.md +168 -7
  120. package/docs/es/dictionary/nesting.md +173 -65
  121. package/docs/es/dictionary/plurial.md +347 -7
  122. package/docs/es/dictionary/translation.md +156 -2
  123. package/docs/es/dynamic_dictionaries/collections.md +1 -1
  124. package/docs/es/dynamic_dictionaries/dynamic_content.md +1 -1
  125. package/docs/es/dynamic_dictionaries/index.md +1 -1
  126. package/docs/es/dynamic_dictionaries/variants.md +1 -1
  127. package/docs/es/migration_from_i18next_to_intlayer.md +1 -1
  128. package/docs/es/migration_from_next-i18next_to_intlayer.md +1 -1
  129. package/docs/es/migration_from_next-intl_to_intlayer.md +1 -1
  130. package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  131. package/docs/es/migration_from_react-i18next_to_intlayer.md +1 -1
  132. package/docs/es/migration_from_vue-i18n_to_intlayer.md +1 -1
  133. package/docs/es/releases/v8.md +187 -1
  134. package/docs/es/releases/v9.md +228 -0
  135. package/docs/fr/cli/doc-review.md +110 -4
  136. package/docs/fr/cli/index.md +1 -1
  137. package/docs/fr/cli/scan.md +1 -1
  138. package/docs/fr/configuration.md +49 -16
  139. package/docs/fr/dictionary/condition.md +369 -6
  140. package/docs/fr/dictionary/enumeration.md +540 -6
  141. package/docs/fr/dictionary/file.md +151 -1
  142. package/docs/fr/dictionary/gender.md +168 -7
  143. package/docs/fr/dictionary/nesting.md +357 -86
  144. package/docs/fr/dictionary/plurial.md +174 -5
  145. package/docs/fr/dictionary/translation.md +156 -2
  146. package/docs/fr/dynamic_dictionaries/collections.md +1 -1
  147. package/docs/fr/dynamic_dictionaries/dynamic_content.md +1 -1
  148. package/docs/fr/dynamic_dictionaries/index.md +1 -1
  149. package/docs/fr/dynamic_dictionaries/variants.md +1 -1
  150. package/docs/fr/migration_from_i18next_to_intlayer.md +1 -1
  151. package/docs/fr/migration_from_next-i18next_to_intlayer.md +1 -1
  152. package/docs/fr/migration_from_next-intl_to_intlayer.md +1 -1
  153. package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  154. package/docs/fr/migration_from_react-i18next_to_intlayer.md +1 -1
  155. package/docs/fr/migration_from_vue-i18n_to_intlayer.md +1 -1
  156. package/docs/fr/releases/v8.md +187 -1
  157. package/docs/fr/releases/v9.md +220 -0
  158. package/docs/hi/cli/doc-review.md +110 -4
  159. package/docs/hi/cli/index.md +1 -1
  160. package/docs/hi/cli/scan.md +1 -1
  161. package/docs/hi/configuration.md +49 -16
  162. package/docs/hi/dictionary/condition.md +167 -5
  163. package/docs/hi/dictionary/enumeration.md +540 -6
  164. package/docs/hi/dictionary/file.md +151 -1
  165. package/docs/hi/dictionary/gender.md +168 -7
  166. package/docs/hi/dictionary/nesting.md +173 -65
  167. package/docs/hi/dictionary/plurial.md +174 -5
  168. package/docs/hi/dictionary/translation.md +155 -5
  169. package/docs/hi/dynamic_dictionaries/collections.md +1 -1
  170. package/docs/hi/dynamic_dictionaries/dynamic_content.md +1 -1
  171. package/docs/hi/dynamic_dictionaries/index.md +1 -1
  172. package/docs/hi/dynamic_dictionaries/variants.md +1 -1
  173. package/docs/hi/releases/v8.md +188 -2
  174. package/docs/hi/releases/v9.md +232 -0
  175. package/docs/id/cli/doc-review.md +110 -4
  176. package/docs/id/cli/index.md +1 -1
  177. package/docs/id/cli/scan.md +1 -1
  178. package/docs/id/configuration.md +35 -2
  179. package/docs/id/dictionary/condition.md +167 -5
  180. package/docs/id/dictionary/enumeration.md +540 -6
  181. package/docs/id/dictionary/file.md +318 -2
  182. package/docs/id/dictionary/gender.md +381 -8
  183. package/docs/id/dictionary/nesting.md +357 -86
  184. package/docs/id/dictionary/plurial.md +174 -5
  185. package/docs/id/dictionary/translation.md +156 -2
  186. package/docs/id/dynamic_dictionaries/collections.md +1 -1
  187. package/docs/id/dynamic_dictionaries/dynamic_content.md +1 -1
  188. package/docs/id/dynamic_dictionaries/index.md +1 -1
  189. package/docs/id/dynamic_dictionaries/variants.md +1 -1
  190. package/docs/id/releases/v8.md +191 -2
  191. package/docs/id/releases/v9.md +232 -0
  192. package/docs/it/cli/doc-review.md +110 -4
  193. package/docs/it/cli/index.md +1 -1
  194. package/docs/it/cli/scan.md +1 -1
  195. package/docs/it/configuration.md +49 -16
  196. package/docs/it/dictionary/condition.md +167 -5
  197. package/docs/it/dictionary/enumeration.md +540 -6
  198. package/docs/it/dictionary/file.md +318 -2
  199. package/docs/it/dictionary/gender.md +168 -7
  200. package/docs/it/dictionary/nesting.md +173 -65
  201. package/docs/it/dictionary/plurial.md +347 -7
  202. package/docs/it/dictionary/translation.md +156 -2
  203. package/docs/it/dynamic_dictionaries/collections.md +1 -1
  204. package/docs/it/dynamic_dictionaries/dynamic_content.md +1 -1
  205. package/docs/it/dynamic_dictionaries/index.md +1 -1
  206. package/docs/it/dynamic_dictionaries/variants.md +1 -1
  207. package/docs/it/intlayer_with_vite+react.md +0 -48
  208. package/docs/it/migration_from_i18next_to_intlayer.md +1 -1
  209. package/docs/it/migration_from_next-i18next_to_intlayer.md +1 -1
  210. package/docs/it/migration_from_next-intl_to_intlayer.md +1 -1
  211. package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  212. package/docs/it/migration_from_react-i18next_to_intlayer.md +1 -1
  213. package/docs/it/migration_from_vue-i18n_to_intlayer.md +1 -1
  214. package/docs/it/releases/v8.md +200 -2
  215. package/docs/it/releases/v9.md +232 -0
  216. package/docs/ja/cli/doc-review.md +110 -4
  217. package/docs/ja/cli/index.md +1 -1
  218. package/docs/ja/cli/scan.md +1 -1
  219. package/docs/ja/configuration.md +50 -17
  220. package/docs/ja/dictionary/condition.md +167 -5
  221. package/docs/ja/dictionary/enumeration.md +540 -6
  222. package/docs/ja/dictionary/file.md +151 -1
  223. package/docs/ja/dictionary/gender.md +168 -7
  224. package/docs/ja/dictionary/nesting.md +173 -65
  225. package/docs/ja/dictionary/plurial.md +174 -5
  226. package/docs/ja/dictionary/translation.md +169 -8
  227. package/docs/ja/dynamic_dictionaries/collections.md +1 -1
  228. package/docs/ja/dynamic_dictionaries/dynamic_content.md +1 -1
  229. package/docs/ja/dynamic_dictionaries/index.md +1 -1
  230. package/docs/ja/dynamic_dictionaries/variants.md +1 -1
  231. package/docs/ja/intlayer_with_vite+react.md +290 -0
  232. package/docs/ja/migration_from_i18next_to_intlayer.md +1 -1
  233. package/docs/ja/migration_from_next-i18next_to_intlayer.md +1 -1
  234. package/docs/ja/migration_from_next-intl_to_intlayer.md +1 -1
  235. package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  236. package/docs/ja/migration_from_react-i18next_to_intlayer.md +1 -1
  237. package/docs/ja/migration_from_vue-i18n_to_intlayer.md +1 -1
  238. package/docs/ja/releases/v8.md +193 -4
  239. package/docs/ja/releases/v9.md +232 -0
  240. package/docs/ko/cli/doc-review.md +110 -4
  241. package/docs/ko/cli/index.md +1 -1
  242. package/docs/ko/cli/scan.md +1 -1
  243. package/docs/ko/configuration.md +49 -16
  244. package/docs/ko/dictionary/condition.md +167 -5
  245. package/docs/ko/dictionary/enumeration.md +540 -6
  246. package/docs/ko/dictionary/file.md +151 -1
  247. package/docs/ko/dictionary/gender.md +168 -7
  248. package/docs/ko/dictionary/nesting.md +173 -65
  249. package/docs/ko/dictionary/plurial.md +174 -5
  250. package/docs/ko/dictionary/translation.md +169 -8
  251. package/docs/ko/dynamic_dictionaries/collections.md +1 -1
  252. package/docs/ko/dynamic_dictionaries/dynamic_content.md +1 -1
  253. package/docs/ko/dynamic_dictionaries/index.md +1 -1
  254. package/docs/ko/dynamic_dictionaries/variants.md +1 -1
  255. package/docs/ko/intlayer_with_vite+react.md +48 -490
  256. package/docs/ko/migration_from_i18next_to_intlayer.md +1 -1
  257. package/docs/ko/migration_from_next-i18next_to_intlayer.md +1 -1
  258. package/docs/ko/migration_from_next-intl_to_intlayer.md +1 -1
  259. package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  260. package/docs/ko/migration_from_react-i18next_to_intlayer.md +1 -1
  261. package/docs/ko/migration_from_vue-i18n_to_intlayer.md +1 -1
  262. package/docs/ko/releases/v8.md +192 -1
  263. package/docs/ko/releases/v9.md +232 -0
  264. package/docs/nl/cli/index.md +1 -1
  265. package/docs/nl/cli/scan.md +1 -1
  266. package/docs/nl/configuration.md +36 -3
  267. package/docs/pl/cli/doc-review.md +110 -4
  268. package/docs/pl/cli/index.md +1 -1
  269. package/docs/pl/cli/scan.md +1 -1
  270. package/docs/pl/configuration.md +35 -2
  271. package/docs/pl/dictionary/condition.md +167 -5
  272. package/docs/pl/dictionary/enumeration.md +540 -6
  273. package/docs/pl/dictionary/file.md +318 -2
  274. package/docs/pl/dictionary/gender.md +168 -7
  275. package/docs/pl/dictionary/nesting.md +173 -65
  276. package/docs/pl/dictionary/plurial.md +174 -5
  277. package/docs/pl/dictionary/translation.md +156 -2
  278. package/docs/pl/dynamic_dictionaries/collections.md +1 -1
  279. package/docs/pl/dynamic_dictionaries/dynamic_content.md +1 -1
  280. package/docs/pl/dynamic_dictionaries/index.md +1 -1
  281. package/docs/pl/dynamic_dictionaries/variants.md +1 -1
  282. package/docs/pl/releases/v8.md +188 -2
  283. package/docs/pl/releases/v9.md +232 -0
  284. package/docs/pt/cli/doc-review.md +110 -4
  285. package/docs/pt/cli/index.md +1 -1
  286. package/docs/pt/cli/scan.md +1 -1
  287. package/docs/pt/configuration.md +49 -16
  288. package/docs/pt/dictionary/condition.md +167 -5
  289. package/docs/pt/dictionary/enumeration.md +540 -6
  290. package/docs/pt/dictionary/file.md +151 -1
  291. package/docs/pt/dictionary/gender.md +168 -7
  292. package/docs/pt/dictionary/nesting.md +173 -65
  293. package/docs/pt/dictionary/plurial.md +347 -7
  294. package/docs/pt/dictionary/translation.md +156 -2
  295. package/docs/pt/dynamic_dictionaries/collections.md +1 -1
  296. package/docs/pt/dynamic_dictionaries/dynamic_content.md +1 -1
  297. package/docs/pt/dynamic_dictionaries/index.md +1 -1
  298. package/docs/pt/dynamic_dictionaries/variants.md +1 -1
  299. package/docs/pt/migration_from_i18next_to_intlayer.md +1 -1
  300. package/docs/pt/migration_from_next-i18next_to_intlayer.md +1 -1
  301. package/docs/pt/migration_from_next-intl_to_intlayer.md +1 -1
  302. package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  303. package/docs/pt/migration_from_react-i18next_to_intlayer.md +1 -1
  304. package/docs/pt/migration_from_vue-i18n_to_intlayer.md +1 -1
  305. package/docs/pt/releases/v8.md +187 -1
  306. package/docs/pt/releases/v9.md +232 -0
  307. package/docs/ru/cli/doc-review.md +110 -4
  308. package/docs/ru/cli/index.md +1 -1
  309. package/docs/ru/cli/scan.md +1 -1
  310. package/docs/ru/configuration.md +35 -2
  311. package/docs/ru/dictionary/condition.md +366 -39
  312. package/docs/ru/dictionary/enumeration.md +777 -7
  313. package/docs/ru/dictionary/file.md +318 -2
  314. package/docs/ru/dictionary/gender.md +168 -7
  315. package/docs/ru/dictionary/nesting.md +368 -71
  316. package/docs/ru/dictionary/plurial.md +347 -7
  317. package/docs/ru/dictionary/translation.md +321 -33
  318. package/docs/ru/dynamic_dictionaries/collections.md +1 -1
  319. package/docs/ru/dynamic_dictionaries/dynamic_content.md +1 -1
  320. package/docs/ru/dynamic_dictionaries/index.md +1 -1
  321. package/docs/ru/dynamic_dictionaries/variants.md +1 -1
  322. package/docs/ru/intlayer_with_vite+react.md +48 -47
  323. package/docs/ru/migration_from_i18next_to_intlayer.md +1 -1
  324. package/docs/ru/migration_from_next-i18next_to_intlayer.md +1 -1
  325. package/docs/ru/migration_from_next-intl_to_intlayer.md +1 -1
  326. package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  327. package/docs/ru/migration_from_react-i18next_to_intlayer.md +1 -1
  328. package/docs/ru/migration_from_vue-i18n_to_intlayer.md +1 -1
  329. package/docs/ru/releases/v8.md +194 -2
  330. package/docs/ru/releases/v9.md +232 -0
  331. package/docs/tr/cli/doc-review.md +110 -4
  332. package/docs/tr/cli/index.md +1 -1
  333. package/docs/tr/cli/scan.md +1 -1
  334. package/docs/tr/configuration.md +35 -2
  335. package/docs/tr/dictionary/condition.md +167 -5
  336. package/docs/tr/dictionary/enumeration.md +540 -6
  337. package/docs/tr/dictionary/file.md +151 -1
  338. package/docs/tr/dictionary/gender.md +168 -7
  339. package/docs/tr/dictionary/nesting.md +173 -65
  340. package/docs/tr/dictionary/plurial.md +174 -5
  341. package/docs/tr/dictionary/translation.md +156 -2
  342. package/docs/tr/dynamic_dictionaries/collections.md +1 -1
  343. package/docs/tr/dynamic_dictionaries/dynamic_content.md +1 -1
  344. package/docs/tr/dynamic_dictionaries/index.md +1 -1
  345. package/docs/tr/dynamic_dictionaries/variants.md +1 -1
  346. package/docs/tr/migration_from_i18next_to_intlayer.md +1 -1
  347. package/docs/tr/migration_from_next-i18next_to_intlayer.md +1 -1
  348. package/docs/tr/migration_from_next-intl_to_intlayer.md +1 -1
  349. package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +1 -1
  350. package/docs/tr/migration_from_react-i18next_to_intlayer.md +1 -1
  351. package/docs/tr/migration_from_vue-i18n_to_intlayer.md +1 -1
  352. package/docs/tr/releases/v8.md +187 -1
  353. package/docs/tr/releases/v9.md +232 -0
  354. package/docs/uk/cli/doc-review.md +110 -4
  355. package/docs/uk/cli/index.md +1 -1
  356. package/docs/uk/cli/scan.md +1 -1
  357. package/docs/uk/configuration.md +35 -2
  358. package/docs/uk/dictionary/condition.md +167 -5
  359. package/docs/uk/dictionary/enumeration.md +540 -6
  360. package/docs/uk/dictionary/file.md +318 -2
  361. package/docs/uk/dictionary/gender.md +381 -8
  362. package/docs/uk/dictionary/nesting.md +173 -65
  363. package/docs/uk/dictionary/plurial.md +174 -5
  364. package/docs/uk/dictionary/translation.md +156 -2
  365. package/docs/uk/dynamic_dictionaries/collections.md +1 -1
  366. package/docs/uk/dynamic_dictionaries/dynamic_content.md +1 -1
  367. package/docs/uk/dynamic_dictionaries/index.md +1 -1
  368. package/docs/uk/dynamic_dictionaries/variants.md +1 -1
  369. package/docs/uk/releases/v8.md +191 -3
  370. package/docs/uk/releases/v9.md +232 -0
  371. package/docs/ur/cli/index.md +1 -1
  372. package/docs/ur/cli/scan.md +1 -1
  373. package/docs/ur/configuration.md +36 -3
  374. package/docs/vi/cli/doc-review.md +110 -4
  375. package/docs/vi/cli/index.md +1 -1
  376. package/docs/vi/cli/scan.md +1 -1
  377. package/docs/vi/configuration.md +50 -17
  378. package/docs/vi/dictionary/condition.md +167 -5
  379. package/docs/vi/dictionary/enumeration.md +591 -14
  380. package/docs/vi/dictionary/file.md +318 -2
  381. package/docs/vi/dictionary/gender.md +168 -7
  382. package/docs/vi/dictionary/nesting.md +357 -86
  383. package/docs/vi/dictionary/plurial.md +174 -5
  384. package/docs/vi/dictionary/translation.md +156 -2
  385. package/docs/vi/dynamic_dictionaries/collections.md +1 -1
  386. package/docs/vi/dynamic_dictionaries/dynamic_content.md +1 -1
  387. package/docs/vi/dynamic_dictionaries/index.md +1 -1
  388. package/docs/vi/dynamic_dictionaries/variants.md +1 -1
  389. package/docs/vi/releases/v8.md +190 -1
  390. package/docs/vi/releases/v9.md +232 -0
  391. package/docs/zh/cli/doc-review.md +110 -4
  392. package/docs/zh/cli/index.md +1 -1
  393. package/docs/zh/cli/scan.md +1 -1
  394. package/docs/zh/configuration.md +49 -16
  395. package/docs/zh/dictionary/condition.md +167 -5
  396. package/docs/zh/dictionary/enumeration.md +540 -6
  397. package/docs/zh/dictionary/file.md +151 -1
  398. package/docs/zh/dictionary/gender.md +168 -7
  399. package/docs/zh/dictionary/nesting.md +173 -65
  400. package/docs/zh/dictionary/plurial.md +174 -5
  401. package/docs/zh/dictionary/translation.md +169 -8
  402. package/docs/zh/dynamic_dictionaries/collections.md +1 -1
  403. package/docs/zh/dynamic_dictionaries/dynamic_content.md +1 -1
  404. package/docs/zh/dynamic_dictionaries/index.md +1 -1
  405. package/docs/zh/dynamic_dictionaries/variants.md +1 -1
  406. package/docs/zh/intlayer_with_vite+react.md +48 -288
  407. package/docs/zh/releases/v8.md +1 -1
  408. package/docs/zh/releases/v9.md +220 -0
  409. package/package.json +7 -7
  410. package/src/generated/docs.entry.ts +320 -0
  411. package/dist/esm/_virtual/_rolldown/runtime.mjs +0 -8
@@ -19,7 +19,7 @@ slugs:
19
19
  - migration
20
20
  - next-i18next
21
21
  history:
22
- - version: 8.13.0
22
+ - version: 9.0.0
23
23
  date: 2026-06-05
24
24
  changes: "Init history"
25
25
  author: aymericzip
@@ -17,7 +17,7 @@ slugs:
17
17
  - migration
18
18
  - next-intl
19
19
  history:
20
- - version: 8.13.0
20
+ - version: 9.0.0
21
21
  date: 2026-06-05
22
22
  changes: "Init history"
23
23
  author: aymericzip
@@ -18,7 +18,7 @@ slugs:
18
18
  - migration
19
19
  - nuxtjs-i18n
20
20
  history:
21
- - version: 8.13.0
21
+ - version: 9.0.0
22
22
  date: 2026-06-05
23
23
  changes: "Init history"
24
24
  author: aymericzip
@@ -18,7 +18,7 @@ slugs:
18
18
  - migration
19
19
  - react-i18next
20
20
  history:
21
- - version: 8.13.0
21
+ - version: 9.0.0
22
22
  date: 2026-06-05
23
23
  changes: "Init history"
24
24
  author: aymericzip
@@ -17,7 +17,7 @@ slugs:
17
17
  - migration
18
18
  - vue-i18n
19
19
  history:
20
- - version: 8.13.0
20
+ - version: 9.0.0
21
21
  date: 2026-06-05
22
22
  changes: "Init history"
23
23
  author: aymericzip
@@ -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: Neues Intlayer v8 - Was ist neu?
5
5
  description: Entdecken Sie die Neuerungen in Intlayer v8. Bedeutende Verbesserungen in der Developer Experience, der Inhaltsvalidierung und der Verwaltung von Dictionaries.
6
6
  keywords:
@@ -409,6 +409,16 @@ Weitere Einzelheiten finden Sie in der [Dokumentation zu HTML-Inhalten](https://
409
409
 
410
410
  ---
411
411
 
412
+ ## YAML- & Markdown-Inhaltsdateien (v8.10.0)
413
+
414
+ Sie können Inhalte jetzt direkt mit den Dateierweiterungen `.content.md` und `.content.yaml` deklarieren. Dies ist perfekt für Langform-Inhalte, Blogs, Dokumentationen und Datenschutzrichtlinien.
415
+
416
+ Diese Dateien sind vollständig über den Visual Editor bearbeitbar und bieten einen optimierten Workflow für nicht-technische Teammitglieder.
417
+
418
+ Weitere Details finden Sie in der [Dokumentation zu YAML-Inhaltsdateien](https://intlayer.org/doc/concept/content#yaml-content-file) und der [Dokumentation zu Markdown-Inhaltsdateien](https://intlayer.org/doc/concept/content/markdown).
419
+
420
+ ---
421
+
412
422
  ## Benutzerdefinierte URL-Umschreibungen (Rewrites)
413
423
 
414
424
  Intlayer v8 führt Unterstützung für **benutzerdefinierte URL-Umschreibungen** ein, mit denen Sie locale-spezifische Pfade definieren können, die von der Standardstruktur `/locale/path` abweichen. Dies ist eine leistungsstarke Funktion zur Verbesserung der lokalen SEO und bietet eine natürlichere Benutzererfahrung für nicht-englischsprachige Nutzer.
@@ -753,6 +763,68 @@ export default {
753
763
  </Tab>
754
764
  </Tabs>
755
765
 
766
+ ## Unicode CLDR Pluralregeln (v8.8.0)
767
+
768
+ Ein neuer `plural` Node-Helper wurde basierend auf den Pluralregeln des Unicode CLDR Projekts eingeführt, um die Unterstützung für komplexe Sprachen zu verbessern.
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
+ de: plural({
786
+ // Added German translation for plural example
787
+ one: "{{count}} offene Stelle",
788
+ other: "{{count}} offene Stellen",
789
+ }),
790
+ }),
791
+ },
792
+ } satisfies Dictionary;
793
+
794
+ export default openingsContent;
795
+ ```
796
+
797
+ Sie können den Zähler dann dynamisch in Ihrer Framework-Komponente übergeben:
798
+
799
+ ```tsx
800
+ import type { FC } from "react";
801
+ import { useIntlayer } from "react-intlayer";
802
+
803
+ const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
804
+ const { totalOpenings } = useIntlayer("total_openings");
805
+
806
+ return (
807
+ <div>
808
+ {/* In English: */}
809
+ {/* count=0 → "0 openings" (other) */}
810
+ {/* count=1 → "1 opening" (one) */}
811
+ {/* count=2 → "2 openings" (other) */}
812
+ {/* count=21 → "21 openings" (other) */}
813
+ {/* In German: */}
814
+ {/* count=0 → "0 offene Stellen" (other) */}
815
+ {/* count=1 → "1 offene Stelle" (one) */}
816
+ {/* count=2 → "2 offene Stellen" (other) */}
817
+ {/* count=21 → "21 offene Stellen" (other) */}
818
+ <p>{totalOpenings(count)}</p>
819
+ </div>
820
+ );
821
+ };
822
+ ```
823
+
824
+ Weitere Informationen finden Sie in der [Dokumentation zur Pluralisierung](https://intlayer.org/doc/concept/content/plural).
825
+
826
+ ---
827
+
756
828
  ## Inhalts-Schema-Validierung
757
829
 
758
830
  Intlayer v8 führt die Schema-Validierung für Dictionaries ein. Sie können jetzt wiederverwendbare Validierungsschemata in Ihrer Konfiguration mit Zod definieren und auf Ihre Inhaltsdateien anwenden. Dies stellt sicher, dass Ihr Inhalt immer der erwarteten Struktur entspricht, und fängt Fehler bereits zur Build-Zeit ab.
@@ -798,6 +870,34 @@ Wenn der Inhalt nicht mit dem Schema übereinstimmt (z. B. der Titel zu kurz ist
798
870
 
799
871
  ---
800
872
 
873
+ ## TypeScript: IntlayerNode Primitive Accessors
874
+
875
+ Der `IntlayerNode`-Typ wurde aktualisiert, um das direkte Aufrufen primitiver JavaScript-Methoden auf Inhaltsknoten zu ermöglichen. Dies macht es möglich, mit Ihren lokalisierten Inhalten direkt zu interagieren, als wären sie ein Standard-String-, Zahlen-, Boolean- oder Array-Primitiv.
876
+
877
+ Unterstützt in React, Preact, Solid, Svelte, Vue und Angular.
878
+
879
+ ### String-Beispiel
880
+
881
+ ```typescript
882
+ content.placeholder; // Gibt IntlayerNode<string> zurück
883
+ content.placeholder.value; // Gibt string zurück
884
+ content.placeholder.toString(); // Gibt string zurück
885
+ content.placeholder.toLowerCase(); // Gibt string zurück
886
+ String(content.placeholder); // Gibt string zurück
887
+ content.placeholder.toUpperCase(); // Gibt großgeschriebenen string zurück
888
+ content.placeholder.replace("a", "b"); // Gibt modifizierten string zurück
889
+ ```
890
+
891
+ ### Array-Beispiel
892
+
893
+ ```typescript
894
+ content.myArrayOfString // Gibt IntlayerNode<Array<string>> zurück
895
+ content.myArrayOfString.find(...) // Gibt Element zurück
896
+ content.myArrayOfString.join(', ') // Gibt verbundenen string zurück
897
+ ```
898
+
899
+ ---
900
+
801
901
  ### Verbesserte automatische Inhaltserkennung
802
902
 
803
903
  In v8 erkennt Intlayer intelligent Markdown-Syntax, HTML-Tags und Variablen-Insertions in Ihren Inhaltsstrings. Das bedeutet, dass Sie häufig auf Hilfsfunktionen wie `md()`, `html()` oder `insert()` verzichten können.
@@ -1003,6 +1103,17 @@ Die Intlayer VSCode-Extension erhält in v8 bedeutende Updates, um Ihren Interna
1003
1103
 
1004
1104
  ---
1005
1105
 
1106
+ ## Tooling: C++ Watcher & OXC-basierter LSP (v8.12.0)
1107
+
1108
+ Intlayer v8.12.0 bringt wesentliche Verbesserungen für die Developer Experience:
1109
+
1110
+ - **Parcel Watcher**: Der Content Watcher wurde von `chokidar` zu `@parcel/watcher` migriert, wodurch natives C++ File Watching genutzt wird, um schnellere Updates und einen deutlich geringeren Speicherverbrauch zu ermöglichen.
1111
+ - **Neues Language Server Protocol (LSP)**: Ein brandneues LSP ist jetzt verfügbar. Basierend auf OXC-Parsing hilft es Ihrer IDE und Ihren AI-Agenten, `useIntlayer('my-key')`-Aufrufe nahtlos mit den entsprechenden `.content`-Dateien zu verknüpfen und umgekehrt.
1112
+
1113
+ Weitere Details finden Sie in der [LSP-Dokumentation](https://intlayer.org/doc/lsp).
1114
+
1115
+ ---
1116
+
1006
1117
  ## Compiler-Optimierungen
1007
1118
 
1008
1119
  Intlayer v8 enthält eine neue Caching-Schicht für den Markdown- und HTML-Compiler. Dies stellt sicher, dass identische Inhaltsstrings mit derselben Konfiguration nur einmal geparst werden, was den Overhead bei Re-Renderings oder bei der Verwendung desselben Inhalts an mehreren Stellen erheblich reduziert.
@@ -1058,6 +1169,48 @@ Intlayer v8 enthält eine neue Caching-Schicht für den Markdown- und HTML-Compi
1058
1169
 
1059
1170
  ---
1060
1171
 
1172
+ ## Experimentelle Build-Optimierungen: Minify & Purge (v8.7.0)
1173
+
1174
+ Intlayer v8.7.0 führt neue experimentelle Build-Funktionen in Ihrer `intlayer.config.ts` ein, die darauf abzielen, Ihr Produktions-Bundle zu optimieren:
1175
+
1176
+ - **Dictionary Minification**: Minifiziert Dictionary-Dateien, um die Größe zu reduzieren.
1177
+ - **Unused Key Purging**: Scannt und entfernt ungenutzte Übersetzungsschlüssel aus Dictionaries und benennt aktive Schlüssel in kurze Zeichen um (z. B. `"products" -> "a"`, `"pricing" -> "b"`). Dies reduziert die Bundle-Größe um bis zu 5%.
1178
+ - **Disable TypeScript Checks**: Beschleunigt Builds, indem die TypeScript-Typüberprüfung während des Kompilierungsschritts deaktiviert wird.
1179
+
1180
+ ```typescript fileName="intlayer.config.ts"
1181
+ import { Locales, type IntlayerConfig } from "intlayer";
1182
+
1183
+ const config: IntlayerConfig = {
1184
+ internationalization: {
1185
+ locales: [Locales.ENGLISH, Locales.FRENCH],
1186
+ defaultLocale: Locales.ENGLISH,
1187
+ },
1188
+ dictionary: {
1189
+ importMode: "dynamic",
1190
+ },
1191
+ build: {
1192
+ /**
1193
+ * Minifiziert die Dictionaries, um die Bundle-Größe zu reduzieren.
1194
+ */
1195
+ minify: true,
1196
+
1197
+ /**
1198
+ * Entfernt ungenutzte Schlüssel in Dictionaries.
1199
+ */
1200
+ purge: true,
1201
+
1202
+ /**
1203
+ * Gibt an, ob der Build TypeScript-Typen überprüfen soll.
1204
+ */
1205
+ checkTypes: false,
1206
+ },
1207
+ };
1208
+
1209
+ export default config;
1210
+ ```
1211
+
1212
+ ---
1213
+
1061
1214
  ## Flexibilität: Einheitlicher Import-Modus
1062
1215
 
1063
1216
  Die boolesche Eigenschaft `live` wurde zugunsten der umfassenderen Eigenschaft `importMode` als veraltet markiert. Dies ermöglicht eine explizite Definition, wie Dictionaries geladen werden sollen: statisch, dynamisch oder via Live-Synchronisierung.
@@ -1205,6 +1358,49 @@ Markdown- und HTML-Inhalte in Svelte werden nun automatisch in HTML geparst, wen
1205
1358
 
1206
1359
  ---
1207
1360
 
1361
+ ## Angular-Unterstützung: Vite Bundler (v8.11.0)
1362
+
1363
+ Für Angular-Benutzer unterstützt Intlayer jetzt nativ den Vite Bundler durch ein neues benutzerdefiniertes esbuild-Plugin, was die Entwicklungs- und Build-Zeiten beschleunigt.
1364
+
1365
+ Details zur Konfiguration finden Sie in der [Angular Environment Dokumentation](https://intlayer.org/doc/environment/angular).
1366
+
1367
+ ---
1368
+
1369
+ ## Sitemap-Generierung (v8.6.0)
1370
+
1371
+ Intlayer generiert jetzt automatisch Sitemaps basierend auf Ihren Locales und dem Routing-Modus. Dies ist besonders nützlich für die SEO-Optimierung in Router-Architekturen wie TanStack Router:
1372
+
1373
+ ```typescript fileName="src/routes/sitemap.xml.ts"
1374
+ import { createFileRoute } from "@tanstack/react-router";
1375
+ import { generateSitemap } from "intlayer";
1376
+
1377
+ const SITE_URL = (
1378
+ import.meta.env.VITE_SITE_URL ?? "http://localhost:3000"
1379
+ ).replace(/\/$/, "");
1380
+
1381
+ export const Route = createFileRoute("/sitemap.xml")({
1382
+ server: {
1383
+ handlers: {
1384
+ GET: async () => {
1385
+ const sitemap = generateSitemap(
1386
+ [
1387
+ { path: "/", changefreq: "daily", priority: 1.0 },
1388
+ { path: "/about", changefreq: "monthly", priority: 0.8 },
1389
+ ],
1390
+ { siteUrl: SITE_URL }
1391
+ );
1392
+
1393
+ return new Response(sitemap, {
1394
+ headers: { "Content-Type": "application/xml" },
1395
+ });
1396
+ },
1397
+ },
1398
+ },
1399
+ });
1400
+ ```
1401
+
1402
+ ---
1403
+
1208
1404
  ## Migrationshinweise von v7
1209
1405
 
1210
1406
  ### Konfigurationsänderungen
@@ -0,0 +1,232 @@
1
+ ---
2
+ createdAt: 2026-06-14
3
+ updatedAt: 2026-06-14
4
+ title: Neues Intlayer v9 – Was ist neu?
5
+ description: Entdecken Sie die Neuerungen in Intlayer v9. Einführung von Drop-in-Kompatibilitätspaketen für beliebte i18n-Bibliotheken und Unterstützung für Collections, Variants und Dynamic Records.
6
+ keywords:
7
+ - Intlayer
8
+ - Compatibility
9
+ - Migration
10
+ - Collections
11
+ - Variants
12
+ - Dynamic Records
13
+ - i18next
14
+ - next-intl
15
+ - vue-i18n
16
+ slugs:
17
+ - doc
18
+ - releases
19
+ - v9
20
+ author: aymericzip
21
+ ---
22
+
23
+ # Neues Intlayer v9 – Was ist neu?
24
+
25
+ Willkommen bei Intlayer v9! Dieses Major Release markiert einen riesigen Meilenstein bei der Vereinfachung des Migrationspfads zu Intlayer mit **Compat Adapter Packages** für wichtige i18n-Bibliotheken (`react-i18next`, `next-intl`, `vue-i18n`, etc.) und fügt Unterstützung für reichhaltige Inhaltsstrukturen hinzu: **Collections**, **Variants** und **Dynamic Records**.
26
+
27
+ ## Inhaltsverzeichnis
28
+
29
+ <TOC levels={[2]} maxDepth={1} />
30
+
31
+ ---
32
+
33
+ ## Compat Adapter Packages
34
+
35
+ Die Migration von beliebten i18n-Bibliotheken zu Intlayer ist jetzt einfacher denn je. Wir haben fünf Kompatibilitätspakete erstellt, die die **exakt gleichen öffentlichen APIs** wie Standard-i18n-Bibliotheken bereitstellen, aber die gesamte Übersetzungsarbeit zur Laufzeit an Intlayer delegieren.
36
+
37
+ ### Gleiche öffentliche API mit strenger Typisierung
38
+
39
+ Durch das Ersetzen von Imports erhalten Sie alle Vorteile von Intlayer (einschließlich Compile-Time-Typsicherheit gegenüber Ihren tatsächlichen Dictionaries) mit minimalen Codeänderungen:
40
+
41
+ - `@intlayer/i18next`
42
+ - `@intlayer/react-i18next`
43
+ - `@intlayer/next-intl`
44
+ - `@intlayer/next-i18next`
45
+ - `@intlayer/vue-i18n`
46
+
47
+ Ändern Sie zum Beispiel einfach:
48
+
49
+ ```ts
50
+ import { useTranslation } from "react-i18next";
51
+ ```
52
+
53
+ zu:
54
+
55
+ ```ts
56
+ import { useTranslation } from "@intlayer/react-i18next";
57
+ ```
58
+
59
+ Ihre Keys werden nun **streng typisiert** gegenüber Ihren Intlayer-Dictionaries, was eine vollständige Dot-Path-Auto-Vervollständigung in Ihrer IDE bietet!
60
+
61
+ ### Bundler Alias Plugins (Vite, Next.js, Turbopack)
62
+
63
+ Um die Migration ohne manuelles Umschreiben aller Import-Statements zu ermöglichen, enthält jedes Compat Adapter Package ein **benutzerdefiniertes Bundler-Plugin** (Vite oder Next.js) unter dem Subpfad `/plugin`.
64
+
65
+ Diese Plugins schreiben bestehende Imports (z.B. `react-i18next` oder `next-intl`) zur Build-Zeit automatisch in ihre `@intlayer/*`-Äquivalente um.
66
+
67
+ #### Next.js (Webpack / Turbopack) Beispiel
68
+
69
+ Anstelle von `withIntlayer` umschließen Sie Ihre Next.js-Konfiguration mit dem Kompatibilitäts-Plugin:
70
+
71
+ ```ts fileName="next.config.ts"
72
+ import { createNextI18nPlugin } from "@intlayer/next-i18next/plugin";
73
+ import type { NextConfig } from "next";
74
+
75
+ const withIntlayer = createNextI18nPlugin();
76
+ const nextConfig: NextConfig = {};
77
+
78
+ export default withIntlayer(nextConfig);
79
+ ```
80
+
81
+ #### Vite (React, Vue, Solid, Svelte) Beispiel
82
+
83
+ ```ts fileName="vite.config.ts"
84
+ import vueI18nVitePlugin from "@intlayer/vue-i18n/plugin";
85
+
86
+ export default defineConfig({
87
+ plugins: [vueI18nVitePlugin()],
88
+ });
89
+ ```
90
+
91
+ ---
92
+
93
+ ## Mutualized Runtime Resolver
94
+
95
+ Alle Kompatibilitätsadapter leiten die Übersetzungsauflösung nun über einen einzigen, hochoptimierten Runtime-Parser: `@intlayer/core/messageFormat`.
96
+
97
+ - **Interpolate Message**: Löst Standard `{{var}}` (Leerzeichen & Dot-Pfade), ICU-formatierte Argumente (`{v, number, percent}` etc.) und einfache `{var}`-Templates auf.
98
+ - **Message Node Resolver**: Löst verschachtelte Nodes auf: `insert()`, `plural()` (CLDR-Pluralregeln), `enu()` (Aufzählung), `gender()`, HTML-Tags, Arrays und aufrufbare Funktions-Nodes.
99
+ - **Tokenized Tag Parser**: Unterstützt Inline-XML/HTML-Tags und nummerierte Tags (z.B. `<1>children</1>`), um Rich-Text-Rendering out-of-the-box zu ermöglichen.
100
+
101
+ ---
102
+
103
+ ## Feature Spec: Collections, Variants & Dynamic Records
104
+
105
+ Intlayer v9 geht über statische Schlüssel-Wert-Objekte hinaus und ermöglicht es Dictionaries, dynamische Layout-Strukturen zu deklarieren, die End-to-End vollständig typisiert sind.
106
+
107
+ ### 1. Collections
108
+
109
+ Definieren Sie eine CMS-verwaltete Liste geordneter Elemente (z.B. FAQs, Produkte oder Bloglisten):
110
+
111
+ ```ts fileName="faq.content.ts"
112
+ import { t, type Dictionary } from "intlayer";
113
+
114
+ export default {
115
+ key: "faq",
116
+ content: [
117
+ {
118
+ question: t({
119
+ de: "Was ist Intlayer?",
120
+ en: "What is Intlayer?",
121
+ fr: "Qu'est-ce qu'Intlayer ?",
122
+ }),
123
+ answer: t({
124
+ de: "Ein i18n-Toolkit.",
125
+ en: "An i18n toolkit.",
126
+ fr: "Une boîte à outils i18n.",
127
+ }),
128
+ },
129
+ ],
130
+ } satisfies Dictionary;
131
+ ```
132
+
133
+ #### Verwendung:
134
+
135
+ ```ts
136
+ // Alle Elemente abrufen
137
+ const allFaqs = useIntlayer("faq"); // -> { question: string, answer: string }[]
138
+
139
+ // Einzelnes Element nach Index abrufen
140
+ const faq = useIntlayer("faq", { item: 1 }); // -> { question: string, answer: string }
141
+ ```
142
+
143
+ ### 2. Variants
144
+
145
+ Liefern Sie A/B-Tests, saisonale Header, Feature Flags oder benutzerdefinierte Landing Pages:
146
+
147
+ ```ts fileName="hero.content.ts"
148
+ import { t, type Dictionary } from "intlayer";
149
+
150
+ export default {
151
+ key: "hero-banner",
152
+ variant: "default",
153
+ content: {
154
+ control: t({ de: "Willkommen", en: "Welcome", fr: "Bienvenue" }),
155
+ black_friday: t({
156
+ de: "Jetzt einkaufen",
157
+ en: "Shop now",
158
+ fr: "Acheter maintenant",
159
+ }),
160
+ },
161
+ } satisfies Dictionary;
162
+ ```
163
+
164
+ #### Verwendung:
165
+
166
+ ```ts
167
+ const banner = useIntlayer("hero-banner", { variant: "black_friday" });
168
+ ```
169
+
170
+ ### 3. Dynamic Records
171
+
172
+ Definieren Sie Dictionaries, deren Einträge zur Laufzeit dynamisch über Query-IDs geladen werden:
173
+
174
+ ```ts fileName="product.content.ts"
175
+ import { t, type Dictionary } from "intlayer";
176
+
177
+ export default {
178
+ key: "product-copy",
179
+ meta: {
180
+ id: "prod_123",
181
+ category: "books",
182
+ },
183
+ content: {
184
+ title: t({ de: "Clean Code", en: "Clean Code", fr: "Code Propre" }),
185
+ },
186
+ } satisfies Dictionary;
187
+ ```
188
+
189
+ #### Verwendung:
190
+
191
+ ```ts
192
+ // Ruft nur das angeforderte Element dynamisch ab (erfordert Suspense)
193
+ const product = useIntlayer("product-copy", {
194
+ id: "prod_123",
195
+ category: "books",
196
+ });
197
+ ```
198
+
199
+ ---
200
+
201
+ ## Dynamisches Laden & Optimierungen der Bundle-Größe
202
+
203
+ Um Bundles extrem klein zu halten, unterstützt Intlayer v9 dynamisches Lazy Loading.
204
+
205
+ Stellen Sie in Ihrer Konfiguration `importMode` auf `'dynamic'` oder `'fetch'` ein:
206
+
207
+ ```ts fileName="intlayer.config.ts"
208
+ export default {
209
+ dictionary: {
210
+ importMode: "dynamic", // "static" | "dynamic" | "fetch"
211
+ },
212
+ };
213
+ ```
214
+
215
+ Zur Build-Zeit scannen `@intlayer/swc` und `@intlayer/babel` Ihre Dateien und ersetzen `useIntlayer` / `getIntlayer`-Aufrufe durch tree-shakeable Wrapper (`useDictionary` / `useDictionaryDynamic`). Nur der für das ausgewählte Collection-Element, die Variante oder das Locale erforderliche Inhalt wird geladen, wodurch verhindert wird, dass Ihr Produktions-Bundle ungenutzte Übersetzungen enthält.
216
+
217
+ ---
218
+
219
+ ## Migrationshinweise von v8
220
+
221
+ Wenn Sie von v8 upgraden, beachten Sie, dass v9 keine Breaking Changes enthält. Hier sind jedoch die wichtigsten Änderungen:
222
+
223
+ - **Locales & Dialects**: Wenn Sie externe i18n-Abhängigkeiten verwenden, fügen Sie deren entsprechende Kompatibilitätsadapter-Plugins in Ihrer Konfiguration oder Ihrem Bundler-Setup hinzu, um Imports automatisch umzuschreiben.
224
+ - **Custom Selectors**: Beim Aufruf von `useIntlayer` ist der zweite Parameter nun für ein Options-Objekt reserviert, das `{ locale, item, variant, id }` enthält. Wenn Sie zuvor direkt einen Locale-String übergeben haben, können Sie dies weiterhin tun, aber die Verwendung des Options-Objekts wird für erweiterte Auswahlen empfohlen.
225
+
226
+ ---
227
+
228
+ ## Nützliche Links
229
+
230
+ - [Leitfaden für Compat Adapter Packages](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/compat/index.md)
231
+ - [Dynamische Dictionaries – Collections, Variants & Dynamic Records](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dynamic_dictionaries/index.md)
232
+ - [Konfigurationsreferenz](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md)
package/docs/en/CI_CD.md CHANGED
@@ -93,7 +93,7 @@ export default config;
93
93
 
94
94
  ```bash fileName=".husky/pre-push"
95
95
  npx intlayer build # To ensure dictionaries are up to date
96
- npx intlayer fill --unpushed --mode fill # Only fill missing content, does not update existing ones
96
+ npx intlayer fill --unpushed --mode complete # Only fill missing content, does not update existing ones
97
97
  ```
98
98
 
99
99
  > For more information about Intlayer CLI commands and their usage, refer to the [CLI documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/index.md).
@@ -103,11 +103,11 @@ npx intlayer fill --unpushed --mode fill # Only fill missing content, does no
103
103
  ```bash fileName=".husky/pre-push"
104
104
  # App 1
105
105
  npx intlayer build --base-dir ./app1
106
- npx intlayer fill --base-dir ./app1 --unpushed --mode fill
106
+ npx intlayer fill --base-dir ./app1 --unpushed --mode complete
107
107
 
108
108
  # App 2
109
109
  npx intlayer build --base-dir ./app2
110
- npx intlayer fill --base-dir ./app2 --unpushed --mode fill
110
+ npx intlayer fill --base-dir ./app2 --unpushed --mode complete
111
111
  ```
112
112
 
113
113
  ## Using GitHub Actions
@@ -135,8 +135,8 @@ jobs:
135
135
  runs-on: ubuntu-latest
136
136
  env:
137
137
  # OpenAI
138
- AI_MODEL: openai
139
- AI_PROVIDER: gpt-5-mini
138
+ AI_PROVIDER: openai
139
+ AI_MODEL: gpt-5-mini
140
140
  AI_API_KEY: ${{ secrets.AI_API_KEY }}
141
141
 
142
142
  steps:
@@ -167,10 +167,10 @@ jobs:
167
167
 
168
168
  # Step 6: Use AI to automatically fill missing translations
169
169
  - name: 🤖 Auto-fill missing translations
170
- run: npx intlayer fill --git-diff --mode fill --provider $AI_PROVIDER --model $AI_MODEL --api-key $AI_API_KEY
170
+ run: npx intlayer fill --git-diff --mode complete --provider $AI_PROVIDER --model $AI_MODEL --api-key $AI_API_KEY
171
171
 
172
172
  # Step 7: Check if there are changes and commit them
173
- - name: Check for changes
173
+ - name: 🔍 Check for changes
174
174
  id: check-changes
175
175
  run: |
176
176
  if [ -n "$(git status --porcelain)" ]; then
package/docs/en/cli/ci.md CHANGED
@@ -128,18 +128,72 @@ bun x intlayer ci fill --verbose --mode complete
128
128
 
129
129
  ### Use in CI/CD pipelines
130
130
 
131
- In your CI/CD configuration (e.g., GitHub Actions, GitLab CI), set the `INTLAYER_PROJECT_CREDENTIALS` as a secret:
131
+ Running `intlayer init` scaffolds two ready-to-use GitHub Actions workflows for you (see [Scaffolded GitHub Actions](#scaffolded-github-actions) below). The example here shows the equivalent setup using the `ci` command for a monorepo, where credentials are injected per project from `INTLAYER_PROJECT_CREDENTIALS`.
132
+
133
+ > **AI access**: The `fill` command needs AI access to generate translations. The credentials injected by `ci` from `INTLAYER_PROJECT_CREDENTIALS` (Intlayer CMS access keys) grant AI access through the Intlayer backend, so no separate AI provider key is required. If you prefer to use your own provider key instead, pass `--provider`, `--model`, and `--api-key` to `intlayer ci fill`. The `test` command does not require AI access.
134
+
135
+ ```yaml fileName=".github/workflows/intlayer-ci.yml"
136
+ name: Intlayer CI
137
+
138
+ on:
139
+ pull_request:
140
+ branches:
141
+ - main
142
+
143
+ permissions:
144
+ contents: write
145
+ pull-requests: write
146
+
147
+ jobs:
148
+ intlayer:
149
+ runs-on: ubuntu-latest
150
+ env:
151
+ # CMS access keys per project. They also grant AI access for `fill`.
152
+ INTLAYER_PROJECT_CREDENTIALS: ${{ secrets.INTLAYER_PROJECT_CREDENTIALS }}
153
+ steps:
154
+ - name: ⬇️ Checkout repository
155
+ uses: actions/checkout@v4
156
+ with:
157
+ persist-credentials: true
158
+ fetch-depth: 0
159
+
160
+ - name: 🟢 Setup Node.js
161
+ uses: actions/setup-node@v4
162
+ with:
163
+ node-version: 20
164
+
165
+ - name: 📦 Install dependencies
166
+ run: npm ci
167
+
168
+ - name: 🤖 Fill missing translations
169
+ run: npx intlayer ci fill --git-diff --mode complete
170
+
171
+ - name: 🧪 Test for missing translations
172
+ run: npx intlayer ci test
173
+ ```
174
+
175
+ ## Scaffolded GitHub Actions
176
+
177
+ When you run `intlayer init`, Intlayer detects your package manager (npm, yarn, pnpm, or bun) and scaffolds two GitHub Actions workflows under `.github/workflows/`, with commands matching that package manager:
132
178
 
133
- ```yaml
134
- # GitHub Actions example
135
- env:
136
- INTLAYER_PROJECT_CREDENTIALS: ${{ secrets.INTLAYER_PROJECT_CREDENTIALS }}
179
+ - **`intlayer-fill.yml`** — On every pull request, builds the dictionaries and runs `intlayer fill --git-diff --mode complete` to generate missing translations for the changed dictionaries, then commits the result back to the PR branch.
180
+ - **`intlayer-test.yml`** On every pull request, builds the dictionaries and runs `intlayer test`, failing the check when required locales are missing translations.
137
181
 
138
- steps:
139
- - name: Fill dictionaries
140
- run: npx intlayer ci fill
182
+ Existing workflow files are never overwritten. To skip scaffolding entirely, run:
183
+
184
+ ```bash
185
+ npx intlayer init --no-github-actions
141
186
  ```
142
187
 
188
+ ### Providing AI access to the fill workflow
189
+
190
+ The scaffolded `intlayer-fill.yml` requires AI access. Two options are available (configured in the workflow's `env` block):
191
+
192
+ 1. **Your own AI provider key** — Add an `AI_API_KEY` secret in your repository settings (Settings → Secrets and variables → Actions). The workflow forwards it via `--provider`, `--model`, and `--api-key`.
193
+ 2. **Intlayer CMS access keys** — Add `INTLAYER_CLIENT_ID` and `INTLAYER_CLIENT_SECRET` secrets and wire them into your `intlayer.config` `editor` section. CMS access keys grant AI access through the Intlayer backend.
194
+
195
+ The `intlayer-test.yml` workflow does not require any AI access.
196
+
143
197
  ## Error Handling
144
198
 
145
199
  - If `INTLAYER_PROJECT_CREDENTIALS` is not set, the command will exit with an error.