@intlayer/docs 9.4.2 → 9.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1289) hide show
  1. package/blog/ar/date_time_number_formatting_locales.md +216 -0
  2. package/blog/ar/detecting_missing_translations.md +202 -0
  3. package/blog/ar/i18n_in_ci_cd_pipelines.md +247 -0
  4. package/blog/ar/i18n_meaning.md +0 -2
  5. package/blog/ar/i18n_testing_strategies.md +179 -0
  6. package/blog/ar/intlayer_with_i18next.md +3 -3
  7. package/blog/ar/intlayer_with_next-i18next.md +3 -3
  8. package/blog/ar/intlayer_with_next-intl.md +3 -3
  9. package/blog/ar/intlayer_with_react-i18next.md +3 -3
  10. package/blog/ar/intlayer_with_react-intl.md +3 -3
  11. package/blog/ar/intlayer_with_vue-i18n.md +3 -3
  12. package/blog/ar/is_i18next_outdated.md +315 -0
  13. package/blog/ar/is_next-intl_outdated.md +363 -0
  14. package/blog/ar/is_vue-i18n_outdated.md +338 -0
  15. package/blog/ar/list_i18n_technologies/build-tools/vite.md +177 -0
  16. package/blog/ar/list_i18n_technologies/frameworks/angular.md +0 -2
  17. package/blog/ar/list_i18n_technologies/frameworks/react-native.md +0 -2
  18. package/blog/ar/list_i18n_technologies/frameworks/react.md +0 -2
  19. package/blog/ar/list_i18n_technologies/frameworks/svelte.md +0 -2
  20. package/blog/ar/list_i18n_technologies/frameworks/vue.md +0 -2
  21. package/blog/ar/what_is_internationalization.md +0 -2
  22. package/blog/de/date_time_number_formatting_locales.md +216 -0
  23. package/blog/de/detecting_missing_translations.md +202 -0
  24. package/blog/de/i18n_in_ci_cd_pipelines.md +247 -0
  25. package/blog/de/i18n_meaning.md +0 -2
  26. package/blog/de/i18n_testing_strategies.md +179 -0
  27. package/blog/de/intlayer_with_i18next.md +3 -3
  28. package/blog/de/intlayer_with_next-i18next.md +3 -3
  29. package/blog/de/intlayer_with_next-intl.md +3 -3
  30. package/blog/de/intlayer_with_react-i18next.md +3 -3
  31. package/blog/de/intlayer_with_react-intl.md +3 -3
  32. package/blog/de/intlayer_with_vue-i18n.md +3 -3
  33. package/blog/de/is_i18next_outdated.md +315 -0
  34. package/blog/de/is_next-intl_outdated.md +363 -0
  35. package/blog/de/is_vue-i18n_outdated.md +338 -0
  36. package/blog/de/list_i18n_technologies/build-tools/vite.md +179 -0
  37. package/blog/de/list_i18n_technologies/frameworks/angular.md +0 -2
  38. package/blog/de/list_i18n_technologies/frameworks/react-native.md +0 -2
  39. package/blog/de/list_i18n_technologies/frameworks/react.md +0 -2
  40. package/blog/de/list_i18n_technologies/frameworks/svelte.md +0 -2
  41. package/blog/de/list_i18n_technologies/frameworks/vue.md +0 -2
  42. package/blog/de/what_is_internationalization.md +0 -2
  43. package/blog/en/date_time_number_formatting_locales.md +216 -0
  44. package/blog/en/detecting_missing_translations.md +202 -0
  45. package/blog/en/i18n_in_ci_cd_pipelines.md +247 -0
  46. package/blog/en/i18n_meaning.md +0 -2
  47. package/blog/en/i18n_testing_strategies.md +179 -0
  48. package/blog/en/icu_message_format.md +288 -0
  49. package/blog/en/intlayer_with_i18next.md +3 -3
  50. package/blog/en/intlayer_with_next-i18next.md +3 -3
  51. package/blog/en/intlayer_with_next-intl.md +3 -3
  52. package/blog/en/intlayer_with_react-i18next.md +3 -3
  53. package/blog/en/intlayer_with_react-intl.md +3 -3
  54. package/blog/en/intlayer_with_vue-i18n.md +3 -3
  55. package/blog/en/is_i18next_outdated.md +315 -0
  56. package/blog/en/is_next-intl_outdated.md +363 -0
  57. package/blog/en/is_vue-i18n_outdated.md +338 -0
  58. package/blog/en/list_i18n_technologies/build-tools/vite.md +179 -0
  59. package/blog/en/list_i18n_technologies/frameworks/angular.md +184 -108
  60. package/blog/en/list_i18n_technologies/frameworks/astro.md +268 -0
  61. package/blog/en/list_i18n_technologies/frameworks/nextjs.md +196 -0
  62. package/blog/en/list_i18n_technologies/frameworks/nuxt.md +255 -0
  63. package/blog/en/list_i18n_technologies/frameworks/react-native.md +133 -154
  64. package/blog/en/list_i18n_technologies/frameworks/react-router.md +331 -0
  65. package/blog/en/list_i18n_technologies/frameworks/react.md +176 -96
  66. package/blog/en/list_i18n_technologies/frameworks/solid.md +268 -0
  67. package/blog/en/list_i18n_technologies/frameworks/svelte.md +156 -88
  68. package/blog/en/list_i18n_technologies/frameworks/sveltekit.md +235 -0
  69. package/blog/en/list_i18n_technologies/frameworks/tanstack-start.md +280 -0
  70. package/blog/en/list_i18n_technologies/frameworks/vue.md +167 -95
  71. package/blog/en/what_is_internationalization.md +0 -2
  72. package/blog/en-GB/date_time_number_formatting_locales.md +216 -0
  73. package/blog/en-GB/detecting_missing_translations.md +202 -0
  74. package/blog/en-GB/i18n_in_ci_cd_pipelines.md +247 -0
  75. package/blog/en-GB/i18n_meaning.md +0 -2
  76. package/blog/en-GB/i18n_testing_strategies.md +179 -0
  77. package/blog/en-GB/intlayer_with_i18next.md +3 -3
  78. package/blog/en-GB/intlayer_with_next-i18next.md +3 -3
  79. package/blog/en-GB/intlayer_with_next-intl.md +3 -3
  80. package/blog/en-GB/intlayer_with_react-i18next.md +3 -3
  81. package/blog/en-GB/intlayer_with_react-intl.md +3 -3
  82. package/blog/en-GB/intlayer_with_vue-i18n.md +3 -3
  83. package/blog/en-GB/is_i18next_outdated.md +315 -0
  84. package/blog/en-GB/is_next-intl_outdated.md +363 -0
  85. package/blog/en-GB/is_vue-i18n_outdated.md +338 -0
  86. package/blog/en-GB/list_i18n_technologies/build-tools/vite.md +179 -0
  87. package/blog/en-GB/list_i18n_technologies/frameworks/angular.md +0 -2
  88. package/blog/en-GB/list_i18n_technologies/frameworks/react-native.md +0 -2
  89. package/blog/en-GB/list_i18n_technologies/frameworks/react.md +0 -2
  90. package/blog/en-GB/list_i18n_technologies/frameworks/svelte.md +0 -2
  91. package/blog/en-GB/list_i18n_technologies/frameworks/vue.md +0 -2
  92. package/blog/en-GB/what_is_internationalization.md +0 -2
  93. package/blog/es/date_time_number_formatting_locales.md +216 -0
  94. package/blog/es/detecting_missing_translations.md +202 -0
  95. package/blog/es/i18n_in_ci_cd_pipelines.md +247 -0
  96. package/blog/es/i18n_meaning.md +0 -2
  97. package/blog/es/i18n_testing_strategies.md +179 -0
  98. package/blog/es/intlayer_with_i18next.md +3 -3
  99. package/blog/es/intlayer_with_next-i18next.md +3 -3
  100. package/blog/es/intlayer_with_next-intl.md +3 -3
  101. package/blog/es/intlayer_with_react-i18next.md +3 -3
  102. package/blog/es/intlayer_with_react-intl.md +3 -3
  103. package/blog/es/intlayer_with_vue-i18n.md +3 -3
  104. package/blog/es/is_i18next_outdated.md +315 -0
  105. package/blog/es/is_next-intl_outdated.md +363 -0
  106. package/blog/es/is_vue-i18n_outdated.md +338 -0
  107. package/blog/es/list_i18n_technologies/build-tools/vite.md +179 -0
  108. package/blog/es/list_i18n_technologies/frameworks/angular.md +0 -2
  109. package/blog/es/list_i18n_technologies/frameworks/react-native.md +0 -2
  110. package/blog/es/list_i18n_technologies/frameworks/react.md +0 -2
  111. package/blog/es/list_i18n_technologies/frameworks/svelte.md +0 -2
  112. package/blog/es/list_i18n_technologies/frameworks/vue.md +0 -2
  113. package/blog/es/what_is_internationalization.md +0 -2
  114. package/blog/fr/date_time_number_formatting_locales.md +216 -0
  115. package/blog/fr/detecting_missing_translations.md +202 -0
  116. package/blog/fr/i18n_in_ci_cd_pipelines.md +247 -0
  117. package/blog/fr/i18n_meaning.md +0 -2
  118. package/blog/fr/i18n_testing_strategies.md +179 -0
  119. package/blog/fr/intlayer_with_i18next.md +3 -3
  120. package/blog/fr/intlayer_with_next-i18next.md +3 -3
  121. package/blog/fr/intlayer_with_next-intl.md +3 -3
  122. package/blog/fr/intlayer_with_react-i18next.md +3 -3
  123. package/blog/fr/intlayer_with_react-intl.md +3 -3
  124. package/blog/fr/intlayer_with_vue-i18n.md +3 -3
  125. package/blog/fr/is_i18next_outdated.md +315 -0
  126. package/blog/fr/is_next-intl_outdated.md +363 -0
  127. package/blog/fr/is_vue-i18n_outdated.md +338 -0
  128. package/blog/fr/list_i18n_technologies/build-tools/vite.md +179 -0
  129. package/blog/fr/list_i18n_technologies/frameworks/angular.md +0 -2
  130. package/blog/fr/list_i18n_technologies/frameworks/react-native.md +0 -2
  131. package/blog/fr/list_i18n_technologies/frameworks/react.md +0 -2
  132. package/blog/fr/list_i18n_technologies/frameworks/svelte.md +0 -2
  133. package/blog/fr/list_i18n_technologies/frameworks/vue.md +0 -2
  134. package/blog/fr/what_is_internationalization.md +0 -2
  135. package/blog/hi/date_time_number_formatting_locales.md +216 -0
  136. package/blog/hi/detecting_missing_translations.md +202 -0
  137. package/blog/hi/i18n_in_ci_cd_pipelines.md +247 -0
  138. package/blog/hi/i18n_meaning.md +0 -2
  139. package/blog/hi/i18n_testing_strategies.md +179 -0
  140. package/blog/hi/intlayer_with_i18next.md +3 -3
  141. package/blog/hi/intlayer_with_next-i18next.md +3 -3
  142. package/blog/hi/intlayer_with_next-intl.md +3 -3
  143. package/blog/hi/intlayer_with_react-i18next.md +3 -3
  144. package/blog/hi/intlayer_with_react-intl.md +3 -3
  145. package/blog/hi/intlayer_with_vue-i18n.md +3 -3
  146. package/blog/hi/is_i18next_outdated.md +317 -0
  147. package/blog/hi/is_next-intl_outdated.md +363 -0
  148. package/blog/hi/is_vue-i18n_outdated.md +338 -0
  149. package/blog/hi/list_i18n_technologies/build-tools/vite.md +177 -0
  150. package/blog/hi/list_i18n_technologies/frameworks/angular.md +0 -2
  151. package/blog/hi/list_i18n_technologies/frameworks/react-native.md +0 -2
  152. package/blog/hi/list_i18n_technologies/frameworks/react.md +0 -2
  153. package/blog/hi/list_i18n_technologies/frameworks/svelte.md +0 -2
  154. package/blog/hi/list_i18n_technologies/frameworks/vue.md +0 -2
  155. package/blog/hi/what_is_internationalization.md +0 -2
  156. package/blog/id/date_time_number_formatting_locales.md +216 -0
  157. package/blog/id/detecting_missing_translations.md +202 -0
  158. package/blog/id/i18n_in_ci_cd_pipelines.md +247 -0
  159. package/blog/id/i18n_meaning.md +0 -2
  160. package/blog/id/i18n_testing_strategies.md +179 -0
  161. package/blog/id/intlayer_with_i18next.md +3 -3
  162. package/blog/id/intlayer_with_next-i18next.md +3 -3
  163. package/blog/id/intlayer_with_next-intl.md +3 -3
  164. package/blog/id/intlayer_with_react-i18next.md +3 -3
  165. package/blog/id/intlayer_with_react-intl.md +3 -3
  166. package/blog/id/intlayer_with_vue-i18n.md +3 -3
  167. package/blog/id/is_i18next_outdated.md +317 -0
  168. package/blog/id/is_next-intl_outdated.md +363 -0
  169. package/blog/id/is_vue-i18n_outdated.md +338 -0
  170. package/blog/id/list_i18n_technologies/build-tools/vite.md +177 -0
  171. package/blog/id/list_i18n_technologies/frameworks/angular.md +0 -2
  172. package/blog/id/list_i18n_technologies/frameworks/react-native.md +0 -2
  173. package/blog/id/list_i18n_technologies/frameworks/react.md +0 -2
  174. package/blog/id/list_i18n_technologies/frameworks/svelte.md +0 -2
  175. package/blog/id/list_i18n_technologies/frameworks/vue.md +0 -2
  176. package/blog/id/what_is_internationalization.md +0 -2
  177. package/blog/it/date_time_number_formatting_locales.md +216 -0
  178. package/blog/it/detecting_missing_translations.md +202 -0
  179. package/blog/it/i18n_in_ci_cd_pipelines.md +247 -0
  180. package/blog/it/i18n_meaning.md +0 -2
  181. package/blog/it/i18n_testing_strategies.md +179 -0
  182. package/blog/it/intlayer_with_i18next.md +3 -3
  183. package/blog/it/intlayer_with_next-i18next.md +3 -3
  184. package/blog/it/intlayer_with_next-intl.md +3 -3
  185. package/blog/it/intlayer_with_react-i18next.md +3 -3
  186. package/blog/it/intlayer_with_react-intl.md +3 -3
  187. package/blog/it/intlayer_with_vue-i18n.md +3 -3
  188. package/blog/it/is_i18next_outdated.md +315 -0
  189. package/blog/it/is_next-intl_outdated.md +363 -0
  190. package/blog/it/is_vue-i18n_outdated.md +338 -0
  191. package/blog/it/list_i18n_technologies/build-tools/vite.md +179 -0
  192. package/blog/it/list_i18n_technologies/frameworks/angular.md +0 -2
  193. package/blog/it/list_i18n_technologies/frameworks/react-native.md +0 -2
  194. package/blog/it/list_i18n_technologies/frameworks/react.md +0 -2
  195. package/blog/it/list_i18n_technologies/frameworks/svelte.md +0 -2
  196. package/blog/it/list_i18n_technologies/frameworks/vue.md +0 -2
  197. package/blog/it/what_is_internationalization.md +0 -2
  198. package/blog/ja/date_time_number_formatting_locales.md +216 -0
  199. package/blog/ja/detecting_missing_translations.md +202 -0
  200. package/blog/ja/i18n_in_ci_cd_pipelines.md +247 -0
  201. package/blog/ja/i18n_meaning.md +0 -2
  202. package/blog/ja/i18n_testing_strategies.md +179 -0
  203. package/blog/ja/intlayer_with_i18next.md +3 -3
  204. package/blog/ja/intlayer_with_next-i18next.md +3 -3
  205. package/blog/ja/intlayer_with_next-intl.md +3 -3
  206. package/blog/ja/intlayer_with_react-i18next.md +3 -3
  207. package/blog/ja/intlayer_with_react-intl.md +3 -3
  208. package/blog/ja/intlayer_with_vue-i18n.md +3 -3
  209. package/blog/ja/is_i18next_outdated.md +315 -0
  210. package/blog/ja/is_next-intl_outdated.md +363 -0
  211. package/blog/ja/is_vue-i18n_outdated.md +338 -0
  212. package/blog/ja/list_i18n_technologies/build-tools/vite.md +179 -0
  213. package/blog/ja/list_i18n_technologies/frameworks/angular.md +0 -2
  214. package/blog/ja/list_i18n_technologies/frameworks/react-native.md +0 -2
  215. package/blog/ja/list_i18n_technologies/frameworks/react.md +0 -2
  216. package/blog/ja/list_i18n_technologies/frameworks/svelte.md +0 -2
  217. package/blog/ja/list_i18n_technologies/frameworks/vue.md +0 -2
  218. package/blog/ja/what_is_internationalization.md +0 -2
  219. package/blog/ko/date_time_number_formatting_locales.md +216 -0
  220. package/blog/ko/detecting_missing_translations.md +202 -0
  221. package/blog/ko/i18n_in_ci_cd_pipelines.md +247 -0
  222. package/blog/ko/i18n_meaning.md +0 -2
  223. package/blog/ko/i18n_testing_strategies.md +179 -0
  224. package/blog/ko/intlayer_with_i18next.md +3 -3
  225. package/blog/ko/intlayer_with_next-i18next.md +3 -3
  226. package/blog/ko/intlayer_with_next-intl.md +3 -3
  227. package/blog/ko/intlayer_with_react-i18next.md +3 -3
  228. package/blog/ko/intlayer_with_react-intl.md +3 -3
  229. package/blog/ko/intlayer_with_vue-i18n.md +3 -3
  230. package/blog/ko/is_i18next_outdated.md +317 -0
  231. package/blog/ko/is_next-intl_outdated.md +363 -0
  232. package/blog/ko/is_vue-i18n_outdated.md +338 -0
  233. package/blog/ko/list_i18n_technologies/build-tools/vite.md +179 -0
  234. package/blog/ko/list_i18n_technologies/frameworks/angular.md +0 -2
  235. package/blog/ko/list_i18n_technologies/frameworks/react-native.md +0 -2
  236. package/blog/ko/list_i18n_technologies/frameworks/react.md +0 -2
  237. package/blog/ko/list_i18n_technologies/frameworks/svelte.md +0 -2
  238. package/blog/ko/list_i18n_technologies/frameworks/vue.md +0 -2
  239. package/blog/ko/what_is_internationalization.md +0 -2
  240. package/blog/pl/date_time_number_formatting_locales.md +216 -0
  241. package/blog/pl/detecting_missing_translations.md +202 -0
  242. package/blog/pl/i18n_in_ci_cd_pipelines.md +247 -0
  243. package/blog/pl/i18n_meaning.md +0 -2
  244. package/blog/pl/i18n_testing_strategies.md +179 -0
  245. package/blog/pl/intlayer_with_i18next.md +3 -3
  246. package/blog/pl/intlayer_with_next-i18next.md +3 -3
  247. package/blog/pl/intlayer_with_next-intl.md +3 -3
  248. package/blog/pl/intlayer_with_react-i18next.md +3 -3
  249. package/blog/pl/intlayer_with_react-intl.md +3 -3
  250. package/blog/pl/intlayer_with_vue-i18n.md +3 -3
  251. package/blog/pl/is_i18next_outdated.md +315 -0
  252. package/blog/pl/is_next-intl_outdated.md +363 -0
  253. package/blog/pl/is_vue-i18n_outdated.md +338 -0
  254. package/blog/pl/list_i18n_technologies/build-tools/vite.md +177 -0
  255. package/blog/pl/list_i18n_technologies/frameworks/angular.md +0 -2
  256. package/blog/pl/list_i18n_technologies/frameworks/react-native.md +0 -2
  257. package/blog/pl/list_i18n_technologies/frameworks/react.md +0 -2
  258. package/blog/pl/list_i18n_technologies/frameworks/svelte.md +0 -2
  259. package/blog/pl/list_i18n_technologies/frameworks/vue.md +0 -2
  260. package/blog/pl/what_is_internationalization.md +0 -2
  261. package/blog/pt/date_time_number_formatting_locales.md +216 -0
  262. package/blog/pt/detecting_missing_translations.md +202 -0
  263. package/blog/pt/i18n_in_ci_cd_pipelines.md +247 -0
  264. package/blog/pt/i18n_meaning.md +0 -2
  265. package/blog/pt/i18n_testing_strategies.md +179 -0
  266. package/blog/pt/intlayer_with_i18next.md +3 -3
  267. package/blog/pt/intlayer_with_next-i18next.md +3 -3
  268. package/blog/pt/intlayer_with_next-intl.md +3 -3
  269. package/blog/pt/intlayer_with_react-i18next.md +3 -3
  270. package/blog/pt/intlayer_with_react-intl.md +3 -3
  271. package/blog/pt/intlayer_with_vue-i18n.md +3 -3
  272. package/blog/pt/is_i18next_outdated.md +315 -0
  273. package/blog/pt/is_next-intl_outdated.md +363 -0
  274. package/blog/pt/is_vue-i18n_outdated.md +338 -0
  275. package/blog/pt/list_i18n_technologies/build-tools/vite.md +179 -0
  276. package/blog/pt/list_i18n_technologies/frameworks/angular.md +0 -2
  277. package/blog/pt/list_i18n_technologies/frameworks/react-native.md +0 -2
  278. package/blog/pt/list_i18n_technologies/frameworks/react.md +0 -2
  279. package/blog/pt/list_i18n_technologies/frameworks/svelte.md +0 -2
  280. package/blog/pt/list_i18n_technologies/frameworks/vue.md +0 -2
  281. package/blog/pt/what_is_internationalization.md +0 -2
  282. package/blog/ru/date_time_number_formatting_locales.md +216 -0
  283. package/blog/ru/detecting_missing_translations.md +202 -0
  284. package/blog/ru/i18n_in_ci_cd_pipelines.md +247 -0
  285. package/blog/ru/i18n_meaning.md +0 -2
  286. package/blog/ru/i18n_testing_strategies.md +179 -0
  287. package/blog/ru/intlayer_with_i18next.md +3 -3
  288. package/blog/ru/intlayer_with_next-i18next.md +3 -3
  289. package/blog/ru/intlayer_with_next-intl.md +3 -3
  290. package/blog/ru/intlayer_with_react-i18next.md +3 -3
  291. package/blog/ru/intlayer_with_react-intl.md +3 -3
  292. package/blog/ru/intlayer_with_vue-i18n.md +3 -3
  293. package/blog/ru/is_i18next_outdated.md +315 -0
  294. package/blog/ru/is_next-intl_outdated.md +363 -0
  295. package/blog/ru/is_vue-i18n_outdated.md +338 -0
  296. package/blog/ru/list_i18n_technologies/build-tools/vite.md +179 -0
  297. package/blog/ru/list_i18n_technologies/frameworks/angular.md +0 -2
  298. package/blog/ru/list_i18n_technologies/frameworks/react-native.md +0 -2
  299. package/blog/ru/list_i18n_technologies/frameworks/react.md +0 -2
  300. package/blog/ru/list_i18n_technologies/frameworks/svelte.md +0 -2
  301. package/blog/ru/list_i18n_technologies/frameworks/vue.md +0 -2
  302. package/blog/ru/what_is_internationalization.md +0 -2
  303. package/blog/tr/date_time_number_formatting_locales.md +216 -0
  304. package/blog/tr/detecting_missing_translations.md +202 -0
  305. package/blog/tr/i18n_in_ci_cd_pipelines.md +247 -0
  306. package/blog/tr/i18n_meaning.md +0 -2
  307. package/blog/tr/i18n_testing_strategies.md +179 -0
  308. package/blog/tr/intlayer_with_i18next.md +3 -3
  309. package/blog/tr/intlayer_with_next-i18next.md +3 -3
  310. package/blog/tr/intlayer_with_next-intl.md +3 -3
  311. package/blog/tr/intlayer_with_react-i18next.md +3 -3
  312. package/blog/tr/intlayer_with_react-intl.md +3 -3
  313. package/blog/tr/intlayer_with_vue-i18n.md +3 -3
  314. package/blog/tr/is_i18next_outdated.md +315 -0
  315. package/blog/tr/is_next-intl_outdated.md +363 -0
  316. package/blog/tr/is_vue-i18n_outdated.md +338 -0
  317. package/blog/tr/list_i18n_technologies/build-tools/vite.md +179 -0
  318. package/blog/tr/list_i18n_technologies/frameworks/angular.md +0 -2
  319. package/blog/tr/list_i18n_technologies/frameworks/react-native.md +0 -2
  320. package/blog/tr/list_i18n_technologies/frameworks/react.md +0 -2
  321. package/blog/tr/list_i18n_technologies/frameworks/svelte.md +0 -2
  322. package/blog/tr/list_i18n_technologies/frameworks/vue.md +0 -2
  323. package/blog/tr/what_is_internationalization.md +0 -2
  324. package/blog/uk/date_time_number_formatting_locales.md +216 -0
  325. package/blog/uk/detecting_missing_translations.md +202 -0
  326. package/blog/uk/i18n_in_ci_cd_pipelines.md +247 -0
  327. package/blog/uk/i18n_meaning.md +0 -2
  328. package/blog/uk/i18n_testing_strategies.md +179 -0
  329. package/blog/uk/intlayer_with_i18next.md +3 -3
  330. package/blog/uk/intlayer_with_next-i18next.md +3 -3
  331. package/blog/uk/intlayer_with_next-intl.md +3 -3
  332. package/blog/uk/intlayer_with_react-i18next.md +3 -3
  333. package/blog/uk/intlayer_with_react-intl.md +3 -3
  334. package/blog/uk/intlayer_with_vue-i18n.md +3 -3
  335. package/blog/uk/is_i18next_outdated.md +315 -0
  336. package/blog/uk/is_next-intl_outdated.md +363 -0
  337. package/blog/uk/is_vue-i18n_outdated.md +338 -0
  338. package/blog/uk/list_i18n_technologies/build-tools/vite.md +177 -0
  339. package/blog/uk/list_i18n_technologies/frameworks/angular.md +0 -2
  340. package/blog/uk/list_i18n_technologies/frameworks/react-native.md +0 -2
  341. package/blog/uk/list_i18n_technologies/frameworks/react.md +0 -2
  342. package/blog/uk/list_i18n_technologies/frameworks/svelte.md +0 -2
  343. package/blog/uk/list_i18n_technologies/frameworks/vue.md +0 -2
  344. package/blog/uk/what_is_internationalization.md +0 -2
  345. package/blog/vi/date_time_number_formatting_locales.md +216 -0
  346. package/blog/vi/detecting_missing_translations.md +202 -0
  347. package/blog/vi/i18n_in_ci_cd_pipelines.md +247 -0
  348. package/blog/vi/i18n_meaning.md +0 -2
  349. package/blog/vi/i18n_testing_strategies.md +179 -0
  350. package/blog/vi/intlayer_with_i18next.md +3 -3
  351. package/blog/vi/intlayer_with_next-i18next.md +3 -3
  352. package/blog/vi/intlayer_with_next-intl.md +3 -3
  353. package/blog/vi/intlayer_with_react-i18next.md +3 -3
  354. package/blog/vi/intlayer_with_react-intl.md +3 -3
  355. package/blog/vi/intlayer_with_vue-i18n.md +3 -3
  356. package/blog/vi/is_i18next_outdated.md +317 -0
  357. package/blog/vi/is_next-intl_outdated.md +363 -0
  358. package/blog/vi/is_vue-i18n_outdated.md +338 -0
  359. package/blog/vi/list_i18n_technologies/build-tools/vite.md +177 -0
  360. package/blog/vi/list_i18n_technologies/frameworks/angular.md +0 -2
  361. package/blog/vi/list_i18n_technologies/frameworks/react-native.md +0 -2
  362. package/blog/vi/list_i18n_technologies/frameworks/react.md +0 -2
  363. package/blog/vi/list_i18n_technologies/frameworks/svelte.md +0 -2
  364. package/blog/vi/list_i18n_technologies/frameworks/vue.md +0 -2
  365. package/blog/vi/what_is_internationalization.md +0 -2
  366. package/blog/zh/date_time_number_formatting_locales.md +216 -0
  367. package/blog/zh/detecting_missing_translations.md +202 -0
  368. package/blog/zh/i18n_in_ci_cd_pipelines.md +247 -0
  369. package/blog/zh/i18n_meaning.md +0 -2
  370. package/blog/zh/i18n_testing_strategies.md +179 -0
  371. package/blog/zh/intlayer_with_i18next.md +3 -3
  372. package/blog/zh/intlayer_with_next-i18next.md +3 -3
  373. package/blog/zh/intlayer_with_next-intl.md +3 -3
  374. package/blog/zh/intlayer_with_react-i18next.md +3 -3
  375. package/blog/zh/intlayer_with_react-intl.md +3 -3
  376. package/blog/zh/intlayer_with_vue-i18n.md +3 -3
  377. package/blog/zh/is_i18next_outdated.md +317 -0
  378. package/blog/zh/is_next-intl_outdated.md +363 -0
  379. package/blog/zh/is_vue-i18n_outdated.md +338 -0
  380. package/blog/zh/list_i18n_technologies/build-tools/vite.md +179 -0
  381. package/blog/zh/list_i18n_technologies/frameworks/angular.md +0 -2
  382. package/blog/zh/list_i18n_technologies/frameworks/react-native.md +0 -2
  383. package/blog/zh/list_i18n_technologies/frameworks/react.md +0 -2
  384. package/blog/zh/list_i18n_technologies/frameworks/svelte.md +0 -2
  385. package/blog/zh/list_i18n_technologies/frameworks/vue.md +0 -2
  386. package/blog/zh/what_is_internationalization.md +0 -2
  387. package/dist/cjs/generated/blog.entry.cjs +320 -0
  388. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  389. package/dist/esm/generated/blog.entry.mjs +320 -0
  390. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  391. package/dist/types/generated/blog.entry.d.ts +16 -0
  392. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  393. package/docs/ar/bundle_optimization.md +186 -186
  394. package/docs/ar/intlayer_with_adonisjs.md +3 -3
  395. package/docs/ar/intlayer_with_analog.md +3 -3
  396. package/docs/ar/intlayer_with_angular_19.md +3 -3
  397. package/docs/ar/intlayer_with_angular_21.md +3 -3
  398. package/docs/ar/intlayer_with_astro.md +3 -3
  399. package/docs/ar/intlayer_with_astro_lit.md +3 -3
  400. package/docs/ar/intlayer_with_astro_preact.md +3 -3
  401. package/docs/ar/intlayer_with_astro_react.md +3 -3
  402. package/docs/ar/intlayer_with_astro_solid.md +3 -3
  403. package/docs/ar/intlayer_with_astro_svelte.md +3 -3
  404. package/docs/ar/intlayer_with_astro_vanilla.md +3 -3
  405. package/docs/ar/intlayer_with_astro_vue.md +3 -3
  406. package/docs/ar/intlayer_with_create_react_app.md +3 -3
  407. package/docs/ar/intlayer_with_elysia.md +4 -4
  408. package/docs/ar/intlayer_with_express.md +3 -3
  409. package/docs/ar/intlayer_with_fastify.md +4 -4
  410. package/docs/ar/intlayer_with_hono.md +3 -3
  411. package/docs/ar/intlayer_with_lynx+react.md +3 -3
  412. package/docs/ar/intlayer_with_nestjs.md +3 -3
  413. package/docs/ar/intlayer_with_next-i18next.md +3 -3
  414. package/docs/ar/intlayer_with_nextjs_14.md +3 -3
  415. package/docs/ar/intlayer_with_nextjs_15.md +3 -3
  416. package/docs/ar/intlayer_with_nextjs_16.md +3 -3
  417. package/docs/ar/intlayer_with_nextjs_compiler.md +3 -3
  418. package/docs/ar/intlayer_with_nextjs_no_locale_path.md +3 -3
  419. package/docs/ar/intlayer_with_nextjs_page_router.md +3 -3
  420. package/docs/ar/intlayer_with_nuxt.md +3 -3
  421. package/docs/ar/intlayer_with_react_native+expo.md +3 -3
  422. package/docs/ar/intlayer_with_react_router_v7.md +3 -3
  423. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +3 -3
  424. package/docs/ar/intlayer_with_solid_start.md +3 -3
  425. package/docs/ar/intlayer_with_svelte_kit.md +3 -3
  426. package/docs/ar/intlayer_with_tanstack+solid.md +3 -3
  427. package/docs/ar/intlayer_with_tanstack.md +3 -3
  428. package/docs/ar/intlayer_with_vite+lit.md +3 -3
  429. package/docs/ar/intlayer_with_vite+preact.md +3 -3
  430. package/docs/ar/intlayer_with_vite+react.md +3 -3
  431. package/docs/ar/intlayer_with_vite+react_compiler.md +3 -3
  432. package/docs/ar/intlayer_with_vite+solid.md +3 -3
  433. package/docs/ar/intlayer_with_vite+svelte.md +4 -12
  434. package/docs/ar/intlayer_with_vite+vanilla.md +3 -3
  435. package/docs/ar/intlayer_with_vite+vue.md +3 -3
  436. package/docs/ar/migration_from_i18next_to_intlayer.md +3 -3
  437. package/docs/ar/migration_from_next-i18next_to_intlayer.md +3 -3
  438. package/docs/ar/migration_from_next-intl_to_intlayer.md +3 -3
  439. package/docs/ar/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  440. package/docs/ar/migration_from_react-i18next_to_intlayer.md +3 -3
  441. package/docs/ar/migration_from_vue-i18n_to_intlayer.md +3 -3
  442. package/docs/bn/bundle_optimization.md +186 -186
  443. package/docs/bn/intlayer_with_angular_21.md +3 -3
  444. package/docs/bn/intlayer_with_fastify.md +4 -4
  445. package/docs/bn/intlayer_with_hono.md +3 -3
  446. package/docs/bn/intlayer_with_vite+lit.md +3 -3
  447. package/docs/bn/intlayer_with_vite+vanilla.md +3 -3
  448. package/docs/cs/bundle_optimization.md +186 -186
  449. package/docs/cs/intlayer_with_angular_21.md +3 -3
  450. package/docs/cs/intlayer_with_fastify.md +4 -4
  451. package/docs/cs/intlayer_with_hono.md +3 -3
  452. package/docs/cs/intlayer_with_vite+lit.md +3 -3
  453. package/docs/cs/intlayer_with_vite+vanilla.md +3 -3
  454. package/docs/de/bundle_optimization.md +186 -186
  455. package/docs/de/intlayer_with_adonisjs.md +3 -3
  456. package/docs/de/intlayer_with_analog.md +3 -3
  457. package/docs/de/intlayer_with_angular_19.md +3 -3
  458. package/docs/de/intlayer_with_angular_21.md +3 -3
  459. package/docs/de/intlayer_with_astro.md +3 -3
  460. package/docs/de/intlayer_with_astro_lit.md +3 -3
  461. package/docs/de/intlayer_with_astro_preact.md +3 -3
  462. package/docs/de/intlayer_with_astro_react.md +3 -3
  463. package/docs/de/intlayer_with_astro_solid.md +3 -3
  464. package/docs/de/intlayer_with_astro_svelte.md +3 -3
  465. package/docs/de/intlayer_with_astro_vanilla.md +3 -3
  466. package/docs/de/intlayer_with_astro_vue.md +3 -3
  467. package/docs/de/intlayer_with_create_react_app.md +3 -3
  468. package/docs/de/intlayer_with_elysia.md +4 -4
  469. package/docs/de/intlayer_with_express.md +3 -3
  470. package/docs/de/intlayer_with_fastify.md +4 -4
  471. package/docs/de/intlayer_with_hono.md +3 -3
  472. package/docs/de/intlayer_with_lynx+react.md +3 -3
  473. package/docs/de/intlayer_with_nestjs.md +3 -3
  474. package/docs/de/intlayer_with_next-i18next.md +3 -3
  475. package/docs/de/intlayer_with_nextjs_14.md +3 -3
  476. package/docs/de/intlayer_with_nextjs_15.md +3 -3
  477. package/docs/de/intlayer_with_nextjs_16.md +3 -3
  478. package/docs/de/intlayer_with_nextjs_compiler.md +3 -3
  479. package/docs/de/intlayer_with_nextjs_no_locale_path.md +3 -3
  480. package/docs/de/intlayer_with_nextjs_page_router.md +3 -3
  481. package/docs/de/intlayer_with_nuxt.md +3 -3
  482. package/docs/de/intlayer_with_react_native+expo.md +3 -3
  483. package/docs/de/intlayer_with_react_router_v7.md +3 -3
  484. package/docs/de/intlayer_with_solid_start.md +3 -3
  485. package/docs/de/intlayer_with_svelte_kit.md +3 -3
  486. package/docs/de/intlayer_with_tanstack+solid.md +3 -3
  487. package/docs/de/intlayer_with_tanstack.md +3 -3
  488. package/docs/de/intlayer_with_vite+lit.md +3 -3
  489. package/docs/de/intlayer_with_vite+preact.md +3 -3
  490. package/docs/de/intlayer_with_vite+react.md +3 -3
  491. package/docs/de/intlayer_with_vite+react_compiler.md +3 -3
  492. package/docs/de/intlayer_with_vite+solid.md +3 -3
  493. package/docs/de/intlayer_with_vite+svelte.md +4 -12
  494. package/docs/de/intlayer_with_vite+vanilla.md +3 -3
  495. package/docs/de/intlayer_with_vite+vue.md +3 -3
  496. package/docs/de/migration_from_i18next_to_intlayer.md +3 -3
  497. package/docs/de/migration_from_next-i18next_to_intlayer.md +3 -3
  498. package/docs/de/migration_from_next-intl_to_intlayer.md +3 -3
  499. package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  500. package/docs/de/migration_from_react-i18next_to_intlayer.md +3 -3
  501. package/docs/de/migration_from_vue-i18n_to_intlayer.md +3 -3
  502. package/docs/en/bundle_optimization.md +186 -186
  503. package/docs/en/intlayer_with_adonisjs.md +3 -3
  504. package/docs/en/intlayer_with_analog.md +3 -3
  505. package/docs/en/intlayer_with_angular_19.md +3 -3
  506. package/docs/en/intlayer_with_angular_21.md +3 -3
  507. package/docs/en/intlayer_with_astro.md +3 -3
  508. package/docs/en/intlayer_with_astro_lit.md +3 -3
  509. package/docs/en/intlayer_with_astro_preact.md +3 -3
  510. package/docs/en/intlayer_with_astro_react.md +3 -3
  511. package/docs/en/intlayer_with_astro_solid.md +3 -3
  512. package/docs/en/intlayer_with_astro_svelte.md +3 -3
  513. package/docs/en/intlayer_with_astro_vanilla.md +3 -3
  514. package/docs/en/intlayer_with_astro_vue.md +3 -3
  515. package/docs/en/intlayer_with_create_react_app.md +3 -3
  516. package/docs/en/intlayer_with_elysia.md +4 -4
  517. package/docs/en/intlayer_with_express.md +3 -3
  518. package/docs/en/intlayer_with_fastify.md +4 -4
  519. package/docs/en/intlayer_with_hono.md +3 -3
  520. package/docs/en/intlayer_with_lynx+react.md +3 -3
  521. package/docs/en/intlayer_with_nestjs.md +3 -3
  522. package/docs/en/intlayer_with_next-i18next.md +3 -3
  523. package/docs/en/intlayer_with_nextjs_14.md +3 -3
  524. package/docs/en/intlayer_with_nextjs_15.md +3 -3
  525. package/docs/en/intlayer_with_nextjs_16.md +3 -3
  526. package/docs/en/intlayer_with_nextjs_compiler.md +3 -3
  527. package/docs/en/intlayer_with_nextjs_no_locale_path.md +3 -3
  528. package/docs/en/intlayer_with_nextjs_page_router.md +3 -3
  529. package/docs/en/intlayer_with_nuxt.md +3 -3
  530. package/docs/en/intlayer_with_react_native+expo.md +3 -3
  531. package/docs/en/intlayer_with_react_router_v7.md +3 -3
  532. package/docs/en/intlayer_with_solid_start.md +3 -3
  533. package/docs/en/intlayer_with_svelte_kit.md +3 -3
  534. package/docs/en/intlayer_with_tanstack+solid.md +3 -3
  535. package/docs/en/intlayer_with_tanstack.md +3 -3
  536. package/docs/en/intlayer_with_vite+lit.md +3 -3
  537. package/docs/en/intlayer_with_vite+preact.md +3 -3
  538. package/docs/en/intlayer_with_vite+react.md +3 -3
  539. package/docs/en/intlayer_with_vite+react_compiler.md +3 -3
  540. package/docs/en/intlayer_with_vite+solid.md +3 -3
  541. package/docs/en/intlayer_with_vite+svelte.md +4 -12
  542. package/docs/en/intlayer_with_vite+vanilla.md +3 -3
  543. package/docs/en/intlayer_with_vite+vue.md +3 -3
  544. package/docs/en/migration_from_i18next_to_intlayer.md +3 -3
  545. package/docs/en/migration_from_next-i18next_to_intlayer.md +3 -3
  546. package/docs/en/migration_from_next-intl_to_intlayer.md +3 -3
  547. package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  548. package/docs/en/migration_from_react-i18next_to_intlayer.md +3 -3
  549. package/docs/en/migration_from_vue-i18n_to_intlayer.md +3 -3
  550. package/docs/en-GB/bundle_optimization.md +186 -186
  551. package/docs/en-GB/intlayer_with_adonisjs.md +3 -3
  552. package/docs/en-GB/intlayer_with_analog.md +3 -3
  553. package/docs/en-GB/intlayer_with_angular_19.md +3 -3
  554. package/docs/en-GB/intlayer_with_angular_21.md +3 -3
  555. package/docs/en-GB/intlayer_with_astro.md +3 -3
  556. package/docs/en-GB/intlayer_with_astro_lit.md +3 -3
  557. package/docs/en-GB/intlayer_with_astro_preact.md +3 -3
  558. package/docs/en-GB/intlayer_with_astro_react.md +3 -3
  559. package/docs/en-GB/intlayer_with_astro_solid.md +3 -3
  560. package/docs/en-GB/intlayer_with_astro_svelte.md +3 -3
  561. package/docs/en-GB/intlayer_with_astro_vanilla.md +3 -3
  562. package/docs/en-GB/intlayer_with_astro_vue.md +3 -3
  563. package/docs/en-GB/intlayer_with_create_react_app.md +3 -3
  564. package/docs/en-GB/intlayer_with_elysia.md +4 -4
  565. package/docs/en-GB/intlayer_with_express.md +3 -3
  566. package/docs/en-GB/intlayer_with_fastify.md +4 -4
  567. package/docs/en-GB/intlayer_with_hono.md +3 -3
  568. package/docs/en-GB/intlayer_with_lynx+react.md +3 -3
  569. package/docs/en-GB/intlayer_with_nestjs.md +3 -3
  570. package/docs/en-GB/intlayer_with_next-i18next.md +3 -3
  571. package/docs/en-GB/intlayer_with_nextjs_14.md +3 -3
  572. package/docs/en-GB/intlayer_with_nextjs_15.md +3 -3
  573. package/docs/en-GB/intlayer_with_nextjs_16.md +3 -3
  574. package/docs/en-GB/intlayer_with_nextjs_compiler.md +3 -3
  575. package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +3 -3
  576. package/docs/en-GB/intlayer_with_nextjs_page_router.md +3 -3
  577. package/docs/en-GB/intlayer_with_nuxt.md +3 -3
  578. package/docs/en-GB/intlayer_with_react_native+expo.md +3 -3
  579. package/docs/en-GB/intlayer_with_react_router_v7.md +3 -3
  580. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +3 -3
  581. package/docs/en-GB/intlayer_with_solid_start.md +3 -3
  582. package/docs/en-GB/intlayer_with_svelte_kit.md +3 -3
  583. package/docs/en-GB/intlayer_with_tanstack+solid.md +3 -3
  584. package/docs/en-GB/intlayer_with_tanstack.md +3 -3
  585. package/docs/en-GB/intlayer_with_vite+lit.md +3 -3
  586. package/docs/en-GB/intlayer_with_vite+preact.md +3 -3
  587. package/docs/en-GB/intlayer_with_vite+react.md +3 -3
  588. package/docs/en-GB/intlayer_with_vite+react_compiler.md +3 -3
  589. package/docs/en-GB/intlayer_with_vite+solid.md +3 -3
  590. package/docs/en-GB/intlayer_with_vite+svelte.md +4 -12
  591. package/docs/en-GB/intlayer_with_vite+vanilla.md +3 -3
  592. package/docs/en-GB/intlayer_with_vite+vue.md +3 -3
  593. package/docs/en-GB/migration_from_i18next_to_intlayer.md +3 -3
  594. package/docs/en-GB/migration_from_next-i18next_to_intlayer.md +3 -3
  595. package/docs/en-GB/migration_from_next-intl_to_intlayer.md +3 -3
  596. package/docs/en-GB/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  597. package/docs/en-GB/migration_from_react-i18next_to_intlayer.md +3 -3
  598. package/docs/en-GB/migration_from_vue-i18n_to_intlayer.md +3 -3
  599. package/docs/es/bundle_optimization.md +186 -186
  600. package/docs/es/intlayer_with_adonisjs.md +3 -3
  601. package/docs/es/intlayer_with_analog.md +3 -3
  602. package/docs/es/intlayer_with_angular_19.md +3 -3
  603. package/docs/es/intlayer_with_angular_21.md +3 -3
  604. package/docs/es/intlayer_with_astro.md +3 -3
  605. package/docs/es/intlayer_with_astro_lit.md +3 -3
  606. package/docs/es/intlayer_with_astro_preact.md +3 -3
  607. package/docs/es/intlayer_with_astro_react.md +3 -3
  608. package/docs/es/intlayer_with_astro_solid.md +3 -3
  609. package/docs/es/intlayer_with_astro_svelte.md +3 -3
  610. package/docs/es/intlayer_with_astro_vanilla.md +3 -3
  611. package/docs/es/intlayer_with_astro_vue.md +3 -3
  612. package/docs/es/intlayer_with_create_react_app.md +3 -3
  613. package/docs/es/intlayer_with_elysia.md +4 -4
  614. package/docs/es/intlayer_with_express.md +3 -3
  615. package/docs/es/intlayer_with_fastify.md +4 -4
  616. package/docs/es/intlayer_with_hono.md +3 -3
  617. package/docs/es/intlayer_with_lynx+react.md +3 -3
  618. package/docs/es/intlayer_with_nestjs.md +3 -3
  619. package/docs/es/intlayer_with_next-i18next.md +3 -3
  620. package/docs/es/intlayer_with_nextjs_14.md +3 -3
  621. package/docs/es/intlayer_with_nextjs_15.md +3 -3
  622. package/docs/es/intlayer_with_nextjs_16.md +3 -3
  623. package/docs/es/intlayer_with_nextjs_compiler.md +3 -3
  624. package/docs/es/intlayer_with_nextjs_no_locale_path.md +3 -3
  625. package/docs/es/intlayer_with_nextjs_page_router.md +3 -3
  626. package/docs/es/intlayer_with_nuxt.md +3 -3
  627. package/docs/es/intlayer_with_react_native+expo.md +3 -3
  628. package/docs/es/intlayer_with_react_router_v7.md +3 -3
  629. package/docs/es/intlayer_with_solid_start.md +3 -3
  630. package/docs/es/intlayer_with_svelte_kit.md +3 -3
  631. package/docs/es/intlayer_with_tanstack+solid.md +3 -3
  632. package/docs/es/intlayer_with_tanstack.md +3 -3
  633. package/docs/es/intlayer_with_vite+lit.md +3 -3
  634. package/docs/es/intlayer_with_vite+preact.md +3 -3
  635. package/docs/es/intlayer_with_vite+react.md +3 -3
  636. package/docs/es/intlayer_with_vite+react_compiler.md +3 -3
  637. package/docs/es/intlayer_with_vite+solid.md +3 -3
  638. package/docs/es/intlayer_with_vite+svelte.md +4 -12
  639. package/docs/es/intlayer_with_vite+vanilla.md +3 -3
  640. package/docs/es/intlayer_with_vite+vue.md +3 -3
  641. package/docs/es/migration_from_i18next_to_intlayer.md +3 -3
  642. package/docs/es/migration_from_next-i18next_to_intlayer.md +3 -3
  643. package/docs/es/migration_from_next-intl_to_intlayer.md +3 -3
  644. package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  645. package/docs/es/migration_from_react-i18next_to_intlayer.md +3 -3
  646. package/docs/es/migration_from_vue-i18n_to_intlayer.md +3 -3
  647. package/docs/fr/bundle_optimization.md +186 -186
  648. package/docs/fr/intlayer_with_adonisjs.md +3 -3
  649. package/docs/fr/intlayer_with_analog.md +3 -3
  650. package/docs/fr/intlayer_with_angular_19.md +3 -3
  651. package/docs/fr/intlayer_with_angular_21.md +3 -3
  652. package/docs/fr/intlayer_with_astro.md +3 -3
  653. package/docs/fr/intlayer_with_astro_lit.md +3 -3
  654. package/docs/fr/intlayer_with_astro_preact.md +3 -3
  655. package/docs/fr/intlayer_with_astro_react.md +3 -3
  656. package/docs/fr/intlayer_with_astro_solid.md +3 -3
  657. package/docs/fr/intlayer_with_astro_svelte.md +3 -3
  658. package/docs/fr/intlayer_with_astro_vanilla.md +3 -3
  659. package/docs/fr/intlayer_with_astro_vue.md +3 -3
  660. package/docs/fr/intlayer_with_create_react_app.md +3 -3
  661. package/docs/fr/intlayer_with_elysia.md +4 -4
  662. package/docs/fr/intlayer_with_express.md +3 -3
  663. package/docs/fr/intlayer_with_fastify.md +4 -4
  664. package/docs/fr/intlayer_with_hono.md +3 -3
  665. package/docs/fr/intlayer_with_lynx+react.md +3 -3
  666. package/docs/fr/intlayer_with_nestjs.md +3 -3
  667. package/docs/fr/intlayer_with_next-i18next.md +3 -3
  668. package/docs/fr/intlayer_with_nextjs_14.md +3 -3
  669. package/docs/fr/intlayer_with_nextjs_15.md +3 -3
  670. package/docs/fr/intlayer_with_nextjs_16.md +3 -3
  671. package/docs/fr/intlayer_with_nextjs_compiler.md +3 -3
  672. package/docs/fr/intlayer_with_nextjs_no_locale_path.md +3 -3
  673. package/docs/fr/intlayer_with_nextjs_page_router.md +3 -3
  674. package/docs/fr/intlayer_with_nuxt.md +3 -3
  675. package/docs/fr/intlayer_with_react_native+expo.md +3 -3
  676. package/docs/fr/intlayer_with_react_router_v7.md +3 -3
  677. package/docs/fr/intlayer_with_solid_start.md +3 -3
  678. package/docs/fr/intlayer_with_svelte_kit.md +3 -3
  679. package/docs/fr/intlayer_with_tanstack+solid.md +3 -3
  680. package/docs/fr/intlayer_with_tanstack.md +3 -3
  681. package/docs/fr/intlayer_with_vite+lit.md +3 -3
  682. package/docs/fr/intlayer_with_vite+preact.md +3 -3
  683. package/docs/fr/intlayer_with_vite+react.md +3 -3
  684. package/docs/fr/intlayer_with_vite+react_compiler.md +3 -3
  685. package/docs/fr/intlayer_with_vite+solid.md +3 -3
  686. package/docs/fr/intlayer_with_vite+svelte.md +4 -12
  687. package/docs/fr/intlayer_with_vite+vanilla.md +3 -3
  688. package/docs/fr/intlayer_with_vite+vue.md +3 -3
  689. package/docs/fr/migration_from_i18next_to_intlayer.md +3 -3
  690. package/docs/fr/migration_from_next-i18next_to_intlayer.md +3 -3
  691. package/docs/fr/migration_from_next-intl_to_intlayer.md +3 -3
  692. package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  693. package/docs/fr/migration_from_react-i18next_to_intlayer.md +3 -3
  694. package/docs/fr/migration_from_vue-i18n_to_intlayer.md +3 -3
  695. package/docs/hi/bundle_optimization.md +186 -186
  696. package/docs/hi/intlayer_with_adonisjs.md +3 -3
  697. package/docs/hi/intlayer_with_analog.md +3 -3
  698. package/docs/hi/intlayer_with_angular_19.md +3 -3
  699. package/docs/hi/intlayer_with_angular_21.md +3 -3
  700. package/docs/hi/intlayer_with_astro.md +3 -3
  701. package/docs/hi/intlayer_with_astro_lit.md +3 -3
  702. package/docs/hi/intlayer_with_astro_preact.md +3 -3
  703. package/docs/hi/intlayer_with_astro_react.md +3 -3
  704. package/docs/hi/intlayer_with_astro_solid.md +3 -3
  705. package/docs/hi/intlayer_with_astro_svelte.md +3 -3
  706. package/docs/hi/intlayer_with_astro_vanilla.md +3 -3
  707. package/docs/hi/intlayer_with_astro_vue.md +3 -3
  708. package/docs/hi/intlayer_with_create_react_app.md +3 -3
  709. package/docs/hi/intlayer_with_elysia.md +4 -4
  710. package/docs/hi/intlayer_with_express.md +3 -3
  711. package/docs/hi/intlayer_with_fastify.md +4 -4
  712. package/docs/hi/intlayer_with_hono.md +3 -3
  713. package/docs/hi/intlayer_with_lynx+react.md +3 -3
  714. package/docs/hi/intlayer_with_nestjs.md +3 -3
  715. package/docs/hi/intlayer_with_next-i18next.md +3 -3
  716. package/docs/hi/intlayer_with_nextjs_14.md +3 -3
  717. package/docs/hi/intlayer_with_nextjs_15.md +3 -3
  718. package/docs/hi/intlayer_with_nextjs_16.md +3 -3
  719. package/docs/hi/intlayer_with_nextjs_compiler.md +3 -3
  720. package/docs/hi/intlayer_with_nextjs_no_locale_path.md +3 -3
  721. package/docs/hi/intlayer_with_nextjs_page_router.md +3 -3
  722. package/docs/hi/intlayer_with_nuxt.md +3 -3
  723. package/docs/hi/intlayer_with_react_native+expo.md +3 -3
  724. package/docs/hi/intlayer_with_react_router_v7.md +3 -3
  725. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +3 -3
  726. package/docs/hi/intlayer_with_solid_start.md +3 -3
  727. package/docs/hi/intlayer_with_svelte_kit.md +3 -3
  728. package/docs/hi/intlayer_with_tanstack+solid.md +3 -3
  729. package/docs/hi/intlayer_with_tanstack.md +3 -3
  730. package/docs/hi/intlayer_with_vite+lit.md +3 -3
  731. package/docs/hi/intlayer_with_vite+preact.md +3 -3
  732. package/docs/hi/intlayer_with_vite+react.md +3 -3
  733. package/docs/hi/intlayer_with_vite+react_compiler.md +3 -3
  734. package/docs/hi/intlayer_with_vite+solid.md +3 -3
  735. package/docs/hi/intlayer_with_vite+svelte.md +4 -12
  736. package/docs/hi/intlayer_with_vite+vanilla.md +3 -3
  737. package/docs/hi/intlayer_with_vite+vue.md +3 -3
  738. package/docs/hi/migration_from_i18next_to_intlayer.md +3 -3
  739. package/docs/hi/migration_from_next-i18next_to_intlayer.md +3 -3
  740. package/docs/hi/migration_from_next-intl_to_intlayer.md +3 -3
  741. package/docs/hi/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  742. package/docs/hi/migration_from_react-i18next_to_intlayer.md +3 -3
  743. package/docs/hi/migration_from_vue-i18n_to_intlayer.md +3 -3
  744. package/docs/hi/packages/intlayer/index.md +3 -3
  745. package/docs/id/bundle_optimization.md +186 -186
  746. package/docs/id/intlayer_with_adonisjs.md +3 -3
  747. package/docs/id/intlayer_with_analog.md +3 -3
  748. package/docs/id/intlayer_with_angular_19.md +3 -3
  749. package/docs/id/intlayer_with_angular_21.md +3 -3
  750. package/docs/id/intlayer_with_astro.md +3 -3
  751. package/docs/id/intlayer_with_astro_lit.md +3 -3
  752. package/docs/id/intlayer_with_astro_preact.md +3 -3
  753. package/docs/id/intlayer_with_astro_react.md +3 -3
  754. package/docs/id/intlayer_with_astro_solid.md +3 -3
  755. package/docs/id/intlayer_with_astro_svelte.md +3 -3
  756. package/docs/id/intlayer_with_astro_vanilla.md +3 -3
  757. package/docs/id/intlayer_with_astro_vue.md +3 -3
  758. package/docs/id/intlayer_with_create_react_app.md +3 -3
  759. package/docs/id/intlayer_with_elysia.md +4 -4
  760. package/docs/id/intlayer_with_express.md +3 -3
  761. package/docs/id/intlayer_with_fastify.md +4 -4
  762. package/docs/id/intlayer_with_hono.md +3 -3
  763. package/docs/id/intlayer_with_lynx+react.md +3 -3
  764. package/docs/id/intlayer_with_nestjs.md +3 -3
  765. package/docs/id/intlayer_with_next-i18next.md +3 -3
  766. package/docs/id/intlayer_with_nextjs_14.md +3 -3
  767. package/docs/id/intlayer_with_nextjs_15.md +3 -3
  768. package/docs/id/intlayer_with_nextjs_16.md +3 -3
  769. package/docs/id/intlayer_with_nextjs_compiler.md +3 -3
  770. package/docs/id/intlayer_with_nextjs_no_locale_path.md +3 -3
  771. package/docs/id/intlayer_with_nextjs_page_router.md +3 -3
  772. package/docs/id/intlayer_with_nuxt.md +3 -3
  773. package/docs/id/intlayer_with_react_native+expo.md +3 -3
  774. package/docs/id/intlayer_with_react_router_v7.md +3 -3
  775. package/docs/id/intlayer_with_solid_start.md +3 -3
  776. package/docs/id/intlayer_with_svelte_kit.md +3 -3
  777. package/docs/id/intlayer_with_tanstack+solid.md +3 -3
  778. package/docs/id/intlayer_with_tanstack.md +3 -3
  779. package/docs/id/intlayer_with_vite+lit.md +3 -3
  780. package/docs/id/intlayer_with_vite+preact.md +3 -3
  781. package/docs/id/intlayer_with_vite+react.md +3 -3
  782. package/docs/id/intlayer_with_vite+react_compiler.md +3 -3
  783. package/docs/id/intlayer_with_vite+solid.md +3 -3
  784. package/docs/id/intlayer_with_vite+svelte.md +4 -12
  785. package/docs/id/intlayer_with_vite+vanilla.md +3 -3
  786. package/docs/id/intlayer_with_vite+vue.md +3 -3
  787. package/docs/id/migration_from_i18next_to_intlayer.md +3 -3
  788. package/docs/id/migration_from_next-i18next_to_intlayer.md +3 -3
  789. package/docs/id/migration_from_next-intl_to_intlayer.md +3 -3
  790. package/docs/id/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  791. package/docs/id/migration_from_react-i18next_to_intlayer.md +3 -3
  792. package/docs/id/migration_from_vue-i18n_to_intlayer.md +3 -3
  793. package/docs/it/bundle_optimization.md +186 -186
  794. package/docs/it/intlayer_with_adonisjs.md +3 -3
  795. package/docs/it/intlayer_with_analog.md +3 -3
  796. package/docs/it/intlayer_with_angular_19.md +3 -3
  797. package/docs/it/intlayer_with_angular_21.md +3 -3
  798. package/docs/it/intlayer_with_astro.md +3 -3
  799. package/docs/it/intlayer_with_astro_lit.md +3 -3
  800. package/docs/it/intlayer_with_astro_preact.md +3 -3
  801. package/docs/it/intlayer_with_astro_react.md +3 -3
  802. package/docs/it/intlayer_with_astro_solid.md +3 -3
  803. package/docs/it/intlayer_with_astro_svelte.md +3 -3
  804. package/docs/it/intlayer_with_astro_vanilla.md +3 -3
  805. package/docs/it/intlayer_with_astro_vue.md +3 -3
  806. package/docs/it/intlayer_with_create_react_app.md +3 -3
  807. package/docs/it/intlayer_with_elysia.md +4 -4
  808. package/docs/it/intlayer_with_express.md +3 -3
  809. package/docs/it/intlayer_with_fastify.md +4 -4
  810. package/docs/it/intlayer_with_hono.md +3 -3
  811. package/docs/it/intlayer_with_lynx+react.md +3 -3
  812. package/docs/it/intlayer_with_nestjs.md +3 -3
  813. package/docs/it/intlayer_with_next-i18next.md +3 -3
  814. package/docs/it/intlayer_with_nextjs_14.md +3 -3
  815. package/docs/it/intlayer_with_nextjs_15.md +3 -3
  816. package/docs/it/intlayer_with_nextjs_16.md +3 -3
  817. package/docs/it/intlayer_with_nextjs_compiler.md +3 -3
  818. package/docs/it/intlayer_with_nextjs_no_locale_path.md +3 -3
  819. package/docs/it/intlayer_with_nextjs_page_router.md +3 -3
  820. package/docs/it/intlayer_with_nuxt.md +3 -3
  821. package/docs/it/intlayer_with_react_native+expo.md +3 -3
  822. package/docs/it/intlayer_with_react_router_v7.md +3 -3
  823. package/docs/it/intlayer_with_solid_start.md +3 -3
  824. package/docs/it/intlayer_with_svelte_kit.md +3 -3
  825. package/docs/it/intlayer_with_tanstack+solid.md +3 -3
  826. package/docs/it/intlayer_with_tanstack.md +3 -3
  827. package/docs/it/intlayer_with_vite+lit.md +3 -3
  828. package/docs/it/intlayer_with_vite+preact.md +3 -3
  829. package/docs/it/intlayer_with_vite+react.md +3 -3
  830. package/docs/it/intlayer_with_vite+react_compiler.md +3 -3
  831. package/docs/it/intlayer_with_vite+solid.md +3 -3
  832. package/docs/it/intlayer_with_vite+svelte.md +4 -12
  833. package/docs/it/intlayer_with_vite+vanilla.md +3 -3
  834. package/docs/it/intlayer_with_vite+vue.md +3 -3
  835. package/docs/it/migration_from_i18next_to_intlayer.md +3 -3
  836. package/docs/it/migration_from_next-i18next_to_intlayer.md +3 -3
  837. package/docs/it/migration_from_next-intl_to_intlayer.md +3 -3
  838. package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  839. package/docs/it/migration_from_react-i18next_to_intlayer.md +3 -3
  840. package/docs/it/migration_from_vue-i18n_to_intlayer.md +3 -3
  841. package/docs/ja/bundle_optimization.md +186 -186
  842. package/docs/ja/intlayer_with_adonisjs.md +3 -3
  843. package/docs/ja/intlayer_with_analog.md +3 -3
  844. package/docs/ja/intlayer_with_angular_19.md +3 -3
  845. package/docs/ja/intlayer_with_angular_21.md +3 -3
  846. package/docs/ja/intlayer_with_astro.md +3 -3
  847. package/docs/ja/intlayer_with_astro_lit.md +3 -3
  848. package/docs/ja/intlayer_with_astro_preact.md +3 -3
  849. package/docs/ja/intlayer_with_astro_react.md +3 -3
  850. package/docs/ja/intlayer_with_astro_solid.md +3 -3
  851. package/docs/ja/intlayer_with_astro_svelte.md +3 -3
  852. package/docs/ja/intlayer_with_astro_vanilla.md +3 -3
  853. package/docs/ja/intlayer_with_astro_vue.md +3 -3
  854. package/docs/ja/intlayer_with_create_react_app.md +3 -3
  855. package/docs/ja/intlayer_with_elysia.md +4 -4
  856. package/docs/ja/intlayer_with_express.md +3 -3
  857. package/docs/ja/intlayer_with_fastify.md +4 -4
  858. package/docs/ja/intlayer_with_hono.md +3 -3
  859. package/docs/ja/intlayer_with_lynx+react.md +3 -3
  860. package/docs/ja/intlayer_with_nestjs.md +3 -3
  861. package/docs/ja/intlayer_with_next-i18next.md +3 -3
  862. package/docs/ja/intlayer_with_nextjs_14.md +3 -3
  863. package/docs/ja/intlayer_with_nextjs_15.md +3 -3
  864. package/docs/ja/intlayer_with_nextjs_16.md +3 -3
  865. package/docs/ja/intlayer_with_nextjs_compiler.md +3 -3
  866. package/docs/ja/intlayer_with_nextjs_no_locale_path.md +3 -3
  867. package/docs/ja/intlayer_with_nextjs_page_router.md +3 -3
  868. package/docs/ja/intlayer_with_nuxt.md +3 -3
  869. package/docs/ja/intlayer_with_react_native+expo.md +3 -3
  870. package/docs/ja/intlayer_with_react_router_v7.md +3 -3
  871. package/docs/ja/intlayer_with_solid_start.md +3 -3
  872. package/docs/ja/intlayer_with_svelte_kit.md +3 -3
  873. package/docs/ja/intlayer_with_tanstack+solid.md +3 -3
  874. package/docs/ja/intlayer_with_tanstack.md +3 -3
  875. package/docs/ja/intlayer_with_vite+lit.md +3 -3
  876. package/docs/ja/intlayer_with_vite+preact.md +3 -3
  877. package/docs/ja/intlayer_with_vite+react.md +3 -3
  878. package/docs/ja/intlayer_with_vite+react_compiler.md +3 -3
  879. package/docs/ja/intlayer_with_vite+solid.md +3 -3
  880. package/docs/ja/intlayer_with_vite+svelte.md +4 -12
  881. package/docs/ja/intlayer_with_vite+vanilla.md +3 -3
  882. package/docs/ja/intlayer_with_vite+vue.md +3 -3
  883. package/docs/ja/migration_from_i18next_to_intlayer.md +3 -3
  884. package/docs/ja/migration_from_next-i18next_to_intlayer.md +3 -3
  885. package/docs/ja/migration_from_next-intl_to_intlayer.md +3 -3
  886. package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  887. package/docs/ja/migration_from_react-i18next_to_intlayer.md +3 -3
  888. package/docs/ja/migration_from_vue-i18n_to_intlayer.md +3 -3
  889. package/docs/ko/bundle_optimization.md +186 -186
  890. package/docs/ko/intlayer_with_adonisjs.md +3 -3
  891. package/docs/ko/intlayer_with_analog.md +3 -3
  892. package/docs/ko/intlayer_with_angular_19.md +3 -3
  893. package/docs/ko/intlayer_with_angular_21.md +3 -3
  894. package/docs/ko/intlayer_with_astro.md +3 -3
  895. package/docs/ko/intlayer_with_astro_lit.md +3 -3
  896. package/docs/ko/intlayer_with_astro_preact.md +3 -3
  897. package/docs/ko/intlayer_with_astro_react.md +3 -3
  898. package/docs/ko/intlayer_with_astro_solid.md +3 -3
  899. package/docs/ko/intlayer_with_astro_svelte.md +3 -3
  900. package/docs/ko/intlayer_with_astro_vanilla.md +3 -3
  901. package/docs/ko/intlayer_with_astro_vue.md +3 -3
  902. package/docs/ko/intlayer_with_create_react_app.md +3 -3
  903. package/docs/ko/intlayer_with_elysia.md +4 -4
  904. package/docs/ko/intlayer_with_express.md +3 -3
  905. package/docs/ko/intlayer_with_fastify.md +4 -4
  906. package/docs/ko/intlayer_with_hono.md +3 -3
  907. package/docs/ko/intlayer_with_lynx+react.md +3 -3
  908. package/docs/ko/intlayer_with_nestjs.md +3 -3
  909. package/docs/ko/intlayer_with_next-i18next.md +3 -3
  910. package/docs/ko/intlayer_with_nextjs_14.md +3 -3
  911. package/docs/ko/intlayer_with_nextjs_15.md +3 -3
  912. package/docs/ko/intlayer_with_nextjs_16.md +3 -3
  913. package/docs/ko/intlayer_with_nextjs_compiler.md +3 -3
  914. package/docs/ko/intlayer_with_nextjs_no_locale_path.md +3 -3
  915. package/docs/ko/intlayer_with_nextjs_page_router.md +3 -3
  916. package/docs/ko/intlayer_with_nuxt.md +3 -3
  917. package/docs/ko/intlayer_with_react_native+expo.md +3 -3
  918. package/docs/ko/intlayer_with_react_router_v7.md +3 -3
  919. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +3 -3
  920. package/docs/ko/intlayer_with_solid_start.md +3 -3
  921. package/docs/ko/intlayer_with_svelte_kit.md +3 -3
  922. package/docs/ko/intlayer_with_tanstack+solid.md +3 -3
  923. package/docs/ko/intlayer_with_tanstack.md +3 -3
  924. package/docs/ko/intlayer_with_vite+lit.md +3 -3
  925. package/docs/ko/intlayer_with_vite+preact.md +3 -3
  926. package/docs/ko/intlayer_with_vite+react.md +3 -3
  927. package/docs/ko/intlayer_with_vite+react_compiler.md +3 -3
  928. package/docs/ko/intlayer_with_vite+solid.md +3 -3
  929. package/docs/ko/intlayer_with_vite+svelte.md +4 -12
  930. package/docs/ko/intlayer_with_vite+vanilla.md +3 -3
  931. package/docs/ko/intlayer_with_vite+vue.md +3 -3
  932. package/docs/ko/migration_from_i18next_to_intlayer.md +3 -3
  933. package/docs/ko/migration_from_next-i18next_to_intlayer.md +3 -3
  934. package/docs/ko/migration_from_next-intl_to_intlayer.md +3 -3
  935. package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  936. package/docs/ko/migration_from_react-i18next_to_intlayer.md +3 -3
  937. package/docs/ko/migration_from_vue-i18n_to_intlayer.md +3 -3
  938. package/docs/nl/bundle_optimization.md +186 -186
  939. package/docs/nl/intlayer_with_angular_21.md +3 -3
  940. package/docs/nl/intlayer_with_fastify.md +4 -4
  941. package/docs/nl/intlayer_with_hono.md +3 -3
  942. package/docs/nl/intlayer_with_vite+lit.md +3 -3
  943. package/docs/nl/intlayer_with_vite+vanilla.md +3 -3
  944. package/docs/pl/bundle_optimization.md +186 -186
  945. package/docs/pl/intlayer_with_adonisjs.md +3 -3
  946. package/docs/pl/intlayer_with_analog.md +3 -3
  947. package/docs/pl/intlayer_with_angular_19.md +3 -3
  948. package/docs/pl/intlayer_with_angular_21.md +3 -3
  949. package/docs/pl/intlayer_with_astro.md +3 -3
  950. package/docs/pl/intlayer_with_astro_lit.md +3 -3
  951. package/docs/pl/intlayer_with_astro_preact.md +3 -3
  952. package/docs/pl/intlayer_with_astro_react.md +3 -3
  953. package/docs/pl/intlayer_with_astro_solid.md +3 -3
  954. package/docs/pl/intlayer_with_astro_svelte.md +3 -3
  955. package/docs/pl/intlayer_with_astro_vanilla.md +3 -3
  956. package/docs/pl/intlayer_with_astro_vue.md +3 -3
  957. package/docs/pl/intlayer_with_create_react_app.md +3 -3
  958. package/docs/pl/intlayer_with_elysia.md +4 -4
  959. package/docs/pl/intlayer_with_express.md +3 -3
  960. package/docs/pl/intlayer_with_fastify.md +4 -4
  961. package/docs/pl/intlayer_with_hono.md +3 -3
  962. package/docs/pl/intlayer_with_lynx+react.md +3 -3
  963. package/docs/pl/intlayer_with_nestjs.md +3 -3
  964. package/docs/pl/intlayer_with_next-i18next.md +3 -3
  965. package/docs/pl/intlayer_with_nextjs_14.md +3 -3
  966. package/docs/pl/intlayer_with_nextjs_15.md +3 -3
  967. package/docs/pl/intlayer_with_nextjs_16.md +3 -3
  968. package/docs/pl/intlayer_with_nextjs_compiler.md +3 -3
  969. package/docs/pl/intlayer_with_nextjs_no_locale_path.md +3 -3
  970. package/docs/pl/intlayer_with_nextjs_page_router.md +3 -3
  971. package/docs/pl/intlayer_with_nuxt.md +3 -3
  972. package/docs/pl/intlayer_with_react_native+expo.md +3 -3
  973. package/docs/pl/intlayer_with_react_router_v7.md +3 -3
  974. package/docs/pl/intlayer_with_solid_start.md +3 -3
  975. package/docs/pl/intlayer_with_svelte_kit.md +3 -3
  976. package/docs/pl/intlayer_with_tanstack+solid.md +3 -3
  977. package/docs/pl/intlayer_with_tanstack.md +3 -3
  978. package/docs/pl/intlayer_with_vite+lit.md +3 -3
  979. package/docs/pl/intlayer_with_vite+preact.md +3 -3
  980. package/docs/pl/intlayer_with_vite+react.md +3 -3
  981. package/docs/pl/intlayer_with_vite+react_compiler.md +3 -3
  982. package/docs/pl/intlayer_with_vite+solid.md +3 -3
  983. package/docs/pl/intlayer_with_vite+svelte.md +4 -12
  984. package/docs/pl/intlayer_with_vite+vanilla.md +3 -3
  985. package/docs/pl/intlayer_with_vite+vue.md +3 -3
  986. package/docs/pl/migration_from_i18next_to_intlayer.md +3 -3
  987. package/docs/pl/migration_from_next-i18next_to_intlayer.md +3 -3
  988. package/docs/pl/migration_from_next-intl_to_intlayer.md +3 -3
  989. package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  990. package/docs/pl/migration_from_react-i18next_to_intlayer.md +3 -3
  991. package/docs/pl/migration_from_vue-i18n_to_intlayer.md +3 -3
  992. package/docs/pt/bundle_optimization.md +186 -186
  993. package/docs/pt/intlayer_with_adonisjs.md +3 -3
  994. package/docs/pt/intlayer_with_analog.md +3 -3
  995. package/docs/pt/intlayer_with_angular_19.md +3 -3
  996. package/docs/pt/intlayer_with_angular_21.md +3 -3
  997. package/docs/pt/intlayer_with_astro.md +3 -3
  998. package/docs/pt/intlayer_with_astro_lit.md +3 -3
  999. package/docs/pt/intlayer_with_astro_preact.md +3 -3
  1000. package/docs/pt/intlayer_with_astro_react.md +3 -3
  1001. package/docs/pt/intlayer_with_astro_solid.md +3 -3
  1002. package/docs/pt/intlayer_with_astro_svelte.md +3 -3
  1003. package/docs/pt/intlayer_with_astro_vanilla.md +3 -3
  1004. package/docs/pt/intlayer_with_astro_vue.md +3 -3
  1005. package/docs/pt/intlayer_with_create_react_app.md +3 -3
  1006. package/docs/pt/intlayer_with_elysia.md +4 -4
  1007. package/docs/pt/intlayer_with_express.md +3 -3
  1008. package/docs/pt/intlayer_with_fastify.md +4 -4
  1009. package/docs/pt/intlayer_with_hono.md +3 -3
  1010. package/docs/pt/intlayer_with_lynx+react.md +3 -3
  1011. package/docs/pt/intlayer_with_nestjs.md +3 -3
  1012. package/docs/pt/intlayer_with_next-i18next.md +3 -3
  1013. package/docs/pt/intlayer_with_nextjs_14.md +3 -3
  1014. package/docs/pt/intlayer_with_nextjs_15.md +3 -3
  1015. package/docs/pt/intlayer_with_nextjs_16.md +3 -3
  1016. package/docs/pt/intlayer_with_nextjs_compiler.md +3 -3
  1017. package/docs/pt/intlayer_with_nextjs_no_locale_path.md +3 -3
  1018. package/docs/pt/intlayer_with_nextjs_page_router.md +3 -3
  1019. package/docs/pt/intlayer_with_nuxt.md +3 -3
  1020. package/docs/pt/intlayer_with_react_native+expo.md +3 -3
  1021. package/docs/pt/intlayer_with_react_router_v7.md +3 -3
  1022. package/docs/pt/intlayer_with_solid_start.md +3 -3
  1023. package/docs/pt/intlayer_with_svelte_kit.md +3 -3
  1024. package/docs/pt/intlayer_with_tanstack+solid.md +3 -3
  1025. package/docs/pt/intlayer_with_tanstack.md +3 -3
  1026. package/docs/pt/intlayer_with_vite+lit.md +3 -3
  1027. package/docs/pt/intlayer_with_vite+preact.md +3 -3
  1028. package/docs/pt/intlayer_with_vite+react.md +3 -3
  1029. package/docs/pt/intlayer_with_vite+react_compiler.md +3 -3
  1030. package/docs/pt/intlayer_with_vite+solid.md +3 -3
  1031. package/docs/pt/intlayer_with_vite+svelte.md +4 -12
  1032. package/docs/pt/intlayer_with_vite+vanilla.md +3 -3
  1033. package/docs/pt/intlayer_with_vite+vue.md +3 -3
  1034. package/docs/pt/migration_from_i18next_to_intlayer.md +3 -3
  1035. package/docs/pt/migration_from_next-i18next_to_intlayer.md +3 -3
  1036. package/docs/pt/migration_from_next-intl_to_intlayer.md +3 -3
  1037. package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  1038. package/docs/pt/migration_from_react-i18next_to_intlayer.md +3 -3
  1039. package/docs/pt/migration_from_vue-i18n_to_intlayer.md +3 -3
  1040. package/docs/ru/bundle_optimization.md +186 -186
  1041. package/docs/ru/intlayer_with_adonisjs.md +3 -3
  1042. package/docs/ru/intlayer_with_analog.md +3 -3
  1043. package/docs/ru/intlayer_with_angular_19.md +3 -3
  1044. package/docs/ru/intlayer_with_angular_21.md +3 -3
  1045. package/docs/ru/intlayer_with_astro.md +3 -3
  1046. package/docs/ru/intlayer_with_astro_lit.md +3 -3
  1047. package/docs/ru/intlayer_with_astro_preact.md +3 -3
  1048. package/docs/ru/intlayer_with_astro_react.md +3 -3
  1049. package/docs/ru/intlayer_with_astro_solid.md +3 -3
  1050. package/docs/ru/intlayer_with_astro_svelte.md +3 -3
  1051. package/docs/ru/intlayer_with_astro_vanilla.md +3 -3
  1052. package/docs/ru/intlayer_with_astro_vue.md +3 -3
  1053. package/docs/ru/intlayer_with_create_react_app.md +3 -3
  1054. package/docs/ru/intlayer_with_elysia.md +4 -4
  1055. package/docs/ru/intlayer_with_express.md +3 -3
  1056. package/docs/ru/intlayer_with_fastify.md +4 -4
  1057. package/docs/ru/intlayer_with_hono.md +3 -3
  1058. package/docs/ru/intlayer_with_lynx+react.md +3 -3
  1059. package/docs/ru/intlayer_with_nestjs.md +3 -3
  1060. package/docs/ru/intlayer_with_next-i18next.md +3 -3
  1061. package/docs/ru/intlayer_with_nextjs_14.md +3 -3
  1062. package/docs/ru/intlayer_with_nextjs_15.md +3 -3
  1063. package/docs/ru/intlayer_with_nextjs_16.md +3 -3
  1064. package/docs/ru/intlayer_with_nextjs_compiler.md +3 -3
  1065. package/docs/ru/intlayer_with_nextjs_no_locale_path.md +3 -3
  1066. package/docs/ru/intlayer_with_nextjs_page_router.md +3 -3
  1067. package/docs/ru/intlayer_with_nuxt.md +3 -3
  1068. package/docs/ru/intlayer_with_react_native+expo.md +3 -3
  1069. package/docs/ru/intlayer_with_react_router_v7.md +3 -3
  1070. package/docs/ru/intlayer_with_solid_start.md +3 -3
  1071. package/docs/ru/intlayer_with_svelte_kit.md +3 -3
  1072. package/docs/ru/intlayer_with_tanstack+solid.md +3 -3
  1073. package/docs/ru/intlayer_with_tanstack.md +3 -3
  1074. package/docs/ru/intlayer_with_vite+lit.md +3 -3
  1075. package/docs/ru/intlayer_with_vite+preact.md +3 -3
  1076. package/docs/ru/intlayer_with_vite+react.md +3 -3
  1077. package/docs/ru/intlayer_with_vite+react_compiler.md +3 -3
  1078. package/docs/ru/intlayer_with_vite+solid.md +3 -3
  1079. package/docs/ru/intlayer_with_vite+svelte.md +4 -12
  1080. package/docs/ru/intlayer_with_vite+vanilla.md +3 -3
  1081. package/docs/ru/intlayer_with_vite+vue.md +3 -3
  1082. package/docs/ru/migration_from_i18next_to_intlayer.md +3 -3
  1083. package/docs/ru/migration_from_next-i18next_to_intlayer.md +3 -3
  1084. package/docs/ru/migration_from_next-intl_to_intlayer.md +3 -3
  1085. package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  1086. package/docs/ru/migration_from_react-i18next_to_intlayer.md +3 -3
  1087. package/docs/ru/migration_from_vue-i18n_to_intlayer.md +3 -3
  1088. package/docs/tr/bundle_optimization.md +186 -186
  1089. package/docs/tr/intlayer_with_adonisjs.md +3 -3
  1090. package/docs/tr/intlayer_with_analog.md +3 -3
  1091. package/docs/tr/intlayer_with_angular_19.md +3 -3
  1092. package/docs/tr/intlayer_with_angular_21.md +3 -3
  1093. package/docs/tr/intlayer_with_astro.md +3 -3
  1094. package/docs/tr/intlayer_with_astro_lit.md +3 -3
  1095. package/docs/tr/intlayer_with_astro_preact.md +3 -3
  1096. package/docs/tr/intlayer_with_astro_react.md +3 -3
  1097. package/docs/tr/intlayer_with_astro_solid.md +3 -3
  1098. package/docs/tr/intlayer_with_astro_svelte.md +3 -3
  1099. package/docs/tr/intlayer_with_astro_vanilla.md +3 -3
  1100. package/docs/tr/intlayer_with_astro_vue.md +3 -3
  1101. package/docs/tr/intlayer_with_create_react_app.md +3 -3
  1102. package/docs/tr/intlayer_with_elysia.md +4 -4
  1103. package/docs/tr/intlayer_with_express.md +3 -3
  1104. package/docs/tr/intlayer_with_fastify.md +4 -4
  1105. package/docs/tr/intlayer_with_hono.md +3 -3
  1106. package/docs/tr/intlayer_with_lynx+react.md +3 -3
  1107. package/docs/tr/intlayer_with_nestjs.md +3 -3
  1108. package/docs/tr/intlayer_with_next-i18next.md +3 -3
  1109. package/docs/tr/intlayer_with_nextjs_14.md +3 -3
  1110. package/docs/tr/intlayer_with_nextjs_15.md +3 -3
  1111. package/docs/tr/intlayer_with_nextjs_16.md +3 -3
  1112. package/docs/tr/intlayer_with_nextjs_compiler.md +3 -3
  1113. package/docs/tr/intlayer_with_nextjs_no_locale_path.md +3 -3
  1114. package/docs/tr/intlayer_with_nextjs_page_router.md +3 -3
  1115. package/docs/tr/intlayer_with_nuxt.md +3 -3
  1116. package/docs/tr/intlayer_with_react_native+expo.md +3 -3
  1117. package/docs/tr/intlayer_with_react_router_v7.md +3 -3
  1118. package/docs/tr/intlayer_with_solid_start.md +3 -3
  1119. package/docs/tr/intlayer_with_svelte_kit.md +3 -3
  1120. package/docs/tr/intlayer_with_tanstack+solid.md +3 -3
  1121. package/docs/tr/intlayer_with_tanstack.md +3 -3
  1122. package/docs/tr/intlayer_with_vite+lit.md +3 -3
  1123. package/docs/tr/intlayer_with_vite+preact.md +3 -3
  1124. package/docs/tr/intlayer_with_vite+react.md +3 -3
  1125. package/docs/tr/intlayer_with_vite+react_compiler.md +3 -3
  1126. package/docs/tr/intlayer_with_vite+solid.md +3 -3
  1127. package/docs/tr/intlayer_with_vite+svelte.md +4 -12
  1128. package/docs/tr/intlayer_with_vite+vanilla.md +3 -3
  1129. package/docs/tr/intlayer_with_vite+vue.md +3 -3
  1130. package/docs/tr/migration_from_i18next_to_intlayer.md +3 -3
  1131. package/docs/tr/migration_from_next-i18next_to_intlayer.md +3 -3
  1132. package/docs/tr/migration_from_next-intl_to_intlayer.md +3 -3
  1133. package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  1134. package/docs/tr/migration_from_react-i18next_to_intlayer.md +3 -3
  1135. package/docs/tr/migration_from_vue-i18n_to_intlayer.md +3 -3
  1136. package/docs/uk/bundle_optimization.md +186 -186
  1137. package/docs/uk/intlayer_with_adonisjs.md +3 -3
  1138. package/docs/uk/intlayer_with_analog.md +3 -3
  1139. package/docs/uk/intlayer_with_angular_19.md +3 -3
  1140. package/docs/uk/intlayer_with_angular_21.md +3 -3
  1141. package/docs/uk/intlayer_with_astro.md +3 -3
  1142. package/docs/uk/intlayer_with_astro_lit.md +3 -3
  1143. package/docs/uk/intlayer_with_astro_preact.md +3 -3
  1144. package/docs/uk/intlayer_with_astro_react.md +3 -3
  1145. package/docs/uk/intlayer_with_astro_solid.md +3 -3
  1146. package/docs/uk/intlayer_with_astro_svelte.md +3 -3
  1147. package/docs/uk/intlayer_with_astro_vanilla.md +3 -3
  1148. package/docs/uk/intlayer_with_astro_vue.md +3 -3
  1149. package/docs/uk/intlayer_with_create_react_app.md +3 -3
  1150. package/docs/uk/intlayer_with_elysia.md +4 -4
  1151. package/docs/uk/intlayer_with_express.md +3 -3
  1152. package/docs/uk/intlayer_with_fastify.md +4 -4
  1153. package/docs/uk/intlayer_with_hono.md +3 -3
  1154. package/docs/uk/intlayer_with_lynx+react.md +3 -3
  1155. package/docs/uk/intlayer_with_nestjs.md +3 -3
  1156. package/docs/uk/intlayer_with_next-i18next.md +3 -3
  1157. package/docs/uk/intlayer_with_nextjs_14.md +3 -3
  1158. package/docs/uk/intlayer_with_nextjs_15.md +3 -3
  1159. package/docs/uk/intlayer_with_nextjs_16.md +3 -3
  1160. package/docs/uk/intlayer_with_nextjs_compiler.md +3 -3
  1161. package/docs/uk/intlayer_with_nextjs_no_locale_path.md +3 -3
  1162. package/docs/uk/intlayer_with_nextjs_page_router.md +3 -3
  1163. package/docs/uk/intlayer_with_nuxt.md +3 -3
  1164. package/docs/uk/intlayer_with_react_native+expo.md +3 -3
  1165. package/docs/uk/intlayer_with_react_router_v7.md +3 -3
  1166. package/docs/uk/intlayer_with_solid_start.md +3 -3
  1167. package/docs/uk/intlayer_with_svelte_kit.md +3 -3
  1168. package/docs/uk/intlayer_with_tanstack+solid.md +3 -3
  1169. package/docs/uk/intlayer_with_tanstack.md +3 -3
  1170. package/docs/uk/intlayer_with_vite+lit.md +3 -3
  1171. package/docs/uk/intlayer_with_vite+preact.md +3 -3
  1172. package/docs/uk/intlayer_with_vite+react.md +3 -3
  1173. package/docs/uk/intlayer_with_vite+react_compiler.md +3 -3
  1174. package/docs/uk/intlayer_with_vite+solid.md +3 -3
  1175. package/docs/uk/intlayer_with_vite+svelte.md +4 -12
  1176. package/docs/uk/intlayer_with_vite+vanilla.md +3 -3
  1177. package/docs/uk/intlayer_with_vite+vue.md +3 -3
  1178. package/docs/uk/migration_from_i18next_to_intlayer.md +3 -3
  1179. package/docs/uk/migration_from_next-i18next_to_intlayer.md +3 -3
  1180. package/docs/uk/migration_from_next-intl_to_intlayer.md +3 -3
  1181. package/docs/uk/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  1182. package/docs/uk/migration_from_react-i18next_to_intlayer.md +3 -3
  1183. package/docs/uk/migration_from_vue-i18n_to_intlayer.md +3 -3
  1184. package/docs/ur/bundle_optimization.md +186 -186
  1185. package/docs/ur/intlayer_with_angular_21.md +3 -3
  1186. package/docs/ur/intlayer_with_fastify.md +4 -4
  1187. package/docs/ur/intlayer_with_hono.md +3 -3
  1188. package/docs/ur/intlayer_with_vite+lit.md +3 -3
  1189. package/docs/ur/intlayer_with_vite+vanilla.md +3 -3
  1190. package/docs/vi/bundle_optimization.md +186 -186
  1191. package/docs/vi/intlayer_with_adonisjs.md +3 -3
  1192. package/docs/vi/intlayer_with_analog.md +3 -3
  1193. package/docs/vi/intlayer_with_angular_19.md +3 -3
  1194. package/docs/vi/intlayer_with_angular_21.md +3 -3
  1195. package/docs/vi/intlayer_with_astro.md +3 -3
  1196. package/docs/vi/intlayer_with_astro_lit.md +3 -3
  1197. package/docs/vi/intlayer_with_astro_preact.md +3 -3
  1198. package/docs/vi/intlayer_with_astro_react.md +3 -3
  1199. package/docs/vi/intlayer_with_astro_solid.md +3 -3
  1200. package/docs/vi/intlayer_with_astro_svelte.md +3 -3
  1201. package/docs/vi/intlayer_with_astro_vanilla.md +3 -3
  1202. package/docs/vi/intlayer_with_astro_vue.md +3 -3
  1203. package/docs/vi/intlayer_with_create_react_app.md +3 -3
  1204. package/docs/vi/intlayer_with_elysia.md +4 -4
  1205. package/docs/vi/intlayer_with_express.md +3 -3
  1206. package/docs/vi/intlayer_with_fastify.md +4 -4
  1207. package/docs/vi/intlayer_with_hono.md +3 -3
  1208. package/docs/vi/intlayer_with_lynx+react.md +3 -3
  1209. package/docs/vi/intlayer_with_nestjs.md +3 -3
  1210. package/docs/vi/intlayer_with_next-i18next.md +3 -3
  1211. package/docs/vi/intlayer_with_nextjs_14.md +3 -3
  1212. package/docs/vi/intlayer_with_nextjs_15.md +3 -3
  1213. package/docs/vi/intlayer_with_nextjs_16.md +3 -3
  1214. package/docs/vi/intlayer_with_nextjs_compiler.md +3 -3
  1215. package/docs/vi/intlayer_with_nextjs_no_locale_path.md +3 -3
  1216. package/docs/vi/intlayer_with_nextjs_page_router.md +3 -3
  1217. package/docs/vi/intlayer_with_nuxt.md +3 -3
  1218. package/docs/vi/intlayer_with_react_native+expo.md +3 -3
  1219. package/docs/vi/intlayer_with_react_router_v7.md +3 -3
  1220. package/docs/vi/intlayer_with_solid_start.md +3 -3
  1221. package/docs/vi/intlayer_with_svelte_kit.md +3 -3
  1222. package/docs/vi/intlayer_with_tanstack+solid.md +3 -3
  1223. package/docs/vi/intlayer_with_tanstack.md +3 -3
  1224. package/docs/vi/intlayer_with_vite+lit.md +3 -3
  1225. package/docs/vi/intlayer_with_vite+preact.md +3 -3
  1226. package/docs/vi/intlayer_with_vite+react.md +3 -3
  1227. package/docs/vi/intlayer_with_vite+react_compiler.md +3 -3
  1228. package/docs/vi/intlayer_with_vite+solid.md +3 -3
  1229. package/docs/vi/intlayer_with_vite+svelte.md +4 -12
  1230. package/docs/vi/intlayer_with_vite+vanilla.md +3 -3
  1231. package/docs/vi/intlayer_with_vite+vue.md +3 -3
  1232. package/docs/vi/migration_from_i18next_to_intlayer.md +3 -3
  1233. package/docs/vi/migration_from_next-i18next_to_intlayer.md +3 -3
  1234. package/docs/vi/migration_from_next-intl_to_intlayer.md +3 -3
  1235. package/docs/vi/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  1236. package/docs/vi/migration_from_react-i18next_to_intlayer.md +3 -3
  1237. package/docs/vi/migration_from_vue-i18n_to_intlayer.md +3 -3
  1238. package/docs/zh/bundle_optimization.md +186 -186
  1239. package/docs/zh/intlayer_with_adonisjs.md +3 -3
  1240. package/docs/zh/intlayer_with_analog.md +3 -3
  1241. package/docs/zh/intlayer_with_angular_19.md +3 -3
  1242. package/docs/zh/intlayer_with_angular_21.md +3 -3
  1243. package/docs/zh/intlayer_with_astro.md +3 -3
  1244. package/docs/zh/intlayer_with_astro_lit.md +3 -3
  1245. package/docs/zh/intlayer_with_astro_preact.md +3 -3
  1246. package/docs/zh/intlayer_with_astro_react.md +3 -3
  1247. package/docs/zh/intlayer_with_astro_solid.md +3 -3
  1248. package/docs/zh/intlayer_with_astro_svelte.md +3 -3
  1249. package/docs/zh/intlayer_with_astro_vanilla.md +3 -3
  1250. package/docs/zh/intlayer_with_astro_vue.md +3 -3
  1251. package/docs/zh/intlayer_with_create_react_app.md +3 -3
  1252. package/docs/zh/intlayer_with_elysia.md +4 -4
  1253. package/docs/zh/intlayer_with_express.md +3 -3
  1254. package/docs/zh/intlayer_with_fastify.md +4 -4
  1255. package/docs/zh/intlayer_with_hono.md +3 -3
  1256. package/docs/zh/intlayer_with_lynx+react.md +3 -3
  1257. package/docs/zh/intlayer_with_nestjs.md +3 -3
  1258. package/docs/zh/intlayer_with_next-i18next.md +3 -3
  1259. package/docs/zh/intlayer_with_nextjs_14.md +3 -3
  1260. package/docs/zh/intlayer_with_nextjs_15.md +3 -3
  1261. package/docs/zh/intlayer_with_nextjs_16.md +3 -3
  1262. package/docs/zh/intlayer_with_nextjs_compiler.md +3 -3
  1263. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +3 -3
  1264. package/docs/zh/intlayer_with_nextjs_page_router.md +3 -3
  1265. package/docs/zh/intlayer_with_nuxt.md +3 -3
  1266. package/docs/zh/intlayer_with_react_native+expo.md +3 -3
  1267. package/docs/zh/intlayer_with_react_router_v7.md +3 -3
  1268. package/docs/zh/intlayer_with_solid_start.md +3 -3
  1269. package/docs/zh/intlayer_with_svelte_kit.md +3 -3
  1270. package/docs/zh/intlayer_with_tanstack+solid.md +3 -3
  1271. package/docs/zh/intlayer_with_tanstack.md +3 -3
  1272. package/docs/zh/intlayer_with_vite+lit.md +3 -3
  1273. package/docs/zh/intlayer_with_vite+preact.md +3 -3
  1274. package/docs/zh/intlayer_with_vite+react.md +3 -3
  1275. package/docs/zh/intlayer_with_vite+react_compiler.md +3 -3
  1276. package/docs/zh/intlayer_with_vite+solid.md +3 -3
  1277. package/docs/zh/intlayer_with_vite+svelte.md +4 -12
  1278. package/docs/zh/intlayer_with_vite+vanilla.md +3 -3
  1279. package/docs/zh/intlayer_with_vite+vue.md +3 -3
  1280. package/docs/zh/migration_from_i18next_to_intlayer.md +3 -3
  1281. package/docs/zh/migration_from_next-i18next_to_intlayer.md +3 -3
  1282. package/docs/zh/migration_from_next-intl_to_intlayer.md +3 -3
  1283. package/docs/zh/migration_from_nuxtjs_i18n_to_intlayer.md +3 -3
  1284. package/docs/zh/migration_from_react-i18next_to_intlayer.md +3 -3
  1285. package/docs/zh/migration_from_vue-i18n_to_intlayer.md +3 -3
  1286. package/docs/zh-TW/bundle_optimization.md +186 -186
  1287. package/docs/zh-TW/intlayer_with_angular_21.md +3 -3
  1288. package/package.json +6 -6
  1289. package/src/generated/blog.entry.ts +329 -0
