@intlayer/docs 5.8.1 → 6.0.0-canary.1

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 (378) hide show
  1. package/blog/ar/rag_powered_documentation_assistant.md +282 -0
  2. package/blog/de/rag_powered_documentation_assistant.md +282 -0
  3. package/blog/en/rag_powered_documentation_assistant.md +289 -0
  4. package/blog/en-GB/rag_powered_documentation_assistant.md +284 -0
  5. package/blog/es/rag_powered_documentation_assistant.md +308 -0
  6. package/blog/fr/rag_powered_documentation_assistant.md +308 -0
  7. package/blog/hi/rag_powered_documentation_assistant.md +284 -0
  8. package/blog/it/rag_powered_documentation_assistant.md +284 -0
  9. package/blog/ja/rag_powered_documentation_assistant.md +284 -0
  10. package/blog/ko/rag_powered_documentation_assistant.md +283 -0
  11. package/blog/pt/rag_powered_documentation_assistant.md +284 -0
  12. package/blog/ru/rag_powered_documentation_assistant.md +284 -0
  13. package/blog/tr/index.md +69 -0
  14. package/blog/tr/internationalization_and_SEO.md +273 -0
  15. package/blog/tr/intlayer_with_i18next.md +162 -0
  16. package/blog/tr/intlayer_with_next-i18next.md +367 -0
  17. package/blog/tr/intlayer_with_next-intl.md +392 -0
  18. package/blog/tr/intlayer_with_react-i18next.md +346 -0
  19. package/blog/tr/intlayer_with_react-intl.md +345 -0
  20. package/blog/tr/list_i18n_technologies/CMS/drupal.md +143 -0
  21. package/blog/tr/list_i18n_technologies/CMS/wix.md +167 -0
  22. package/blog/tr/list_i18n_technologies/CMS/wordpress.md +188 -0
  23. package/blog/tr/list_i18n_technologies/frameworks/angular.md +125 -0
  24. package/blog/tr/list_i18n_technologies/frameworks/flutter.md +150 -0
  25. package/blog/tr/list_i18n_technologies/frameworks/react-native.md +217 -0
  26. package/blog/tr/list_i18n_technologies/frameworks/react.md +155 -0
  27. package/blog/tr/list_i18n_technologies/frameworks/svelte.md +129 -0
  28. package/blog/tr/list_i18n_technologies/frameworks/vue.md +130 -0
  29. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +170 -0
  30. package/blog/tr/rag_powered_documentation_assistant.md +284 -0
  31. package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +162 -0
  32. package/blog/tr/vue-i18n_vs_intlayer.md +276 -0
  33. package/blog/tr/what_is_internationalization.md +166 -0
  34. package/blog/zh/rag_powered_documentation_assistant.md +284 -0
  35. package/dist/cjs/generated/blog.entry.cjs +212 -0
  36. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  37. package/dist/cjs/generated/docs.entry.cjs +660 -132
  38. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  39. package/dist/cjs/generated/frequentQuestions.entry.cjs +84 -0
  40. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  41. package/dist/cjs/generated/legal.entry.cjs +6 -0
  42. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  43. package/dist/esm/generated/blog.entry.mjs +212 -0
  44. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  45. package/dist/esm/generated/docs.entry.mjs +660 -132
  46. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  47. package/dist/esm/generated/frequentQuestions.entry.mjs +84 -0
  48. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  49. package/dist/esm/generated/legal.entry.mjs +6 -0
  50. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  51. package/dist/types/generated/blog.entry.d.ts +1 -0
  52. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  53. package/dist/types/generated/docs.entry.d.ts +5 -2
  54. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  55. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  56. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  57. package/docs/ar/autoFill.md +41 -40
  58. package/docs/ar/configuration.md +202 -199
  59. package/docs/ar/dictionary/content_file.md +1059 -0
  60. package/docs/ar/intlayer_CMS.md +4 -4
  61. package/docs/ar/intlayer_with_nestjs.md +271 -0
  62. package/docs/ar/intlayer_with_nextjs_page_router.md +1 -1
  63. package/docs/ar/intlayer_with_react_router_v7.md +533 -0
  64. package/docs/ar/intlayer_with_tanstack.md +465 -299
  65. package/docs/ar/intlayer_with_vite+preact.md +7 -7
  66. package/docs/ar/intlayer_with_vite+react.md +7 -7
  67. package/docs/ar/intlayer_with_vite+vue.md +9 -9
  68. package/docs/ar/packages/vite-intlayer/index.md +3 -3
  69. package/docs/ar/readme.md +261 -0
  70. package/docs/ar/testing.md +199 -0
  71. package/docs/de/autoFill.md +42 -19
  72. package/docs/de/configuration.md +155 -147
  73. package/docs/de/dictionary/content_file.md +1059 -0
  74. package/docs/de/intlayer_CMS.md +4 -5
  75. package/docs/de/intlayer_with_nestjs.md +270 -0
  76. package/docs/de/intlayer_with_nextjs_page_router.md +1 -1
  77. package/docs/de/intlayer_with_react_router_v7.md +537 -0
  78. package/docs/de/intlayer_with_tanstack.md +469 -302
  79. package/docs/de/intlayer_with_vite+preact.md +7 -7
  80. package/docs/de/intlayer_with_vite+react.md +7 -7
  81. package/docs/de/intlayer_with_vite+vue.md +9 -9
  82. package/docs/de/packages/vite-intlayer/index.md +3 -3
  83. package/docs/de/readme.md +261 -0
  84. package/docs/de/testing.md +200 -0
  85. package/docs/en/CI_CD.md +4 -6
  86. package/docs/en/autoFill.md +25 -5
  87. package/docs/en/configuration.md +45 -54
  88. package/docs/en/dictionary/content_file.md +1054 -0
  89. package/docs/en/intlayer_CMS.md +8 -7
  90. package/docs/en/intlayer_cli.md +112 -5
  91. package/docs/en/intlayer_with_nestjs.md +268 -0
  92. package/docs/en/intlayer_with_nextjs_page_router.md +1 -1
  93. package/docs/en/intlayer_with_react_router_v7.md +531 -0
  94. package/docs/en/intlayer_with_tanstack.md +463 -294
  95. package/docs/en/intlayer_with_vite+preact.md +8 -8
  96. package/docs/en/intlayer_with_vite+react.md +8 -8
  97. package/docs/en/intlayer_with_vite+vue.md +8 -8
  98. package/docs/en/packages/intlayer/getLocalizedUrl.md +102 -25
  99. package/docs/en/packages/vite-intlayer/index.md +3 -3
  100. package/docs/en/readme.md +261 -0
  101. package/docs/en/testing.md +200 -0
  102. package/docs/en-GB/autoFill.md +29 -6
  103. package/docs/en-GB/configuration.md +79 -71
  104. package/docs/en-GB/dictionary/content_file.md +1084 -0
  105. package/docs/en-GB/intlayer_CMS.md +4 -5
  106. package/docs/en-GB/intlayer_with_nestjs.md +268 -0
  107. package/docs/en-GB/intlayer_with_nextjs_page_router.md +1 -1
  108. package/docs/en-GB/intlayer_with_react_router_v7.md +533 -0
  109. package/docs/en-GB/intlayer_with_tanstack.md +466 -299
  110. package/docs/en-GB/intlayer_with_vite+preact.md +7 -7
  111. package/docs/en-GB/intlayer_with_vite+react.md +7 -7
  112. package/docs/en-GB/intlayer_with_vite+vue.md +9 -9
  113. package/docs/en-GB/packages/vite-intlayer/index.md +3 -3
  114. package/docs/en-GB/readme.md +261 -0
  115. package/docs/en-GB/testing.md +200 -0
  116. package/docs/es/autoFill.md +45 -23
  117. package/docs/es/configuration.md +171 -167
  118. package/docs/es/dictionary/content_file.md +1088 -0
  119. package/docs/es/intlayer_CMS.md +4 -5
  120. package/docs/es/intlayer_with_nestjs.md +268 -0
  121. package/docs/es/intlayer_with_nextjs_page_router.md +1 -1
  122. package/docs/es/intlayer_with_react_router_v7.md +533 -0
  123. package/docs/es/intlayer_with_tanstack.md +469 -280
  124. package/docs/es/intlayer_with_vite+preact.md +7 -7
  125. package/docs/es/intlayer_with_vite+react.md +7 -7
  126. package/docs/es/intlayer_with_vite+vue.md +9 -9
  127. package/docs/es/packages/vite-intlayer/index.md +3 -3
  128. package/docs/es/readme.md +261 -0
  129. package/docs/es/testing.md +200 -0
  130. package/docs/fr/autoFill.md +47 -24
  131. package/docs/fr/configuration.md +213 -198
  132. package/docs/fr/dictionary/content_file.md +1054 -0
  133. package/docs/fr/intlayer_CMS.md +4 -5
  134. package/docs/fr/intlayer_with_nestjs.md +268 -0
  135. package/docs/fr/intlayer_with_nextjs_page_router.md +1 -1
  136. package/docs/fr/intlayer_with_react_router_v7.md +549 -0
  137. package/docs/fr/intlayer_with_tanstack.md +465 -279
  138. package/docs/fr/intlayer_with_vite+preact.md +7 -7
  139. package/docs/fr/intlayer_with_vite+react.md +7 -7
  140. package/docs/fr/intlayer_with_vite+vue.md +9 -9
  141. package/docs/fr/packages/vite-intlayer/index.md +3 -3
  142. package/docs/fr/readme.md +261 -0
  143. package/docs/fr/testing.md +200 -0
  144. package/docs/hi/autoFill.md +47 -25
  145. package/docs/hi/configuration.md +194 -189
  146. package/docs/hi/dictionary/content_file.md +1056 -0
  147. package/docs/hi/intlayer_CMS.md +4 -5
  148. package/docs/hi/intlayer_with_nestjs.md +269 -0
  149. package/docs/hi/intlayer_with_nextjs_page_router.md +1 -1
  150. package/docs/hi/intlayer_with_react_router_v7.md +533 -0
  151. package/docs/hi/intlayer_with_tanstack.md +467 -282
  152. package/docs/hi/intlayer_with_vite+preact.md +7 -7
  153. package/docs/hi/intlayer_with_vite+react.md +7 -7
  154. package/docs/hi/intlayer_with_vite+vue.md +9 -9
  155. package/docs/hi/packages/vite-intlayer/index.md +3 -3
  156. package/docs/hi/readme.md +261 -0
  157. package/docs/hi/testing.md +200 -0
  158. package/docs/it/autoFill.md +46 -24
  159. package/docs/it/configuration.md +169 -161
  160. package/docs/it/dictionary/content_file.md +1061 -0
  161. package/docs/it/intlayer_CMS.md +4 -5
  162. package/docs/it/intlayer_with_nestjs.md +268 -0
  163. package/docs/it/intlayer_with_nextjs_page_router.md +1 -1
  164. package/docs/it/intlayer_with_react_router_v7.md +535 -0
  165. package/docs/it/intlayer_with_tanstack.md +467 -301
  166. package/docs/it/intlayer_with_vite+preact.md +7 -7
  167. package/docs/it/intlayer_with_vite+react.md +7 -7
  168. package/docs/it/intlayer_with_vite+vue.md +9 -9
  169. package/docs/it/packages/vite-intlayer/index.md +3 -3
  170. package/docs/it/readme.md +261 -0
  171. package/docs/it/testing.md +200 -0
  172. package/docs/ja/autoFill.md +45 -23
  173. package/docs/ja/configuration.md +243 -204
  174. package/docs/ja/dictionary/content_file.md +1064 -0
  175. package/docs/ja/intlayer_CMS.md +4 -5
  176. package/docs/ja/intlayer_with_nestjs.md +268 -0
  177. package/docs/ja/intlayer_with_nextjs_page_router.md +1 -1
  178. package/docs/ja/intlayer_with_react_router_v7.md +534 -0
  179. package/docs/ja/intlayer_with_tanstack.md +467 -303
  180. package/docs/ja/intlayer_with_vite+preact.md +7 -7
  181. package/docs/ja/intlayer_with_vite+react.md +7 -7
  182. package/docs/ja/intlayer_with_vite+vue.md +9 -9
  183. package/docs/ja/packages/vite-intlayer/index.md +3 -3
  184. package/docs/ja/readme.md +263 -0
  185. package/docs/ja/testing.md +200 -0
  186. package/docs/ko/autoFill.md +39 -16
  187. package/docs/ko/configuration.md +217 -197
  188. package/docs/ko/dictionary/content_file.md +1060 -0
  189. package/docs/ko/intlayer_CMS.md +4 -5
  190. package/docs/ko/intlayer_with_nestjs.md +268 -0
  191. package/docs/ko/intlayer_with_nextjs_page_router.md +1 -1
  192. package/docs/ko/intlayer_with_react_router_v7.md +540 -0
  193. package/docs/ko/intlayer_with_tanstack.md +466 -302
  194. package/docs/ko/intlayer_with_vite+preact.md +7 -7
  195. package/docs/ko/intlayer_with_vite+react.md +7 -7
  196. package/docs/ko/intlayer_with_vite+vue.md +9 -9
  197. package/docs/ko/packages/vite-intlayer/index.md +3 -3
  198. package/docs/ko/readme.md +261 -0
  199. package/docs/ko/testing.md +200 -0
  200. package/docs/pt/autoFill.md +39 -15
  201. package/docs/pt/configuration.md +165 -147
  202. package/docs/pt/dictionary/content_file.md +1062 -0
  203. package/docs/pt/intlayer_CMS.md +4 -5
  204. package/docs/pt/intlayer_with_nestjs.md +271 -0
  205. package/docs/pt/intlayer_with_nextjs_page_router.md +1 -1
  206. package/docs/pt/intlayer_with_react_router_v7.md +535 -0
  207. package/docs/pt/intlayer_with_tanstack.md +469 -300
  208. package/docs/pt/intlayer_with_vite+preact.md +7 -7
  209. package/docs/pt/intlayer_with_vite+react.md +7 -7
  210. package/docs/pt/intlayer_with_vite+vue.md +9 -9
  211. package/docs/pt/packages/vite-intlayer/index.md +3 -3
  212. package/docs/pt/readme.md +261 -0
  213. package/docs/pt/testing.md +200 -0
  214. package/docs/ru/autoFill.md +52 -30
  215. package/docs/ru/configuration.md +164 -117
  216. package/docs/ru/dictionary/content_file.md +1064 -0
  217. package/docs/ru/intlayer_CMS.md +4 -4
  218. package/docs/ru/intlayer_with_nestjs.md +270 -0
  219. package/docs/ru/intlayer_with_nextjs_page_router.md +1 -1
  220. package/docs/ru/intlayer_with_react_router_v7.md +534 -0
  221. package/docs/ru/intlayer_with_tanstack.md +470 -305
  222. package/docs/ru/intlayer_with_vite+preact.md +7 -7
  223. package/docs/ru/intlayer_with_vite+react.md +7 -7
  224. package/docs/ru/intlayer_with_vite+vue.md +9 -9
  225. package/docs/ru/packages/vite-intlayer/index.md +3 -3
  226. package/docs/ru/readme.md +261 -0
  227. package/docs/ru/testing.md +202 -0
  228. package/docs/tr/CI_CD.md +198 -0
  229. package/docs/tr/autoFill.md +201 -0
  230. package/docs/tr/configuration.md +585 -0
  231. package/docs/tr/dictionary/condition.md +243 -0
  232. package/docs/tr/dictionary/content_file.md +1055 -0
  233. package/docs/tr/dictionary/enumeration.md +251 -0
  234. package/docs/tr/dictionary/file.md +228 -0
  235. package/docs/tr/dictionary/function_fetching.md +218 -0
  236. package/docs/tr/dictionary/gender.md +279 -0
  237. package/docs/tr/dictionary/insertion.md +191 -0
  238. package/docs/tr/dictionary/markdown.md +385 -0
  239. package/docs/tr/dictionary/nesting.md +279 -0
  240. package/docs/tr/dictionary/translation.md +315 -0
  241. package/docs/tr/formatters.md +618 -0
  242. package/docs/tr/how_works_intlayer.md +254 -0
  243. package/docs/tr/index.md +168 -0
  244. package/docs/tr/interest_of_intlayer.md +288 -0
  245. package/docs/tr/intlayer_CMS.md +347 -0
  246. package/docs/tr/intlayer_cli.md +570 -0
  247. package/docs/tr/intlayer_visual_editor.md +269 -0
  248. package/docs/tr/intlayer_with_angular.md +694 -0
  249. package/docs/tr/intlayer_with_create_react_app.md +1218 -0
  250. package/docs/tr/intlayer_with_express.md +415 -0
  251. package/docs/tr/intlayer_with_lynx+react.md +511 -0
  252. package/docs/tr/intlayer_with_nestjs.md +268 -0
  253. package/docs/tr/intlayer_with_nextjs_14.md +1029 -0
  254. package/docs/tr/intlayer_with_nextjs_15.md +1506 -0
  255. package/docs/tr/intlayer_with_nextjs_page_router.md +1484 -0
  256. package/docs/tr/intlayer_with_nuxt.md +773 -0
  257. package/docs/tr/intlayer_with_react_native+expo.md +660 -0
  258. package/docs/tr/intlayer_with_react_router_v7.md +531 -0
  259. package/docs/tr/intlayer_with_tanstack.md +452 -0
  260. package/docs/tr/intlayer_with_vite+preact.md +1673 -0
  261. package/docs/tr/intlayer_with_vite+react.md +1632 -0
  262. package/docs/tr/intlayer_with_vite+solid.md +288 -0
  263. package/docs/tr/intlayer_with_vite+svelte.md +288 -0
  264. package/docs/tr/intlayer_with_vite+vue.md +1042 -0
  265. package/docs/tr/introduction.md +209 -0
  266. package/docs/tr/locale_mapper.md +244 -0
  267. package/docs/tr/mcp_server.md +207 -0
  268. package/docs/tr/packages/@intlayer/api/index.md +58 -0
  269. package/docs/tr/packages/@intlayer/chokidar/index.md +57 -0
  270. package/docs/tr/packages/@intlayer/cli/index.md +47 -0
  271. package/docs/tr/packages/@intlayer/config/index.md +142 -0
  272. package/docs/tr/packages/@intlayer/core/index.md +51 -0
  273. package/docs/tr/packages/@intlayer/design-system/index.md +47 -0
  274. package/docs/tr/packages/@intlayer/dictionary-entry/index.md +53 -0
  275. package/docs/tr/packages/@intlayer/editor/index.md +47 -0
  276. package/docs/tr/packages/@intlayer/editor-react/index.md +47 -0
  277. package/docs/tr/packages/@intlayer/webpack/index.md +61 -0
  278. package/docs/tr/packages/angular-intlayer/index.md +59 -0
  279. package/docs/tr/packages/express-intlayer/index.md +258 -0
  280. package/docs/tr/packages/express-intlayer/t.md +459 -0
  281. package/docs/tr/packages/intlayer/getConfiguration.md +151 -0
  282. package/docs/tr/packages/intlayer/getEnumeration.md +165 -0
  283. package/docs/tr/packages/intlayer/getHTMLTextDir.md +127 -0
  284. package/docs/tr/packages/intlayer/getLocaleLang.md +87 -0
  285. package/docs/tr/packages/intlayer/getLocaleName.md +124 -0
  286. package/docs/tr/packages/intlayer/getLocalizedUrl.md +324 -0
  287. package/docs/tr/packages/intlayer/getMultilingualUrls.md +225 -0
  288. package/docs/tr/packages/intlayer/getPathWithoutLocale.md +81 -0
  289. package/docs/tr/packages/intlayer/getTranslation.md +196 -0
  290. package/docs/tr/packages/intlayer/getTranslationContent.md +195 -0
  291. package/docs/tr/packages/intlayer/index.md +505 -0
  292. package/docs/tr/packages/intlayer-cli/index.md +71 -0
  293. package/docs/tr/packages/intlayer-editor/index.md +139 -0
  294. package/docs/tr/packages/lynx-intlayer/index.md +85 -0
  295. package/docs/tr/packages/next-intlayer/index.md +154 -0
  296. package/docs/tr/packages/next-intlayer/t.md +354 -0
  297. package/docs/tr/packages/next-intlayer/useDictionary.md +270 -0
  298. package/docs/tr/packages/next-intlayer/useIntlayer.md +265 -0
  299. package/docs/tr/packages/next-intlayer/useLocale.md +133 -0
  300. package/docs/tr/packages/nuxt-intlayer/index.md +59 -0
  301. package/docs/tr/packages/preact-intlayer/index.md +55 -0
  302. package/docs/tr/packages/react-intlayer/index.md +148 -0
  303. package/docs/tr/packages/react-intlayer/t.md +304 -0
  304. package/docs/tr/packages/react-intlayer/useDictionary.md +554 -0
  305. package/docs/tr/packages/react-intlayer/useI18n.md +478 -0
  306. package/docs/tr/packages/react-intlayer/useIntlayer.md +253 -0
  307. package/docs/tr/packages/react-intlayer/useLocale.md +212 -0
  308. package/docs/tr/packages/react-native-intlayer/index.md +85 -0
  309. package/docs/tr/packages/react-scripts-intlayer/index.md +82 -0
  310. package/docs/tr/packages/solid-intlayer/index.md +56 -0
  311. package/docs/tr/packages/svelte-intlayer/index.md +55 -0
  312. package/docs/tr/packages/vite-intlayer/index.md +82 -0
  313. package/docs/tr/packages/vue-intlayer/index.md +59 -0
  314. package/docs/tr/per_locale_file.md +321 -0
  315. package/docs/tr/readme.md +261 -0
  316. package/docs/tr/roadmap.md +338 -0
  317. package/docs/tr/testing.md +200 -0
  318. package/docs/tr/vs_code_extension.md +154 -0
  319. package/docs/zh/autoFill.md +40 -18
  320. package/docs/zh/configuration.md +245 -226
  321. package/docs/zh/dictionary/content_file.md +1064 -0
  322. package/docs/zh/intlayer_CMS.md +4 -5
  323. package/docs/zh/intlayer_with_nestjs.md +268 -0
  324. package/docs/zh/intlayer_with_nextjs_page_router.md +1 -1
  325. package/docs/zh/intlayer_with_react_router_v7.md +535 -0
  326. package/docs/zh/intlayer_with_tanstack.md +468 -278
  327. package/docs/zh/intlayer_with_vite+preact.md +7 -7
  328. package/docs/zh/intlayer_with_vite+react.md +7 -7
  329. package/docs/zh/intlayer_with_vite+vue.md +7 -7
  330. package/docs/zh/packages/vite-intlayer/index.md +3 -3
  331. package/docs/zh/readme.md +261 -0
  332. package/docs/zh/testing.md +198 -0
  333. package/frequent_questions/tr/SSR_Next_no_[locale].md +105 -0
  334. package/frequent_questions/tr/array_as_content_declaration.md +72 -0
  335. package/frequent_questions/tr/build_dictionaries.md +59 -0
  336. package/frequent_questions/tr/build_error_CI_CD.md +75 -0
  337. package/frequent_questions/tr/customized_locale_list.md +65 -0
  338. package/frequent_questions/tr/domain_routing.md +114 -0
  339. package/frequent_questions/tr/esbuild_error.md +30 -0
  340. package/frequent_questions/tr/get_locale_cookie.md +142 -0
  341. package/frequent_questions/tr/intlayer_command_undefined.md +156 -0
  342. package/frequent_questions/tr/locale_incorect_in_url.md +74 -0
  343. package/frequent_questions/tr/static_rendering.md +45 -0
  344. package/frequent_questions/tr/translated_path_url.md +56 -0
  345. package/frequent_questions/tr/unknown_command.md +98 -0
  346. package/legal/tr/privacy_notice.md +83 -0
  347. package/legal/tr/terms_of_service.md +55 -0
  348. package/package.json +12 -12
  349. package/src/generated/blog.entry.ts +212 -0
  350. package/src/generated/docs.entry.ts +663 -135
  351. package/src/generated/frequentQuestions.entry.ts +85 -1
  352. package/src/generated/legal.entry.ts +7 -1
  353. package/docs/ar/dictionary/content_extention_customization.md +0 -100
  354. package/docs/ar/dictionary/get_started.md +0 -527
  355. package/docs/de/dictionary/content_extention_customization.md +0 -100
  356. package/docs/de/dictionary/get_started.md +0 -531
  357. package/docs/en/dictionary/content_extention_customization.md +0 -102
  358. package/docs/en/dictionary/get_started.md +0 -529
  359. package/docs/en-GB/dictionary/content_extention_customization.md +0 -100
  360. package/docs/en-GB/dictionary/get_started.md +0 -591
  361. package/docs/es/dictionary/content_extention_customization.md +0 -100
  362. package/docs/es/dictionary/get_started.md +0 -527
  363. package/docs/fr/dictionary/content_extention_customization.md +0 -100
  364. package/docs/fr/dictionary/get_started.md +0 -527
  365. package/docs/hi/dictionary/content_extention_customization.md +0 -100
  366. package/docs/hi/dictionary/get_started.md +0 -527
  367. package/docs/it/dictionary/content_extention_customization.md +0 -113
  368. package/docs/it/dictionary/get_started.md +0 -573
  369. package/docs/ja/dictionary/content_extention_customization.md +0 -113
  370. package/docs/ja/dictionary/get_started.md +0 -576
  371. package/docs/ko/dictionary/content_extention_customization.md +0 -100
  372. package/docs/ko/dictionary/get_started.md +0 -530
  373. package/docs/pt/dictionary/content_extention_customization.md +0 -100
  374. package/docs/pt/dictionary/get_started.md +0 -532
  375. package/docs/ru/dictionary/content_extention_customization.md +0 -100
  376. package/docs/ru/dictionary/get_started.md +0 -575
  377. package/docs/zh/dictionary/content_extention_customization.md +0 -117
  378. package/docs/zh/dictionary/get_started.md +0 -533
