@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: "Formatowanie dat i liczb według lokalizacji za pomocą Intl"
5
+ description: Prawdopodobnie nie potrzebujesz zewnętrznej biblioteki do formatowania. Jak Intl obsługuje daty, liczby, waluty i listy per locale, koszt cache'owania oraz błąd strefy czasowej na produkcji.
6
+ keywords:
7
+ - formatowanie daty per locale
8
+ - Intl.DateTimeFormat
9
+ - Intl.NumberFormat
10
+ - toLocaleDateString
11
+ - format waluty locale
12
+ - format czasu względnego
13
+ slugs:
14
+ - blog
15
+ - date-time-number-formatting-locales
16
+ author: aymericzip
17
+ ---
18
+
19
+ # Formatowanie dat i liczb według lokalizacji za pomocą Intl
20
+
21
+ Tłumaczenie tekstów to zaledwie widoczna połowa internacjonalizacji (i18n). Druga połowa, która regularnie generuje zgłoszenia błędów, to formatowanie: niemiecki użytkownik widzący `1,234.56` zamiast `1.234,56`, japoński użytkownik widzący `08/02/2026` i czytający to jako sierpień, lub data renderująca się inaczej na serwerze i w przeglądarce, powodująca błąd hydratacji w React.
22
+
23
+ Żadna z tych rzeczy nie wymaga zewnętrznej biblioteki. API `Intl` jest wbudowane w każde współczesne środowisko wykonawcze.
24
+
25
+ ## Spis treści
26
+
27
+ <TOC/>
28
+
29
+ ## Zacznij od usunięcia własnoręcznie napisanych helperów do dat
30
+
31
+ Niemal każda baza kodu zawiera funkcję `formatDate` napisaną, zanim ktokolwiek pomyślał o lokalizacjach. Narzuca ona sztywną kolejność, separator i najczęściej angielskie nazwy miesięcy.
32
+
33
+ ```ts
34
+ // Kod, który należy usunąć:
35
+ const formatDate = (d: Date) =>
36
+ `${d.getMonth() + 1}/${d.getDate()}/${d.getFullYear()}`;
37
+ ```
38
+
39
+ `Intl.DateTimeFormat` zastępuje ją w pełni i działa prawidłowo dla każdego języka:
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
+ To samo dotyczy liczb. `toFixed(2)` wszędzie daje `1234.56`, co w większości krajów Europy jest zapisem niepoprawnym.
49
+
50
+ ## Co obejmuje `Intl`
51
+
52
+ | API | Zastosowanie |
53
+ | :------------------------ | :------------------------------------------------------------- |
54
+ | `Intl.DateTimeFormat` | Daty i godziny z presetami `dateStyle` / `timeStyle` |
55
+ | `Intl.NumberFormat` | Ułamki dziesiętne, waluty, procenty, jednostki, notacja zwarta |
56
+ | `Intl.RelativeTimeFormat` | "3 dni temu", "za 2 godziny" |
57
+ | `Intl.ListFormat` | "a, b i c" kontra "a, b, and c" |
58
+ | `Intl.PluralRules` | Ustalanie reguł liczby mnogiej dla wartości liczbowych |
59
+ | `Intl.Collator` | Poprawne językowo sortowanie ciągów znaków |
60
+
61
+ `Intl.Collator` to narzędzie, o którym programiści zapominają najczęściej. Wywołanie `array.sort()` na ciągach znaków używa kolejności punktów kodowych Unicode, przez co litery ze znakami diakrytycznymi trafiają na sam koniec za `z`, a szwedzkie `ö` ląduje w niewłaściwym miejscu. Sortując listy widoczne dla użytkowników, zawsze używaj collatora.
62
+
63
+ ```ts
64
+ ["zebra", "édouard", "apple"].sort(new Intl.Collator("pl").compare);
65
+ // ["apple", "édouard", "zebra"]
66
+ ```
67
+
68
+ ## Wybieraj gotowe presety zamiast opcji składanych ręcznie
69
+
70
+ `dateStyle` i `timeStyle` pozwalają lokalizacji samodzielnie decydować o logicznym układzie i separatorach. Ręczne konfigurowanie `year`, `month` i `day` daje kontrolę, której zazwyczaj nie chcesz, ponieważ prawidłowy układ zależy od regionu i nadpisujesz dane CLDR własnymi, często błędnymi założeniami.
71
+
72
+ ```ts
73
+ // Układ określa dana lokalizacja:
74
+ new Intl.DateTimeFormat(locale, { dateStyle: "medium" }).format(d);
75
+
76
+ // Wymuszenie własnego układu, błędnego w innych krajach:
77
+ new Intl.DateTimeFormat(locale, {
78
+ year: "numeric",
79
+ month: "2-digit",
80
+ day: "2-digit",
81
+ }).format(d);
82
+ ```
83
+
84
+ Używaj jawnych komponentów tylko wtedy, gdy projekt graficzny bezwzględnie wymaga stałej szerokości, np. w wąskiej kolumnie tabeli.
85
+
86
+ ## Tworzenie formaterów jest kosztowne
87
+
88
+ Oto szczegół wydajnościowy o fundamentalnym znaczeniu. Inicjalizacja `Intl.NumberFormat` ładuje obszerne dane lokalizacyjne i jest znacznie droższa niż samo wywołanie `.format()`. Wykonywanie tego w pętli renderującej po tysiącu wierszy powoduje wyraźny spadek płynności.
89
+
90
+ ```ts
91
+ // Ponowne tworzenie formatera dla każdego wiersza (wolne):
92
+ rows.map((r) => new Intl.NumberFormat(locale).format(r.total));
93
+
94
+ // Utworzenie raz i wielokrotne użycie (szybkie):
95
+ const nf = new Intl.NumberFormat(locale);
96
+ rows.map((r) => nf.format(r.total));
97
+ ```
98
+
99
+ `toLocaleDateString()` i `toLocaleString()` kryją w sobie ten sam problem: każde wywołanie tworzy nową instancję. Sprawdzają się dla pojedynczej wartości, ale są nieodpowiednie dla list.
100
+
101
+ Cache'uj instancje w oparciu o połączenie lokalizacji i opcji:
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
+ ## Błąd strefy czasowej, który pojawia się wyłącznie na produkcji
121
+
122
+ Ten błąd potrafi kosztować całe popołudnia. Serwer renderuje datę w SSR, przeglądarka przeprowadza hydratację w kliencie, a React zgłasza błąd hydration mismatch, ponieważ oba środowiska wygenerowały różny tekst.
123
+
124
+ Przyczyna: `Intl.DateTimeFormat` używa lokalnej strefy czasowej systemu operacyjnego, jeśli nie wskażesz jej wprost. Serwer produkcyjny działa w UTC, podczas gdy komputer lokalny programisty w innej strefie. Błąd jest niewidoczny lokalnie i ujawnia się dopiero na produkcji.
125
+
126
+ ```ts
127
+ // Serwer w UTC i przeglądarka w UTC+1 generują różne teksty. Błąd hydratacji:
128
+ new Intl.DateTimeFormat(locale, { dateStyle: "short" }).format(d);
129
+
130
+ // Oba środowiska generują w pełni spójny tekst:
131
+ new Intl.DateTimeFormat(locale, { dateStyle: "short", timeZone: "UTC" }).format(
132
+ d
133
+ );
134
+ ```
135
+
136
+ Trzy sprawdzone podejścia:
137
+
138
+ - **Ustalenie strefy czasowej** na serwerze i jawne jej przekazywanie. Stabilne i deterministyczne, ale każdy widzi czas UTC.
139
+ - **Renderowanie wyłącznie po stronie klienta**, ze stabilnym placeholderem w fazie SSR. Dokładne dla użytkownika, z drobnym przeskokiem wizualnym.
140
+ - **Zapisanie strefy czasowej użytkownika** i przekazywanie jej do obu środowisk. Najlepszy rezultat, wymagający nieco więcej konfiguracji.
141
+
142
+ Niezależnie od wyboru, zawsze jawnie podawaj `timeZone` dla każdej daty renderowanej zarówno po stronie serwera, jak i klienta. Data bez zdefiniowanej strefy czasowej to data o dwóch różnych wartościach.
143
+
144
+ ## Waluta potrzebuje kodu waluty, a nie lokalizacji
145
+
146
+ Lokalizacja i waluta to niezależne pojęcia. `fr-FR` nie oznacza automatycznie euro: francuski klient może przeglądać fakturę rozliczaną w dolarach amerykańskich.
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
+ Lokalizacja zarządza separatorami, grupowaniem cyfr i pozycją symbolu. Sama waluta pochodzi z danych biznesowych. Wnioskowanie jednego z drugiego prowadzi do poważnych błędów księgowych.
156
+
157
+ Zwróć także uwagę na `currencyDisplay`. W interfejsach, w których występuje kilka walut dzielących znak dolara ($), opcja `"code"` eliminuje nieporozumienia pomiędzy dolarami amerykańskimi, kanadyjskimi i australijskimi.
158
+
159
+ ## Czas względny jest bardziej czytelny niż sztywny timestamp
160
+
161
+ W przypadku niedawnych zdarzeń "2 godziny temu" jest znacznie bardziej naturalne niż pełna data, a `Intl.RelativeTimeFormat` lokalizuje ten zapis automatycznie.
162
+
163
+ ```ts
164
+ new Intl.RelativeTimeFormat("pl", { numeric: "auto" }).format(-1, "day");
165
+ // "wczoraj"
166
+ ```
167
+
168
+ `numeric: "auto"` odpowiada za uzyskanie słowa "wczoraj" zamiast "1 dzień temu".
169
+
170
+ ## Co dodaje Intlayer
171
+
172
+ Intlayer opakowuje te mechanizmy w funkcje pomocnicze z wbudowanym cache'em, uwalniając Cię od ręcznego zarządzania strukturą Map, i automatycznie stosuje aktywną lokalizację bez konieczności przekazywania jej przy każdym wywołaniu.
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" }); // "2 godziny temu"
189
+ units(5, { unit: "kilometer", unitDisplay: "long" }); // "5 kilometrów"
190
+ compact(1200); // "1,2 tys."
191
+ list(["jabłko", "banan", "pomarańcza"]); // "jabłko, banan i pomarańcza"
192
+ ```
193
+
194
+ Funkcja `date()` obsługuje także presety (`"short"`, `"long"`, `"dateOnly"`, `"timeOnly"`, `"full"`). Dla Reacta i Vue dostępne są hooki i composables, które automatycznie pobierają język z kontekstu.
195
+
196
+ Jest to wygodna warstwa pamięci podręcznej i obsługi domyślnego języka nad standardowym API platformy. Sam sposób formatowania w pełni opiera się na `Intl`. Pełne sygnatury znajdziesz w [dokumentacji formaterów](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/formatters.md).
197
+
198
+ ## Częste błędy
199
+
200
+ - **`toLocaleDateString()` bez podania lokalizacji.** Pobiera język środowiska uruchomieniowego, zależny od konfiguracji kontenera serwera.
201
+ - **Formatowanie w pętli bez cache'owania.** Tworzenie formatera pochłania większość czasu CPU.
202
+ - **Brak parametru `timeZone` przy datach izomorficznych.** Prowadzi do błędów hydratacji niewidocznych lokalnie.
203
+ - **Wnioskowanie waluty z języka.** `fr-FR` nie gwarantuje rozliczeń w euro.
204
+ - **Używanie zwykłego `sort()` dla wyświetlanych tekstów.** Zawsze stosuj `Intl.Collator`.
205
+ - **Wpisywanie nazw miesięcy i dni na sztywno.** Są już kompleksowo opisane w repozytorium CLDR dla każdego języka.
206
+ - **Pozostawianie `numeric: "always"` w czasie względnym.** Zwraca "1 dzień temu" tam, gdzie istnieje słowo wczoraj.
207
+
208
+ ## Warto przeczytać
209
+
210
+ - [Formatery i narzędzia lokalizacyjne: `number`, `currency`, `date`, `relativeTime`, `list`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/formatters.md)
211
+ - [Dokumentacja konfiguracji](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md)
212
+ - [Raporty wydajnościowe frameworków](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/benchmark/index.md)
213
+ - [Adapter kompatybilności react-intl](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/compat/react-intl.md)
214
+ - [Format wiadomości ICU: liczba mnoga, instrukcje warunkowe i szablony liczb](https://github.com/aymericzip/intlayer/blob/main/docs/blog/pl/icu_message_format.md)
215
+ - [Jak testować tłumaczenia z uwzględnieniem formaterów i reguł liczby mnogiej](https://github.com/aymericzip/intlayer/blob/main/docs/blog/pl/i18n_testing_strategies.md)
216
+ - [Co w rzeczywistości obejmuje internacjonalizacja](https://github.com/aymericzip/intlayer/blob/main/docs/blog/pl/what_is_internationalization.md)
@@ -0,0 +1,202 @@
1
+ ---
2
+ createdAt: 2026-09-02
3
+ updatedAt: 2026-09-02
4
+ title: "Jak wykrywać brakujące tłumaczenia, zanim zrobią to użytkownicy"
5
+ description: Brakujące tłumaczenia zawodzą po cichu. Dlaczego mechanizm fallback je ukrywa, jakie cztery warstwy wykrywania naprawdę działają i jak zatrzymać build na nieprzetłumaczonym kluczu.
6
+ keywords:
7
+ - znajdź brakujące tłumaczenia
8
+ - brakujące klucze tłumaczeń
9
+ - audyt i18n
10
+ - nieprzetłumaczone ciągi znaków
11
+ - pokrycie tłumaczeń
12
+ - i18n lint
13
+ slugs:
14
+ - blog
15
+ - detecting-missing-translations
16
+ author: aymericzip
17
+ ---
18
+
19
+ # Jak wykrywać brakujące tłumaczenia, zanim zrobią to użytkownicy
20
+
21
+ Brakujące tłumaczenie prawie nigdy nie rzuca wyjątku. W zależności od konfiguracji wyświetla japońskiemu użytkownikowi tekst po angielsku lub drukuje `checkout.summary.total` wprost na stronie produkcyjnej. Obydwa przypadki trafiają na produkcję, przechodzą code review i zostają zauważone przez klienta, a nie przez Ciebie.
22
+
23
+ ## Spis treści
24
+
25
+ <TOC/>
26
+
27
+ ## Dotyczy to każdej biblioteki, której używasz
28
+
29
+ Nic z tego, co tu opisano, nie jest ograniczone do jednego konkretnego stosu technologicznego. Poniższe warstwy detekcji działają identycznie w i18next, react-i18next, next-intl, react-intl, vue-i18n, next-translate czy Lingui, ponieważ wszystkie rozwiązują klucze w ten sam sposób i zawodzą według tego samego schematu.
30
+
31
+ Narzędzia również są przenośne. Jeśli Twoje teksty znajdują się w katalogach JSON, [wtyczka Sync JSON](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/plugins/sync-json.md) podłącza Intlayer do tych plików, dając Ci dostęp do poleceń audytu, wypełniania i testowania bez przenoszenia treści i bez zmiany choćby jednego importu:
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", // lub "icu" dla next-intl / react-intl
41
+ }),
42
+ ],
43
+ };
44
+
45
+ export default config;
46
+ ```
47
+
48
+ Jeśli zależy Ci również na zachowaniu dotychczasowego runtime API, [adaptery kompatybilności](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/compat/index.md) tworzą aliasy dla `useTranslation`, `$t` i pokrewnych na poziomie bundlera. W każdym przypadku traktuj poniższe komendy jako praktyczną realizację koncepcji, a nie sztywny wymóg.
49
+
50
+ ## Dlaczego braki są niewidoczne
51
+
52
+ Każda biblioteka i18n rozwiązuje klucz według tego samego łańcucha: sprawdź aktywny język, sięgnij po język domyślny (fallback), a jeśli to zawiedzie, zwróć sam klucz. To właśnie ten ostatni krok stanowi sedno problemu. Nie ma błędu, nie ma ostrzeżenia na produkcji i żaden test nie zgłasza awarii, ponieważ żaden element potoku nie traktuje brakującego klucza jako anomalii.
53
+
54
+ Fallback tylko pogarsza sprawę zamiast ją naprawiać. Strona renderująca się po cichu w języku angielskim wygląda całkowicie poprawnie dla anglojęzycznego programisty i dla każdego zautomatyzowanego testu. Błąd jest widoczny wyłącznie dla osoby, która nie rozumie wyświetlonego tekstu.
55
+
56
+ Pytanie nie brzmi zatem "jak obsługiwać brakujące tłumaczenia w runtime". Brzmi ono: "jak uniemożliwić zmergowanie brakującego tłumaczenia".
57
+
58
+ ## Cztery warstwy, w których możesz je wychwycić
59
+
60
+ Każda warstwa wyłapuje to, czego inne nie potrafią dostrzec. Najlepiej wdrożyć więcej niż jedną.
61
+
62
+ | Warstwa | Co wykrywa | Co pomija |
63
+ | :----------------- | :----------------------------------------------- | :------------------------------------------------------- |
64
+ | Typy | Klucze, które w ogóle nie istnieją | Klucz istnieje, ale nie ma wartości w `ja` |
65
+ | Linter | Teksty na sztywno, niewysłane do tłumaczenia | Klucze brakujące w konkretnym katalogu |
66
+ | Audyt | Pokrycie językowe każdego zadeklarowanego klucza | Teksty, które nigdy nie zostały oznaczone do tłumaczenia |
67
+ | Testy renderowania | Klucze, które się rozwiązują, ale źle renderują | Wszystko, co nie zostało objęte testem |
68
+
69
+ Najczęstszą luką w zespołach jest trzeci wiersz: programiści wiedzą, że ich klucze są poprawne pod kątem typów, ale nic nie sprawdza, czy wszystkie osiemnaście języków rzeczywiście posiada przypisaną wartość.
70
+
71
+ ## Warstwa 1: uczyń klucz typem, a nie ciągiem znaków
72
+
73
+ `t("checkout.summry.total")` to literówka, która bez trudu się kompiluje. Jeśli Twoje klucze są zwykłymi ciągami znaków, każda zmiana nazwy niesie ryzyko na produkcji, a każde usunięcie pozostawia osierocone wpisy.
74
+
75
+ Typowane klucze zamieniają to w błąd kompilacji. `react-i18next` wspiera to przez declaration merging, `next-intl` wnioskuje typy ze struktury wiadomości, Lingui generuje identyfikatory z tekstu źródłowego, a Intlayer tworzy ścisłe typy z plików deklaracji. Każde z tych rozwiązań działa; różnią się jedynie ilością kodu konfiguracyjnego.
76
+
77
+ Ta warstwa jest niezbędna, lecz niewystarczająca. Typy opisują kształt Twojego katalogu domyślnego. Nie informują jednak, czy w języku koreańskim istnieje wartość dla danego klucza.
78
+
79
+ ## Warstwa 2: sprawdzaj linterem teksty, które nigdy nie stały się kluczami
80
+
81
+ Tłumaczenie, którego nie możesz znaleźć, to często to, które nigdy nie zostało wyodrębnione. Etykieta wpisana na sztywno w komponencie jest niewidoczna dla każdego audytu katalogów, ponieważ z perspektywy narzędzi po prostu nie istnieje.
82
+
83
+ Wtyczka ESLint dla Intlayer rozwiązuje ten problem regułą `no-raw-text`, uzupełnioną o `no-unused-content` dla sytuacji odwrotnej: treści zadeklarowanej, z której nic już nie korzysta.
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` zapobiega niekontrolowanemu rozrastaniu się katalogów. Martwe klucze nie psują działania aplikacji, ale niepotrzebnie powiększają rachunki za tłumaczenia. Pełna lista reguł znajduje się w [dokumentacji wtyczki ESLint](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/eslint.md).
100
+
101
+ ## Warstwa 3: audyt pokrycia języków
102
+
103
+ To warstwa, która bezpośrednio odpowiada na właściwe pytanie. Intlayer dostarcza ją jako polecenie CLI:
104
+
105
+ ```bash packageManager="npm"
106
+ npx intlayer content test
107
+ ```
108
+
109
+ Polecenie odczytuje skonfigurowane języki i zadeklarowane słowniki, po czym zgłasza, którym kluczom brakuje tłumaczeń, w jakich językach i w jakim pliku.
110
+
111
+ Ważny szczegół przed włączeniem tego do procesów CI: **CLI drukuje raport, ale kończy działanie z kodem wyjścia 0.** Jeśli dodasz je do potoku, oczekując przerwania buildu, otrzymasz zielony build z długim raportem tekstowym, którego nikt nie przeczyta. Do blokowania kompilacji użyj programistycznego API opisanego poniżej.
112
+
113
+ ## Warstwa 4: asercje w zestawie testów
114
+
115
+ `listMissingTranslations()` zwraca dokładnie ten sam audyt w formie ustrukturyzowanych danych, co idealnie nadaje się do stworzenia bramki kompilacji (build gate).
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("has no missing required 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
+ Zwracane są trzy pola o istotnym znaczeniu:
136
+
137
+ - `missingTranslations`: w rozbiciu na klucze, jakich języków brakuje i w jakim pliku. To właśnie te dane drukujesz w przypadku błędu testu.
138
+ - `missingLocales`: suma wszystkich brakujących języków we wszystkich kluczach.
139
+ - `missingRequiredLocales`: ograniczone do `requiredLocales` z Twojej konfiguracji (lub wszystkie języki, jeśli opcja nie została zdefiniowana).
140
+
141
+ ## `requiredLocales` sprawia, że bramka jest znośna w praktyce
142
+
143
+ Wydawanie aplikacji w osiemnastu językach nie oznacza, że wszystkie osiemnaście musi być w 100% gotowych, aby móc wdrożyć kod. Większość zespołów posiada poziom krytyczny, który blokuje wydanie, oraz poziom uzupełniany na bieżąco.
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
+ Bez `requiredLocales` każdy zadeklarowany język jest bezwzględnie wymagany, a Twój build pozostanie czerwony, dopóki nie spłynie ostatnie tłumaczenie. W rezultacie zespoły najczęściej całkowicie wyłączają tę weryfikację, co jest gorsze niż brak jakichkolwiek testów.
165
+
166
+ ## Wykrywanie braków, które już trafiły na produkcję
167
+
168
+ Powyższe warstwy chronią przed nowymi lukami. W przypadku aplikacji, która już działa na produkcji, pomagają dwie techniki.
169
+
170
+ **Pseudolokalizacja.** Uruchom aplikację ze sztucznym językiem, w którym każdy ciąg znaków jest zmodyfikowany, na przykład `[!!! Ĉĥéçķöũţ !!!]`. Wszystko, co nadal wyświetla się po angielsku, jest zaszyte w kodzie na stałe. Pozwala to w dziesięć minut wykryć to, czego audyt katalogów strukturalnie nie jest w stanie zobaczyć, ponieważ testuje wyrenderowaną stronę, a nie same pliki z danymi.
171
+
172
+ **Crawlowanie własnej witryny.** Jeśli używasz zlokalizowanych adresów URL, pobierz próbkę podstron dla każdego języka i przeszukaj kod HTML pod kątem ciągów znaków z języka domyślnego. Strona w `/ja/` zawierająca zwrot "Add to cart" to albo brakujące tłumaczenie, albo nieoczekiwany fallback.
173
+
174
+ ```bash
175
+ curl -s https://example.com/ja/checkout | grep -c "Add to cart"
176
+ ```
177
+
178
+ ## Uzupełnianie luk
179
+
180
+ Gdy wiesz już, czego brakuje, `intlayer fill` uzupełnia puste wpisy, a opcja `autoFill` potrafi generować pliki dla poszczególnych języków bezpośrednio podczas deklarowania zawartości. Zobacz [autoFill](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/autoFill.md).
181
+
182
+ Warto spojrzeć na to trzeźwym okiem: automatyczne uzupełnianie maszynowe zamienia lukę _widoczną_ w lukę _niewidoczną_. Klucz ma teraz wartość, audyt świeci na zielono, ale nikt nie sprawdził sensu sformułowań. Używaj tego do odblokowania release'u, a następnie przekazuj teksty do weryfikacji człowiekowi w przypadku wszystkiego, co klient czyta przed podjęciem decyzji. To rusztowanie pomocnicze, a nie gotowy produkt.
183
+
184
+ ## Częste błędy
185
+
186
+ - **Traktowanie mechanizmu fallback jako tarczy bezpieczeństwa.** To strategia renderowania awaryjnego, a nie siatka ochronna. Cicho wyświetlana angielska strona to błąd, którego nikt nie zgłasza.
187
+ - **Poleganie na raporcie CLI do blokowania CI.** `intlayer content test` kończy się kodem zero. Wymagaj asercji w teście.
188
+ - **Wymaganie absolutnie każdego języka.** Kontrola zostaje usunięta przy pierwszym zablokowanym wydaniu.
189
+ - **Audytowanie wyłącznie katalogów, a nigdy wyrenderowanego ekranu.** Teksty zaszyte w kodzie są z definicji niewidoczne w katalogach.
190
+ - **Testowanie tylko języka domyślnego.** To jedyny język, którego na pewno nigdy nie zabraknie.
191
+ - **Kończenie procesu na automatycznym wypełnieniu.** Zielony audyt przy niezweryfikowanych tekstach.
192
+
193
+ ## Warto przeczytać
194
+
195
+ - [Testowanie treści: audyt CLI, programistyczne API i asercje UI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/testing.md)
196
+ - [Reguły wtyczki ESLint, w tym `no-raw-text` i `no-unused-content`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/eslint.md)
197
+ - [autoFill: generowanie plików deklaracji dla poszczególnych języków](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/autoFill.md)
198
+ - [Dokumentacja konfiguracji: `locales`, `requiredLocales`, `defaultLocale`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md)
199
+ - [Raporty benchmarkowe porównujące frameworki](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/benchmark/index.md)
200
+ - [Adapter kompatybilności i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/compat/i18next.md)
201
+ - [Co w rzeczywistości obejmuje internacjonalizacja](https://github.com/aymericzip/intlayer/blob/main/docs/blog/pl/what_is_internationalization.md)
202
+ - [i18n na poziomie komponentów a podejście scentralizowane](https://github.com/aymericzip/intlayer/blob/main/docs/blog/pl/per-component_vs_centralized_i18n.md)
@@ -0,0 +1,247 @@
1
+ ---
2
+ createdAt: 2026-09-02
3
+ updatedAt: 2026-09-02
4
+ title: "Automatyzacja tłumaczeń w CI/CD bez publikowania złych tekstów"
5
+ description: Trzy miejsca na automatyzację i18n, pre-push, pull request i runtime. Jak blokować build na podstawie pokrycia, bezpiecznie uzupełniać braki i unikać nieskończonej pętli commitów w CI.
6
+ keywords:
7
+ - automatyzacja tłumaczeń ci
8
+ - i18n ci cd
9
+ - github actions tłumaczenia
10
+ - husky pre-push
11
+ - ciągła lokalizacja
12
+ - pipeline tłumaczeń
13
+ slugs:
14
+ - blog
15
+ - i18n-in-ci-cd-pipelines
16
+ author: aymericzip
17
+ ---
18
+
19
+ # Automatyzacja tłumaczeń w CI/CD bez publikowania złych tekstów
20
+
21
+ Ręczne tłumaczenie nie wytrzymuje zderzenia z nowoczesnym cyklem wydawniczym. Ktoś dodaje ciąg znaków w piątek, eksport następuje w kolejnym sprincie, a do tego czasu trzy kolejne języki pozostają w tyle. Sama automatyzacja jest prosta. Jednak zautomatyzowanie procesu bez cichego publikowania maszynowych tekstów do klientów to kwestia, nad którą warto się zastanowić.
22
+
23
+ ## Spis treści
24
+
25
+ <TOC/>
26
+
27
+ ## Nie musisz migrować, aby zautomatyzować
28
+
29
+ Poniższe struktury pipeline'ów są niezależne od biblioteki, podobnie jak same narzędzia. Jeśli Twoje wiadomości to katalogi JSON dla i18next, next-intl, react-intl, vue-i18n lub next-translate, [wtyczka Sync JSON](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/plugins/sync-json.md) odczytuje i zapisuje te pliki bezpośrednio w miejscu:
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", // lub "icu" dla next-intl / react-intl
39
+ }),
40
+ ],
41
+ };
42
+
43
+ export default config;
44
+ ```
45
+
46
+ Twoja aplikacja nadal importuje to, co importowała dotychczas. Poniższe zadania CI uzupełniają i weryfikują istniejące katalogi, a diff widoczny dla recenzenta to zmiana w `locales/fr/checkout.json`, a nie duża migracja kodu. Dostępna jest również [wtyczka Sync PO](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/plugins/sync-po.md) dla przepływów gettext oraz [adaptery kompatybilności](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/compat/index.md), jeśli zależy Ci na zachowaniu obecnego runtime API.
47
+
48
+ ## Oddziel bramkę (gate) od uzupełniania (fill)
49
+
50
+ Dwa zupełnie różne zadania są nagminnie mylone.
51
+
52
+ **Bramka (gate)** to kontrola, która zgłasza błąd. Oznacza, że ta kompilacja nie może trafić na produkcję, ponieważ brakuje wymaganych tłumaczeń. Bramka niczego nie zapisuje.
53
+
54
+ **Uzupełnianie (fill)** to operacja modyfikacji. Generuje brakujące tłumaczenia i tworzy commit. Nigdy nie przerywa buildu z błędem.
55
+
56
+ Uruchamianie samego uzupełniania oznacza, że nic nigdy nie blokuje wdrożenia, a niesprawdzone tłumaczenia maszynowe trafiają do użytkowników. Uruchamianie samej bramki sprawia, że build staje się czerwony i człowiek musi za każdym razem ręcznie interweniować. Większość zespołów potrzebuje obu mechanizmów powiązanych z różnymi zdarzeniami: fill przy pull requeście, gate przy merge do gałęzi wydaniowej.
57
+
58
+ ## Gdzie można umieścić automatyzację
59
+
60
+ | Etap | Wyzwalacz | Dobre do | Koszt |
61
+ | :------------ | :---------- | :------------------------------------------ | :----------------------------------------------- |
62
+ | Hook pre-push | Lokalny git | Szybka informacja zwrotna, zero minut w CI | Działa na maszynie programisty i jego kluczu API |
63
+ | Pull request | Zadanie CI | Przegląd przed merge, bezpieczne sekrety | Minuty w CI oraz wywołania modeli na każdy PR |
64
+ | Gałąź wydania | Zadanie CI | Twarda bramka pokrycia | Tanie, brak zapytań do modeli |
65
+ | Runtime | CMS | Zmiany treści bez przebudowywania aplikacji | Zależność od zewnętrznej usługi |
66
+
67
+ ## Pre-push: najszybsza pętla
68
+
69
+ Husky uruchamia uzupełnianie, zanim kod opuści lokalną maszynę, dzięki czemu tłumaczenia trafiają do tego samego pusha co nowe ciągi znaków.
70
+
71
+ ```bash fileName=".husky/pre-push"
72
+ npx intlayer build
73
+ npx intlayer fill --unpushed --mode complete
74
+ ```
75
+
76
+ `--unpushed` ogranicza pracę do treści, które nie zostały jeszcze wypchnięte do repozytorium, co zapobiega minutowym opóźnieniom przy każdym pushu. `--mode complete` wypełnia tylko brakujące wpisy bez przepisywania tych, które już mają wartość, dzięki czemu zweryfikowane tłumaczenie nigdy nie zostanie po cichu zastąpione.
77
+
78
+ W przypadku monorepo zawęź zakres do poszczególnych aplikacji:
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
+ Minus jest oczywisty: każdy programista potrzebuje klucza API, a koszt spada na osobę wykonującą push. Dlatego w miarę rozwoju zespołu większość projektów przenosi ten etap do CI.
88
+
89
+ ## Pull request: uzupełnianie w miejscu recenzji
90
+
91
+ Ta sama praca w GitHub Actions, zawężona do diffa:
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
+ Cztery szczegóły mają tu kluczowe znaczenie:
137
+
138
+ - **`fetch-depth: 0`** jest niezbędne do działania `--git-diff`. Płytki klon nie ma bazy do wyliczenia różnic i uzupełnianie niczego nie wykona.
139
+ - **`[skip ci]` w wiadomości commita** zapobiega zapętleniu workflow. Bez tego commit uruchamia nowy przebieg, który znów commituje, drenując limit CI w jedną noc.
140
+ - **`concurrency` z `cancel-in-progress`** zatrzymuje równoległe pushe przed jednoczesnym zapisem do tych samych plików.
141
+ - **`--git-diff`** ogranicza działanie do zmian w PR. Pominięcie tego spowoduje ponowne tłumaczenie całego katalogu przy każdym uruchomieniu.
142
+
143
+ Tłumaczenia pojawiają się jako commit w gałęzi PR, co oznacza, że recenzent widzi je w diffie. To główny powód, dla którego warto to robić tutaj, a nie po wykonaniu merge.
144
+
145
+ ## Gałąź wydaniowa: bramka (gate)
146
+
147
+ Bramka nie potrzebuje dostępu do modeli i powinna działać błyskawicznie.
148
+
149
+ ```yaml fileName=".github/workflows/ci.yml"
150
+ - run: npm run test:i18n
151
+ ```
152
+
153
+ Wspierana testem sprawdzającym pokrycie zamiast polegania na samym raporcie CLI:
154
+
155
+ ```ts fileName="i18n.test.ts"
156
+ import { listMissingTranslations } from "intlayer/cli";
157
+
158
+ test("has no missing required 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` drukuje raport, ale kończy się z kodem 0, więc informuje, ale nie blokuje. Używaj tego lokalnie, a w CI polegaj na asercjach w teście. Więcej szczegółów w [wykrywaniu brakujących tłumaczeń](https://github.com/aymericzip/intlayer/blob/main/docs/blog/pl/detecting_missing_translations.md).
168
+
169
+ ## `requiredLocales` czyni bramkę znośną w praktyce
170
+
171
+ Bramka wymagająca kompletności wszystkich osiemnastu języków blokuje każde wydanie do czasu przygotowania najwolniejszego tłumaczenia i zostaje wyłączona w ciągu miesiąca.
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
+ Zadeklaruj obsługiwane języki i wymagaj jako blokujące tylko te, które są krytyczne dla wydania. Reszta jest uzupełniana asynchronicznie i nie opóźnia wdrożeń.
188
+
189
+ ## Całkowite wyniesienie tłumaczeń poza repozytorium
190
+
191
+ Alternatywnym podejściem jest zadeklarowanie jednego języka w kodzie i zarządzanie pozostałymi zdalnie za pośrednictwem CMS z Live Sync. Zmiany treści nie wymagają wtedy ponownej kompilacji, co oddziela tempo prac edytorskich od cyklu wdrożeń programistycznych.
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
+ Odpowiada to zespołom, w których treścią zajmują się osoby nietechniczne. Jest to kompromis: zyskujesz autonomię edytorską, ale tracisz pewność, że checkout gita w pełni opisuje stan renderowania aplikacji. Szczegóły w [dokumentacji CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/intlayer_CMS.md).
211
+
212
+ Pamiętaj, że `clientSecret` to poświadczenie serwerowe. Powinno znajdować się w sekretach CI i środowisku serwera, nigdy w kodzie klienta.
213
+
214
+ ## Rzeczywiste ograniczenia
215
+
216
+ Wszystko powyżej automatyzuje _pokrycie_, a nie _jakość_. Maszynowe uzupełnienie zamienia widoczną lukę w lukę niewidoczną: audyt świeci na zielono, ponieważ klucz ma wartość, ale nikt jej nie przeczytał.
217
+
218
+ Jest to dopuszczalne w przypadku narzędzi wewnętrznych, changelogów czy języków w wersji beta. Nie jest to akceptowalne dla cenników, tekstów prawnych, komunikatów o błędach płatności ani niczego, co klient czyta przed podjęciem decyzji. Skieruj te teksty do człowieka i używaj `--mode complete`, aby zweryfikowane ciągi nie zostały nadpisane.
219
+
220
+ Dostarcz modelowi kontekst, aby jego wyniki były spójne:
221
+
222
+ ```ts
223
+ ai: {
224
+ applicationContext: "Aplikacja do fakturowania B2B. Styl formalny. Nigdy nie tłumacz nazwy produktu.",
225
+ }
226
+ ```
227
+
228
+ ## Częste błędy
229
+
230
+ - **Brak `[skip ci]` w automatycznym commicie.** Zadanie zapętla się bez końca.
231
+ - **Płytki klon z `--git-diff`.** Brak bazy do porównania skutkuje cichym brakiem działań.
232
+ - **Uzupełnianie całego katalogu przy każdym uruchomieniu.** Ograniczaj zakres za pomocą `--git-diff` lub `--unpushed`.
233
+ - **Używanie raportu CLI jako bramki.** Zwraca kod 0 i nie przerywa buildu.
234
+ - **Wymaganie każdego języka.** Kontrola zostaje wyłączona przy pierwszym zablokowanym wydaniu.
235
+ - **Zadanie uzupełniania bez żadnej bramki.** Nic nie zgłasza błędów, a niesprawdzone teksty trafiają na produkcję.
236
+ - **Klucze API modeli w repozytorium.** Powinny być w sekretach CI, podobnie jak `clientSecret`.
237
+
238
+ ## Warto przeczytać
239
+
240
+ - [CI/CD: automatyczne generowanie tłumaczeń z Husky, GitHub Actions i CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/CI_CD.md)
241
+ - [Testowanie treści i blokowanie buildu na podstawie pokrycia](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/testing.md)
242
+ - [autoFill: generowanie plików deklaracji dla poszczególnych języków](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/autoFill.md)
243
+ - [Dokumentacja konfiguracji: `locales`, `requiredLocales`, `editor`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/configuration.md)
244
+ - [Raporty porównawcze wydajności między frameworkami](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/benchmark/index.md)
245
+ - [Adapter kompatybilności i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pl/compat/i18next.md)
246
+ - [Jak wykrywać brakujące tłumaczenia](https://github.com/aymericzip/intlayer/blob/main/docs/blog/pl/detecting_missing_translations.md)
247
+ - [Jak testować tłumaczenia bez kruchych testów](https://github.com/aymericzip/intlayer/blob/main/docs/blog/pl/i18n_testing_strategies.md)