@@ -0,0 +1,216 @@
1
+ ---
2
+ createdAt: 2026-09-02
3
+ updatedAt: 2026-09-02
4
+ title: "Datums- und Zahlenformatierung nach Locale mit Intl"
5
+ description: Sie brauchen wahrscheinlich keine externe Formatierungsbibliothek. Wie Intl Daten, Zahlen, Währungen und Listen nach Locale handhabt, Caching-Aufwand und Hydration-Bugs in Produktion.
6
+ keywords:
7
+ - datum nach locale formatieren
8
+ - Intl.DateTimeFormat
9
+ - Intl.NumberFormat
10
+ - toLocaleDateString
11
+ - währungsformatierung locale
12
+ - relative zeit formatieren
13
+ slugs:
14
+ - blog
15
+ - date-time-number-formatting-locales
16
+ author: aymericzip
17
+ ---
18
+
19
+ # Datums- und Zahlenformatierung nach Locale mit Intl
20
+
21
+ Das Übersetzen von Texten ist nur die sichtbare Hälfte der Internationalisierung. Die andere Hälfte, die regelmäßig Fehlerberichte erzeugt, ist die Formatierung: ein deutscher Nutzer, der `1,234.56` statt `1.234,56` sieht, ein japanischer Nutzer, der `08/02/2026` als August liest, oder ein Datum, das auf Server und Client unterschiedlich rendert und beim Hydrieren die Anwendung zum Absturz bringt.
22
+
23
+ Für nichts davon ist eine externe Bibliothek erforderlich. `Intl` ist in jeder modernen JavaScript-Laufzeitumgebung integriert.
24
+
25
+ ## Inhaltsverzeichnis
26
+
27
+ <TOC/>
28
+
29
+ ## Beginnen Sie damit, eigene Datums-Hilfsfunktionen zu löschen
30
+
31
+ Fast jede Codebasis enthält irgendwo ein selbst geschriebenes `formatDate`, das entstand, bevor jemand an Locales dachte. Es legt eine starre Reihenfolge, Trennzeichen und meist englische Monatsnamen fest.
32
+
33
+ ```ts
34
+ // Zu löschen:
35
+ const formatDate = (d: Date) =>
36
+ `${d.getMonth() + 1}/${d.getDate()}/${d.getFullYear()}`;
37
+ ```
38
+
39
+ `Intl.DateTimeFormat` ersetzt dies vollständig und ist für jede Locale korrekt:
40
+
41
+ ```ts
42
+ new Intl.DateTimeFormat("de-DE", { dateStyle: "long" }).format(date);
43
+ // "2. August 2026"
44
+ new Intl.DateTimeFormat("ja-JP", { dateStyle: "long" }).format(date);
45
+ // "2026年8月2日"
46
+ ```
47
+
48
+ Dasselbe gilt für Zahlenwerte. `toFixed(2)` erzeugt überall `1234.56`, was im Großteil Europas schlichtweg falsch ist.
49
+
50
+ ## Was `Intl` abdeckt
51
+
52
+ | API | Verwendungszweck |
53
+ | :------------------------ | :-------------------------------------------------------- |
54
+ | `Intl.DateTimeFormat` | Datums- und Zeitangaben mit `dateStyle` / `timeStyle` |
55
+ | `Intl.NumberFormat` | Dezimalzahlen, Währungen, Prozent, Einheiten, Kompaktform |
56
+ | `Intl.RelativeTimeFormat` | "vor 3 Tagen", "in 2 Stunden" |
57
+ | `Intl.ListFormat` | "a, b und c" im Vergleich zu "a, b, and c" |
58
+ | `Intl.PluralRules` | Pluralisierungskategorien für Zahlenwerte |
59
+ | `Intl.Collator` | Sprachlich korrekte Sortierung von Zeichenketten |
60
+
61
+ `Intl.Collator` wird gern übersehen. Ein einfaches `array.sort()` auf Strings nutzt die Unicode-Codepoint-Reihenfolge, wodurch Umlaute hinter das `z` rutschen und das schwedische `ö` an falscher Stelle landet. Wer für Nutzer sichtbare Listen sortiert, sollte stets einen Collator einsetzen.
62
+
63
+ ```ts
64
+ ["zebra", "édouard", "apple"].sort(new Intl.Collator("de").compare);
65
+ // ["apple", "édouard", "zebra"]
66
+ ```
67
+
68
+ ## Voreinstellungen bevorzugen statt manueller Optionen
69
+
70
+ `dateStyle` und `timeStyle` überlassen der jeweiligen Locale die logische Reihenfolge und Trennzeichen. Wer `year`, `month` und `day` manuell kombiniert, greift in Bereiche ein, die man besser meidet, da die korrekte Anordnung je nach Land variiert und man CLDR-Daten mit eigenen Annahmen überschreibt.
71
+
72
+ ```ts
73
+ // Die Locale bestimmt die Struktur:
74
+ new Intl.DateTimeFormat(locale, { dateStyle: "medium" }).format(d);
75
+
76
+ // Selbst bestimmt, und in anderen Regionen fehlerhaft:
77
+ new Intl.DateTimeFormat(locale, {
78
+ year: "numeric",
79
+ month: "2-digit",
80
+ day: "2-digit",
81
+ }).format(d);
82
+ ```
83
+
84
+ Spezifizieren Sie Einzelteile nur dann explizit, wenn das Design zwingend eine feste Breite vorschreibt, beispielsweise in einer engen Tabellenspalte.
85
+
86
+ ## Das Erstellen von Formatierern ist rechenintensiv
87
+
88
+ Dies ist das Performance-Detail, auf das es ankommt. Die Initialisierung eines `Intl.NumberFormat` lädt umfangreiche Locale-Daten und ist deutlich teurer als der eigentliche Aufruf von `.format()`. Dies in einer Schleife über tausend Tabellenzeilen auszuführen, bremst spürbar.
89
+
90
+ ```ts
91
+ // Erstellt den Formatierer für jede Zeile neu:
92
+ rows.map((r) => new Intl.NumberFormat(locale).format(r.total));
93
+
94
+ // Einmal erstellen und wiederverwenden:
95
+ const nf = new Intl.NumberFormat(locale);
96
+ rows.map((r) => nf.format(r.total));
97
+ ```
98
+
99
+ `toLocaleDateString()` und `toLocaleString()` verbergen intern denselben Mechanismus: Jeder Aufruf instanziiert einen neuen Formatierer. Für Einzelwerte völlig in Ordnung, für Listen fehl am Platz.
100
+
101
+ Cachen Sie Formatierer basierend auf Locale und Optionen:
102
+
103
+ ```ts
104
+ const cache = new Map<string, Intl.NumberFormat>();
105
+
106
+ const getNumberFormat = (
107
+ locale: string,
108
+ options: Intl.NumberFormatOptions = {}
109
+ ) => {
110
+ const key = `${locale}:${JSON.stringify(options)}`;
111
+ let formatter = cache.get(key);
112
+ if (!formatter) {
113
+ formatter = new Intl.NumberFormat(locale, options);
114
+ cache.set(key, formatter);
115
+ }
116
+ return formatter;
117
+ };
118
+ ```
119
+
120
+ ## Der Zeitzonen-Fehler, der nur in Produktion auftritt
121
+
122
+ Dieses Problem hat schon unzählige Stunden gekostet. Der Server rendert ein Datum bei der serverseitigen Generierung, der Browser hydriert es im Client, und React bricht mit einem Hydration Mismatch ab, weil beide Umgebungen unterschiedlichen Text erzeugt haben.
123
+
124
+ Die Ursache: `Intl.DateTimeFormat` verwendet die lokale Zeitzone des Systems, wenn keine angegeben wird. Ihr Produktionsserver läuft unter UTC, Ihr lokaler Entwicklungsrechner nicht. Der Fehler ist lokal unsichtbar und tritt erst in Produktion auf.
125
+
126
+ ```ts
127
+ // Server in UTC und Browser in UTC+9 liefern unterschiedliche Texte. Hydration Mismatch.
128
+ new Intl.DateTimeFormat(locale, { dateStyle: "short" }).format(d);
129
+
130
+ // Beide Umgebungen stimmen überein:
131
+ new Intl.DateTimeFormat(locale, { dateStyle: "short", timeZone: "UTC" }).format(
132
+ d
133
+ );
134
+ ```
135
+
136
+ Drei gangbare Lösungswege:
137
+
138
+ - **Zeitzone auf dem Server fixieren** und explizit übergeben. Deterministisch, aber alle Nutzer sehen UTC.
139
+ - **Nur auf dem Client rendern**, mit einem Platzhalter während des Server-Passes. Individuell korrekt, erzeugt jedoch ein leichtes Nachladen.
140
+ - **Zeitzone des Nutzers speichern** und an beiden Stellen übergeben. Das beste Ergebnis bei moderatem Mehraufwand.
141
+
142
+ Unabhängig von der Wahl: Übergeben Sie `timeZone` bei isomorphen Datumsangaben immer explizit. Ein Datum ohne definierte Zeitzone führt unweigerlich zu zwei abweichenden Werten.
143
+
144
+ ## Währungen benötigen eine Währung, keine Locale
145
+
146
+ Locale und Währung sind unabhängig voneinander. `fr-FR` bedeutet nicht automatisch Euro: Ein französischer Kunde kann durchaus eine Rechnung in US-Dollar betrachten.
147
+
148
+ ```ts
149
+ new Intl.NumberFormat("fr-FR", { style: "currency", currency: "USD" }).format(
150
+ 1234.5
151
+ );
152
+ // "1 234,50 $US"
153
+ ```
154
+
155
+ Die Locale steuert Trennzeichen, Zifferngruppierung und die Platzierung des Währungssymbols. Die Währung selbst stammt aus Ihren Geschäftsdaten. Die Ableitung des einen aus dem anderen führt unweigerlich zu Fehlern in der Buchhaltung.
156
+
157
+ Beachten Sie auch `currencyDisplay`. In Systemen mit mehreren Währungen, die das Dollarzeichen teilen, beseitigt `"code"` jegliche Mehrdeutigkeit zwischen US-, kanadischen und australischen Dollar.
158
+
159
+ ## Relative Zeitangaben sind oft lesbarer als absolute Daten
160
+
161
+ Für kürzlich zurückliegende Ereignisse ist "vor 2 Stunden" weit eingängiger als ein Zeitstempel, und `Intl.RelativeTimeFormat` lokalisiert dies automatisch.
162
+
163
+ ```ts
164
+ new Intl.RelativeTimeFormat("de", { numeric: "auto" }).format(-1, "day");
165
+ // "gestern"
166
+ ```
167
+
168
+ `numeric: "auto"` liefert "gestern" statt "vor 1 Tag". Ohne diese Option erhält man die unnatürlich wirkende rein numerische Schreibweise.
169
+
170
+ ## Was Intlayer ergänzt
171
+
172
+ Intlayer bündelt diese APIs in gecachten Hilfsfunktionen, sodass Sie keine eigene Cache-Map verwalten müssen, und wendet die aktive Locale standardmäßig an, ohne dass sie an jeder Aufrufstelle übergeben werden muss.
173
+
174
+ ```ts
175
+ import {
176
+ number,
177
+ currency,
178
+ date,
179
+ relativeTime,
180
+ units,
181
+ compact,
182
+ list,
183
+ } from "intlayer";
184
+
185
+ number(1234.5); // "1.234,5"
186
+ currency(1234.5, { currency: "EUR" }); // "1.234,50 €"
187
+ date(new Date(), "short");
188
+ relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "vor 2 Stunden"
189
+ units(5, { unit: "kilometer", unitDisplay: "long" }); // "5 Kilometer"
190
+ compact(1200); // "1,2 Tsd."
191
+ list(["Apfel", "Banane", "Orange"]); // "Apfel, Banane und Orange"
192
+ ```
193
+
194
+ Die Funktion `date()` unterstützt zudem Presets (`"short"`, `"long"`, `"dateOnly"`, `"timeOnly"`, `"full"`), womit typische Anwendungsfälle ohne Options-Objekt auskommen. Für React und Vue stehen Hooks und Composables bereit, die die aktive Sprache direkt aus dem Kontext ermitteln.
195
+
196
+ Dabei handelt es sich um eine komfortable Caching- und Locale-Schicht über der nativen Plattform-API. Das eigentliche Formatierungsverhalten basiert vollständig auf `Intl`. Sämtliche Signaturen finden sich in der [Formatierungsdokumentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/formatters.md).
197
+
198
+ ## Häufige Fehler
199
+
200
+ - **`toLocaleDateString()` ohne Locale-Angabe.** Verwendet die Standard-Locale des Systems, die auf einem Server vom Container abhängt.
201
+ - **Formatieren in einer Schleife ohne Caching.** Die Instanziierung des Formatierers dominiert die Laufzeit.
202
+ - **Fehlende `timeZone`-Angabe bei isomorphen Datumsangaben.** Führt zu Hydration-Fehlern, die lokal nicht auftreten.
203
+ - **Währung aus der Locale ableiten.** `fr-FR` garantiert keine Euro-Werte.
204
+ - **Einfaches `sort()` auf sichtbaren Texten.** Nutzen Sie stets `Intl.Collator`.
205
+ - **Monats- oder Wochentagsnamen fest codieren.** Sie sind bereits in jeder Sprache im CLDR hinterlegt.
206
+ - **`numeric: "always"` bei relativen Zeiten beibehalten.** Erzeugt "vor 1 Tag", obwohl jede Sprache ein Wort wie gestern kennt.
207
+
208
+ ## Weiterführende Ressourcen
209
+
210
+ - [Formatierer und Locale-Hilfsfunktionen: `number`, `currency`, `date`, `relativeTime`, `list`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/formatters.md)
211
+ - [Konfigurationsreferenz](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md)
212
+ - [Framework-Benchmarkberichte](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/benchmark/index.md)
213
+ - [react-intl-Kompatibilitätsadapter](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/compat/react-intl.md)
214
+ - [ICU Message Format: Plurale, Select und Zahlenskelette](https://github.com/aymericzip/intlayer/blob/main/docs/blog/de/icu_message_format.md)
215
+ - [Übersetzungen testen: Inklusive Formatierer und Pluralregeln](https://github.com/aymericzip/intlayer/blob/main/docs/blog/de/i18n_testing_strategies.md)
216
+ - [Was Internationalisierung wirklich umfasst](https://github.com/aymericzip/intlayer/blob/main/docs/blog/de/what_is_internationalization.md)
@@ -0,0 +1,202 @@
1
+ ---
2
+ createdAt: 2026-09-02
3
+ updatedAt: 2026-09-02
4
+ title: "Fehlende Übersetzungen aufspüren, bevor es Ihre Nutzer tun"
5
+ description: Fehlende Übersetzungen schlagen geräuschlos fehl. Warum Fallbacks sie verschleiern, welche vier Erkennungsebenen wirklich funktionieren und wie man Builds bei unübersetzten Schlüsseln abbricht.
6
+ keywords:
7
+ - fehlende übersetzungen finden
8
+ - fehlende übersetzungsschlüssel
9
+ - i18n audit
10
+ - unübersetzte zeichenketten
11
+ - übersetzungsabdeckung
12
+ - i18n lint
13
+ slugs:
14
+ - blog
15
+ - detecting-missing-translations
16
+ author: aymericzip
17
+ ---
18
+
19
+ # Fehlende Übersetzungen aufspüren, bevor es Ihre Nutzer tun
20
+
21
+ Eine fehlende Übersetzung wirft so gut wie nie einen sichtbaren Fehler. Je nach Setup zeigt sie einem japanischen Nutzer den englischen Text oder gibt `checkout.summary.total` direkt auf der Benutzeroberfläche in Produktion aus. Beides wird deployt, beides besteht jedes Code-Review und beides wird am Ende von Kunden bemerkt statt von Ihnen.
22
+
23
+ ## Inhaltsverzeichnis
24
+
25
+ <TOC/>
26
+
27
+ ## Dies gilt unabhängig von der verwendeten Bibliothek
28
+
29
+ Nichts hier ist an einen bestimmten Stack gebunden. Die folgenden Erkennungsebenen funktionieren bei i18next, react-i18next, next-intl, react-intl, vue-i18n, next-translate oder Lingui identisch, weil alle Bibliotheken Schlüssel nach demselben Prinzip auflösen und auf dieselbe Weise versagen.
30
+
31
+ Auch die Werkzeuge lassen sich nahtlos übertragen: Liegen Ihre Nachrichten heute in JSON-Katalogen, verknüpft das [Sync JSON-Plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/plugins/sync-json.md) Intlayer mit diesen Dateien. Dadurch erhalten Sie Audit-, Fill- und Test-Befehle, ohne Inhalte zu verschieben oder Imports anzupassen:
32
+
33
+ ```ts fileName="intlayer.config.ts"
34
+ import { syncJSON } from "@intlayer/sync-json-plugin";
35
+
36
+ const config = {
37
+ plugins: [
38
+ syncJSON({
39
+ source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
40
+ format: "i18next", // oder "icu" für next-intl / react-intl
41
+ }),
42
+ ],
43
+ };
44
+
45
+ export default config;
46
+ ```
47
+
48
+ Möchten Sie auch die gewohnte Runtime-API beibehalten, erstellen [Kompatibilitätsadapter](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/compat/index.md) Aliasse für `useTranslation`, `$t` und Co. auf Bundler-Ebene. Betrachten Sie die folgenden Befehle als konkrete Umsetzung des Konzepts, nicht als starre Vorgabe.
49
+
50
+ ## Warum fehlende Übersetzungen unsichtbar bleiben
51
+
52
+ Jede i18n-Bibliothek löst Schlüssel über dieselbe Kette auf: Aktive Locale suchen, auf die Standard-Locale zurückfallen und bei erneutem Misserfolg den Schlüssel selbst als String zurückgeben. Genau dieser letzte Schritt ist das Problem. Es gibt keinen Laufzeitfehler, keine Warnung in Produktion und keinen fehlschlagenden Test, weil kein Glied der Kette einen fehlenden Schlüssel als unnormal einstuft.
53
+
54
+ Das Fallback-Verhalten verschlimmert die Lage: Eine Seite, die stillschweigend auf Englisch rendert, sieht für einen englischsprachigen Entwickler und für automatisierte Tests völlig in Ordnung aus. Der Fehler ist nur für denjenigen sichtbar, der die Sprache nicht versteht.
55
+
56
+ Die Frage lautet daher nicht: „Wie fange ich fehlende Übersetzungen zur Laufzeit ab?“, sondern: „Wie stelle ich sicher, dass fehlende Übersetzungen gar nicht erst gemergt werden können?“
57
+
58
+ ## Die vier Ebenen zur Erkennung
59
+
60
+ Jede Ebene deckt Dinge auf, die den anderen entgehen. Sie sollten mehr als eine davon einsetzen.
61
+
62
+ | Ebene | Erkennt | Übersieht |
63
+ | :-------------- | :------------------------------------------------- | :--------------------------------------------- |
64
+ | Typen | Schlüssel, die überhaupt nicht existieren | Schlüssel existiert, ist aber in `ja` leer |
65
+ | Linter | Fest codierte Texte, die nie externalisiert wurden | Schlüssel, die in einem Katalog fehlen |
66
+ | Audit | Locale-Abdeckung über alle deklarierten Schlüssel | Texte, die nie als übersetzbar markiert wurden |
67
+ | Rendering-Tests | Schlüssel, die auflösen, aber falsch rendern | Alles, was nicht von einem Test abgedeckt ist |
68
+
69
+ Die häufigste Schwachstelle liegt in der dritten Zeile: Teams wissen, dass ihre Schlüssel syntaktisch existieren, prüfen aber nie, ob tatsächlich alle achtzehn Sprachen mit Inhalten hinterlegt sind.
70
+
71
+ ## Ebene 1: Den Schlüssel zu einem Typen machen, nicht zu einem String
72
+
73
+ `t("checkout.summry.total")` ist ein Tippfehler, der problemlos kompiliert. Sind Schlüssel reine Strings, birgt jedes Umbenennen ein Produktionsrisiko und jedes Löschen hinterlässt Leichen im Code.
74
+
75
+ Typisierte Schlüssel machen daraus einen Compiler-Fehler. `react-i18next` unterstützt dies über Declaration Merging, `next-intl` leitet Typen aus Nachrichtenstrukturen ab, Lingui generiert IDs aus Quelltexten und Intlayer erzeugt Typen direkt aus den Deklarationsdateien. Alle Ansätze funktionieren; sie unterscheiden sich lediglich im Aufwand der Konfiguration.
76
+
77
+ Diese Ebene ist notwendig, aber nicht ausreichend. Typen beschreiben lediglich die Struktur des Standardkatalogs. Sie garantieren nicht, dass im Koreanischen ein Wert hinterlegt ist.
78
+
79
+ ## Ebene 2: Fest codierte Zeichenketten per Linter abfangen
80
+
81
+ Die Übersetzung, die man nicht findet, ist oft jene, die nie als Schlüssel angelegt wurde. Ein fest codiertes Label in einer Komponente ist für jeden Katalog-Audit unsichtbar, weil der String für die Tools schlicht nicht existiert.
82
+
83
+ Das ESLint-Plugin von Intlayer deckt dies mit `no-raw-text` ab, ergänzt durch `no-unused-content` für den umgekehrten Fall: deklarierte Inhalte, die nirgendwo mehr referenziert werden.
84
+
85
+ ```js fileName="eslint.config.mjs"
86
+ import intlayer from "@intlayer/eslint-plugin";
87
+
88
+ export default [
89
+ intlayer.configs.recommended,
90
+ {
91
+ rules: {
92
+ "@intlayer/no-raw-text": "error",
93
+ "@intlayer/no-unused-content": "warn",
94
+ },
95
+ },
96
+ ];
97
+ ```
98
+
99
+ `no-unused-content` verhindert, dass Kataloge ins Unendliche wachsen. Tote Schlüssel stören die Funktion nicht, treiben jedoch Übersetzungskosten unnötig in die Höhe. Die vollständige Regelliste finden Sie in der [ESLint-Plugin-Dokumentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/eslint.md).
100
+
101
+ ## Ebene 3: Auditierung der Locale-Abdeckung
102
+
103
+ Diese Ebene beantwortet die eigentliche Kernfrage. Intlayer stellt dafür einen CLI-Befehl bereit:
104
+
105
+ ```bash packageManager="npm"
106
+ npx intlayer content test
107
+ ```
108
+
109
+ Der Befehl liest die konfigurierten Sprachen sowie deklarierte Wörterbücher ein und meldet präzise, welchen Schlüsseln welche Sprachen in welcher Datei fehlen.
110
+
111
+ Ein wichtiges Detail für Ihre Pipelines: **Die CLI gibt einen Bericht aus, beendet sich aber stets mit dem Exit-Code 0.** Wer den Befehl unbedarft in die CI einbindet, erhält grüne Builds mit Textausgaben, die niemand liest. Für Schrankenfunktionen (Gates) nutzen Sie stattdessen die nachfolgend beschriebene programmatische API.
112
+
113
+ ## Ebene 4: Zusicherungen (Assertions) in der Test-Suite
114
+
115
+ `listMissingTranslations()` liefert dasselbe Audit als strukturiertes Datenobjekt, perfekt geeignet für eine CI-Schranke.
116
+
117
+ ```ts fileName="i18n.test.ts"
118
+ /* @vitest-environment node */
119
+ import { listMissingTranslations } from "intlayer/cli";
120
+ import { describe, expect, it } from "vitest";
121
+
122
+ describe("translations", () => {
123
+ it("hat keine fehlenden erforderlichen Locales", async () => {
124
+ const result = await listMissingTranslations();
125
+
126
+ if (result.missingRequiredLocales.length > 0) {
127
+ console.log(result.missingTranslations);
128
+ }
129
+
130
+ expect(result.missingRequiredLocales).toHaveLength(0);
131
+ });
132
+ });
133
+ ```
134
+
135
+ Drei Felder werden zurückgegeben:
136
+
137
+ - `missingTranslations`: Aufgeschlüsselt nach Schlüssel, welche Sprachen in welcher Datei fehlen. Dies gibt man bei Testfehlern aus.
138
+ - `missingLocales`: Die Gesamtmenge aller fehlenden Sprachen über alle Schlüssel hinweg.
139
+ - `missingRequiredLocales`: Beschränkt auf die in der Konfiguration definierten `requiredLocales`, oder alle Sprachen, falls nicht separat konfiguriert.
140
+
141
+ ## `requiredLocales` macht Prüfungen praxistauglich
142
+
143
+ Achtzehn Sprachen anzubieten bedeutet nicht, dass stets alle achtzehn komplett sein müssen, um deployen zu können. Die meisten Teams unterscheiden zwischen einer unverzichtbaren Stufe, die Releases blockiert, und Sprachen, die nachgeliefert werden.
144
+
145
+ ```ts fileName="intlayer.config.ts"
146
+ import { Locales, type IntlayerConfig } from "intlayer";
147
+
148
+ const config: IntlayerConfig = {
149
+ internationalization: {
150
+ locales: [
151
+ Locales.ENGLISH,
152
+ Locales.FRENCH,
153
+ Locales.JAPANESE,
154
+ Locales.POLISH,
155
+ ],
156
+ requiredLocales: [Locales.ENGLISH, Locales.FRENCH],
157
+ defaultLocale: Locales.ENGLISH,
158
+ },
159
+ };
160
+
161
+ export default config;
162
+ ```
163
+
164
+ Ohne `requiredLocales` gilt jede definierte Sprache als verpflichtend, und der Build bleibt rot, bis die letzte Übersetzung vorliegt. Das führt fast immer dazu, dass die Prüfung entnervt abgeschaltet wird.
165
+
166
+ ## Lücken aufspüren, die bereits in Produktion sind
167
+
168
+ Die obigen Ebenen verhindern neue Lücken. Für bereits ausgelieferte Anwendungen helfen zwei Ansätze:
169
+
170
+ **Pseudolokalisierung.** Nutzen Sie eine Test-Locale, in der alle Zeichenketten transformiert werden, z. B. `[!!! Ĉĥéçķöũţ !!!]`. Alles, was weiterhin in reinem Englisch erscheint, ist im Code fest verdrahtet. Dies deckt in zehn Minuten auf, was ein Katalog-Audit technisch unmöglich sehen kann.
171
+
172
+ **Die eigene Website crawlen.** Bei lokalisierten URLs ruft man Stichproben pro Sprache ab und durchsucht das HTML nach Texten der Standardsprache. Eine Seite unter `/ja/`, die „Add to cart“ enthält, weist entweder auf eine fehlende Übersetzung oder ein unbemerktes Fallback hin.
173
+
174
+ ```bash
175
+ curl -s https://example.com/ja/checkout | grep -c "Add to cart"
176
+ ```
177
+
178
+ ## Lücken schließen
179
+
180
+ Sind Lücken lokalisiert, füllt `intlayer fill` leere Einträge automatisch auf, während die Option `autoFill` sprachspezifische Dateien direkt bei der Deklaration von Inhalten generieren kann. Siehe [autoFill](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/autoFill.md).
181
+
182
+ Man sollte sich darüber im Klaren sein: Maschinell gefüllte Übersetzungen machen eine _sichtbare_ Lücke zu einer _unsichtbaren_. Der Schlüssel besitzt nun Inhalt, der Audit wird grün, gelesen hat den Text jedoch niemand. Nutzen Sie dies, um Releases zu entblocken, und lassen Sie Texte vor Kaufentscheidungen stets durch Menschen gegenlesen.
183
+
184
+ ## Häufige Fehler
185
+
186
+ - **Fallbacks als Sicherheitsfeature begreifen.** Es ist eine Notfallstrategie, kein Sicherheitsnetz. Eine stillschweigend englische Seite ist ein unbemerkter Fehler.
187
+ - **CLI-Berichte zur Build-Sicherung nutzen.** `intlayer content test` beendet sich mit 0. Nutzen Sie Test-Assertions.
188
+ - **Jede Sprache zwingend vorschreiben.** Die Prüfung fliegt raus, sobald sie den ersten Release aufhält.
189
+ - **Kataloge prüfen, aber nie die gerenderte Seite.** Fest codierte Strings sind im Katalog per Definition unsichtbar.
190
+ - **Nur die Standardsprache in Tests abdecken.** Das ist die einzige Sprache, die unmöglich fehlen kann.
191
+ - **Den Prozess mit maschinellem Befüllen abschließen.** Grüner Audit, unüberprüfte Texte.
192
+
193
+ ## Weiterführende Ressourcen
194
+
195
+ - [Inhalte testen: CLI-Audit, programmatische API und UI-Assertions](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/testing.md)
196
+ - [ESLint-Plugin-Regeln, einschließlich `no-raw-text` und `no-unused-content`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/eslint.md)
197
+ - [autoFill: Generierung sprachspezifischer Deklarationsdateien](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/autoFill.md)
198
+ - [Konfigurationsreferenz: `locales`, `requiredLocales`, `defaultLocale`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md)
199
+ - [Benchmark-Berichte über Frameworks hinweg](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/benchmark/index.md)
200
+ - [i18next-Kompatibilitätsadapter](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/compat/i18next.md)
201
+ - [Was Internationalisierung wirklich umfasst](https://github.com/aymericzip/intlayer/blob/main/docs/blog/de/what_is_internationalization.md)
202
+ - [Komponentenbasierte vs. zentralisierte i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/de/per-component_vs_centralized_i18n.md)
@@ -0,0 +1,247 @@
1
+ ---
2
+ createdAt: 2026-09-02
3
+ updatedAt: 2026-09-02
4
+ title: "Übersetzungen in CI/CD automatisieren ohne fehlerhafte Texte auszuliefern"
5
+ description: Drei Ebenen zur i18n-Automatisierung, Pre-Push, Pull Request und Laufzeit. Wie man Builds über Abdeckung absichert, sicher automatisch befüllt und endlose CI-Commit-Schleifen vermeidet.
6
+ keywords:
7
+ - übersetzungen automatisieren ci
8
+ - i18n ci cd
9
+ - github actions übersetzungen
10
+ - husky pre-push
11
+ - kontinuierliche lokalisierung
12
+ - translation pipeline
13
+ slugs:
14
+ - blog
15
+ - i18n-in-ci-cd-pipelines
16
+ author: aymericzip
17
+ ---
18
+
19
+ # Übersetzungen in CI/CD automatisieren ohne fehlerhafte Texte auszuliefern
20
+
21
+ Manuelle Übersetzung hält modernen Release-Zyklen nicht stand. Jemand fügt am Freitag einen String hinzu, der Export erfolgt im nächsten Sprint, und bis dahin hinken drei weitere Sprachen hinterher. Die Automatisierung an sich ist unkompliziert. Sie so zu gestalten, dass nicht unbemerkt maschinell erzeugte Texte vor die Augen von Kunden geraten, ist der entscheidende Punkt.
22
+
23
+ ## Inhaltsverzeichnis
24
+
25
+ <TOC/>
26
+
27
+ ## Keine Migration erforderlich zur Automatisierung
28
+
29
+ Die folgenden Pipeline-Architekturen sind bibliotheksunabhängig, genau wie die verwendeten Werkzeuge. Wenn Ihre Nachrichten in JSON-Katalogen für i18next, next-intl, react-intl, vue-i18n oder next-translate liegen, liest und schreibt das [Sync JSON-Plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/plugins/sync-json.md) diese Dateien direkt an Ort und Stelle:
30
+
31
+ ```ts fileName="intlayer.config.ts"
32
+ import { syncJSON } from "@intlayer/sync-json-plugin";
33
+
34
+ const config = {
35
+ plugins: [
36
+ syncJSON({
37
+ source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
38
+ format: "i18next", // oder "icu" für next-intl / react-intl
39
+ }),
40
+ ],
41
+ };
42
+
43
+ export default config;
44
+ ```
45
+
46
+ Ihre Anwendung importiert weiterhin genau das, was sie bisher importiert hat. Die nachfolgenden CI-Jobs befüllen und überwachen Ihre vorhandenen Kataloge, und das Diff, das ein Reviewer sieht, betrifft `locales/fr/checkout.json` und keine Architekturmigration. Es gibt auch ein [Sync PO-Plugin](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/plugins/sync-po.md) für gettext-Workflows sowie [Kompatibilitätsadapter](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/compat/index.md), um die gewohnte Runtime-API beizubehalten.
47
+
48
+ ## Die Schranke (Gate) vom Befüllen (Fill) trennen
49
+
50
+ Zwei unterschiedliche Aufgaben werden ständig verwechselt.
51
+
52
+ Ein **Gate** ist eine Prüfung, die fehlschlägt. Sie besagt, dass dieser Build nicht freigegeben werden darf, weil erforderliche Sprachen unvollständig sind. Ein Gate schreibt keine Dateien.
53
+
54
+ Ein **Fill** ist eine Mutation. Er generiert die fehlenden Übersetzungen und committet sie. Ein Fill lässt einen Build niemals fehlschlagen.
55
+
56
+ Führt man nur einen Fill aus, wird niemals etwas blockiert, und ungesehene maschinelle Übersetzungen gelangen ungeprüft in Produktion. Führt man nur ein Gate aus, schlägt der Build fehl und ein Entwickler muss jedes Mal manuell eingreifen. Die meisten Teams kombinieren beides an getrennten Auslösern: Fill bei einem Pull Request, Gate beim Merge in den Release-Branch.
57
+
58
+ ## Wo Automatisierung stattfinden kann
59
+
60
+ | Phase | Auslöser | Geeignet für | Kosten |
61
+ | :------------- | :---------- | :---------------------------------------- | :---------------------------------------------- |
62
+ | Pre-Push-Hook | Lokales Git | Schnelles Feedback, keine CI-Minuten | Läuft auf dem Entwickler-Rechner mit dessen Key |
63
+ | Pull Request | CI-Job | Review vor dem Merge, ein Ort für Secrets | CI-Minuten plus Modellaufrufe pro PR |
64
+ | Release-Branch | CI-Job | Harte Schranke bezüglich Abdeckung | Günstig, keine Modellaufrufe |
65
+ | Laufzeit | CMS | Inhaltsänderungen ohne Rebuild | Gehostete Abhängigkeit |
66
+
67
+ ## Pre-Push: Der schnellste Zyklus
68
+
69
+ Husky führt das Befüllen aus, bevor der Code die lokale Maschine verlässt, sodass Übersetzungen im selben Push ankommen wie die neuen Strings.
70
+
71
+ ```bash fileName=".husky/pre-push"
72
+ npx intlayer build
73
+ npx intlayer fill --unpushed --mode complete
74
+ ```
75
+
76
+ `--unpushed` beschränkt die Arbeit auf noch nicht gepushte Inhalte, wodurch der Vorgang nicht bei jedem Push eine Minute dauert. `--mode complete` befüllt nur das, was fehlt, ohne bestehende Übersetzungen zu überschreiben, sodass bereits überprüfte Texte nicht verloren gehen.
77
+
78
+ In einem Monorepo grenzen Sie jede Anwendung ab:
79
+
80
+ ```bash fileName=".husky/pre-push"
81
+ npx intlayer build --base-dir ./app1
82
+ npx intlayer fill --base-dir ./app1 --unpushed --mode complete
83
+ npx intlayer build --base-dir ./app2
84
+ npx intlayer fill --base-dir ./app2 --unpushed --mode complete
85
+ ```
86
+
87
+ Der Nachteil liegt auf der Hand: Jeder Entwickler benötigt einen API-Key, und die Kosten trägt derjenige, der pusht. Deshalb verlagern die meisten Teams diesen Schritt in die CI, sobald das Team wächst.
88
+
89
+ ## Pull Request: Befüllen dort, wo das Review stattfindet
90
+
91
+ Derselbe Ablauf in GitHub Actions, begrenzt auf das Git-Diff:
92
+
93
+ ```yaml fileName=".github/workflows/intlayer-translate.yml"
94
+ name: Intlayer Auto-Fill
95
+ on:
96
+ pull_request:
97
+ branches: ["main"]
98
+
99
+ permissions:
100
+ contents: write
101
+ pull-requests: write
102
+
103
+ concurrency:
104
+ group: "autofill-${{ github.ref }}"
105
+ cancel-in-progress: true
106
+
107
+ jobs:
108
+ autofill:
109
+ runs-on: ubuntu-latest
110
+ env:
111
+ AI_PROVIDER: openai
112
+ AI_MODEL: gpt-5-mini
113
+ AI_API_KEY: ${{ secrets.AI_API_KEY }}
114
+ steps:
115
+ - uses: actions/checkout@v4
116
+ with:
117
+ persist-credentials: true
118
+ fetch-depth: 0
119
+ - uses: actions/setup-node@v4
120
+ with:
121
+ node-version: 20
122
+ - run: npm install
123
+ - run: npx intlayer build
124
+ - run: npx intlayer fill --git-diff --mode complete --provider $AI_PROVIDER --model $AI_MODEL --api-key $AI_API_KEY
125
+ - name: Commit
126
+ run: |
127
+ if [ -n "$(git status --porcelain)" ]; then
128
+ git config --local user.email "action@github.com"
129
+ git config --local user.name "GitHub Action"
130
+ git add .
131
+ git commit -m "chore: auto-fill missing translations [skip ci]"
132
+ git push origin HEAD:${{ github.head_ref }}
133
+ fi
134
+ ```
135
+
136
+ Vier Details sind hier essenziell:
137
+
138
+ - **`fetch-depth: 0`** ist erforderlich, damit `--git-diff` funktioniert. Ein flacher Klon hat keine Basis für ein Diff, und der Vorgang befüllt stillschweigend nichts.
139
+ - **`[skip ci]` in der Commit-Nachricht** verhindert, dass sich der Workflow endlos selbst auslöst. Ohne diesen Zusatz committet der Job, startet einen neuen CI-Lauf, der wieder committet, der klassische Weg, um das CI-Budget über Nacht zu leeren.
140
+ - **`concurrency` mit `cancel-in-progress`** stoppt konkurrierende Pushes daran, gleichzeitig in dieselben Dateien zu schreiben.
141
+ - **`--git-diff`** beschränkt die Generierung auf die Änderungen im PR. Ohne dieses Flag wird bei jedem Durchlauf der gesamte Katalog neu übersetzt.
142
+
143
+ Die Übersetzungen landen als Commit direkt auf dem PR-Branch, sodass der Reviewer sie im Diff begutachten kann. Genau darin liegt der Vorteil gegenüber einer Generierung nach dem Merge.
144
+
145
+ ## Release-Branch: Das Gate
146
+
147
+ Das Gate benötigt keinen Modellzugriff und muss schnell sein.
148
+
149
+ ```yaml fileName=".github/workflows/ci.yml"
150
+ - run: npm run test:i18n
151
+ ```
152
+
153
+ Abgesichert durch einen Test, der die Abdeckung per Assertion prüft, statt sich auf Terminal-Ausgaben zu verlassen:
154
+
155
+ ```ts fileName="i18n.test.ts"
156
+ import { listMissingTranslations } from "intlayer/cli";
157
+
158
+ test("hat keine fehlenden erforderlichen Locales", async () => {
159
+ const result = await listMissingTranslations();
160
+ if (result.missingRequiredLocales.length > 0) {
161
+ console.log(result.missingTranslations);
162
+ }
163
+ expect(result.missingRequiredLocales).toHaveLength(0);
164
+ });
165
+ ```
166
+
167
+ `npx intlayer content test` gibt einen Bericht aus, beendet sich aber mit Status 0, informiert also nur, ohne den Build anzuhalten. Nutzen Sie es lokal; nutzen Sie den Assertion-Test in der CI. Mehr dazu in [Fehlende Übersetzungen aufspüren](https://github.com/aymericzip/intlayer/blob/main/docs/blog/de/detecting_missing_translations.md).
168
+
169
+ ## `requiredLocales` macht das Gate alltagstauglich
170
+
171
+ Ein Gate, das alle achtzehn Sprachen als vollständig verlangt, blockiert jeden Release, bis die letzte Sprache fertig ist, und wird innerhalb eines Monats deaktiviert.
172
+
173
+ ```ts fileName="intlayer.config.ts"
174
+ import { Locales, type IntlayerConfig } from "intlayer";
175
+
176
+ const config: IntlayerConfig = {
177
+ internationalization: {
178
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
179
+ requiredLocales: [Locales.ENGLISH],
180
+ defaultLocale: Locales.ENGLISH,
181
+ },
182
+ };
183
+
184
+ export default config;
185
+ ```
186
+
187
+ Deklarieren Sie die angebotenen Locales und verlangen Sie nur diejenigen verpflichtend, die einen Release tatsächlich blockieren müssen. Der Rest wird asynchron befüllt und hält Auslieferungen nicht auf.
188
+
189
+ ## Übersetzungen komplett aus dem Repository auslagern
190
+
191
+ Das alternative Modell deklariert eine Quellsprache im Code und verwaltet den Rest extern über das CMS mit Live Sync. Inhaltsänderungen erfordern dann überhaupt keinen Rebuild mehr, was redaktionelle Anpassungen von Software-Releases entkoppelt.
192
+
193
+ ```ts fileName="intlayer.config.ts"
194
+ const config: IntlayerConfig = {
195
+ internationalization: {
196
+ locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],
197
+ requiredLocales: [Locales.ENGLISH],
198
+ defaultLocale: Locales.ENGLISH,
199
+ },
200
+ editor: {
201
+ clientId: process.env.INTLAYER_CLIENT_ID,
202
+ clientSecret: process.env.INTLAYER_CLIENT_SECRET,
203
+ liveSync: true,
204
+ },
205
+ };
206
+
207
+ export default config;
208
+ ```
209
+
210
+ Dies eignet sich besonders für Teams, in denen Nicht-Entwickler Texte pflegen. Es ist ein Kompromiss: Man gewinnt redaktionelle Unabhängigkeit, verliert jedoch die Eigenschaft, dass ein Git-Checkout den genauen Render-Zustand der Anwendung widerspiegelt. Details in der [CMS-Dokumentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/intlayer_CMS.md).
211
+
212
+ Beachten Sie, dass `clientSecret` ein vertraulicher Serverschlüssel ist. Er gehört in CI-Secrets und Server-Umgebungsvariablen, niemals in ein Client-Bundle.
213
+
214
+ ## Die ehrliche Einschränkung
215
+
216
+ Alles oben Genannte automatisiert die _Abdeckung_, nicht die _Qualität_. Ein maschineller Fill verwandelt eine sichtbare Lücke in eine unsichtbare: Das Audit wird grün, weil der Schlüssel nun einen Wert hat, den jedoch kein Mensch gegengelesen hat.
217
+
218
+ Das ist akzeptabel für interne Tools, Changelogs oder Beta-Sprachen. Es ist ungeeignet für Preisseiten, rechtliche Hinweise, Zahlungsfehlermeldungen oder Texte vor Kaufentscheidungen. Leiten Sie diese durch menschliche Reviews und nutzen Sie überall `--mode complete`, damit manuell geprüfte Strings nicht überschrieben werden.
219
+
220
+ Geben Sie dem Modell Kontext für konsistente Ergebnisse:
221
+
222
+ ```ts
223
+ ai: {
224
+ applicationContext: "B2B-Rechnungs-App. Formeller Tonfall. Den Produktnamen niemals übersetzen.",
225
+ }
226
+ ```
227
+
228
+ ## Häufige Fehler
229
+
230
+ - **Kein `[skip ci]` beim Auto-Commit.** Der Job startet sich endlos in einer Schleife neu.
231
+ - **Flacher Klon mit `--git-diff`.** Keine Vergleichsbasis vorhanden, nichts wird befüllt, kein Fehler gemeldet.
232
+ - **Gesamten Katalog bei jedem Durchlauf füllen.** Mit `--git-diff` oder `--unpushed` eingrenzen, um Kosten zu sparen.
233
+ - **CLI-Bericht als Gate nutzen.** Er beendet sich mit Return-Code 0.
234
+ - **Jede Sprache zwingend verlangen.** Die Schranke wird beim ersten blockierten Release abgeschaltet.
235
+ - **Fill-Job ganz ohne Gate.** Nichts schlägt fehl, ungeprüfte Texte wandern unbemerkt in Produktion.
236
+ - **Modell-API-Keys im Repository.** Gehören ebenso wie `clientSecret` in CI-Secrets.
237
+
238
+ ## Weiterführende Ressourcen
239
+
240
+ - [CI/CD: Übersetzungen automatisch generieren mit Husky, GitHub Actions und CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/CI_CD.md)
241
+ - [Inhalte testen und Builds auf Abdeckung absichern](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/testing.md)
242
+ - [autoFill: Deklarationsdateien pro Locale erzeugen](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/autoFill.md)
243
+ - [Konfigurationsreferenz: `locales`, `requiredLocales`, `editor`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/configuration.md)
244
+ - [Benchmark-Berichte über Frameworks hinweg](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/benchmark/index.md)
245
+ - [i18next-Kompatibilitätsadapter](https://github.com/aymericzip/intlayer/blob/main/docs/docs/de/compat/i18next.md)
246
+ - [Fehlende Übersetzungen aufspüren](https://github.com/aymericzip/intlayer/blob/main/docs/blog/de/detecting_missing_translations.md)
247
+ - [Übersetzungen testen ohne fragile Tests](https://github.com/aymericzip/intlayer/blob/main/docs/blog/de/i18n_testing_strategies.md)