@@ -0,0 +1,1059 @@
1
+ ---
2
+ createdAt: 2025-02-07
3
+ updatedAt: 2025-09-20
4
+ title: Inhaltsdatei
5
+ description: Erfahren Sie, wie Sie die Erweiterungen für Ihre Inhaltsdeklarationsdateien anpassen können. Folgen Sie dieser Dokumentation, um Bedingungen effizient in Ihrem Projekt umzusetzen.
6
+ keywords:
7
+ - Inhaltsdatei
8
+ - Dokumentation
9
+ - Intlayer
10
+ slugs:
11
+ - doc
12
+ - concept
13
+ - content
14
+ ---
15
+
16
+ # Inhaltsdatei
17
+
18
+ <iframe title="i18n, Markdown, JSON… eine einzige Lösung, um alles zu verwalten | Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/1VHgSY_j9_I?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
19
+
20
+ ## Was ist eine Inhaltsdatei?
21
+
22
+ Eine Inhaltsdatei in Intlayer ist eine Datei, die Wörterbuchdefinitionen enthält.
23
+ Diese Dateien deklarieren den Textinhalt, die Übersetzungen und Ressourcen Ihrer Anwendung.
24
+ Inhaltsdateien werden von Intlayer verarbeitet, um Wörterbücher zu generieren.
25
+
26
+ Die Wörterbücher sind das Endergebnis, das Ihre Anwendung mit dem `useIntlayer` Hook importieren wird.
27
+
28
+ ### Schlüsselkonzepte
29
+
30
+ #### Wörterbuch
31
+
32
+ Ein Wörterbuch ist eine strukturierte Sammlung von Inhalten, die nach Schlüsseln organisiert ist. Jedes Wörterbuch enthält:
33
+
34
+ - **Schlüssel**: Ein eindeutiger Bezeichner für das Wörterbuch
35
+ - **Inhalt**: Die tatsächlichen Inhaltswerte (Text, Zahlen, Objekte usw.)
36
+ - **Metadaten**: Zusätzliche Informationen wie Titel, Beschreibung, Tags usw.
37
+
38
+ #### Inhaltsdatei
39
+
40
+ Beispiel einer Inhaltsdatei:
41
+
42
+ ```tsx fileName="src/example.content.tsx" contentDeclarationFormat="typescript"
43
+ import { type ReactNode } from "react";
44
+ import {
45
+ t,
46
+ enu,
47
+ cond,
48
+ nest,
49
+ md,
50
+ insert,
51
+ file,
52
+ type Dictionary,
53
+ } from "intlayer";
54
+
55
+ interface Content {
56
+ imbricatedContent: {
57
+ imbricatedContent2: {
58
+ stringContent: string; // Zeichenketteninhalt
59
+ numberContent: number; // Zahleninhalt
60
+ booleanContent: boolean; // Wahrheitswertinhalt
61
+ javaScriptContent: string; // JavaScript-Inhalt
62
+ };
63
+ };
64
+ multilingualContent: string; // Mehrsprachiger Inhalt
65
+ quantityContent: string; // Mengeninhalt
66
+ conditionalContent: string; // Bedingter Inhalt
67
+ markdownContent: never; // Markdown-Inhalt
68
+ externalContent: string; // Externer Inhalt
69
+ insertionContent: string; // Einfügeinhalt
70
+ nestedContent: string; // Verschachtelter Inhalt
71
+ fileContent: string; // Dateiinhalt
72
+ jsxContent: ReactNode; // JSX-Inhalt
73
+ }
74
+
75
+ export default {
76
+ key: "page",
77
+ content: {
78
+ imbricatedContent: {
79
+ imbricatedContent2: {
80
+ stringContent: "Hello World",
81
+ numberContent: 123,
82
+ booleanContent: true,
83
+ javaScriptContent: `${process.env.NODE_ENV}`,
84
+ },
85
+ },
86
+ multilingualContent: t({
87
+ de: "Deutscher Inhalt",
88
+ en: "English content",
89
+ "en-GB": "English content (UK)",
90
+ fr: "French content",
91
+ es: "Spanish content",
92
+ }),
93
+ quantityContent: enu({
94
+ "<-1": "Weniger als minus ein Auto",
95
+ "-1": "Minus ein Auto",
96
+ "0": "Keine Autos",
97
+ "1": "Ein Auto",
98
+ ">5": "Einige Autos",
99
+ ">19": "Viele Autos",
100
+ }),
101
+ conditionalContent: cond({
102
+ true: "Validierung ist aktiviert",
103
+ false: "Validierung ist deaktiviert",
104
+ }),
105
+ insertionContent: insert("Hallo {{name}}!"),
106
+ nestedContent: nest(
107
+ "navbar", // Der Schlüssel des Wörterbuchs zum Verschachteln
108
+ "login.button" // [Optional] Der Pfad zum Inhalt, der verschachtelt werden soll
109
+ ),
110
+ fileContent: file("./path/to/file.txt"),
111
+ externalContent: fetch("https://example.com").then((res) => res.json()),
112
+ markdownContent: md("# Markdown-Beispiel"),
113
+
114
+ /*
115
+ * Nur verfügbar mit `react-intlayer` oder `next-intlayer`
116
+ */
117
+ jsxContent: <h1>Mein Titel</h1>,
118
+ },
119
+ } satisfies Dictionary<Content>; // [optional] Dictionary ist generisch und ermöglicht es Ihnen, die Formatierung Ihres Wörterbuchs zu stärken
120
+ ```
121
+
122
+ ```javascript fileName="src/example.content.mjx" contentDeclarationFormat="esm"
123
+ import { t, enu, cond, nest, md, insert, file } from "intlayer";
124
+
125
+ /** @type {import('intlayer').Dictionary} */
126
+ export default {
127
+ key: "page",
128
+ content: {
129
+ imbricatedContent: {
130
+ imbricatedContent2: {
131
+ stringContent: "Hallo Welt",
132
+ numberContent: 123,
133
+ booleanContent: true,
134
+ javaScriptContent: `${process.env.NODE_ENV}`,
135
+ },
136
+ imbricatedArray: [1, 2, 3],
137
+ },
138
+ multilingualContent: t({
139
+ en: "Englischer Inhalt",
140
+ "en-GB": "Englischer Inhalt (UK)",
141
+ fr: "Französischer Inhalt",
142
+ es: "Spanischer Inhalt",
143
+ }),
144
+ quantityContent: enu({
145
+ "<-1": "Weniger als minus ein Auto",
146
+ "-1": "Minus ein Auto",
147
+ "0": "Keine Autos",
148
+ "1": "Ein Auto",
149
+ ">5": "Einige Autos",
150
+ ">19": "Viele Autos",
151
+ }),
152
+ conditionalContent: cond({
153
+ true: "Validierung ist aktiviert",
154
+ false: "Validierung ist deaktiviert",
155
+ }),
156
+ insertionContent: insert("Hallo {{name}}!"),
157
+ nestedContent: nest(
158
+ "navbar", // Der Schlüssel des Wörterbuchs zum Einfügen
159
+ "login.button" // [Optional] Der Pfad zum einzufügenden Inhalt
160
+ ),
161
+ markdownContent: md("# Markdown-Beispiel"),
162
+ fileContent: file("./path/to/file.txt"),
163
+ externalContent: fetch("https://example.com").then((res) => res.json())
164
+
165
+ // Nur verfügbar mit `react-intlayer` oder `next-intlayer`
166
+ jsxContent: <h1>Mein Titel</h1>,
167
+ },
168
+ };
169
+ ```
170
+
171
+ ```javascript fileName="src/example.content.cjx" contentDeclarationFormat="commonjs"
172
+ const { t, enu, cond, nest, md, insert, file } = require("intlayer");
173
+
174
+ /** @type {import('intlayer').Dictionary} */
175
+ module.exports = {
176
+ key: "page",
177
+ content: {
178
+ imbricatedContent: {
179
+ imbricatedContent2: {
180
+ stringContent: "Hallo Welt",
181
+ numberContent: 123,
182
+ booleanContent: true,
183
+ javaScriptContent: `${process.env.NODE_ENV}`,
184
+ },
185
+ imbricatedArray: [1, 2, 3],
186
+ },
187
+ multilingualContent: t({
188
+ de: "Deutscher Inhalt",
189
+ en: "English content",
190
+ "en-GB": "English content (UK)",
191
+ fr: "French content",
192
+ es: "Spanish content",
193
+ }),
194
+ quantityContent: enu({
195
+ "<-1": "Weniger als minus ein Auto",
196
+ "-1": "Minus ein Auto",
197
+ "0": "Keine Autos",
198
+ "1": "Ein Auto",
199
+ ">5": "Einige Autos",
200
+ ">19": "Viele Autos",
201
+ }),
202
+ conditionalContent: cond({
203
+ true: "Validierung ist aktiviert",
204
+ false: "Validierung ist deaktiviert",
205
+ }),
206
+ insertionContent: insert("Hallo {{name}}!"),
207
+ nestedContent: nest(
208
+ "navbar", // Der Schlüssel des Wörterbuchs zum Einbetten
209
+ "login.button" // [Optional] Der Pfad zum einzubettenden Inhalt
210
+ ),
211
+ markdownContent: md("# Markdown-Beispiel"),
212
+ fileContent: file("./path/to/file.txt"),
213
+ externalContent: fetch("https://example.com").then((res) => res.json())
214
+
215
+ // Nur verfügbar mit `react-intlayer` oder `next-intlayer`
216
+ jsxContent: <h1>Mein Titel</h1>,
217
+ },
218
+ };
219
+ ```
220
+
221
+ ```json5 fileName="src/example.content.json" contentDeclarationFormat="json"
222
+ {
223
+ "$schema": "https://intlayer.org/schema.json",
224
+ "key": "page",
225
+ "content": {
226
+ "imbricatedContent": {
227
+ "imbricatedContent2": {
228
+ "stringContent": "Hallo Welt",
229
+ "numberContent": 123,
230
+ "booleanContent": true,
231
+ },
232
+ "imbricatedArray": [1, 2, 3],
233
+ },
234
+ "multilingualContent": {
235
+ "nodeType": "translation",
236
+ "translation": {
237
+ "en": "English content",
238
+ "en-GB": "English content (UK)",
239
+ "fr": "French content",
240
+ "es": "Spanish content",
241
+ },
242
+ },
243
+ "quantityContent": {
244
+ "nodeType": "enumeration",
245
+ "enumeration": {
246
+ "0": "Keine Autos",
247
+ "1": "Ein Auto",
248
+ "<-1": "Weniger als minus ein Auto",
249
+ "-1": "Minus ein Auto",
250
+ ">5": "Einige Autos",
251
+ ">19": "Viele Autos",
252
+ },
253
+ },
254
+ "conditionalContent": {
255
+ "nodeType": "condition",
256
+ "condition": {
257
+ "true": "Validierung ist aktiviert",
258
+ "false": "Validierung ist deaktiviert",
259
+ },
260
+ },
261
+ "insertionContent": {
262
+ "nodeType": "insertion",
263
+ "insertion": "Hallo {{name}}!",
264
+ },
265
+ "nestedContent": {
266
+ "nodeType": "nested",
267
+ "nested": { "dictionaryKey": "app" },
268
+ },
269
+ "markdownContent": {
270
+ "nodeType": "markdown",
271
+ "markdown": "# Markdown-Beispiel",
272
+ },
273
+ "fileContent": {
274
+ "nodeType": "file",
275
+ "file": "./path/to/file.txt",
276
+ },
277
+ "jsxContent": {
278
+ "type": "h1",
279
+ "key": null,
280
+ "ref": null,
281
+ "props": {
282
+ "children": ["Mein Titel"],
283
+ },
284
+ },
285
+ },
286
+ }
287
+ ```
288
+
289
+ #### Inhaltsknoten
290
+
291
+ Inhaltsknoten sind die Bausteine des Wörterbuchinhalts. Sie können sein:
292
+
293
+ - **Primitive Werte**: Zeichenketten, Zahlen, Booleans, null, undefined
294
+ - **Typisierte Knoten**: Spezielle Inhaltstypen wie Übersetzungen, Bedingungen, Markdown usw.
295
+ - **Funktionen**: Dynamische Inhalte, die zur Laufzeit ausgewertet werden können [siehe Funktionsabruf](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/function_fetching.md)
296
+ - **Verschachtelte Inhalte**: Verweise auf andere Wörterbücher
297
+
298
+ #### Inhaltstypen
299
+
300
+ Intlayer unterstützt verschiedene Inhaltstypen durch typisierte Knoten:
301
+
302
+ - **Übersetzungsinhalt**: Mehrsprachiger Text mit lokalisierungsspezifischen Werten [siehe Übersetzungsinhalt](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/translation_content.md)
303
+ - **Bedingungsinhalt**: Bedingter Inhalt basierend auf booleschen Ausdrücken [siehe Bedingungsinhalt](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/condition_content.md)
304
+ - **Enumerationsinhalt**: Inhalt, der sich basierend auf aufzählbaren Werten ändert [siehe Enumerationsinhalt](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/enumeration_content.md)
305
+ - **Einfügeinhalt**: Inhalt, der in anderen Inhalt eingefügt werden kann [siehe Einfügeinhalt](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/insertion_content.md)
306
+ - **Markdown-Inhalt**: Rich-Text-Inhalt im Markdown-Format [siehe Markdown-Inhalt](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/markdown_content.md)
307
+ - **Verschachtelter Inhalt**: Verweise auf andere Wörterbücher [siehe Verschachtelter Inhalt](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/nested_content.md)
308
+ - **Geschlechtsabhängiger Inhalt**: Inhalt, der sich je nach Geschlecht unterscheidet [siehe Geschlechtsabhängiger Inhalt](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/gender_content.md)
309
+ - **Dateiinhalt**: Verweise auf externe Dateien [siehe Dateiinhalt](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/dictionary/file_content.md)
310
+
311
+ ## Wörterbuchstruktur
312
+
313
+ Ein Wörterbuch in Intlayer wird durch den Typ `Dictionary` definiert und enthält mehrere Eigenschaften, die sein Verhalten steuern:
314
+
315
+ ### Erforderliche Eigenschaften
316
+
317
+ #### `key` (string)
318
+
319
+ Der Bezeichner für das Wörterbuch. Wenn mehrere Wörterbücher denselben Schlüssel haben, werden diese von Intlayer automatisch zusammengeführt.
320
+
321
+ > Verwenden Sie die kebab-case-Namenskonvention (z. B. `"about-page-meta"`).
322
+
323
+ #### Content (string | number | boolean | object | array | function)
324
+
325
+ Die Eigenschaft `content` enthält die eigentlichen Wörterbuchdaten und unterstützt:
326
+
327
+ - **Primitive Werte**: Zeichenketten, Zahlen, Booleans, null, undefined
328
+ - **Typed nodes**: Spezielle Inhaltstypen unter Verwendung der Hilfsfunktionen von Intlayer
329
+ - **Verschachtelte Objekte**: Komplexe Datenstrukturen
330
+ - **Arrays**: Sammlungen von Inhalten
331
+ - **Funktionen**: Dynamische Inhaltsevaluierung
332
+
333
+ ### Optionale Eigenschaften
334
+
335
+ #### `title` (string)
336
+
337
+ Menschlich lesbarer Titel für das Wörterbuch, der dabei hilft, es in Editoren und CMS-Systemen zu identifizieren. Dies ist besonders nützlich beim Verwalten großer Mengen von Wörterbüchern oder bei der Arbeit mit Inhaltsverwaltungsschnittstellen.
338
+
339
+ **Beispiel:**
340
+
341
+ ```typescript
342
+ {
343
+ key: "about-page-meta",
344
+ title: "Metadaten der Über-Seite",
345
+ content: { /* ... */ }
346
+ }
347
+ ```
348
+
349
+ #### `description` (string)
350
+
351
+ Detaillierte Beschreibung, die den Zweck des Wörterbuchs, Nutzungshinweise und besondere Überlegungen erklärt. Diese Beschreibung wird auch als Kontext für KI-gestützte Übersetzungserstellung verwendet, was sie wertvoll für die Aufrechterhaltung der Übersetzungsqualität und Konsistenz macht.
352
+
353
+ **Beispiel:**
354
+
355
+ ```typescript
356
+ {
357
+ key: "about-page-meta",
358
+ description: [
359
+ "Dieses Wörterbuch verwaltet die Metadaten der Über-Seite",
360
+ "Berücksichtigen Sie bewährte Methoden für SEO:",
361
+ "- Der Titel sollte zwischen 50 und 60 Zeichen lang sein",
362
+ "- Die Beschreibung sollte zwischen 150 und 160 Zeichen lang sein",
363
+ ].join('\n'),
364
+ content: { /* ... */ }
365
+ }
366
+ ```
367
+
368
+ #### `tags` (string[])
369
+
370
+ Array von Zeichenketten zur Kategorisierung und Organisation von Wörterbüchern. Tags bieten zusätzlichen Kontext und können zum Filtern, Suchen oder Organisieren von Wörterbüchern in Editoren und CMS-Systemen verwendet werden.
371
+
372
+ **Beispiel:**
373
+
374
+ ```typescript
375
+ {
376
+ key: "about-page-meta",
377
+ tags: ["metadata", "about-page", "seo"],
378
+ content: { /* ... */ }
379
+ }
380
+ ```
381
+
382
+ #### `locale` (LocalesValues)
383
+
384
+ Wandelt das Wörterbuch in ein pro-Locale-Wörterbuch um, bei dem jedes im Inhalt deklarierte Feld automatisch in einen Übersetzungsknoten umgewandelt wird. Wenn diese Eigenschaft gesetzt ist:
385
+
386
+ - Das Wörterbuch wird als einsprachiges Wörterbuch behandelt
387
+ - Jedes Feld wird zu einem Übersetzungsknoten für diese spezifische Sprache
388
+ - Sie sollten KEINE Übersetzungsknoten (`t()`) im Inhalt verwenden, wenn Sie diese Eigenschaft nutzen
389
+ - Wenn diese Eigenschaft fehlt, wird das Wörterbuch als mehrsprachiges Wörterbuch behandelt
390
+
391
+ > Siehe [Per-Locale Content Declaration in Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/per_locale_file.md) für weitere Informationen.
392
+
393
+ **Beispiel:**
394
+
395
+ ```json
396
+ // Einsprachiges Wörterbuch
397
+ {
398
+ "key": "about-page",
399
+ "locale": "en",
400
+ "content": {
401
+ "title": "About Us", // Dies wird zu einem Übersetzungsknoten für 'en'
402
+ "description": "Learn more about our company"
403
+ }
404
+ }
405
+ ```
406
+
407
+ #### `autoFill` (AutoFill)
408
+
409
+ Anweisungen zum automatischen Ausfüllen von Wörterbuchinhalten aus externen Quellen. Dies kann global in `intlayer.config.ts` oder pro Wörterbuch konfiguriert werden. Unterstützt mehrere Formate:
410
+
411
+ - **`true`**: Automatisches Ausfüllen für alle Sprachen aktivieren
412
+ - **`string`**: Pfad zu einer einzelnen Datei oder Vorlage mit Variablen
413
+ - **`object`**: Pfade zu Dateien pro Sprache
414
+
415
+ **Beispiele:**
416
+
417
+ ```json
418
+ // Für alle Sprachen aktivieren
419
+ {
420
+ "autoFill": true
421
+ }
422
+ // Einzelne Datei
423
+ {
424
+ "autoFill": "./translations/aboutPage.content.json"
425
+ }
426
+ // Vorlage mit Variablen
427
+ {
428
+ "autoFill": "/messages/{{locale}}/{{key}}/{{fileName}}.content.json"
429
+ }
430
+ // Feine Konfiguration pro Sprache
431
+ {
432
+ "autoFill": {
433
+ "en": "./translations/en/aboutPage.content.json",
434
+ "fr": "./translations/fr/aboutPage.content.json",
435
+ "es": "./translations/es/aboutPage.content.json"
436
+ }
437
+ }
438
+ ```
439
+
440
+ **Verfügbare Variablen:**
441
+
442
+ - `{{locale}}` – Sprachcode (z.B. `fr`, `es`)
443
+ - `{{fileName}}` – Dateiname (z.B. `example`)
444
+ - `{{key}}` – Wörterbuchschlüssel (z.B. `example`)
445
+
446
+ > Siehe [Auto-Fill-Konfiguration in Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/autoFill.md) für weitere Informationen.
447
+
448
+ ##### `priority` (Zahl)
449
+
450
+ Gibt die Priorität des Wörterbuchs zur Konfliktlösung an. Wenn mehrere Wörterbücher denselben Schlüssel haben, überschreibt das Wörterbuch mit der höchsten Prioritätszahl die anderen. Dies ist nützlich zur Verwaltung von Inhalts-Hierarchien und Überschreibungen.
451
+
452
+ **Beispiel:**
453
+
454
+ ```typescript
455
+ // Basis-Wörterbuch
456
+ {
457
+ key: "welcome-message",
458
+ priority: 1,
459
+ content: { message: "Willkommen!" }
460
+ }
461
+
462
+ // Überschreibendes Wörterbuch
463
+ {
464
+ key: "welcome-message",
465
+ priority: 10,
466
+ content: { message: "Willkommen bei unserem Premium-Service!" }
467
+ }
468
+ // Dies überschreibt das Basis-Wörterbuch
469
+ ```
470
+
471
+ ### CMS-Eigenschaften
472
+
473
+ ##### `version` (string)
474
+
475
+ Versionskennung für Remote-Wörterbücher. Hilft dabei nachzuverfolgen, welche Version des Wörterbuchs aktuell verwendet wird, besonders nützlich bei der Arbeit mit Remote-Content-Management-Systemen.
476
+
477
+ ##### `live` (boolean)
478
+
479
+ Für Remote-Wörterbücher gibt an, ob das Wörterbuch zur Laufzeit live abgerufen werden soll. Wenn aktiviert:
480
+
481
+ - Muss `importMode` in `intlayer.config.ts` auf "live" gesetzt sein
482
+ - Ein Live-Server muss laufen
483
+ - Das Wörterbuch wird zur Laufzeit über die Live-Sync-API abgerufen
484
+ - Wenn live, aber der Abruf fehlschlägt, wird auf den dynamischen Wert zurückgegriffen
485
+ - Wenn nicht live, wird das Wörterbuch zur Build-Zeit für optimale Leistung transformiert
486
+
487
+ ### Systemeigenschaften (Automatisch generiert)
488
+
489
+ Diese Eigenschaften werden automatisch von Intlayer generiert und sollten nicht manuell verändert werden:
490
+
491
+ ##### `$schema` (string)
492
+
493
+ JSON-Schema zur Validierung der Wörterbuchstruktur. Wird automatisch von Intlayer hinzugefügt, um die Integrität des Wörterbuchs sicherzustellen.
494
+
495
+ ##### `id` (string)
496
+
497
+ Für entfernte Wörterbücher ist dies die eindeutige Kennung des Wörterbuchs auf dem entfernten Server. Wird zum Abrufen und Verwalten von entfernten Inhalten verwendet.
498
+
499
+ ##### `localId` (LocalDictionaryId)
500
+
501
+ Eindeutige Kennung für lokale Wörterbücher. Wird automatisch von Intlayer generiert, um das Wörterbuch zu identifizieren und festzustellen, ob es lokal oder entfernt ist, sowie dessen Standort.
502
+
503
+ ##### `localIds` (LocalDictionaryId[])
504
+
505
+ Für zusammengeführte Wörterbücher enthält dieses Array die IDs aller Wörterbücher, die zusammengeführt wurden. Nützlich zur Nachverfolgung der Quelle des zusammengeführten Inhalts.
506
+
507
+ ##### `filePath` (string)
508
+
509
+ Der Dateipfad des lokalen Wörterbuchs, der angibt, aus welcher `.content`-Datei das Wörterbuch generiert wurde. Hilft bei der Fehlerbehebung und Quellenverfolgung.
510
+
511
+ ##### `versions` (string[])
512
+
513
+ Für entfernte Wörterbücher enthält dieses Array alle verfügbaren Versionen des Wörterbuchs. Hilft dabei, nachzuvollziehen, welche Versionen verwendet werden können.
514
+
515
+ ##### `autoFilled` (true)
516
+
517
+ Gibt an, ob das Wörterbuch automatisch aus externen Quellen ausgefüllt wurde. Im Falle von Konflikten überschreiben Basis-Wörterbücher automatisch ausgefüllte Wörterbücher.
518
+
519
+ ##### `location` ('distant' | 'locale')
520
+
521
+ Gibt den Standort des Wörterbuchs an:
522
+
523
+ - `'locale'`: Lokales Wörterbuch (aus Inhaltsdateien)
524
+ - `'distant'`: Entferntes Wörterbuch (aus externer Quelle)
525
+
526
+ ## Inhaltstypen von Knoten
527
+
528
+ Intlayer bietet mehrere spezialisierte Inhaltstypen von Knoten, die grundlegende primitive Werte erweitern:
529
+
530
+ ### Übersetzungsinhalt (`t`)
531
+
532
+ Mehrsprachiger Inhalt, der je nach Gebietsschema variiert:
533
+
534
+ ```typescript
535
+ import { t } from "intlayer";
536
+
537
+ // TypeScript/JavaScript
538
+ multilingualContent: t({
539
+ en: "Welcome to our website",
540
+ fr: "Bienvenue sur notre site web",
541
+ es: "Bienvenido a nuestro sitio web",
542
+ });
543
+ ```
544
+
545
+ ### Bedingter Inhalt (`cond`)
546
+
547
+ Inhalt, der sich basierend auf booleschen Bedingungen ändert:
548
+
549
+ ```typescript
550
+ import { cond } from "intlayer";
551
+
552
+ conditionalContent: cond({
553
+ true: "User is logged in",
554
+ false: "Please log in to continue",
555
+ });
556
+ ```
557
+
558
+ ### Aufzählungsinhalt (`enu`)
559
+
560
+ Inhalt, der auf aufgezählten Werten basiert und variiert:
561
+
562
+ ```typescript
563
+ import { enu } from "intlayer";
564
+
565
+ statusContent: enu({
566
+ pending: "Ihre Anfrage ist ausstehend",
567
+ approved: "Ihre Anfrage wurde genehmigt",
568
+ rejected: "Ihre Anfrage wurde abgelehnt",
569
+ });
570
+ ```
571
+
572
+ ### Einfügeinhalt (`insert`)
573
+
574
+ Inhalt, der in anderen Inhalt eingefügt werden kann:
575
+
576
+ ```typescript
577
+ import { insert } from "intlayer";
578
+
579
+ insertionContent: insert("Dieser Text kann überall eingefügt werden");
580
+ ```
581
+
582
+ ### Verschachtelter Inhalt (`nest`)
583
+
584
+ Verweise auf andere Wörterbücher:
585
+
586
+ ```typescript
587
+ import { nest } from "intlayer";
588
+
589
+ nestedContent: nest("about-page");
590
+ ```
591
+
592
+ ### Markdown-Inhalt (`md`)
593
+
594
+ Rich-Text-Inhalt im Markdown-Format:
595
+
596
+ ```typescript
597
+ import { md } from "intlayer";
598
+
599
+ markdownContent: md(
600
+ "# Willkommen\n\nDies ist **fetter** Text mit [Links](https://example.com)"
601
+ );
602
+ ```
603
+
604
+ ### Geschlechtsabhängiger Inhalt (`gender`)
605
+
606
+ Inhalt, der sich je nach Geschlecht unterscheidet:
607
+
608
+ ```typescript
609
+ import { gender } from "intlayer";
610
+
611
+ genderContent: gender({
612
+ male: "Er ist Entwickler",
613
+ female: "Sie ist Entwicklerin",
614
+ other: "Sie sind Entwickler",
615
+ });
616
+ ```
617
+
618
+ ### Dateiinhalt (`file`)
619
+
620
+ Verweise auf externe Dateien:
621
+
622
+ ```typescript
623
+ import { file } from "intlayer";
624
+
625
+ fileContent: file("./path/to/content.txt");
626
+ ```
627
+
628
+ ## Erstellen von Inhaltsdateien
629
+
630
+ ### Grundstruktur einer Inhaltsdatei
631
+
632
+ Eine Inhaltsdatei exportiert ein Standardobjekt, das dem Typ `Dictionary` entspricht:
633
+
634
+ ```typescript
635
+ // example.content.ts
636
+ import { t, cond, nest, md, insert, file } from "intlayer";
637
+
638
+ export default {
639
+ key: "welcome-page",
640
+ title: "Inhalt der Willkommensseite",
641
+ description:
642
+ "Inhalte für die Haupt-Willkommensseite einschließlich Hero-Bereich und Funktionen",
643
+ tags: ["Seite", "Willkommen", "Startseite"],
644
+ content: {
645
+ hero: {
646
+ title: t({
647
+ en: "Welcome to Our Platform",
648
+ fr: "Bienvenue sur Notre Plateforme",
649
+ es: "Bienvenido a Nuestra Plataforma",
650
+ }),
651
+ subtitle: t({
652
+ en: "Build amazing applications with ease",
653
+ fr: "Construisez des applications incroyables avec facilité",
654
+ es: "Construye aplicaciones increíbles con facilidad",
655
+ }),
656
+ cta: cond({
657
+ true: t({
658
+ en: "Get Started",
659
+ fr: "Commencer",
660
+ es: "Comenzar",
661
+ }),
662
+ false: t({
663
+ en: "Sign Up",
664
+ fr: "S'inscrire",
665
+ es: "Registrarse",
666
+ }),
667
+ }),
668
+ },
669
+ features: [
670
+ {
671
+ title: t({
672
+ de: "Einfach zu bedienen",
673
+ fr: "Facile à Utiliser",
674
+ es: "Fácil de Usar",
675
+ }),
676
+ description: t({
677
+ de: "Intuitive Benutzeroberfläche für alle Erfahrungsstufen",
678
+ fr: "Interface intuitive pour tous les niveaux",
679
+ es: "Interfaz intuitiva para todos los niveles",
680
+ }),
681
+ },
682
+ ],
683
+ documentation: nest("documentation"),
684
+ readme: file("./README.md"),
685
+ },
686
+ } satisfies Dictionary;
687
+ ```
688
+
689
+ ### JSON-Inhaltsdatei
690
+
691
+ Sie können Inhaltsdateien auch im JSON-Format erstellen:
692
+
693
+ ```json
694
+ {
695
+ "key": "welcome-page",
696
+ "title": "Inhalt der Willkommensseite",
697
+ "description": "Inhalt für die Haupt-Willkommensseite",
698
+ "tags": ["Seite", "Willkommen"],
699
+ "content": {
700
+ "hero": {
701
+ "title": {
702
+ "nodeType": "translation",
703
+ "translation": {
704
+ "en": "Willkommen auf unserer Plattform",
705
+ "fr": "Bienvenue sur Notre Plateforme"
706
+ }
707
+ },
708
+ "subtitle": {
709
+ "nodeType": "translation",
710
+ "translation": {
711
+ "en": "Erstellen Sie mühelos erstaunliche Anwendungen",
712
+ "fr": "Construisez des applications incroyables avec facilité"
713
+ }
714
+ }
715
+ }
716
+ }
717
+ }
718
+ ```
719
+
720
+ ### Inhalt pro Locale-Dateien
721
+
722
+ Für Wörterbücher pro Locale geben Sie die Eigenschaft `locale` an:
723
+
724
+ ```typescript
725
+ // welcome-page.en.content.ts
726
+ export default {
727
+ key: "welcome-page",
728
+ locale: "en",
729
+ content: {
730
+ hero: {
731
+ title: "Willkommen auf unserer Plattform",
732
+ subtitle: "Erstellen Sie mühelos erstaunliche Anwendungen",
733
+ },
734
+ },
735
+ } satisfies Dictionary;
736
+ ```
737
+
738
+ ```typescript
739
+ // welcome-page.fr.content.ts
740
+ export default {
741
+ key: "welcome-page",
742
+ locale: "fr",
743
+ content: {
744
+ hero: {
745
+ title: "Bienvenue sur Notre Plateforme",
746
+ subtitle: "Construisez des applications incroyables avec facilité",
747
+ },
748
+ },
749
+ } satisfies Dictionary;
750
+ ```
751
+
752
+ ## Dateierweiterungen für Inhalte
753
+
754
+ Intlayer ermöglicht es Ihnen, die Erweiterungen für Ihre Inhaltsdeklarationsdateien anzupassen. Diese Anpassung bietet Flexibilität bei der Verwaltung von Großprojekten und hilft, Konflikte mit anderen Modulen zu vermeiden.
755
+
756
+ ### Standarderweiterungen
757
+
758
+ Standardmäßig überwacht Intlayer alle Dateien mit den folgenden Erweiterungen für Inhaltsdeklarationen:
759
+
760
+ - `.content.json`
761
+ - `.content.ts`
762
+ - `.content.tsx`
763
+ - `.content.js`
764
+ - `.content.jsx`
765
+ - `.content.mjs`
766
+ - `.content.mjx`
767
+ - `.content.cjs`
768
+ - `.content.cjx`
769
+
770
+ Diese Standarderweiterungen sind für die meisten Anwendungen geeignet. Wenn Sie jedoch spezielle Anforderungen haben, können Sie benutzerdefinierte Erweiterungen definieren, um den Build-Prozess zu optimieren und das Risiko von Konflikten mit anderen Komponenten zu verringern.
771
+
772
+ > Um die Dateierweiterungen anzupassen, die Intlayer zur Identifizierung von Inhaltsdeklarationsdateien verwendet, können Sie diese in der Intlayer-Konfigurationsdatei angeben. Dieser Ansatz ist besonders vorteilhaft für groß angelegte Projekte, bei denen die Begrenzung des Überwachungsbereichs die Build-Leistung verbessert.
773
+
774
+ ## Erweiterte Konzepte
775
+
776
+ ### Wörterbuchzusammenführung
777
+
778
+ Wenn mehrere Wörterbücher denselben Schlüssel haben, führt Intlayer diese automatisch zusammen. Das Zusammenführungsverhalten hängt von mehreren Faktoren ab:
779
+
780
+ - **Priorität**: Wörterbücher mit höheren `priority`-Werten überschreiben diejenigen mit niedrigeren Werten
781
+ - **Automatisch ausfüllen vs. Basis**: Basis-Wörterbücher überschreiben automatisch ausgefüllte Wörterbücher
782
+ - **Ort**: Lokale Wörterbücher überschreiben entfernte Wörterbücher (wenn die Prioritäten gleich sind)
783
+
784
+ ### Typensicherheit
785
+
786
+ Intlayer bietet vollständige TypeScript-Unterstützung für Inhaltsdateien:
787
+
788
+ ```typescript
789
+ // Definieren Sie Ihren Inhaltstyp
790
+ interface WelcomePageContent {
791
+ hero: {
792
+ title: string;
793
+ subtitle: string;
794
+ cta: string;
795
+ };
796
+ features: Array<{
797
+ title: string;
798
+ description: string;
799
+ }>;
800
+ }
801
+
802
+ // Verwenden Sie es in Ihrem Wörterbuch
803
+ export default {
804
+ key: "welcome-page",
805
+ content: {
806
+ // TypeScript bietet Autovervollständigung und Typprüfung
807
+ hero: {
808
+ title: "Willkommen",
809
+ subtitle: "Erstellen Sie erstaunliche Apps",
810
+ cta: "Loslegen",
811
+ },
812
+ },
813
+ } satisfies Dictionary<WelcomePageContent>;
814
+ ```
815
+
816
+ ### Verschachtelung von Knoten
817
+
818
+ Sie können ohne Probleme Funktionen in andere Funktionen verschachteln.
819
+
820
+ Beispiel:
821
+
822
+ ```javascript fileName="src/example.content.tsx" contentDeclarationFormat="typescript"
823
+ import { t, enu, cond, nest, md, type Dictionary } from "intlayer";
824
+
825
+ const getName = async () => "John Doe";
826
+
827
+ export default {
828
+ key: "page",
829
+ content: {
830
+ // `getIntlayer('page','en').hiMessage` gibt `['Hi', ' ', 'John Doe']` zurück
831
+ hiMessage: [
832
+ t({
833
+ en: "Hi",
834
+ fr: "Salut",
835
+ es: "Hola",
836
+ }),
837
+ " ",
838
+ getName(),
839
+ ],
840
+ // Zusammengesetzter Inhalt, der Bedingung, Enumeration und mehrsprachigen Inhalt verschachtelt
841
+ // `getIntlayer('page','en').advancedContent(true)(10)` gibt 'Multiple items found' zurück
842
+ advancedContent: cond({
843
+ true: enu({
844
+ "0": t({
845
+ en: "No items found",
846
+ fr: "Kein Artikel gefunden",
847
+ es: "Keine Artikel gefunden",
848
+ }),
849
+ "1": t({
850
+ en: "Ein Artikel gefunden",
851
+ fr: "Ein Artikel gefunden",
852
+ es: "Ein Artikel gefunden",
853
+ }),
854
+ ">1": t({
855
+ en: "Mehrere Artikel gefunden",
856
+ fr: "Mehrere Artikel gefunden",
857
+ es: "Mehrere Artikel gefunden",
858
+ }),
859
+ }),
860
+ false: t({
861
+ en: "Keine gültigen Daten verfügbar",
862
+ fr: "Keine gültigen Daten verfügbar",
863
+ es: "Keine gültigen Daten verfügbar",
864
+ }),
865
+ }),
866
+ },
867
+ } satisfies Dictionary;
868
+ ```
869
+
870
+ ```javascript fileName="src/example.content.mjx" contentDeclarationFormat="esm"
871
+ import { t, enu, cond, nest, md } from "intlayer";
872
+
873
+ const getName = async () => "John Doe";
874
+
875
+ /** @type {import('intlayer').Dictionary} */
876
+ export default {
877
+ key: "page",
878
+ content: {
879
+ // `getIntlayer('page','de').hiMessage` gibt `['Hallo', ' ', 'John Doe']` zurück
880
+ hiMessage: [
881
+ t({
882
+ en: "Hi",
883
+ fr: "Salut",
884
+ es: "Hola",
885
+ }),
886
+ " ",
887
+ getName(),
888
+ ],
889
+ // Zusammengesetzter Inhalt, der Bedingung, Enumeration und mehrsprachigen Inhalt verschachtelt
890
+ // `getIntlayer('page','de').advancedContent(true)(10)` gibt 'Mehrere Elemente gefunden' zurück
891
+ advancedContent: cond({
892
+ true: enu({
893
+ "0": t({
894
+ en: "No items found",
895
+ fr: "Aucun article trouvé",
896
+ es: "No se encontraron artículos",
897
+ }),
898
+ "1": t({
899
+ en: "One item found",
900
+ fr: "Un article trouvé",
901
+ es: "Se encontró un artículo",
902
+ }),
903
+ ">1": t({
904
+ en: "Mehrere Elemente gefunden",
905
+ fr: "Plusieurs articles trouvés",
906
+ es: "Se encontraron múltiples artículos",
907
+ }),
908
+ }),
909
+ false: t({
910
+ en: "Keine gültigen Daten verfügbar",
911
+ fr: "Aucune donnée valide disponible",
912
+ es: "No hay datos válidos disponibles",
913
+ }),
914
+ }),
915
+ },
916
+ };
917
+ ```
918
+
919
+ ```javascript fileName="src/example.content.cjx" contentDeclarationFormat="commonjs"
920
+ const { t, enu, cond, nest, md } = require("intlayer");
921
+
922
+ const getName = async () => "John Doe";
923
+
924
+ /** @type {import('intlayer').Dictionary} */
925
+ module.exports = {
926
+ key: "page",
927
+ content: {
928
+ // `getIntlayer('page','en').hiMessage` gibt `['Hi', ' ', 'John Doe']` zurück
929
+ hiMessage: [
930
+ t({
931
+ en: "Hi",
932
+ fr: "Salut",
933
+ es: "Hola",
934
+ }),
935
+ " ",
936
+ getName(),
937
+ ],
938
+ // Zusammengesetzter Inhalt, der Bedingung, Enumeration und mehrsprachigen Inhalt verschachtelt
939
+ // `getIntlayer('page','en').advancedContent(true)(10)` gibt 'Mehrere Elemente gefunden' zurück
940
+ advancedContent: cond({
941
+ true: enu({
942
+ "0": t({
943
+ en: "No items found",
944
+ fr: "Aucun article trouvé",
945
+ es: "No se encontraron artículos",
946
+ }),
947
+ "1": t({
948
+ en: "One item found",
949
+ fr: "Un article trouvé",
950
+ es: "Se encontró un artículo",
951
+ }),
952
+ ">1": t({
953
+ en: "Multiple items found",
954
+ fr: "Plusieurs articles trouvés",
955
+ es: "Se encontraron múltiples artículos",
956
+ }),
957
+ }),
958
+ false: t({
959
+ en: "No valid data available",
960
+ fr: "Keine gültigen Daten verfügbar",
961
+ es: "No hay datos válidos disponibles",
962
+ }),
963
+ }),
964
+ },
965
+ };
966
+ ```
967
+
968
+ ```json5 fileName="src/example.content.json" contentDeclarationFormat="json"
969
+ {
970
+ "$schema": "https://intlayer.org/schema.json",
971
+ "key": "page",
972
+ "content": {
973
+ "hiMessage": {
974
+ "nodeType": "composite",
975
+ "composite": [
976
+ {
977
+ "nodeType": "translation",
978
+ "translation": {
979
+ en: "Hi", // Begrüßung auf Englisch
980
+ fr: "Salut",
981
+ es: "Hola",
982
+ },
983
+ },
984
+ " ",
985
+ "John Doe",
986
+ ],
987
+ },
988
+ "advancedContent": {
989
+ "nodeType": "condition",
990
+ "condition": {
991
+ true: {
992
+ nodeType: "enumeration",
993
+ enumeration: {
994
+ "0": {
995
+ "nodeType": "translation",
996
+ "translation": {
997
+ "en": "No items found",
998
+ "fr": "Aucun article trouvé",
999
+ "es": "No se encontraron artículos",
1000
+ "de": "Keine Elemente gefunden",
1001
+ },
1002
+ },
1003
+ "1": {
1004
+ "nodeType": "translation",
1005
+ "translation": {
1006
+ "en": "One item found",
1007
+ "fr": "Un article trouvé",
1008
+ "es": "Se encontró un artículo",
1009
+ "de": "Ein Element gefunden",
1010
+ },
1011
+ },
1012
+ ">1": {
1013
+ "nodeType": "translation",
1014
+ "translation": {
1015
+ "en": "Multiple items found",
1016
+ "fr": "Plusieurs articles trouvés",
1017
+ "es": "Se encontraron múltiples artículos",
1018
+ "de": "Mehrere Elemente gefunden",
1019
+ },
1020
+ },
1021
+ },
1022
+ },
1023
+ "false": {
1024
+ "nodeType": "translation",
1025
+ "translation": {
1026
+ "en": "No valid data available",
1027
+ "fr": "Aucune donnée valide disponible",
1028
+ "es": "No hay datos válidos disponibles",
1029
+ },
1030
+ },
1031
+ },
1032
+ },
1033
+ },
1034
+ }
1035
+ ```
1036
+
1037
+ ### Beste Praktiken
1038
+
1039
+ 1. **Benennungskonventionen**:
1040
+ - Verwenden Sie kebab-case für Wörterbuchschlüssel (`"about-page-meta"`)
1041
+ - Gruppieren Sie verwandte Inhalte unter demselben Schlüsselpräfix
1042
+
1043
+ 2. **Inhaltsorganisation**:
1044
+ - Halten Sie verwandte Inhalte im selben Wörterbuch zusammen
1045
+ - Verwenden Sie verschachtelte Objekte, um komplexe Inhaltsstrukturen zu organisieren
1046
+ - Nutzen Sie Tags zur Kategorisierung
1047
+ - Verwenden Sie `autoFill`, um fehlende Übersetzungen automatisch zu ergänzen
1048
+
1049
+ 3. **Leistung**:
1050
+ - Passen Sie die Inhaltskonfiguration an, um den Umfang der überwachten Dateien zu begrenzen
1051
+ - Verwenden Sie Live-Wörterbücher nur, wenn Echtzeit-Updates erforderlich sind (z. B. A/B-Tests usw.)
1052
+ - Stellen Sie sicher, dass das Build-Transformations-Plugin (`@intlayer/swc` oder `@intlayer/babel`) aktiviert ist, um das Wörterbuch zur Build-Zeit zu optimieren
1053
+
1054
+ ## Dokumentationshistorie
1055
+
1056
+ | Version | Datum | Änderungen |
1057
+ | ------- | ---------- | ----------------------------- |
1058
+ | 6.0.0 | 2025-09-20 | Felddokumentation hinzugefügt |
1059
+ | 5.5.10 | 2025-06-29 | Historie initialisiert |