@intlayer/docs 9.4.1 → 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 (1607) hide show
  1. package/README.md +1 -1
  2. package/blog/ar/date_time_number_formatting_locales.md +216 -0
  3. package/blog/ar/detecting_missing_translations.md +202 -0
  4. package/blog/ar/hreflang_guide_multilingual_seo.md +317 -0
  5. package/blog/ar/i18n_in_ci_cd_pipelines.md +247 -0
  6. package/blog/ar/i18n_meaning.md +0 -2
  7. package/blog/ar/i18n_testing_strategies.md +179 -0
  8. package/blog/ar/intlayer_with_i18next.md +3 -5
  9. package/blog/ar/intlayer_with_next-i18next.md +3 -7
  10. package/blog/ar/intlayer_with_next-intl.md +3 -3
  11. package/blog/ar/intlayer_with_react-i18next.md +3 -3
  12. package/blog/ar/intlayer_with_react-intl.md +3 -3
  13. package/blog/ar/intlayer_with_vue-i18n.md +3 -7
  14. package/blog/ar/is_i18next_outdated.md +315 -0
  15. package/blog/ar/is_next-intl_outdated.md +363 -0
  16. package/blog/ar/is_vue-i18n_outdated.md +338 -0
  17. package/blog/ar/list_i18n_technologies/build-tools/vite.md +177 -0
  18. package/blog/ar/list_i18n_technologies/frameworks/angular.md +0 -2
  19. package/blog/ar/list_i18n_technologies/frameworks/react-native.md +0 -2
  20. package/blog/ar/list_i18n_technologies/frameworks/react.md +0 -2
  21. package/blog/ar/list_i18n_technologies/frameworks/svelte.md +0 -2
  22. package/blog/ar/list_i18n_technologies/frameworks/vue.md +0 -2
  23. package/blog/ar/what_is_internationalization.md +0 -2
  24. package/blog/de/date_time_number_formatting_locales.md +216 -0
  25. package/blog/de/detecting_missing_translations.md +202 -0
  26. package/blog/de/hreflang_guide_multilingual_seo.md +314 -0
  27. package/blog/de/i18n_in_ci_cd_pipelines.md +247 -0
  28. package/blog/de/i18n_meaning.md +0 -2
  29. package/blog/de/i18n_testing_strategies.md +179 -0
  30. package/blog/de/intlayer_with_i18next.md +3 -3
  31. package/blog/de/intlayer_with_next-i18next.md +3 -3
  32. package/blog/de/intlayer_with_next-intl.md +3 -3
  33. package/blog/de/intlayer_with_react-i18next.md +3 -3
  34. package/blog/de/intlayer_with_react-intl.md +3 -3
  35. package/blog/de/intlayer_with_vue-i18n.md +3 -7
  36. package/blog/de/is_i18next_outdated.md +315 -0
  37. package/blog/de/is_next-intl_outdated.md +363 -0
  38. package/blog/de/is_vue-i18n_outdated.md +338 -0
  39. package/blog/de/list_i18n_technologies/build-tools/vite.md +179 -0
  40. package/blog/de/list_i18n_technologies/frameworks/angular.md +0 -2
  41. package/blog/de/list_i18n_technologies/frameworks/react-native.md +0 -2
  42. package/blog/de/list_i18n_technologies/frameworks/react.md +0 -2
  43. package/blog/de/list_i18n_technologies/frameworks/svelte.md +0 -2
  44. package/blog/de/list_i18n_technologies/frameworks/vue.md +0 -2
  45. package/blog/de/what_is_internationalization.md +0 -2
  46. package/blog/en/date_time_number_formatting_locales.md +216 -0
  47. package/blog/en/detecting_missing_translations.md +202 -0
  48. package/blog/en/hreflang_guide_multilingual_seo.md +314 -0
  49. package/blog/en/i18n_in_ci_cd_pipelines.md +247 -0
  50. package/blog/en/i18n_meaning.md +0 -2
  51. package/blog/en/i18n_testing_strategies.md +179 -0
  52. package/blog/en/icu_message_format.md +288 -0
  53. package/blog/en/intlayer_with_i18next.md +3 -5
  54. package/blog/en/intlayer_with_next-i18next.md +3 -5
  55. package/blog/en/intlayer_with_next-intl.md +3 -5
  56. package/blog/en/intlayer_with_react-i18next.md +3 -3
  57. package/blog/en/intlayer_with_react-intl.md +3 -5
  58. package/blog/en/intlayer_with_vue-i18n.md +3 -5
  59. package/blog/en/is_i18next_outdated.md +315 -0
  60. package/blog/en/is_next-intl_outdated.md +363 -0
  61. package/blog/en/is_vue-i18n_outdated.md +338 -0
  62. package/blog/en/list_i18n_technologies/build-tools/vite.md +179 -0
  63. package/blog/en/list_i18n_technologies/frameworks/angular.md +184 -108
  64. package/blog/en/list_i18n_technologies/frameworks/astro.md +268 -0
  65. package/blog/en/list_i18n_technologies/frameworks/nextjs.md +196 -0
  66. package/blog/en/list_i18n_technologies/frameworks/nuxt.md +255 -0
  67. package/blog/en/list_i18n_technologies/frameworks/react-native.md +133 -154
  68. package/blog/en/list_i18n_technologies/frameworks/react-router.md +331 -0
  69. package/blog/en/list_i18n_technologies/frameworks/react.md +176 -96
  70. package/blog/en/list_i18n_technologies/frameworks/solid.md +268 -0
  71. package/blog/en/list_i18n_technologies/frameworks/svelte.md +156 -88
  72. package/blog/en/list_i18n_technologies/frameworks/sveltekit.md +235 -0
  73. package/blog/en/list_i18n_technologies/frameworks/tanstack-start.md +280 -0
  74. package/blog/en/list_i18n_technologies/frameworks/vue.md +167 -95
  75. package/blog/en/what_is_internationalization.md +0 -2
  76. package/blog/en-GB/date_time_number_formatting_locales.md +216 -0
  77. package/blog/en-GB/detecting_missing_translations.md +202 -0
  78. package/blog/en-GB/hreflang_guide_multilingual_seo.md +314 -0
  79. package/blog/en-GB/i18n_in_ci_cd_pipelines.md +247 -0
  80. package/blog/en-GB/i18n_meaning.md +0 -2
  81. package/blog/en-GB/i18n_testing_strategies.md +179 -0
  82. package/blog/en-GB/intlayer_with_i18next.md +3 -3
  83. package/blog/en-GB/intlayer_with_next-i18next.md +3 -3
  84. package/blog/en-GB/intlayer_with_next-intl.md +3 -3
  85. package/blog/en-GB/intlayer_with_react-i18next.md +3 -3
  86. package/blog/en-GB/intlayer_with_react-intl.md +3 -3
  87. package/blog/en-GB/intlayer_with_vue-i18n.md +3 -3
  88. package/blog/en-GB/is_i18next_outdated.md +315 -0
  89. package/blog/en-GB/is_next-intl_outdated.md +363 -0
  90. package/blog/en-GB/is_vue-i18n_outdated.md +338 -0
  91. package/blog/en-GB/list_i18n_technologies/build-tools/vite.md +179 -0
  92. package/blog/en-GB/list_i18n_technologies/frameworks/angular.md +0 -2
  93. package/blog/en-GB/list_i18n_technologies/frameworks/react-native.md +0 -2
  94. package/blog/en-GB/list_i18n_technologies/frameworks/react.md +0 -2
  95. package/blog/en-GB/list_i18n_technologies/frameworks/svelte.md +0 -2
  96. package/blog/en-GB/list_i18n_technologies/frameworks/vue.md +0 -2
  97. package/blog/en-GB/what_is_internationalization.md +0 -2
  98. package/blog/es/date_time_number_formatting_locales.md +216 -0
  99. package/blog/es/detecting_missing_translations.md +202 -0
  100. package/blog/es/hreflang_guide_multilingual_seo.md +314 -0
  101. package/blog/es/i18n_in_ci_cd_pipelines.md +247 -0
  102. package/blog/es/i18n_meaning.md +0 -2
  103. package/blog/es/i18n_testing_strategies.md +179 -0
  104. package/blog/es/intlayer_with_i18next.md +3 -3
  105. package/blog/es/intlayer_with_next-i18next.md +3 -3
  106. package/blog/es/intlayer_with_next-intl.md +3 -3
  107. package/blog/es/intlayer_with_react-i18next.md +3 -3
  108. package/blog/es/intlayer_with_react-intl.md +3 -3
  109. package/blog/es/intlayer_with_vue-i18n.md +3 -3
  110. package/blog/es/is_i18next_outdated.md +315 -0
  111. package/blog/es/is_next-intl_outdated.md +363 -0
  112. package/blog/es/is_vue-i18n_outdated.md +338 -0
  113. package/blog/es/list_i18n_technologies/build-tools/vite.md +179 -0
  114. package/blog/es/list_i18n_technologies/frameworks/angular.md +0 -2
  115. package/blog/es/list_i18n_technologies/frameworks/react-native.md +0 -2
  116. package/blog/es/list_i18n_technologies/frameworks/react.md +0 -2
  117. package/blog/es/list_i18n_technologies/frameworks/svelte.md +0 -2
  118. package/blog/es/list_i18n_technologies/frameworks/vue.md +0 -2
  119. package/blog/es/what_is_internationalization.md +0 -2
  120. package/blog/fr/date_time_number_formatting_locales.md +216 -0
  121. package/blog/fr/detecting_missing_translations.md +202 -0
  122. package/blog/fr/hreflang_guide_multilingual_seo.md +315 -0
  123. package/blog/fr/i18n_in_ci_cd_pipelines.md +247 -0
  124. package/blog/fr/i18n_meaning.md +0 -2
  125. package/blog/fr/i18n_testing_strategies.md +179 -0
  126. package/blog/fr/intlayer_with_i18next.md +3 -3
  127. package/blog/fr/intlayer_with_next-i18next.md +3 -3
  128. package/blog/fr/intlayer_with_next-intl.md +3 -3
  129. package/blog/fr/intlayer_with_react-i18next.md +3 -3
  130. package/blog/fr/intlayer_with_react-intl.md +3 -3
  131. package/blog/fr/intlayer_with_vue-i18n.md +3 -3
  132. package/blog/fr/is_i18next_outdated.md +315 -0
  133. package/blog/fr/is_next-intl_outdated.md +363 -0
  134. package/blog/fr/is_vue-i18n_outdated.md +338 -0
  135. package/blog/fr/list_i18n_technologies/build-tools/vite.md +179 -0
  136. package/blog/fr/list_i18n_technologies/frameworks/angular.md +0 -2
  137. package/blog/fr/list_i18n_technologies/frameworks/react-native.md +0 -2
  138. package/blog/fr/list_i18n_technologies/frameworks/react.md +0 -2
  139. package/blog/fr/list_i18n_technologies/frameworks/svelte.md +0 -2
  140. package/blog/fr/list_i18n_technologies/frameworks/vue.md +0 -2
  141. package/blog/fr/what_is_internationalization.md +0 -2
  142. package/blog/hi/date_time_number_formatting_locales.md +216 -0
  143. package/blog/hi/detecting_missing_translations.md +202 -0
  144. package/blog/hi/hreflang_guide_multilingual_seo.md +323 -0
  145. package/blog/hi/i18n_in_ci_cd_pipelines.md +247 -0
  146. package/blog/hi/i18n_meaning.md +0 -2
  147. package/blog/hi/i18n_testing_strategies.md +179 -0
  148. package/blog/hi/intlayer_with_i18next.md +3 -5
  149. package/blog/hi/intlayer_with_next-i18next.md +3 -7
  150. package/blog/hi/intlayer_with_next-intl.md +3 -3
  151. package/blog/hi/intlayer_with_react-i18next.md +3 -3
  152. package/blog/hi/intlayer_with_react-intl.md +3 -3
  153. package/blog/hi/intlayer_with_vue-i18n.md +3 -7
  154. package/blog/hi/is_i18next_outdated.md +317 -0
  155. package/blog/hi/is_next-intl_outdated.md +363 -0
  156. package/blog/hi/is_vue-i18n_outdated.md +338 -0
  157. package/blog/hi/list_i18n_technologies/build-tools/vite.md +177 -0
  158. package/blog/hi/list_i18n_technologies/frameworks/angular.md +0 -2
  159. package/blog/hi/list_i18n_technologies/frameworks/react-native.md +0 -2
  160. package/blog/hi/list_i18n_technologies/frameworks/react.md +0 -2
  161. package/blog/hi/list_i18n_technologies/frameworks/svelte.md +0 -2
  162. package/blog/hi/list_i18n_technologies/frameworks/vue.md +0 -2
  163. package/blog/hi/what_is_internationalization.md +0 -2
  164. package/blog/id/date_time_number_formatting_locales.md +216 -0
  165. package/blog/id/detecting_missing_translations.md +202 -0
  166. package/blog/id/hreflang_guide_multilingual_seo.md +314 -0
  167. package/blog/id/i18n_in_ci_cd_pipelines.md +247 -0
  168. package/blog/id/i18n_meaning.md +0 -2
  169. package/blog/id/i18n_testing_strategies.md +179 -0
  170. package/blog/id/intlayer_with_i18next.md +3 -5
  171. package/blog/id/intlayer_with_next-i18next.md +3 -7
  172. package/blog/id/intlayer_with_next-intl.md +3 -3
  173. package/blog/id/intlayer_with_react-i18next.md +3 -3
  174. package/blog/id/intlayer_with_react-intl.md +3 -3
  175. package/blog/id/intlayer_with_vue-i18n.md +3 -7
  176. package/blog/id/is_i18next_outdated.md +317 -0
  177. package/blog/id/is_next-intl_outdated.md +363 -0
  178. package/blog/id/is_vue-i18n_outdated.md +338 -0
  179. package/blog/id/list_i18n_technologies/build-tools/vite.md +177 -0
  180. package/blog/id/list_i18n_technologies/frameworks/angular.md +0 -2
  181. package/blog/id/list_i18n_technologies/frameworks/react-native.md +0 -2
  182. package/blog/id/list_i18n_technologies/frameworks/react.md +0 -2
  183. package/blog/id/list_i18n_technologies/frameworks/svelte.md +0 -2
  184. package/blog/id/list_i18n_technologies/frameworks/vue.md +0 -2
  185. package/blog/id/what_is_internationalization.md +0 -2
  186. package/blog/it/date_time_number_formatting_locales.md +216 -0
  187. package/blog/it/detecting_missing_translations.md +202 -0
  188. package/blog/it/hreflang_guide_multilingual_seo.md +315 -0
  189. package/blog/it/i18n_in_ci_cd_pipelines.md +247 -0
  190. package/blog/it/i18n_meaning.md +0 -2
  191. package/blog/it/i18n_testing_strategies.md +179 -0
  192. package/blog/it/intlayer_with_i18next.md +3 -5
  193. package/blog/it/intlayer_with_next-i18next.md +3 -7
  194. package/blog/it/intlayer_with_next-intl.md +3 -3
  195. package/blog/it/intlayer_with_react-i18next.md +3 -3
  196. package/blog/it/intlayer_with_react-intl.md +3 -3
  197. package/blog/it/intlayer_with_vue-i18n.md +3 -7
  198. package/blog/it/is_i18next_outdated.md +315 -0
  199. package/blog/it/is_next-intl_outdated.md +363 -0
  200. package/blog/it/is_vue-i18n_outdated.md +338 -0
  201. package/blog/it/list_i18n_technologies/build-tools/vite.md +179 -0
  202. package/blog/it/list_i18n_technologies/frameworks/angular.md +0 -2
  203. package/blog/it/list_i18n_technologies/frameworks/react-native.md +0 -2
  204. package/blog/it/list_i18n_technologies/frameworks/react.md +0 -2
  205. package/blog/it/list_i18n_technologies/frameworks/svelte.md +0 -2
  206. package/blog/it/list_i18n_technologies/frameworks/vue.md +0 -2
  207. package/blog/it/what_is_internationalization.md +0 -2
  208. package/blog/ja/date_time_number_formatting_locales.md +216 -0
  209. package/blog/ja/detecting_missing_translations.md +202 -0
  210. package/blog/ja/hreflang_guide_multilingual_seo.md +320 -0
  211. package/blog/ja/i18n_in_ci_cd_pipelines.md +247 -0
  212. package/blog/ja/i18n_meaning.md +0 -2
  213. package/blog/ja/i18n_testing_strategies.md +179 -0
  214. package/blog/ja/intlayer_with_i18next.md +3 -3
  215. package/blog/ja/intlayer_with_next-i18next.md +3 -3
  216. package/blog/ja/intlayer_with_next-intl.md +3 -3
  217. package/blog/ja/intlayer_with_react-i18next.md +3 -3
  218. package/blog/ja/intlayer_with_react-intl.md +3 -3
  219. package/blog/ja/intlayer_with_vue-i18n.md +3 -3
  220. package/blog/ja/is_i18next_outdated.md +315 -0
  221. package/blog/ja/is_next-intl_outdated.md +363 -0
  222. package/blog/ja/is_vue-i18n_outdated.md +338 -0
  223. package/blog/ja/list_i18n_technologies/build-tools/vite.md +179 -0
  224. package/blog/ja/list_i18n_technologies/frameworks/angular.md +0 -2
  225. package/blog/ja/list_i18n_technologies/frameworks/react-native.md +0 -2
  226. package/blog/ja/list_i18n_technologies/frameworks/react.md +0 -2
  227. package/blog/ja/list_i18n_technologies/frameworks/svelte.md +0 -2
  228. package/blog/ja/list_i18n_technologies/frameworks/vue.md +0 -2
  229. package/blog/ja/what_is_internationalization.md +0 -2
  230. package/blog/ko/date_time_number_formatting_locales.md +216 -0
  231. package/blog/ko/detecting_missing_translations.md +202 -0
  232. package/blog/ko/hreflang_guide_multilingual_seo.md +314 -0
  233. package/blog/ko/i18n_in_ci_cd_pipelines.md +247 -0
  234. package/blog/ko/i18n_meaning.md +0 -2
  235. package/blog/ko/i18n_testing_strategies.md +179 -0
  236. package/blog/ko/intlayer_with_i18next.md +3 -5
  237. package/blog/ko/intlayer_with_next-i18next.md +3 -7
  238. package/blog/ko/intlayer_with_next-intl.md +3 -3
  239. package/blog/ko/intlayer_with_react-i18next.md +3 -3
  240. package/blog/ko/intlayer_with_react-intl.md +3 -3
  241. package/blog/ko/intlayer_with_vue-i18n.md +3 -7
  242. package/blog/ko/is_i18next_outdated.md +317 -0
  243. package/blog/ko/is_next-intl_outdated.md +363 -0
  244. package/blog/ko/is_vue-i18n_outdated.md +338 -0
  245. package/blog/ko/list_i18n_technologies/build-tools/vite.md +179 -0
  246. package/blog/ko/list_i18n_technologies/frameworks/angular.md +0 -2
  247. package/blog/ko/list_i18n_technologies/frameworks/react-native.md +0 -2
  248. package/blog/ko/list_i18n_technologies/frameworks/react.md +0 -2
  249. package/blog/ko/list_i18n_technologies/frameworks/svelte.md +0 -2
  250. package/blog/ko/list_i18n_technologies/frameworks/vue.md +0 -2
  251. package/blog/ko/what_is_internationalization.md +0 -2
  252. package/blog/pl/date_time_number_formatting_locales.md +216 -0
  253. package/blog/pl/detecting_missing_translations.md +202 -0
  254. package/blog/pl/hreflang_guide_multilingual_seo.md +316 -0
  255. package/blog/pl/i18n_in_ci_cd_pipelines.md +247 -0
  256. package/blog/pl/i18n_meaning.md +0 -2
  257. package/blog/pl/i18n_testing_strategies.md +179 -0
  258. package/blog/pl/intlayer_with_i18next.md +3 -3
  259. package/blog/pl/intlayer_with_next-i18next.md +3 -3
  260. package/blog/pl/intlayer_with_next-intl.md +3 -3
  261. package/blog/pl/intlayer_with_react-i18next.md +3 -3
  262. package/blog/pl/intlayer_with_react-intl.md +3 -3
  263. package/blog/pl/intlayer_with_vue-i18n.md +3 -3
  264. package/blog/pl/is_i18next_outdated.md +315 -0
  265. package/blog/pl/is_next-intl_outdated.md +363 -0
  266. package/blog/pl/is_vue-i18n_outdated.md +338 -0
  267. package/blog/pl/list_i18n_technologies/build-tools/vite.md +177 -0
  268. package/blog/pl/list_i18n_technologies/frameworks/angular.md +0 -2
  269. package/blog/pl/list_i18n_technologies/frameworks/react-native.md +0 -2
  270. package/blog/pl/list_i18n_technologies/frameworks/react.md +0 -2
  271. package/blog/pl/list_i18n_technologies/frameworks/svelte.md +0 -2
  272. package/blog/pl/list_i18n_technologies/frameworks/vue.md +0 -2
  273. package/blog/pl/what_is_internationalization.md +0 -2
  274. package/blog/pt/date_time_number_formatting_locales.md +216 -0
  275. package/blog/pt/detecting_missing_translations.md +202 -0
  276. package/blog/pt/hreflang_guide_multilingual_seo.md +314 -0
  277. package/blog/pt/i18n_in_ci_cd_pipelines.md +247 -0
  278. package/blog/pt/i18n_meaning.md +0 -2
  279. package/blog/pt/i18n_testing_strategies.md +179 -0
  280. package/blog/pt/intlayer_with_i18next.md +3 -5
  281. package/blog/pt/intlayer_with_next-i18next.md +3 -7
  282. package/blog/pt/intlayer_with_next-intl.md +3 -3
  283. package/blog/pt/intlayer_with_react-i18next.md +3 -3
  284. package/blog/pt/intlayer_with_react-intl.md +3 -3
  285. package/blog/pt/intlayer_with_vue-i18n.md +3 -7
  286. package/blog/pt/is_i18next_outdated.md +315 -0
  287. package/blog/pt/is_next-intl_outdated.md +363 -0
  288. package/blog/pt/is_vue-i18n_outdated.md +338 -0
  289. package/blog/pt/list_i18n_technologies/build-tools/vite.md +179 -0
  290. package/blog/pt/list_i18n_technologies/frameworks/angular.md +0 -2
  291. package/blog/pt/list_i18n_technologies/frameworks/react-native.md +0 -2
  292. package/blog/pt/list_i18n_technologies/frameworks/react.md +0 -2
  293. package/blog/pt/list_i18n_technologies/frameworks/svelte.md +0 -2
  294. package/blog/pt/list_i18n_technologies/frameworks/vue.md +0 -2
  295. package/blog/pt/what_is_internationalization.md +0 -2
  296. package/blog/ru/date_time_number_formatting_locales.md +216 -0
  297. package/blog/ru/detecting_missing_translations.md +202 -0
  298. package/blog/ru/hreflang_guide_multilingual_seo.md +314 -0
  299. package/blog/ru/i18n_in_ci_cd_pipelines.md +247 -0
  300. package/blog/ru/i18n_meaning.md +0 -2
  301. package/blog/ru/i18n_testing_strategies.md +179 -0
  302. package/blog/ru/intlayer_with_i18next.md +3 -3
  303. package/blog/ru/intlayer_with_next-i18next.md +3 -3
  304. package/blog/ru/intlayer_with_next-intl.md +3 -3
  305. package/blog/ru/intlayer_with_react-i18next.md +3 -3
  306. package/blog/ru/intlayer_with_react-intl.md +3 -3
  307. package/blog/ru/intlayer_with_vue-i18n.md +3 -3
  308. package/blog/ru/is_i18next_outdated.md +315 -0
  309. package/blog/ru/is_next-intl_outdated.md +363 -0
  310. package/blog/ru/is_vue-i18n_outdated.md +338 -0
  311. package/blog/ru/list_i18n_technologies/build-tools/vite.md +179 -0
  312. package/blog/ru/list_i18n_technologies/frameworks/angular.md +0 -2
  313. package/blog/ru/list_i18n_technologies/frameworks/react-native.md +0 -2
  314. package/blog/ru/list_i18n_technologies/frameworks/react.md +0 -2
  315. package/blog/ru/list_i18n_technologies/frameworks/svelte.md +0 -2
  316. package/blog/ru/list_i18n_technologies/frameworks/vue.md +0 -2
  317. package/blog/ru/what_is_internationalization.md +0 -2
  318. package/blog/tr/date_time_number_formatting_locales.md +216 -0
  319. package/blog/tr/detecting_missing_translations.md +202 -0
  320. package/blog/tr/hreflang_guide_multilingual_seo.md +314 -0
  321. package/blog/tr/i18n_in_ci_cd_pipelines.md +247 -0
  322. package/blog/tr/i18n_meaning.md +0 -2
  323. package/blog/tr/i18n_testing_strategies.md +179 -0
  324. package/blog/tr/intlayer_with_i18next.md +3 -5
  325. package/blog/tr/intlayer_with_next-i18next.md +3 -7
  326. package/blog/tr/intlayer_with_next-intl.md +3 -3
  327. package/blog/tr/intlayer_with_react-i18next.md +3 -3
  328. package/blog/tr/intlayer_with_react-intl.md +3 -3
  329. package/blog/tr/intlayer_with_vue-i18n.md +3 -7
  330. package/blog/tr/is_i18next_outdated.md +315 -0
  331. package/blog/tr/is_next-intl_outdated.md +363 -0
  332. package/blog/tr/is_vue-i18n_outdated.md +338 -0
  333. package/blog/tr/list_i18n_technologies/build-tools/vite.md +179 -0
  334. package/blog/tr/list_i18n_technologies/frameworks/angular.md +0 -2
  335. package/blog/tr/list_i18n_technologies/frameworks/react-native.md +0 -2
  336. package/blog/tr/list_i18n_technologies/frameworks/react.md +0 -2
  337. package/blog/tr/list_i18n_technologies/frameworks/svelte.md +0 -2
  338. package/blog/tr/list_i18n_technologies/frameworks/vue.md +0 -2
  339. package/blog/tr/what_is_internationalization.md +0 -2
  340. package/blog/uk/date_time_number_formatting_locales.md +216 -0
  341. package/blog/uk/detecting_missing_translations.md +202 -0
  342. package/blog/uk/hreflang_guide_multilingual_seo.md +314 -0
  343. package/blog/uk/i18n_in_ci_cd_pipelines.md +247 -0
  344. package/blog/uk/i18n_meaning.md +0 -2
  345. package/blog/uk/i18n_testing_strategies.md +179 -0
  346. package/blog/uk/intlayer_with_i18next.md +3 -5
  347. package/blog/uk/intlayer_with_next-i18next.md +3 -5
  348. package/blog/uk/intlayer_with_next-intl.md +3 -5
  349. package/blog/uk/intlayer_with_react-i18next.md +3 -3
  350. package/blog/uk/intlayer_with_react-intl.md +3 -5
  351. package/blog/uk/intlayer_with_vue-i18n.md +3 -5
  352. package/blog/uk/is_i18next_outdated.md +315 -0
  353. package/blog/uk/is_next-intl_outdated.md +363 -0
  354. package/blog/uk/is_vue-i18n_outdated.md +338 -0
  355. package/blog/uk/list_i18n_technologies/build-tools/vite.md +177 -0
  356. package/blog/uk/list_i18n_technologies/frameworks/angular.md +0 -2
  357. package/blog/uk/list_i18n_technologies/frameworks/react-native.md +0 -2
  358. package/blog/uk/list_i18n_technologies/frameworks/react.md +0 -2
  359. package/blog/uk/list_i18n_technologies/frameworks/svelte.md +0 -2
  360. package/blog/uk/list_i18n_technologies/frameworks/vue.md +0 -2
  361. package/blog/uk/what_is_internationalization.md +0 -2
  362. package/blog/vi/date_time_number_formatting_locales.md +216 -0
  363. package/blog/vi/detecting_missing_translations.md +202 -0
  364. package/blog/vi/hreflang_guide_multilingual_seo.md +314 -0
  365. package/blog/vi/i18n_in_ci_cd_pipelines.md +247 -0
  366. package/blog/vi/i18n_meaning.md +0 -2
  367. package/blog/vi/i18n_testing_strategies.md +179 -0
  368. package/blog/vi/intlayer_with_i18next.md +3 -5
  369. package/blog/vi/intlayer_with_next-i18next.md +3 -7
  370. package/blog/vi/intlayer_with_next-intl.md +3 -3
  371. package/blog/vi/intlayer_with_react-i18next.md +3 -3
  372. package/blog/vi/intlayer_with_react-intl.md +3 -3
  373. package/blog/vi/intlayer_with_vue-i18n.md +3 -7
  374. package/blog/vi/is_i18next_outdated.md +317 -0
  375. package/blog/vi/is_next-intl_outdated.md +363 -0
  376. package/blog/vi/is_vue-i18n_outdated.md +338 -0
  377. package/blog/vi/list_i18n_technologies/build-tools/vite.md +177 -0
  378. package/blog/vi/list_i18n_technologies/frameworks/angular.md +0 -2
  379. package/blog/vi/list_i18n_technologies/frameworks/react-native.md +0 -2
  380. package/blog/vi/list_i18n_technologies/frameworks/react.md +0 -2
  381. package/blog/vi/list_i18n_technologies/frameworks/svelte.md +0 -2
  382. package/blog/vi/list_i18n_technologies/frameworks/vue.md +0 -2
  383. package/blog/vi/what_is_internationalization.md +0 -2
  384. package/blog/zh/date_time_number_formatting_locales.md +216 -0
  385. package/blog/zh/detecting_missing_translations.md +202 -0
  386. package/blog/zh/hreflang_guide_multilingual_seo.md +314 -0
  387. package/blog/zh/i18n_in_ci_cd_pipelines.md +247 -0
  388. package/blog/zh/i18n_meaning.md +0 -2
  389. package/blog/zh/i18n_testing_strategies.md +179 -0
  390. package/blog/zh/intlayer_with_i18next.md +3 -5
  391. package/blog/zh/intlayer_with_next-i18next.md +3 -5
  392. package/blog/zh/intlayer_with_next-intl.md +3 -5
  393. package/blog/zh/intlayer_with_react-i18next.md +3 -3
  394. package/blog/zh/intlayer_with_react-intl.md +3 -5
  395. package/blog/zh/intlayer_with_vue-i18n.md +3 -5
  396. package/blog/zh/is_i18next_outdated.md +317 -0
  397. package/blog/zh/is_next-intl_outdated.md +363 -0
  398. package/blog/zh/is_vue-i18n_outdated.md +338 -0
  399. package/blog/zh/list_i18n_technologies/build-tools/vite.md +179 -0
  400. package/blog/zh/list_i18n_technologies/frameworks/angular.md +0 -2
  401. package/blog/zh/list_i18n_technologies/frameworks/react-native.md +0 -2
  402. package/blog/zh/list_i18n_technologies/frameworks/react.md +0 -2
  403. package/blog/zh/list_i18n_technologies/frameworks/svelte.md +0 -2
  404. package/blog/zh/list_i18n_technologies/frameworks/vue.md +0 -2
  405. package/blog/zh/what_is_internationalization.md +0 -2
  406. package/dist/cjs/common.cjs +29 -6
  407. package/dist/cjs/common.cjs.map +1 -1
  408. package/dist/cjs/generated/blog.entry.cjs +340 -0
  409. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  410. package/dist/cjs/generated/docs.entry.cjs +20 -0
  411. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  412. package/dist/esm/common.mjs +29 -6
  413. package/dist/esm/common.mjs.map +1 -1
  414. package/dist/esm/generated/blog.entry.mjs +340 -0
  415. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  416. package/dist/esm/generated/docs.entry.mjs +20 -0
  417. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  418. package/dist/types/common.d.ts.map +1 -1
  419. package/dist/types/generated/blog.entry.d.ts +17 -0
  420. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  421. package/dist/types/generated/docs.entry.d.ts +1 -0
  422. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  423. package/docs/ar/analytics.md +458 -12
  424. package/docs/ar/bundle_optimization.md +186 -186
  425. package/docs/ar/configuration.md +98 -0
  426. package/docs/ar/dictionary/content_file.md +4 -4
  427. package/docs/ar/dictionary/html.md +117 -1
  428. package/docs/ar/dictionary/markdown.md +18 -1
  429. package/docs/ar/dictionary/plurial.md +5 -2
  430. package/docs/ar/how_works_intlayer.md +92 -0
  431. package/docs/ar/interest_of_intlayer.md +106 -9
  432. package/docs/ar/intlayer_CMS.md +92 -0
  433. package/docs/ar/intlayer_visual_editor.md +87 -1
  434. package/docs/ar/intlayer_with_adonisjs.md +124 -3
  435. package/docs/ar/intlayer_with_analog.md +119 -11
  436. package/docs/ar/intlayer_with_angular_19.md +118 -11
  437. package/docs/ar/intlayer_with_angular_21.md +112 -11
  438. package/docs/ar/intlayer_with_astro.md +120 -23
  439. package/docs/ar/intlayer_with_astro_lit.md +121 -13
  440. package/docs/ar/intlayer_with_astro_preact.md +121 -13
  441. package/docs/ar/intlayer_with_astro_react.md +121 -13
  442. package/docs/ar/intlayer_with_astro_solid.md +121 -13
  443. package/docs/ar/intlayer_with_astro_svelte.md +121 -13
  444. package/docs/ar/intlayer_with_astro_vanilla.md +115 -13
  445. package/docs/ar/intlayer_with_astro_vue.md +121 -13
  446. package/docs/ar/intlayer_with_create_react_app.md +108 -3
  447. package/docs/ar/intlayer_with_elysia.md +125 -4
  448. package/docs/ar/intlayer_with_express.md +117 -3
  449. package/docs/ar/intlayer_with_fastify.md +119 -4
  450. package/docs/ar/intlayer_with_hono.md +117 -3
  451. package/docs/ar/intlayer_with_htmx.md +771 -0
  452. package/docs/ar/intlayer_with_lynx+react.md +10 -17
  453. package/docs/ar/intlayer_with_nestjs.md +118 -3
  454. package/docs/ar/intlayer_with_next-i18next.md +3 -3
  455. package/docs/ar/intlayer_with_nextjs_14.md +147 -123
  456. package/docs/ar/intlayer_with_nextjs_15.md +129 -54
  457. package/docs/ar/intlayer_with_nextjs_16.md +130 -52
  458. package/docs/ar/intlayer_with_nextjs_compiler.md +125 -16
  459. package/docs/ar/intlayer_with_nextjs_no_locale_path.md +124 -12
  460. package/docs/ar/intlayer_with_nextjs_page_router.md +142 -110
  461. package/docs/ar/intlayer_with_nuxt.md +113 -11
  462. package/docs/ar/intlayer_with_react_native+expo.md +105 -10
  463. package/docs/ar/intlayer_with_react_router_v7.md +122 -13
  464. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +125 -25
  465. package/docs/ar/intlayer_with_solid_start.md +118 -4
  466. package/docs/ar/intlayer_with_storybook.md +7 -20
  467. package/docs/ar/intlayer_with_svelte_kit.md +110 -20
  468. package/docs/ar/intlayer_with_tanstack+solid.md +127 -25
  469. package/docs/ar/intlayer_with_tanstack.md +137 -46
  470. package/docs/ar/intlayer_with_vanilla.md +117 -9
  471. package/docs/ar/intlayer_with_vite+lit.md +121 -11
  472. package/docs/ar/intlayer_with_vite+preact.md +151 -43
  473. package/docs/ar/intlayer_with_vite+react.md +111 -23
  474. package/docs/ar/intlayer_with_vite+react_compiler.md +109 -4
  475. package/docs/ar/intlayer_with_vite+solid.md +117 -8
  476. package/docs/ar/intlayer_with_vite+svelte.md +122 -20
  477. package/docs/ar/intlayer_with_vite+vanilla.md +128 -11
  478. package/docs/ar/intlayer_with_vite+vue.md +108 -12
  479. package/docs/ar/introduction.md +104 -1
  480. package/docs/ar/migration_from_i18next_to_intlayer.md +3 -5
  481. package/docs/ar/migration_from_next-i18next_to_intlayer.md +3 -5
  482. package/docs/ar/migration_from_next-intl_to_intlayer.md +3 -5
  483. package/docs/ar/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  484. package/docs/ar/migration_from_react-i18next_to_intlayer.md +3 -5
  485. package/docs/ar/migration_from_vue-i18n_to_intlayer.md +3 -5
  486. package/docs/ar/packages/vite-intlayer/intlayerMinify.md +1 -1
  487. package/docs/bn/bundle_optimization.md +186 -186
  488. package/docs/bn/intlayer_with_angular_21.md +3 -3
  489. package/docs/bn/intlayer_with_fastify.md +4 -4
  490. package/docs/bn/intlayer_with_hono.md +3 -3
  491. package/docs/bn/intlayer_with_vite+lit.md +3 -3
  492. package/docs/bn/intlayer_with_vite+vanilla.md +3 -3
  493. package/docs/bn/introduction.md +0 -1
  494. package/docs/cs/bundle_optimization.md +186 -186
  495. package/docs/cs/interest_of_intlayer.md +0 -1
  496. package/docs/cs/intlayer_with_angular_21.md +3 -3
  497. package/docs/cs/intlayer_with_fastify.md +4 -4
  498. package/docs/cs/intlayer_with_hono.md +3 -3
  499. package/docs/cs/intlayer_with_storybook.md +0 -12
  500. package/docs/cs/intlayer_with_vanilla.md +2 -1
  501. package/docs/cs/intlayer_with_vite+lit.md +3 -3
  502. package/docs/cs/intlayer_with_vite+vanilla.md +3 -3
  503. package/docs/cs/introduction.md +0 -1
  504. package/docs/de/analytics.md +458 -12
  505. package/docs/de/bundle_optimization.md +186 -186
  506. package/docs/de/configuration.md +99 -1
  507. package/docs/de/dictionary/content_file.md +4 -4
  508. package/docs/de/dictionary/markdown.md +3 -0
  509. package/docs/de/dictionary/plurial.md +6 -3
  510. package/docs/de/how_works_intlayer.md +93 -1
  511. package/docs/de/interest_of_intlayer.md +97 -2
  512. package/docs/de/intlayer_CMS.md +93 -1
  513. package/docs/de/intlayer_visual_editor.md +88 -2
  514. package/docs/de/intlayer_with_adonisjs.md +124 -4
  515. package/docs/de/intlayer_with_analog.md +114 -5
  516. package/docs/de/intlayer_with_angular_19.md +112 -5
  517. package/docs/de/intlayer_with_angular_21.md +106 -5
  518. package/docs/de/intlayer_with_astro.md +114 -17
  519. package/docs/de/intlayer_with_astro_lit.md +115 -7
  520. package/docs/de/intlayer_with_astro_preact.md +115 -7
  521. package/docs/de/intlayer_with_astro_react.md +115 -7
  522. package/docs/de/intlayer_with_astro_solid.md +115 -7
  523. package/docs/de/intlayer_with_astro_svelte.md +115 -7
  524. package/docs/de/intlayer_with_astro_vanilla.md +109 -7
  525. package/docs/de/intlayer_with_astro_vue.md +115 -7
  526. package/docs/de/intlayer_with_create_react_app.md +110 -5
  527. package/docs/de/intlayer_with_elysia.md +125 -5
  528. package/docs/de/intlayer_with_express.md +118 -4
  529. package/docs/de/intlayer_with_fastify.md +119 -5
  530. package/docs/de/intlayer_with_hono.md +118 -4
  531. package/docs/de/intlayer_with_htmx.md +770 -0
  532. package/docs/de/intlayer_with_lynx+react.md +3 -10
  533. package/docs/de/intlayer_with_nestjs.md +118 -4
  534. package/docs/de/intlayer_with_next-i18next.md +3 -3
  535. package/docs/de/intlayer_with_nextjs_14.md +141 -113
  536. package/docs/de/intlayer_with_nextjs_15.md +123 -48
  537. package/docs/de/intlayer_with_nextjs_16.md +150 -54
  538. package/docs/de/intlayer_with_nextjs_compiler.md +116 -6
  539. package/docs/de/intlayer_with_nextjs_no_locale_path.md +118 -6
  540. package/docs/de/intlayer_with_nextjs_page_router.md +124 -98
  541. package/docs/de/intlayer_with_nuxt.md +107 -5
  542. package/docs/de/intlayer_with_react_native+expo.md +106 -11
  543. package/docs/de/intlayer_with_react_router_v7.md +116 -7
  544. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +111 -4
  545. package/docs/de/intlayer_with_solid_start.md +120 -5
  546. package/docs/de/intlayer_with_storybook.md +0 -13
  547. package/docs/de/intlayer_with_svelte_kit.md +102 -5
  548. package/docs/de/intlayer_with_tanstack+solid.md +122 -19
  549. package/docs/de/intlayer_with_tanstack.md +234 -155
  550. package/docs/de/intlayer_with_vanilla.md +111 -3
  551. package/docs/de/intlayer_with_vite+lit.md +116 -5
  552. package/docs/de/intlayer_with_vite+preact.md +173 -36
  553. package/docs/de/intlayer_with_vite+react.md +105 -9
  554. package/docs/de/intlayer_with_vite+react_compiler.md +110 -5
  555. package/docs/de/intlayer_with_vite+solid.md +116 -5
  556. package/docs/de/intlayer_with_vite+svelte.md +117 -14
  557. package/docs/de/intlayer_with_vite+vanilla.md +122 -5
  558. package/docs/de/intlayer_with_vite+vue.md +101 -5
  559. package/docs/de/introduction.md +105 -2
  560. package/docs/de/migration_from_i18next_to_intlayer.md +3 -5
  561. package/docs/de/migration_from_next-i18next_to_intlayer.md +3 -5
  562. package/docs/de/migration_from_next-intl_to_intlayer.md +3 -5
  563. package/docs/de/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  564. package/docs/de/migration_from_react-i18next_to_intlayer.md +3 -5
  565. package/docs/de/migration_from_vue-i18n_to_intlayer.md +3 -5
  566. package/docs/de/packages/vite-intlayer/intlayerMinify.md +1 -1
  567. package/docs/en/bundle_optimization.md +186 -186
  568. package/docs/en/configuration.md +99 -1
  569. package/docs/en/dictionary/content_file.md +4 -4
  570. package/docs/en/how_works_intlayer.md +93 -1
  571. package/docs/en/interest_of_intlayer.md +97 -2
  572. package/docs/en/intlayer_CMS.md +93 -1
  573. package/docs/en/intlayer_visual_editor.md +88 -2
  574. package/docs/en/intlayer_with_adonisjs.md +124 -4
  575. package/docs/en/intlayer_with_analog.md +114 -5
  576. package/docs/en/intlayer_with_angular_19.md +112 -5
  577. package/docs/en/intlayer_with_angular_21.md +106 -5
  578. package/docs/en/intlayer_with_astro.md +110 -7
  579. package/docs/en/intlayer_with_astro_lit.md +115 -7
  580. package/docs/en/intlayer_with_astro_preact.md +115 -7
  581. package/docs/en/intlayer_with_astro_react.md +115 -7
  582. package/docs/en/intlayer_with_astro_solid.md +115 -7
  583. package/docs/en/intlayer_with_astro_svelte.md +115 -7
  584. package/docs/en/intlayer_with_astro_vanilla.md +109 -7
  585. package/docs/en/intlayer_with_astro_vue.md +115 -7
  586. package/docs/en/intlayer_with_create_react_app.md +108 -5
  587. package/docs/en/intlayer_with_elysia.md +125 -5
  588. package/docs/en/intlayer_with_express.md +118 -4
  589. package/docs/en/intlayer_with_fastify.md +119 -5
  590. package/docs/en/intlayer_with_hono.md +118 -4
  591. package/docs/en/intlayer_with_htmx.md +754 -0
  592. package/docs/en/intlayer_with_lynx+react.md +3 -10
  593. package/docs/en/intlayer_with_nestjs.md +118 -4
  594. package/docs/en/intlayer_with_next-i18next.md +3 -3
  595. package/docs/en/intlayer_with_nextjs_14.md +123 -46
  596. package/docs/en/intlayer_with_nextjs_15.md +123 -47
  597. package/docs/en/intlayer_with_nextjs_16.md +124 -46
  598. package/docs/en/intlayer_with_nextjs_compiler.md +114 -5
  599. package/docs/en/intlayer_with_nextjs_no_locale_path.md +118 -6
  600. package/docs/en/intlayer_with_nextjs_page_router.md +113 -98
  601. package/docs/en/intlayer_with_nuxt.md +107 -5
  602. package/docs/en/intlayer_with_react_native+expo.md +106 -11
  603. package/docs/en/intlayer_with_react_router_v7.md +116 -7
  604. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +112 -5
  605. package/docs/en/intlayer_with_solid_start.md +120 -5
  606. package/docs/en/intlayer_with_storybook.md +0 -13
  607. package/docs/en/intlayer_with_svelte_kit.md +102 -5
  608. package/docs/en/intlayer_with_tanstack+solid.md +123 -19
  609. package/docs/en/intlayer_with_tanstack.md +117 -19
  610. package/docs/en/intlayer_with_vanilla.md +111 -3
  611. package/docs/en/intlayer_with_vite+lit.md +116 -5
  612. package/docs/en/intlayer_with_vite+preact.md +146 -37
  613. package/docs/en/intlayer_with_vite+react.md +104 -7
  614. package/docs/en/intlayer_with_vite+react_compiler.md +110 -5
  615. package/docs/en/intlayer_with_vite+solid.md +116 -5
  616. package/docs/en/intlayer_with_vite+svelte.md +117 -14
  617. package/docs/en/intlayer_with_vite+vanilla.md +122 -5
  618. package/docs/en/intlayer_with_vite+vue.md +101 -5
  619. package/docs/en/introduction.md +105 -2
  620. package/docs/en/migration_from_i18next_to_intlayer.md +3 -5
  621. package/docs/en/migration_from_next-i18next_to_intlayer.md +3 -5
  622. package/docs/en/migration_from_next-intl_to_intlayer.md +3 -5
  623. package/docs/en/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  624. package/docs/en/migration_from_react-i18next_to_intlayer.md +3 -5
  625. package/docs/en/migration_from_vue-i18n_to_intlayer.md +3 -5
  626. package/docs/en/packages/vite-intlayer/intlayerMinify.md +1 -1
  627. package/docs/en-GB/analytics.md +527 -58
  628. package/docs/en-GB/bundle_optimization.md +186 -186
  629. package/docs/en-GB/configuration.md +99 -1
  630. package/docs/en-GB/dictionary/content_file.md +4 -4
  631. package/docs/en-GB/dictionary/html.md +117 -1
  632. package/docs/en-GB/dictionary/markdown.md +18 -1
  633. package/docs/en-GB/dictionary/plurial.md +5 -2
  634. package/docs/en-GB/dictionary/translation.md +1 -1
  635. package/docs/en-GB/how_works_intlayer.md +93 -1
  636. package/docs/en-GB/interest_of_intlayer.md +97 -2
  637. package/docs/en-GB/intlayer_CMS.md +93 -1
  638. package/docs/en-GB/intlayer_visual_editor.md +88 -2
  639. package/docs/en-GB/intlayer_with_adonisjs.md +124 -4
  640. package/docs/en-GB/intlayer_with_analog.md +114 -5
  641. package/docs/en-GB/intlayer_with_angular_19.md +112 -5
  642. package/docs/en-GB/intlayer_with_angular_21.md +106 -5
  643. package/docs/en-GB/intlayer_with_astro.md +114 -17
  644. package/docs/en-GB/intlayer_with_astro_lit.md +115 -7
  645. package/docs/en-GB/intlayer_with_astro_preact.md +115 -7
  646. package/docs/en-GB/intlayer_with_astro_react.md +115 -7
  647. package/docs/en-GB/intlayer_with_astro_solid.md +115 -7
  648. package/docs/en-GB/intlayer_with_astro_svelte.md +115 -7
  649. package/docs/en-GB/intlayer_with_astro_vanilla.md +109 -7
  650. package/docs/en-GB/intlayer_with_astro_vue.md +115 -7
  651. package/docs/en-GB/intlayer_with_create_react_app.md +108 -5
  652. package/docs/en-GB/intlayer_with_elysia.md +125 -5
  653. package/docs/en-GB/intlayer_with_express.md +118 -4
  654. package/docs/en-GB/intlayer_with_fastify.md +119 -5
  655. package/docs/en-GB/intlayer_with_hono.md +118 -4
  656. package/docs/en-GB/intlayer_with_htmx.md +757 -0
  657. package/docs/en-GB/intlayer_with_lynx+react.md +3 -10
  658. package/docs/en-GB/intlayer_with_nestjs.md +118 -4
  659. package/docs/en-GB/intlayer_with_next-i18next.md +3 -3
  660. package/docs/en-GB/intlayer_with_nextjs_14.md +123 -47
  661. package/docs/en-GB/intlayer_with_nextjs_15.md +126 -48
  662. package/docs/en-GB/intlayer_with_nextjs_16.md +124 -47
  663. package/docs/en-GB/intlayer_with_nextjs_compiler.md +124 -15
  664. package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +118 -6
  665. package/docs/en-GB/intlayer_with_nextjs_page_router.md +125 -140
  666. package/docs/en-GB/intlayer_with_nuxt.md +107 -5
  667. package/docs/en-GB/intlayer_with_react_native+expo.md +106 -11
  668. package/docs/en-GB/intlayer_with_react_router_v7.md +116 -7
  669. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +114 -7
  670. package/docs/en-GB/intlayer_with_solid_start.md +120 -5
  671. package/docs/en-GB/intlayer_with_storybook.md +0 -13
  672. package/docs/en-GB/intlayer_with_svelte_kit.md +102 -5
  673. package/docs/en-GB/intlayer_with_tanstack+solid.md +123 -19
  674. package/docs/en-GB/intlayer_with_tanstack.md +258 -170
  675. package/docs/en-GB/intlayer_with_vanilla.md +111 -3
  676. package/docs/en-GB/intlayer_with_vite+lit.md +116 -5
  677. package/docs/en-GB/intlayer_with_vite+preact.md +182 -35
  678. package/docs/en-GB/intlayer_with_vite+react.md +104 -16
  679. package/docs/en-GB/intlayer_with_vite+react_compiler.md +110 -5
  680. package/docs/en-GB/intlayer_with_vite+solid.md +121 -5
  681. package/docs/en-GB/intlayer_with_vite+svelte.md +117 -23
  682. package/docs/en-GB/intlayer_with_vite+vanilla.md +122 -5
  683. package/docs/en-GB/intlayer_with_vite+vue.md +105 -11
  684. package/docs/en-GB/introduction.md +105 -2
  685. package/docs/en-GB/migration_from_i18next_to_intlayer.md +3 -5
  686. package/docs/en-GB/migration_from_next-i18next_to_intlayer.md +3 -5
  687. package/docs/en-GB/migration_from_next-intl_to_intlayer.md +3 -5
  688. package/docs/en-GB/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  689. package/docs/en-GB/migration_from_react-i18next_to_intlayer.md +3 -5
  690. package/docs/en-GB/migration_from_vue-i18n_to_intlayer.md +3 -5
  691. package/docs/en-GB/packages/vite-intlayer/intlayerMinify.md +1 -1
  692. package/docs/es/analytics.md +458 -12
  693. package/docs/es/bundle_optimization.md +186 -186
  694. package/docs/es/configuration.md +99 -1
  695. package/docs/es/dictionary/content_file.md +4 -4
  696. package/docs/es/dictionary/markdown.md +18 -1
  697. package/docs/es/dictionary/plurial.md +5 -2
  698. package/docs/es/how_works_intlayer.md +93 -1
  699. package/docs/es/interest_of_intlayer.md +97 -2
  700. package/docs/es/intlayer_CMS.md +93 -1
  701. package/docs/es/intlayer_visual_editor.md +88 -2
  702. package/docs/es/intlayer_with_adonisjs.md +124 -4
  703. package/docs/es/intlayer_with_analog.md +114 -5
  704. package/docs/es/intlayer_with_angular_19.md +112 -5
  705. package/docs/es/intlayer_with_angular_21.md +106 -5
  706. package/docs/es/intlayer_with_astro.md +114 -17
  707. package/docs/es/intlayer_with_astro_lit.md +115 -7
  708. package/docs/es/intlayer_with_astro_preact.md +115 -7
  709. package/docs/es/intlayer_with_astro_react.md +115 -7
  710. package/docs/es/intlayer_with_astro_solid.md +115 -7
  711. package/docs/es/intlayer_with_astro_svelte.md +115 -7
  712. package/docs/es/intlayer_with_astro_vanilla.md +109 -7
  713. package/docs/es/intlayer_with_astro_vue.md +115 -7
  714. package/docs/es/intlayer_with_create_react_app.md +110 -5
  715. package/docs/es/intlayer_with_elysia.md +125 -5
  716. package/docs/es/intlayer_with_express.md +118 -4
  717. package/docs/es/intlayer_with_fastify.md +119 -5
  718. package/docs/es/intlayer_with_hono.md +118 -4
  719. package/docs/es/intlayer_with_htmx.md +763 -0
  720. package/docs/es/intlayer_with_lynx+react.md +3 -10
  721. package/docs/es/intlayer_with_nestjs.md +118 -4
  722. package/docs/es/intlayer_with_next-i18next.md +3 -3
  723. package/docs/es/intlayer_with_nextjs_14.md +123 -47
  724. package/docs/es/intlayer_with_nextjs_15.md +126 -48
  725. package/docs/es/intlayer_with_nextjs_16.md +145 -55
  726. package/docs/es/intlayer_with_nextjs_compiler.md +125 -15
  727. package/docs/es/intlayer_with_nextjs_no_locale_path.md +118 -6
  728. package/docs/es/intlayer_with_nextjs_page_router.md +113 -98
  729. package/docs/es/intlayer_with_nuxt.md +107 -5
  730. package/docs/es/intlayer_with_react_native+expo.md +106 -11
  731. package/docs/es/intlayer_with_react_router_v7.md +116 -7
  732. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +111 -4
  733. package/docs/es/intlayer_with_solid_start.md +120 -5
  734. package/docs/es/intlayer_with_storybook.md +0 -13
  735. package/docs/es/intlayer_with_svelte_kit.md +102 -5
  736. package/docs/es/intlayer_with_tanstack+solid.md +122 -19
  737. package/docs/es/intlayer_with_tanstack.md +255 -150
  738. package/docs/es/intlayer_with_vanilla.md +111 -3
  739. package/docs/es/intlayer_with_vite+lit.md +116 -5
  740. package/docs/es/intlayer_with_vite+preact.md +146 -37
  741. package/docs/es/intlayer_with_vite+react.md +104 -7
  742. package/docs/es/intlayer_with_vite+react_compiler.md +110 -5
  743. package/docs/es/intlayer_with_vite+solid.md +117 -5
  744. package/docs/es/intlayer_with_vite+svelte.md +117 -14
  745. package/docs/es/intlayer_with_vite+vanilla.md +122 -5
  746. package/docs/es/intlayer_with_vite+vue.md +102 -6
  747. package/docs/es/introduction.md +105 -2
  748. package/docs/es/migration_from_i18next_to_intlayer.md +3 -5
  749. package/docs/es/migration_from_next-i18next_to_intlayer.md +3 -5
  750. package/docs/es/migration_from_next-intl_to_intlayer.md +3 -5
  751. package/docs/es/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  752. package/docs/es/migration_from_react-i18next_to_intlayer.md +3 -5
  753. package/docs/es/migration_from_vue-i18n_to_intlayer.md +3 -5
  754. package/docs/es/packages/vite-intlayer/intlayerMinify.md +1 -1
  755. package/docs/fr/analytics.md +437 -13
  756. package/docs/fr/bundle_optimization.md +186 -186
  757. package/docs/fr/configuration.md +99 -1
  758. package/docs/fr/dictionary/content_file.md +4 -4
  759. package/docs/fr/dictionary/markdown.md +18 -1
  760. package/docs/fr/dictionary/plurial.md +5 -2
  761. package/docs/fr/how_works_intlayer.md +93 -1
  762. package/docs/fr/interest_of_intlayer.md +97 -2
  763. package/docs/fr/intlayer_CMS.md +93 -1
  764. package/docs/fr/intlayer_visual_editor.md +88 -2
  765. package/docs/fr/intlayer_with_adonisjs.md +124 -4
  766. package/docs/fr/intlayer_with_analog.md +114 -5
  767. package/docs/fr/intlayer_with_angular_19.md +112 -5
  768. package/docs/fr/intlayer_with_angular_21.md +106 -5
  769. package/docs/fr/intlayer_with_astro.md +114 -17
  770. package/docs/fr/intlayer_with_astro_lit.md +115 -7
  771. package/docs/fr/intlayer_with_astro_preact.md +115 -7
  772. package/docs/fr/intlayer_with_astro_react.md +115 -7
  773. package/docs/fr/intlayer_with_astro_solid.md +115 -7
  774. package/docs/fr/intlayer_with_astro_svelte.md +115 -7
  775. package/docs/fr/intlayer_with_astro_vanilla.md +109 -7
  776. package/docs/fr/intlayer_with_astro_vue.md +115 -7
  777. package/docs/fr/intlayer_with_create_react_app.md +110 -5
  778. package/docs/fr/intlayer_with_elysia.md +125 -5
  779. package/docs/fr/intlayer_with_express.md +118 -4
  780. package/docs/fr/intlayer_with_fastify.md +119 -5
  781. package/docs/fr/intlayer_with_hono.md +118 -4
  782. package/docs/fr/intlayer_with_htmx.md +756 -0
  783. package/docs/fr/intlayer_with_lynx+react.md +3 -10
  784. package/docs/fr/intlayer_with_nestjs.md +118 -4
  785. package/docs/fr/intlayer_with_next-i18next.md +3 -3
  786. package/docs/fr/intlayer_with_nextjs_14.md +141 -113
  787. package/docs/fr/intlayer_with_nextjs_15.md +127 -49
  788. package/docs/fr/intlayer_with_nextjs_16.md +124 -46
  789. package/docs/fr/intlayer_with_nextjs_compiler.md +125 -15
  790. package/docs/fr/intlayer_with_nextjs_no_locale_path.md +118 -6
  791. package/docs/fr/intlayer_with_nextjs_page_router.md +113 -98
  792. package/docs/fr/intlayer_with_nuxt.md +107 -5
  793. package/docs/fr/intlayer_with_react_native+expo.md +106 -11
  794. package/docs/fr/intlayer_with_react_router_v7.md +120 -13
  795. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +111 -4
  796. package/docs/fr/intlayer_with_solid_start.md +120 -5
  797. package/docs/fr/intlayer_with_storybook.md +0 -13
  798. package/docs/fr/intlayer_with_svelte_kit.md +102 -5
  799. package/docs/fr/intlayer_with_tanstack+solid.md +122 -19
  800. package/docs/fr/intlayer_with_tanstack.md +238 -131
  801. package/docs/fr/intlayer_with_vanilla.md +111 -3
  802. package/docs/fr/intlayer_with_vite+lit.md +116 -5
  803. package/docs/fr/intlayer_with_vite+preact.md +146 -37
  804. package/docs/fr/intlayer_with_vite+react.md +104 -7
  805. package/docs/fr/intlayer_with_vite+react_compiler.md +110 -5
  806. package/docs/fr/intlayer_with_vite+solid.md +117 -5
  807. package/docs/fr/intlayer_with_vite+svelte.md +117 -14
  808. package/docs/fr/intlayer_with_vite+vanilla.md +122 -5
  809. package/docs/fr/intlayer_with_vite+vue.md +102 -6
  810. package/docs/fr/introduction.md +105 -2
  811. package/docs/fr/migration_from_i18next_to_intlayer.md +3 -5
  812. package/docs/fr/migration_from_next-i18next_to_intlayer.md +3 -5
  813. package/docs/fr/migration_from_next-intl_to_intlayer.md +3 -5
  814. package/docs/fr/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  815. package/docs/fr/migration_from_react-i18next_to_intlayer.md +3 -5
  816. package/docs/fr/migration_from_vue-i18n_to_intlayer.md +3 -5
  817. package/docs/fr/packages/vite-intlayer/intlayerMinify.md +1 -1
  818. package/docs/hi/analytics.md +488 -21
  819. package/docs/hi/bundle_optimization.md +186 -186
  820. package/docs/hi/configuration.md +98 -0
  821. package/docs/hi/dictionary/content_file.md +4 -4
  822. package/docs/hi/dictionary/html.md +100 -3
  823. package/docs/hi/dictionary/markdown.md +3 -0
  824. package/docs/hi/dictionary/plurial.md +6 -3
  825. package/docs/hi/how_works_intlayer.md +92 -0
  826. package/docs/hi/interest_of_intlayer.md +106 -9
  827. package/docs/hi/intlayer_CMS.md +92 -0
  828. package/docs/hi/intlayer_visual_editor.md +87 -1
  829. package/docs/hi/intlayer_with_adonisjs.md +124 -3
  830. package/docs/hi/intlayer_with_analog.md +119 -11
  831. package/docs/hi/intlayer_with_angular_19.md +118 -11
  832. package/docs/hi/intlayer_with_angular_21.md +112 -11
  833. package/docs/hi/intlayer_with_astro.md +120 -23
  834. package/docs/hi/intlayer_with_astro_lit.md +121 -13
  835. package/docs/hi/intlayer_with_astro_preact.md +121 -13
  836. package/docs/hi/intlayer_with_astro_react.md +121 -13
  837. package/docs/hi/intlayer_with_astro_solid.md +121 -13
  838. package/docs/hi/intlayer_with_astro_svelte.md +121 -13
  839. package/docs/hi/intlayer_with_astro_vanilla.md +115 -13
  840. package/docs/hi/intlayer_with_astro_vue.md +121 -13
  841. package/docs/hi/intlayer_with_create_react_app.md +109 -4
  842. package/docs/hi/intlayer_with_elysia.md +125 -4
  843. package/docs/hi/intlayer_with_express.md +117 -3
  844. package/docs/hi/intlayer_with_fastify.md +119 -4
  845. package/docs/hi/intlayer_with_hono.md +117 -3
  846. package/docs/hi/intlayer_with_htmx.md +771 -0
  847. package/docs/hi/intlayer_with_lynx+react.md +10 -17
  848. package/docs/hi/intlayer_with_nestjs.md +118 -3
  849. package/docs/hi/intlayer_with_next-i18next.md +3 -3
  850. package/docs/hi/intlayer_with_nextjs_14.md +147 -123
  851. package/docs/hi/intlayer_with_nextjs_15.md +132 -54
  852. package/docs/hi/intlayer_with_nextjs_16.md +132 -53
  853. package/docs/hi/intlayer_with_nextjs_compiler.md +124 -15
  854. package/docs/hi/intlayer_with_nextjs_no_locale_path.md +124 -12
  855. package/docs/hi/intlayer_with_nextjs_page_router.md +126 -99
  856. package/docs/hi/intlayer_with_nuxt.md +113 -11
  857. package/docs/hi/intlayer_with_react_native+expo.md +105 -10
  858. package/docs/hi/intlayer_with_react_router_v7.md +122 -13
  859. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +125 -25
  860. package/docs/hi/intlayer_with_solid_start.md +118 -4
  861. package/docs/hi/intlayer_with_storybook.md +7 -20
  862. package/docs/hi/intlayer_with_svelte_kit.md +108 -11
  863. package/docs/hi/intlayer_with_tanstack+solid.md +127 -25
  864. package/docs/hi/intlayer_with_tanstack.md +272 -158
  865. package/docs/hi/intlayer_with_vanilla.md +117 -9
  866. package/docs/hi/intlayer_with_vite+lit.md +121 -11
  867. package/docs/hi/intlayer_with_vite+preact.md +173 -44
  868. package/docs/hi/intlayer_with_vite+react.md +111 -23
  869. package/docs/hi/intlayer_with_vite+react_compiler.md +109 -4
  870. package/docs/hi/intlayer_with_vite+solid.md +121 -11
  871. package/docs/hi/intlayer_with_vite+svelte.md +124 -21
  872. package/docs/hi/intlayer_with_vite+vanilla.md +128 -11
  873. package/docs/hi/intlayer_with_vite+vue.md +107 -11
  874. package/docs/hi/introduction.md +104 -1
  875. package/docs/hi/migration_from_i18next_to_intlayer.md +3 -5
  876. package/docs/hi/migration_from_next-i18next_to_intlayer.md +3 -5
  877. package/docs/hi/migration_from_next-intl_to_intlayer.md +3 -5
  878. package/docs/hi/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  879. package/docs/hi/migration_from_react-i18next_to_intlayer.md +3 -5
  880. package/docs/hi/migration_from_vue-i18n_to_intlayer.md +3 -5
  881. package/docs/hi/packages/intlayer/index.md +3 -3
  882. package/docs/hi/packages/vite-intlayer/intlayerMinify.md +1 -1
  883. package/docs/id/analytics.md +488 -21
  884. package/docs/id/bundle_optimization.md +186 -186
  885. package/docs/id/configuration.md +98 -0
  886. package/docs/id/dictionary/content_file.md +4 -4
  887. package/docs/id/dictionary/markdown.md +3 -0
  888. package/docs/id/dictionary/plurial.md +5 -2
  889. package/docs/id/how_works_intlayer.md +92 -0
  890. package/docs/id/interest_of_intlayer.md +96 -1
  891. package/docs/id/intlayer_CMS.md +92 -0
  892. package/docs/id/intlayer_visual_editor.md +87 -1
  893. package/docs/id/intlayer_with_adonisjs.md +124 -3
  894. package/docs/id/intlayer_with_analog.md +112 -4
  895. package/docs/id/intlayer_with_angular_19.md +111 -4
  896. package/docs/id/intlayer_with_angular_21.md +105 -4
  897. package/docs/id/intlayer_with_astro.md +113 -16
  898. package/docs/id/intlayer_with_astro_lit.md +114 -6
  899. package/docs/id/intlayer_with_astro_preact.md +114 -6
  900. package/docs/id/intlayer_with_astro_react.md +114 -6
  901. package/docs/id/intlayer_with_astro_solid.md +114 -6
  902. package/docs/id/intlayer_with_astro_svelte.md +114 -6
  903. package/docs/id/intlayer_with_astro_vanilla.md +108 -6
  904. package/docs/id/intlayer_with_astro_vue.md +114 -6
  905. package/docs/id/intlayer_with_create_react_app.md +109 -4
  906. package/docs/id/intlayer_with_elysia.md +125 -4
  907. package/docs/id/intlayer_with_express.md +117 -3
  908. package/docs/id/intlayer_with_fastify.md +119 -4
  909. package/docs/id/intlayer_with_hono.md +117 -3
  910. package/docs/id/intlayer_with_htmx.md +761 -0
  911. package/docs/id/intlayer_with_lynx+react.md +3 -10
  912. package/docs/id/intlayer_with_nestjs.md +118 -3
  913. package/docs/id/intlayer_with_next-i18next.md +3 -3
  914. package/docs/id/intlayer_with_nextjs_14.md +135 -69
  915. package/docs/id/intlayer_with_nextjs_15.md +122 -46
  916. package/docs/id/intlayer_with_nextjs_16.md +125 -45
  917. package/docs/id/intlayer_with_nextjs_compiler.md +125 -17
  918. package/docs/id/intlayer_with_nextjs_no_locale_path.md +117 -5
  919. package/docs/id/intlayer_with_nextjs_page_router.md +114 -97
  920. package/docs/id/intlayer_with_nuxt.md +106 -4
  921. package/docs/id/intlayer_with_react_native+expo.md +105 -10
  922. package/docs/id/intlayer_with_react_router_v7.md +115 -6
  923. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +116 -16
  924. package/docs/id/intlayer_with_solid_start.md +118 -4
  925. package/docs/id/intlayer_with_storybook.md +0 -13
  926. package/docs/id/intlayer_with_svelte_kit.md +101 -4
  927. package/docs/id/intlayer_with_tanstack+solid.md +120 -18
  928. package/docs/id/intlayer_with_tanstack.md +232 -132
  929. package/docs/id/intlayer_with_vanilla.md +110 -2
  930. package/docs/id/intlayer_with_vite+lit.md +114 -4
  931. package/docs/id/intlayer_with_vite+preact.md +144 -36
  932. package/docs/id/intlayer_with_vite+react.md +104 -16
  933. package/docs/id/intlayer_with_vite+react_compiler.md +109 -4
  934. package/docs/id/intlayer_with_vite+solid.md +115 -4
  935. package/docs/id/intlayer_with_vite+svelte.md +115 -13
  936. package/docs/id/intlayer_with_vite+vanilla.md +121 -4
  937. package/docs/id/intlayer_with_vite+vue.md +100 -4
  938. package/docs/id/introduction.md +104 -1
  939. package/docs/id/migration_from_i18next_to_intlayer.md +3 -5
  940. package/docs/id/migration_from_next-i18next_to_intlayer.md +3 -5
  941. package/docs/id/migration_from_next-intl_to_intlayer.md +3 -5
  942. package/docs/id/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  943. package/docs/id/migration_from_react-i18next_to_intlayer.md +3 -5
  944. package/docs/id/migration_from_vue-i18n_to_intlayer.md +3 -5
  945. package/docs/id/packages/vite-intlayer/intlayerMinify.md +1 -1
  946. package/docs/it/analytics.md +488 -21
  947. package/docs/it/bundle_optimization.md +186 -186
  948. package/docs/it/configuration.md +99 -1
  949. package/docs/it/dictionary/content_file.md +4 -4
  950. package/docs/it/dictionary/markdown.md +18 -1
  951. package/docs/it/dictionary/plurial.md +5 -2
  952. package/docs/it/how_works_intlayer.md +93 -1
  953. package/docs/it/interest_of_intlayer.md +97 -2
  954. package/docs/it/intlayer_CMS.md +93 -1
  955. package/docs/it/intlayer_visual_editor.md +88 -2
  956. package/docs/it/intlayer_with_adonisjs.md +124 -4
  957. package/docs/it/intlayer_with_analog.md +114 -5
  958. package/docs/it/intlayer_with_angular_19.md +112 -5
  959. package/docs/it/intlayer_with_angular_21.md +106 -5
  960. package/docs/it/intlayer_with_astro.md +114 -17
  961. package/docs/it/intlayer_with_astro_lit.md +115 -7
  962. package/docs/it/intlayer_with_astro_preact.md +115 -7
  963. package/docs/it/intlayer_with_astro_react.md +115 -7
  964. package/docs/it/intlayer_with_astro_solid.md +115 -7
  965. package/docs/it/intlayer_with_astro_svelte.md +115 -7
  966. package/docs/it/intlayer_with_astro_vanilla.md +109 -7
  967. package/docs/it/intlayer_with_astro_vue.md +115 -7
  968. package/docs/it/intlayer_with_create_react_app.md +110 -5
  969. package/docs/it/intlayer_with_elysia.md +125 -5
  970. package/docs/it/intlayer_with_express.md +118 -4
  971. package/docs/it/intlayer_with_fastify.md +119 -5
  972. package/docs/it/intlayer_with_hono.md +118 -4
  973. package/docs/it/intlayer_with_htmx.md +761 -0
  974. package/docs/it/intlayer_with_lynx+react.md +3 -10
  975. package/docs/it/intlayer_with_nestjs.md +118 -4
  976. package/docs/it/intlayer_with_next-i18next.md +3 -3
  977. package/docs/it/intlayer_with_nextjs_14.md +141 -118
  978. package/docs/it/intlayer_with_nextjs_15.md +127 -50
  979. package/docs/it/intlayer_with_nextjs_16.md +126 -47
  980. package/docs/it/intlayer_with_nextjs_compiler.md +126 -17
  981. package/docs/it/intlayer_with_nextjs_no_locale_path.md +118 -6
  982. package/docs/it/intlayer_with_nextjs_page_router.md +122 -98
  983. package/docs/it/intlayer_with_nuxt.md +107 -5
  984. package/docs/it/intlayer_with_react_native+expo.md +106 -11
  985. package/docs/it/intlayer_with_react_router_v7.md +116 -7
  986. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +111 -4
  987. package/docs/it/intlayer_with_solid_start.md +120 -5
  988. package/docs/it/intlayer_with_storybook.md +0 -13
  989. package/docs/it/intlayer_with_svelte_kit.md +102 -5
  990. package/docs/it/intlayer_with_tanstack+solid.md +122 -19
  991. package/docs/it/intlayer_with_tanstack.md +235 -134
  992. package/docs/it/intlayer_with_vanilla.md +111 -3
  993. package/docs/it/intlayer_with_vite+lit.md +116 -5
  994. package/docs/it/intlayer_with_vite+preact.md +146 -37
  995. package/docs/it/intlayer_with_vite+react.md +105 -17
  996. package/docs/it/intlayer_with_vite+react_compiler.md +110 -5
  997. package/docs/it/intlayer_with_vite+solid.md +117 -5
  998. package/docs/it/intlayer_with_vite+svelte.md +117 -14
  999. package/docs/it/intlayer_with_vite+vanilla.md +122 -5
  1000. package/docs/it/intlayer_with_vite+vue.md +102 -6
  1001. package/docs/it/introduction.md +105 -2
  1002. package/docs/it/migration_from_i18next_to_intlayer.md +3 -5
  1003. package/docs/it/migration_from_next-i18next_to_intlayer.md +3 -5
  1004. package/docs/it/migration_from_next-intl_to_intlayer.md +3 -5
  1005. package/docs/it/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  1006. package/docs/it/migration_from_react-i18next_to_intlayer.md +3 -5
  1007. package/docs/it/migration_from_vue-i18n_to_intlayer.md +3 -5
  1008. package/docs/it/packages/vite-intlayer/intlayerMinify.md +1 -1
  1009. package/docs/ja/analytics.md +458 -12
  1010. package/docs/ja/bundle_optimization.md +186 -186
  1011. package/docs/ja/configuration.md +99 -1
  1012. package/docs/ja/dictionary/content_file.md +4 -4
  1013. package/docs/ja/dictionary/plurial.md +5 -2
  1014. package/docs/ja/how_works_intlayer.md +93 -1
  1015. package/docs/ja/interest_of_intlayer.md +107 -10
  1016. package/docs/ja/intlayer_CMS.md +93 -1
  1017. package/docs/ja/intlayer_visual_editor.md +88 -2
  1018. package/docs/ja/intlayer_with_adonisjs.md +124 -4
  1019. package/docs/ja/intlayer_with_analog.md +122 -13
  1020. package/docs/ja/intlayer_with_angular_19.md +120 -13
  1021. package/docs/ja/intlayer_with_angular_21.md +114 -13
  1022. package/docs/ja/intlayer_with_astro.md +122 -25
  1023. package/docs/ja/intlayer_with_astro_lit.md +123 -15
  1024. package/docs/ja/intlayer_with_astro_preact.md +123 -15
  1025. package/docs/ja/intlayer_with_astro_react.md +123 -15
  1026. package/docs/ja/intlayer_with_astro_solid.md +123 -15
  1027. package/docs/ja/intlayer_with_astro_svelte.md +123 -15
  1028. package/docs/ja/intlayer_with_astro_vanilla.md +117 -15
  1029. package/docs/ja/intlayer_with_astro_vue.md +123 -15
  1030. package/docs/ja/intlayer_with_create_react_app.md +110 -5
  1031. package/docs/ja/intlayer_with_elysia.md +125 -5
  1032. package/docs/ja/intlayer_with_express.md +124 -4
  1033. package/docs/ja/intlayer_with_fastify.md +119 -5
  1034. package/docs/ja/intlayer_with_hono.md +118 -4
  1035. package/docs/ja/intlayer_with_htmx.md +769 -0
  1036. package/docs/ja/intlayer_with_lynx+react.md +11 -18
  1037. package/docs/ja/intlayer_with_nestjs.md +118 -4
  1038. package/docs/ja/intlayer_with_next-i18next.md +3 -3
  1039. package/docs/ja/intlayer_with_nextjs_14.md +131 -54
  1040. package/docs/ja/intlayer_with_nextjs_15.md +139 -62
  1041. package/docs/ja/intlayer_with_nextjs_16.md +134 -55
  1042. package/docs/ja/intlayer_with_nextjs_compiler.md +126 -18
  1043. package/docs/ja/intlayer_with_nextjs_no_locale_path.md +126 -14
  1044. package/docs/ja/intlayer_with_nextjs_page_router.md +218 -113
  1045. package/docs/ja/intlayer_with_nuxt.md +115 -13
  1046. package/docs/ja/intlayer_with_react_native+expo.md +106 -11
  1047. package/docs/ja/intlayer_with_react_router_v7.md +124 -14
  1048. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +123 -23
  1049. package/docs/ja/intlayer_with_solid_start.md +120 -5
  1050. package/docs/ja/intlayer_with_storybook.md +8 -21
  1051. package/docs/ja/intlayer_with_svelte_kit.md +110 -13
  1052. package/docs/ja/intlayer_with_tanstack+solid.md +131 -27
  1053. package/docs/ja/intlayer_with_tanstack.md +257 -206
  1054. package/docs/ja/intlayer_with_vanilla.md +119 -11
  1055. package/docs/ja/intlayer_with_vite+lit.md +124 -13
  1056. package/docs/ja/intlayer_with_vite+preact.md +154 -26
  1057. package/docs/ja/intlayer_with_vite+react.md +112 -15
  1058. package/docs/ja/intlayer_with_vite+react_compiler.md +110 -5
  1059. package/docs/ja/intlayer_with_vite+solid.md +124 -13
  1060. package/docs/ja/intlayer_with_vite+svelte.md +125 -22
  1061. package/docs/ja/intlayer_with_vite+vanilla.md +130 -13
  1062. package/docs/ja/intlayer_with_vite+vue.md +110 -14
  1063. package/docs/ja/introduction.md +105 -2
  1064. package/docs/ja/migration_from_i18next_to_intlayer.md +3 -5
  1065. package/docs/ja/migration_from_next-i18next_to_intlayer.md +3 -5
  1066. package/docs/ja/migration_from_next-intl_to_intlayer.md +3 -5
  1067. package/docs/ja/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  1068. package/docs/ja/migration_from_react-i18next_to_intlayer.md +3 -5
  1069. package/docs/ja/migration_from_vue-i18n_to_intlayer.md +3 -5
  1070. package/docs/ja/packages/vite-intlayer/intlayerMinify.md +1 -1
  1071. package/docs/ko/analytics.md +457 -11
  1072. package/docs/ko/bundle_optimization.md +186 -186
  1073. package/docs/ko/configuration.md +99 -1
  1074. package/docs/ko/dictionary/content_file.md +4 -4
  1075. package/docs/ko/dictionary/markdown.md +18 -1
  1076. package/docs/ko/dictionary/plurial.md +6 -3
  1077. package/docs/ko/how_works_intlayer.md +93 -1
  1078. package/docs/ko/interest_of_intlayer.md +98 -3
  1079. package/docs/ko/intlayer_CMS.md +93 -1
  1080. package/docs/ko/intlayer_visual_editor.md +88 -2
  1081. package/docs/ko/intlayer_with_adonisjs.md +124 -4
  1082. package/docs/ko/intlayer_with_analog.md +114 -5
  1083. package/docs/ko/intlayer_with_angular_19.md +113 -6
  1084. package/docs/ko/intlayer_with_angular_21.md +107 -6
  1085. package/docs/ko/intlayer_with_astro.md +122 -22
  1086. package/docs/ko/intlayer_with_astro_lit.md +115 -7
  1087. package/docs/ko/intlayer_with_astro_preact.md +115 -7
  1088. package/docs/ko/intlayer_with_astro_react.md +115 -7
  1089. package/docs/ko/intlayer_with_astro_solid.md +115 -7
  1090. package/docs/ko/intlayer_with_astro_svelte.md +115 -7
  1091. package/docs/ko/intlayer_with_astro_vanilla.md +109 -7
  1092. package/docs/ko/intlayer_with_astro_vue.md +115 -7
  1093. package/docs/ko/intlayer_with_create_react_app.md +110 -8
  1094. package/docs/ko/intlayer_with_elysia.md +125 -5
  1095. package/docs/ko/intlayer_with_express.md +118 -4
  1096. package/docs/ko/intlayer_with_fastify.md +119 -6
  1097. package/docs/ko/intlayer_with_hono.md +118 -4
  1098. package/docs/ko/intlayer_with_htmx.md +763 -0
  1099. package/docs/ko/intlayer_with_lynx+react.md +3 -10
  1100. package/docs/ko/intlayer_with_nestjs.md +118 -4
  1101. package/docs/ko/intlayer_with_next-i18next.md +3 -3
  1102. package/docs/ko/intlayer_with_nextjs_14.md +121 -45
  1103. package/docs/ko/intlayer_with_nextjs_15.md +121 -46
  1104. package/docs/ko/intlayer_with_nextjs_16.md +124 -46
  1105. package/docs/ko/intlayer_with_nextjs_compiler.md +113 -4
  1106. package/docs/ko/intlayer_with_nextjs_no_locale_path.md +120 -10
  1107. package/docs/ko/intlayer_with_nextjs_page_router.md +113 -97
  1108. package/docs/ko/intlayer_with_nuxt.md +107 -5
  1109. package/docs/ko/intlayer_with_react_native+expo.md +106 -11
  1110. package/docs/ko/intlayer_with_react_router_v7.md +119 -13
  1111. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +116 -14
  1112. package/docs/ko/intlayer_with_solid_start.md +125 -10
  1113. package/docs/ko/intlayer_with_storybook.md +0 -14
  1114. package/docs/ko/intlayer_with_svelte_kit.md +102 -5
  1115. package/docs/ko/intlayer_with_tanstack+solid.md +124 -20
  1116. package/docs/ko/intlayer_with_tanstack.md +263 -194
  1117. package/docs/ko/intlayer_with_vanilla.md +111 -2
  1118. package/docs/ko/intlayer_with_vite+lit.md +117 -6
  1119. package/docs/ko/intlayer_with_vite+preact.md +146 -37
  1120. package/docs/ko/intlayer_with_vite+react.md +104 -8
  1121. package/docs/ko/intlayer_with_vite+react_compiler.md +110 -13
  1122. package/docs/ko/intlayer_with_vite+solid.md +118 -5
  1123. package/docs/ko/intlayer_with_vite+svelte.md +118 -18
  1124. package/docs/ko/intlayer_with_vite+vanilla.md +124 -14
  1125. package/docs/ko/intlayer_with_vite+vue.md +102 -6
  1126. package/docs/ko/introduction.md +105 -2
  1127. package/docs/ko/migration_from_i18next_to_intlayer.md +3 -5
  1128. package/docs/ko/migration_from_next-i18next_to_intlayer.md +3 -5
  1129. package/docs/ko/migration_from_next-intl_to_intlayer.md +3 -5
  1130. package/docs/ko/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  1131. package/docs/ko/migration_from_react-i18next_to_intlayer.md +3 -5
  1132. package/docs/ko/migration_from_vue-i18n_to_intlayer.md +3 -5
  1133. package/docs/ko/packages/express-intlayer/t.md +9 -6
  1134. package/docs/ko/packages/vite-intlayer/intlayerMinify.md +1 -1
  1135. package/docs/nl/bundle_optimization.md +186 -186
  1136. package/docs/nl/interest_of_intlayer.md +0 -1
  1137. package/docs/nl/intlayer_with_angular_21.md +3 -3
  1138. package/docs/nl/intlayer_with_fastify.md +4 -4
  1139. package/docs/nl/intlayer_with_hono.md +3 -3
  1140. package/docs/nl/intlayer_with_storybook.md +0 -12
  1141. package/docs/nl/intlayer_with_vanilla.md +2 -1
  1142. package/docs/nl/intlayer_with_vite+lit.md +3 -3
  1143. package/docs/nl/intlayer_with_vite+vanilla.md +3 -3
  1144. package/docs/nl/introduction.md +0 -1
  1145. package/docs/pl/analytics.md +488 -21
  1146. package/docs/pl/bundle_optimization.md +186 -186
  1147. package/docs/pl/configuration.md +98 -0
  1148. package/docs/pl/dictionary/content_file.md +4 -4
  1149. package/docs/pl/dictionary/markdown.md +3 -0
  1150. package/docs/pl/dictionary/plurial.md +5 -2
  1151. package/docs/pl/how_works_intlayer.md +92 -0
  1152. package/docs/pl/interest_of_intlayer.md +96 -1
  1153. package/docs/pl/intlayer_CMS.md +92 -0
  1154. package/docs/pl/intlayer_visual_editor.md +87 -1
  1155. package/docs/pl/intlayer_with_adonisjs.md +123 -3
  1156. package/docs/pl/intlayer_with_analog.md +119 -11
  1157. package/docs/pl/intlayer_with_angular_19.md +118 -11
  1158. package/docs/pl/intlayer_with_angular_21.md +112 -11
  1159. package/docs/pl/intlayer_with_astro.md +120 -23
  1160. package/docs/pl/intlayer_with_astro_lit.md +121 -13
  1161. package/docs/pl/intlayer_with_astro_preact.md +121 -13
  1162. package/docs/pl/intlayer_with_astro_react.md +121 -13
  1163. package/docs/pl/intlayer_with_astro_solid.md +121 -13
  1164. package/docs/pl/intlayer_with_astro_svelte.md +121 -13
  1165. package/docs/pl/intlayer_with_astro_vanilla.md +115 -13
  1166. package/docs/pl/intlayer_with_astro_vue.md +121 -13
  1167. package/docs/pl/intlayer_with_create_react_app.md +109 -4
  1168. package/docs/pl/intlayer_with_elysia.md +124 -4
  1169. package/docs/pl/intlayer_with_express.md +117 -3
  1170. package/docs/pl/intlayer_with_fastify.md +118 -4
  1171. package/docs/pl/intlayer_with_hono.md +117 -3
  1172. package/docs/pl/intlayer_with_htmx.md +767 -0
  1173. package/docs/pl/intlayer_with_lynx+react.md +10 -17
  1174. package/docs/pl/intlayer_with_nestjs.md +117 -3
  1175. package/docs/pl/intlayer_with_next-i18next.md +3 -3
  1176. package/docs/pl/intlayer_with_nextjs_14.md +130 -53
  1177. package/docs/pl/intlayer_with_nextjs_15.md +144 -65
  1178. package/docs/pl/intlayer_with_nextjs_16.md +131 -54
  1179. package/docs/pl/intlayer_with_nextjs_compiler.md +125 -16
  1180. package/docs/pl/intlayer_with_nextjs_no_locale_path.md +125 -13
  1181. package/docs/pl/intlayer_with_nextjs_page_router.md +118 -100
  1182. package/docs/pl/intlayer_with_nuxt.md +113 -11
  1183. package/docs/pl/intlayer_with_react_native+expo.md +105 -10
  1184. package/docs/pl/intlayer_with_react_router_v7.md +134 -25
  1185. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +121 -20
  1186. package/docs/pl/intlayer_with_solid_start.md +118 -4
  1187. package/docs/pl/intlayer_with_storybook.md +7 -20
  1188. package/docs/pl/intlayer_with_svelte_kit.md +108 -11
  1189. package/docs/pl/intlayer_with_tanstack+solid.md +127 -25
  1190. package/docs/pl/intlayer_with_tanstack.md +241 -163
  1191. package/docs/pl/intlayer_with_vanilla.md +117 -9
  1192. package/docs/pl/intlayer_with_vite+lit.md +121 -11
  1193. package/docs/pl/intlayer_with_vite+preact.md +151 -43
  1194. package/docs/pl/intlayer_with_vite+react.md +111 -23
  1195. package/docs/pl/intlayer_with_vite+react_compiler.md +111 -6
  1196. package/docs/pl/intlayer_with_vite+solid.md +115 -8
  1197. package/docs/pl/intlayer_with_vite+svelte.md +122 -20
  1198. package/docs/pl/intlayer_with_vite+vanilla.md +128 -11
  1199. package/docs/pl/intlayer_with_vite+vue.md +107 -11
  1200. package/docs/pl/introduction.md +104 -1
  1201. package/docs/pl/migration_from_i18next_to_intlayer.md +3 -5
  1202. package/docs/pl/migration_from_next-i18next_to_intlayer.md +3 -5
  1203. package/docs/pl/migration_from_next-intl_to_intlayer.md +3 -5
  1204. package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  1205. package/docs/pl/migration_from_react-i18next_to_intlayer.md +3 -5
  1206. package/docs/pl/migration_from_vue-i18n_to_intlayer.md +3 -5
  1207. package/docs/pl/packages/next-intlayer/useIntlayer.md +3 -0
  1208. package/docs/pl/packages/vite-intlayer/intlayerMinify.md +1 -1
  1209. package/docs/pt/analytics.md +488 -21
  1210. package/docs/pt/bundle_optimization.md +186 -186
  1211. package/docs/pt/configuration.md +99 -1
  1212. package/docs/pt/dictionary/content_file.md +4 -4
  1213. package/docs/pt/dictionary/html.md +18 -1
  1214. package/docs/pt/dictionary/markdown.md +3 -0
  1215. package/docs/pt/dictionary/plurial.md +5 -2
  1216. package/docs/pt/how_works_intlayer.md +93 -1
  1217. package/docs/pt/interest_of_intlayer.md +98 -3
  1218. package/docs/pt/intlayer_CMS.md +93 -1
  1219. package/docs/pt/intlayer_visual_editor.md +88 -2
  1220. package/docs/pt/intlayer_with_adonisjs.md +124 -4
  1221. package/docs/pt/intlayer_with_analog.md +115 -6
  1222. package/docs/pt/intlayer_with_angular_19.md +112 -5
  1223. package/docs/pt/intlayer_with_angular_21.md +106 -5
  1224. package/docs/pt/intlayer_with_astro.md +114 -17
  1225. package/docs/pt/intlayer_with_astro_lit.md +115 -7
  1226. package/docs/pt/intlayer_with_astro_preact.md +115 -7
  1227. package/docs/pt/intlayer_with_astro_react.md +115 -7
  1228. package/docs/pt/intlayer_with_astro_solid.md +115 -7
  1229. package/docs/pt/intlayer_with_astro_svelte.md +115 -7
  1230. package/docs/pt/intlayer_with_astro_vanilla.md +109 -7
  1231. package/docs/pt/intlayer_with_astro_vue.md +114 -6
  1232. package/docs/pt/intlayer_with_create_react_app.md +110 -5
  1233. package/docs/pt/intlayer_with_elysia.md +125 -5
  1234. package/docs/pt/intlayer_with_express.md +118 -4
  1235. package/docs/pt/intlayer_with_fastify.md +119 -6
  1236. package/docs/pt/intlayer_with_hono.md +118 -4
  1237. package/docs/pt/intlayer_with_htmx.md +771 -0
  1238. package/docs/pt/intlayer_with_lynx+react.md +3 -10
  1239. package/docs/pt/intlayer_with_nestjs.md +118 -4
  1240. package/docs/pt/intlayer_with_next-i18next.md +3 -3
  1241. package/docs/pt/intlayer_with_nextjs_14.md +141 -120
  1242. package/docs/pt/intlayer_with_nextjs_15.md +123 -48
  1243. package/docs/pt/intlayer_with_nextjs_16.md +125 -48
  1244. package/docs/pt/intlayer_with_nextjs_compiler.md +125 -15
  1245. package/docs/pt/intlayer_with_nextjs_no_locale_path.md +118 -6
  1246. package/docs/pt/intlayer_with_nextjs_page_router.md +124 -98
  1247. package/docs/pt/intlayer_with_nuxt.md +107 -5
  1248. package/docs/pt/intlayer_with_react_native+expo.md +106 -11
  1249. package/docs/pt/intlayer_with_react_router_v7.md +143 -36
  1250. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +115 -8
  1251. package/docs/pt/intlayer_with_solid_start.md +124 -9
  1252. package/docs/pt/intlayer_with_storybook.md +0 -13
  1253. package/docs/pt/intlayer_with_svelte_kit.md +102 -5
  1254. package/docs/pt/intlayer_with_tanstack+solid.md +123 -19
  1255. package/docs/pt/intlayer_with_tanstack.md +255 -147
  1256. package/docs/pt/intlayer_with_vanilla.md +111 -3
  1257. package/docs/pt/intlayer_with_vite+lit.md +116 -5
  1258. package/docs/pt/intlayer_with_vite+preact.md +146 -37
  1259. package/docs/pt/intlayer_with_vite+react.md +104 -7
  1260. package/docs/pt/intlayer_with_vite+react_compiler.md +110 -5
  1261. package/docs/pt/intlayer_with_vite+solid.md +117 -5
  1262. package/docs/pt/intlayer_with_vite+svelte.md +117 -14
  1263. package/docs/pt/intlayer_with_vite+vanilla.md +122 -5
  1264. package/docs/pt/intlayer_with_vite+vue.md +101 -5
  1265. package/docs/pt/introduction.md +105 -2
  1266. package/docs/pt/migration_from_i18next_to_intlayer.md +3 -5
  1267. package/docs/pt/migration_from_next-i18next_to_intlayer.md +3 -5
  1268. package/docs/pt/migration_from_next-intl_to_intlayer.md +3 -5
  1269. package/docs/pt/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  1270. package/docs/pt/migration_from_react-i18next_to_intlayer.md +3 -5
  1271. package/docs/pt/migration_from_vue-i18n_to_intlayer.md +3 -5
  1272. package/docs/pt/packages/vite-intlayer/intlayerMinify.md +1 -1
  1273. package/docs/ru/analytics.md +458 -12
  1274. package/docs/ru/bundle_optimization.md +186 -186
  1275. package/docs/ru/cli/doc-review.md +0 -2
  1276. package/docs/ru/configuration.md +99 -1
  1277. package/docs/ru/dictionary/content_file.md +4 -4
  1278. package/docs/ru/dictionary/markdown.md +0 -2
  1279. package/docs/ru/dictionary/plurial.md +6 -3
  1280. package/docs/ru/dictionary/translation.md +1 -1
  1281. package/docs/ru/how_works_intlayer.md +93 -1
  1282. package/docs/ru/interest_of_intlayer.md +97 -2
  1283. package/docs/ru/intlayer_CMS.md +93 -1
  1284. package/docs/ru/intlayer_visual_editor.md +88 -2
  1285. package/docs/ru/intlayer_with_adonisjs.md +124 -4
  1286. package/docs/ru/intlayer_with_analog.md +114 -5
  1287. package/docs/ru/intlayer_with_angular_19.md +112 -5
  1288. package/docs/ru/intlayer_with_angular_21.md +106 -5
  1289. package/docs/ru/intlayer_with_astro.md +114 -17
  1290. package/docs/ru/intlayer_with_astro_lit.md +115 -7
  1291. package/docs/ru/intlayer_with_astro_preact.md +115 -7
  1292. package/docs/ru/intlayer_with_astro_react.md +115 -7
  1293. package/docs/ru/intlayer_with_astro_solid.md +115 -7
  1294. package/docs/ru/intlayer_with_astro_svelte.md +115 -7
  1295. package/docs/ru/intlayer_with_astro_vanilla.md +109 -7
  1296. package/docs/ru/intlayer_with_astro_vue.md +115 -7
  1297. package/docs/ru/intlayer_with_create_react_app.md +110 -5
  1298. package/docs/ru/intlayer_with_elysia.md +125 -5
  1299. package/docs/ru/intlayer_with_express.md +118 -4
  1300. package/docs/ru/intlayer_with_fastify.md +119 -5
  1301. package/docs/ru/intlayer_with_hono.md +118 -4
  1302. package/docs/ru/intlayer_with_htmx.md +767 -0
  1303. package/docs/ru/intlayer_with_lynx+react.md +3 -10
  1304. package/docs/ru/intlayer_with_nestjs.md +118 -4
  1305. package/docs/ru/intlayer_with_next-i18next.md +3 -3
  1306. package/docs/ru/intlayer_with_nextjs_14.md +141 -117
  1307. package/docs/ru/intlayer_with_nextjs_15.md +126 -65
  1308. package/docs/ru/intlayer_with_nextjs_16.md +125 -48
  1309. package/docs/ru/intlayer_with_nextjs_compiler.md +126 -17
  1310. package/docs/ru/intlayer_with_nextjs_no_locale_path.md +118 -6
  1311. package/docs/ru/intlayer_with_nextjs_page_router.md +113 -98
  1312. package/docs/ru/intlayer_with_nuxt.md +107 -5
  1313. package/docs/ru/intlayer_with_react_native+expo.md +106 -11
  1314. package/docs/ru/intlayer_with_react_router_v7.md +116 -7
  1315. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +111 -4
  1316. package/docs/ru/intlayer_with_solid_start.md +120 -5
  1317. package/docs/ru/intlayer_with_storybook.md +0 -13
  1318. package/docs/ru/intlayer_with_svelte_kit.md +102 -5
  1319. package/docs/ru/intlayer_with_tanstack+solid.md +122 -19
  1320. package/docs/ru/intlayer_with_tanstack.md +233 -154
  1321. package/docs/ru/intlayer_with_vanilla.md +111 -3
  1322. package/docs/ru/intlayer_with_vite+lit.md +116 -5
  1323. package/docs/ru/intlayer_with_vite+preact.md +146 -37
  1324. package/docs/ru/intlayer_with_vite+react.md +105 -17
  1325. package/docs/ru/intlayer_with_vite+react_compiler.md +110 -5
  1326. package/docs/ru/intlayer_with_vite+solid.md +117 -5
  1327. package/docs/ru/intlayer_with_vite+svelte.md +119 -24
  1328. package/docs/ru/intlayer_with_vite+vanilla.md +122 -5
  1329. package/docs/ru/intlayer_with_vite+vue.md +102 -6
  1330. package/docs/ru/introduction.md +105 -2
  1331. package/docs/ru/migration_from_i18next_to_intlayer.md +3 -5
  1332. package/docs/ru/migration_from_next-i18next_to_intlayer.md +3 -5
  1333. package/docs/ru/migration_from_next-intl_to_intlayer.md +3 -5
  1334. package/docs/ru/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  1335. package/docs/ru/migration_from_react-i18next_to_intlayer.md +3 -5
  1336. package/docs/ru/migration_from_vue-i18n_to_intlayer.md +3 -5
  1337. package/docs/ru/packages/vite-intlayer/intlayerMinify.md +1 -1
  1338. package/docs/tr/analytics.md +488 -21
  1339. package/docs/tr/bundle_optimization.md +186 -186
  1340. package/docs/tr/cli/doc-review.md +0 -2
  1341. package/docs/tr/configuration.md +98 -0
  1342. package/docs/tr/dictionary/content_file.md +4 -4
  1343. package/docs/tr/dictionary/markdown.md +3 -0
  1344. package/docs/tr/dictionary/plurial.md +6 -3
  1345. package/docs/tr/how_works_intlayer.md +92 -0
  1346. package/docs/tr/interest_of_intlayer.md +96 -1
  1347. package/docs/tr/intlayer_CMS.md +92 -0
  1348. package/docs/tr/intlayer_visual_editor.md +87 -1
  1349. package/docs/tr/intlayer_with_adonisjs.md +124 -3
  1350. package/docs/tr/intlayer_with_analog.md +112 -4
  1351. package/docs/tr/intlayer_with_angular_19.md +111 -4
  1352. package/docs/tr/intlayer_with_angular_21.md +105 -4
  1353. package/docs/tr/intlayer_with_astro.md +120 -30
  1354. package/docs/tr/intlayer_with_astro_lit.md +114 -6
  1355. package/docs/tr/intlayer_with_astro_preact.md +114 -6
  1356. package/docs/tr/intlayer_with_astro_react.md +114 -6
  1357. package/docs/tr/intlayer_with_astro_solid.md +114 -6
  1358. package/docs/tr/intlayer_with_astro_svelte.md +114 -6
  1359. package/docs/tr/intlayer_with_astro_vanilla.md +108 -6
  1360. package/docs/tr/intlayer_with_astro_vue.md +114 -6
  1361. package/docs/tr/intlayer_with_create_react_app.md +109 -4
  1362. package/docs/tr/intlayer_with_elysia.md +125 -4
  1363. package/docs/tr/intlayer_with_express.md +117 -3
  1364. package/docs/tr/intlayer_with_fastify.md +119 -4
  1365. package/docs/tr/intlayer_with_hono.md +117 -3
  1366. package/docs/tr/intlayer_with_htmx.md +761 -0
  1367. package/docs/tr/intlayer_with_lynx+react.md +3 -10
  1368. package/docs/tr/intlayer_with_nestjs.md +118 -3
  1369. package/docs/tr/intlayer_with_next-i18next.md +3 -3
  1370. package/docs/tr/intlayer_with_nextjs_14.md +128 -54
  1371. package/docs/tr/intlayer_with_nextjs_15.md +122 -47
  1372. package/docs/tr/intlayer_with_nextjs_16.md +123 -46
  1373. package/docs/tr/intlayer_with_nextjs_compiler.md +124 -16
  1374. package/docs/tr/intlayer_with_nextjs_no_locale_path.md +117 -5
  1375. package/docs/tr/intlayer_with_nextjs_page_router.md +127 -123
  1376. package/docs/tr/intlayer_with_nuxt.md +106 -4
  1377. package/docs/tr/intlayer_with_react_native+expo.md +105 -10
  1378. package/docs/tr/intlayer_with_react_router_v7.md +115 -6
  1379. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +110 -3
  1380. package/docs/tr/intlayer_with_solid_start.md +118 -4
  1381. package/docs/tr/intlayer_with_storybook.md +0 -13
  1382. package/docs/tr/intlayer_with_svelte_kit.md +101 -4
  1383. package/docs/tr/intlayer_with_tanstack+solid.md +120 -18
  1384. package/docs/tr/intlayer_with_tanstack.md +262 -131
  1385. package/docs/tr/intlayer_with_vanilla.md +110 -2
  1386. package/docs/tr/intlayer_with_vite+lit.md +114 -4
  1387. package/docs/tr/intlayer_with_vite+preact.md +144 -36
  1388. package/docs/tr/intlayer_with_vite+react.md +103 -6
  1389. package/docs/tr/intlayer_with_vite+react_compiler.md +109 -4
  1390. package/docs/tr/intlayer_with_vite+solid.md +115 -4
  1391. package/docs/tr/intlayer_with_vite+svelte.md +115 -13
  1392. package/docs/tr/intlayer_with_vite+vanilla.md +121 -4
  1393. package/docs/tr/intlayer_with_vite+vue.md +102 -7
  1394. package/docs/tr/introduction.md +104 -1
  1395. package/docs/tr/migration_from_i18next_to_intlayer.md +3 -5
  1396. package/docs/tr/migration_from_next-i18next_to_intlayer.md +3 -5
  1397. package/docs/tr/migration_from_next-intl_to_intlayer.md +3 -5
  1398. package/docs/tr/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  1399. package/docs/tr/migration_from_react-i18next_to_intlayer.md +3 -5
  1400. package/docs/tr/migration_from_vue-i18n_to_intlayer.md +3 -5
  1401. package/docs/tr/packages/vite-intlayer/intlayerMinify.md +1 -1
  1402. package/docs/uk/analytics.md +488 -21
  1403. package/docs/uk/bundle_optimization.md +186 -186
  1404. package/docs/uk/configuration.md +98 -0
  1405. package/docs/uk/dictionary/content_file.md +4 -4
  1406. package/docs/uk/dictionary/markdown.md +3 -0
  1407. package/docs/uk/dictionary/plurial.md +6 -3
  1408. package/docs/uk/how_works_intlayer.md +92 -0
  1409. package/docs/uk/interest_of_intlayer.md +96 -1
  1410. package/docs/uk/intlayer_CMS.md +92 -0
  1411. package/docs/uk/intlayer_visual_editor.md +87 -1
  1412. package/docs/uk/intlayer_with_adonisjs.md +124 -3
  1413. package/docs/uk/intlayer_with_analog.md +112 -4
  1414. package/docs/uk/intlayer_with_angular_19.md +111 -4
  1415. package/docs/uk/intlayer_with_angular_21.md +105 -4
  1416. package/docs/uk/intlayer_with_astro.md +113 -16
  1417. package/docs/uk/intlayer_with_astro_lit.md +114 -6
  1418. package/docs/uk/intlayer_with_astro_preact.md +114 -6
  1419. package/docs/uk/intlayer_with_astro_react.md +114 -6
  1420. package/docs/uk/intlayer_with_astro_solid.md +114 -6
  1421. package/docs/uk/intlayer_with_astro_svelte.md +114 -6
  1422. package/docs/uk/intlayer_with_astro_vanilla.md +108 -6
  1423. package/docs/uk/intlayer_with_astro_vue.md +114 -6
  1424. package/docs/uk/intlayer_with_create_react_app.md +109 -4
  1425. package/docs/uk/intlayer_with_elysia.md +125 -4
  1426. package/docs/uk/intlayer_with_express.md +117 -3
  1427. package/docs/uk/intlayer_with_fastify.md +119 -4
  1428. package/docs/uk/intlayer_with_hono.md +117 -3
  1429. package/docs/uk/intlayer_with_htmx.md +760 -0
  1430. package/docs/uk/intlayer_with_lynx+react.md +3 -10
  1431. package/docs/uk/intlayer_with_nestjs.md +118 -3
  1432. package/docs/uk/intlayer_with_next-i18next.md +3 -3
  1433. package/docs/uk/intlayer_with_nextjs_14.md +122 -47
  1434. package/docs/uk/intlayer_with_nextjs_15.md +136 -59
  1435. package/docs/uk/intlayer_with_nextjs_16.md +124 -47
  1436. package/docs/uk/intlayer_with_nextjs_compiler.md +125 -17
  1437. package/docs/uk/intlayer_with_nextjs_no_locale_path.md +117 -5
  1438. package/docs/uk/intlayer_with_nextjs_page_router.md +114 -99
  1439. package/docs/uk/intlayer_with_nuxt.md +106 -4
  1440. package/docs/uk/intlayer_with_react_native+expo.md +105 -10
  1441. package/docs/uk/intlayer_with_react_router_v7.md +115 -6
  1442. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +110 -3
  1443. package/docs/uk/intlayer_with_solid_start.md +118 -4
  1444. package/docs/uk/intlayer_with_storybook.md +0 -13
  1445. package/docs/uk/intlayer_with_svelte_kit.md +101 -4
  1446. package/docs/uk/intlayer_with_tanstack+solid.md +120 -18
  1447. package/docs/uk/intlayer_with_tanstack.md +238 -135
  1448. package/docs/uk/intlayer_with_vanilla.md +110 -2
  1449. package/docs/uk/intlayer_with_vite+lit.md +114 -4
  1450. package/docs/uk/intlayer_with_vite+preact.md +170 -34
  1451. package/docs/uk/intlayer_with_vite+react.md +104 -16
  1452. package/docs/uk/intlayer_with_vite+react_compiler.md +109 -4
  1453. package/docs/uk/intlayer_with_vite+solid.md +115 -4
  1454. package/docs/uk/intlayer_with_vite+svelte.md +115 -13
  1455. package/docs/uk/intlayer_with_vite+vanilla.md +121 -4
  1456. package/docs/uk/intlayer_with_vite+vue.md +100 -4
  1457. package/docs/uk/introduction.md +104 -1
  1458. package/docs/uk/migration_from_i18next_to_intlayer.md +3 -5
  1459. package/docs/uk/migration_from_next-i18next_to_intlayer.md +3 -5
  1460. package/docs/uk/migration_from_next-intl_to_intlayer.md +3 -5
  1461. package/docs/uk/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  1462. package/docs/uk/migration_from_react-i18next_to_intlayer.md +3 -5
  1463. package/docs/uk/migration_from_vue-i18n_to_intlayer.md +3 -5
  1464. package/docs/uk/packages/vite-intlayer/intlayerMinify.md +1 -1
  1465. package/docs/ur/bundle_optimization.md +186 -186
  1466. package/docs/ur/intlayer_with_angular_21.md +3 -3
  1467. package/docs/ur/intlayer_with_fastify.md +4 -4
  1468. package/docs/ur/intlayer_with_hono.md +3 -3
  1469. package/docs/ur/intlayer_with_storybook.md +0 -12
  1470. package/docs/ur/intlayer_with_vanilla.md +2 -1
  1471. package/docs/ur/intlayer_with_vite+lit.md +3 -3
  1472. package/docs/ur/intlayer_with_vite+vanilla.md +3 -3
  1473. package/docs/ur/introduction.md +0 -1
  1474. package/docs/vi/analytics.md +488 -21
  1475. package/docs/vi/bundle_optimization.md +186 -186
  1476. package/docs/vi/configuration.md +98 -0
  1477. package/docs/vi/dictionary/content_file.md +4 -4
  1478. package/docs/vi/dictionary/markdown.md +3 -0
  1479. package/docs/vi/dictionary/plurial.md +5 -2
  1480. package/docs/vi/how_works_intlayer.md +92 -0
  1481. package/docs/vi/interest_of_intlayer.md +96 -1
  1482. package/docs/vi/intlayer_CMS.md +92 -0
  1483. package/docs/vi/intlayer_visual_editor.md +87 -1
  1484. package/docs/vi/intlayer_with_adonisjs.md +124 -3
  1485. package/docs/vi/intlayer_with_analog.md +112 -4
  1486. package/docs/vi/intlayer_with_angular_19.md +111 -4
  1487. package/docs/vi/intlayer_with_angular_21.md +105 -4
  1488. package/docs/vi/intlayer_with_astro.md +113 -16
  1489. package/docs/vi/intlayer_with_astro_lit.md +114 -6
  1490. package/docs/vi/intlayer_with_astro_preact.md +114 -6
  1491. package/docs/vi/intlayer_with_astro_react.md +114 -6
  1492. package/docs/vi/intlayer_with_astro_solid.md +114 -6
  1493. package/docs/vi/intlayer_with_astro_svelte.md +114 -6
  1494. package/docs/vi/intlayer_with_astro_vanilla.md +108 -6
  1495. package/docs/vi/intlayer_with_astro_vue.md +114 -6
  1496. package/docs/vi/intlayer_with_create_react_app.md +109 -4
  1497. package/docs/vi/intlayer_with_elysia.md +125 -4
  1498. package/docs/vi/intlayer_with_express.md +117 -3
  1499. package/docs/vi/intlayer_with_fastify.md +119 -4
  1500. package/docs/vi/intlayer_with_hono.md +117 -3
  1501. package/docs/vi/intlayer_with_htmx.md +760 -0
  1502. package/docs/vi/intlayer_with_lynx+react.md +3 -10
  1503. package/docs/vi/intlayer_with_nestjs.md +118 -3
  1504. package/docs/vi/intlayer_with_next-i18next.md +3 -3
  1505. package/docs/vi/intlayer_with_nextjs_14.md +136 -56
  1506. package/docs/vi/intlayer_with_nextjs_15.md +136 -59
  1507. package/docs/vi/intlayer_with_nextjs_16.md +124 -47
  1508. package/docs/vi/intlayer_with_nextjs_compiler.md +125 -17
  1509. package/docs/vi/intlayer_with_nextjs_no_locale_path.md +117 -5
  1510. package/docs/vi/intlayer_with_nextjs_page_router.md +114 -95
  1511. package/docs/vi/intlayer_with_nuxt.md +106 -4
  1512. package/docs/vi/intlayer_with_react_native+expo.md +105 -10
  1513. package/docs/vi/intlayer_with_react_router_v7.md +115 -6
  1514. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +116 -16
  1515. package/docs/vi/intlayer_with_solid_start.md +118 -4
  1516. package/docs/vi/intlayer_with_storybook.md +0 -13
  1517. package/docs/vi/intlayer_with_svelte_kit.md +101 -4
  1518. package/docs/vi/intlayer_with_tanstack+solid.md +120 -18
  1519. package/docs/vi/intlayer_with_tanstack.md +252 -172
  1520. package/docs/vi/intlayer_with_vanilla.md +110 -2
  1521. package/docs/vi/intlayer_with_vite+lit.md +114 -4
  1522. package/docs/vi/intlayer_with_vite+preact.md +150 -17
  1523. package/docs/vi/intlayer_with_vite+react.md +104 -16
  1524. package/docs/vi/intlayer_with_vite+react_compiler.md +109 -4
  1525. package/docs/vi/intlayer_with_vite+solid.md +115 -4
  1526. package/docs/vi/intlayer_with_vite+svelte.md +115 -13
  1527. package/docs/vi/intlayer_with_vite+vanilla.md +121 -4
  1528. package/docs/vi/intlayer_with_vite+vue.md +100 -4
  1529. package/docs/vi/introduction.md +104 -1
  1530. package/docs/vi/migration_from_i18next_to_intlayer.md +3 -5
  1531. package/docs/vi/migration_from_next-i18next_to_intlayer.md +3 -5
  1532. package/docs/vi/migration_from_next-intl_to_intlayer.md +3 -5
  1533. package/docs/vi/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  1534. package/docs/vi/migration_from_react-i18next_to_intlayer.md +3 -5
  1535. package/docs/vi/migration_from_vue-i18n_to_intlayer.md +3 -5
  1536. package/docs/vi/packages/vite-intlayer/intlayerMinify.md +1 -1
  1537. package/docs/zh/analytics.md +458 -12
  1538. package/docs/zh/bundle_optimization.md +186 -186
  1539. package/docs/zh/configuration.md +99 -1
  1540. package/docs/zh/dictionary/content_file.md +4 -4
  1541. package/docs/zh/dictionary/markdown.md +18 -1
  1542. package/docs/zh/dictionary/plurial.md +6 -3
  1543. package/docs/zh/how_works_intlayer.md +93 -1
  1544. package/docs/zh/interest_of_intlayer.md +108 -13
  1545. package/docs/zh/intlayer_CMS.md +93 -1
  1546. package/docs/zh/intlayer_visual_editor.md +88 -2
  1547. package/docs/zh/intlayer_with_adonisjs.md +124 -4
  1548. package/docs/zh/intlayer_with_analog.md +121 -12
  1549. package/docs/zh/intlayer_with_angular_19.md +120 -13
  1550. package/docs/zh/intlayer_with_angular_21.md +113 -12
  1551. package/docs/zh/intlayer_with_astro.md +111 -7
  1552. package/docs/zh/intlayer_with_astro_lit.md +117 -10
  1553. package/docs/zh/intlayer_with_astro_preact.md +117 -10
  1554. package/docs/zh/intlayer_with_astro_react.md +117 -10
  1555. package/docs/zh/intlayer_with_astro_solid.md +117 -10
  1556. package/docs/zh/intlayer_with_astro_svelte.md +117 -10
  1557. package/docs/zh/intlayer_with_astro_vanilla.md +111 -10
  1558. package/docs/zh/intlayer_with_astro_vue.md +117 -10
  1559. package/docs/zh/intlayer_with_create_react_app.md +113 -9
  1560. package/docs/zh/intlayer_with_elysia.md +125 -5
  1561. package/docs/zh/intlayer_with_express.md +118 -4
  1562. package/docs/zh/intlayer_with_fastify.md +119 -5
  1563. package/docs/zh/intlayer_with_hono.md +118 -4
  1564. package/docs/zh/intlayer_with_htmx.md +769 -0
  1565. package/docs/zh/intlayer_with_lynx+react.md +11 -16
  1566. package/docs/zh/intlayer_with_nestjs.md +118 -4
  1567. package/docs/zh/intlayer_with_next-i18next.md +3 -3
  1568. package/docs/zh/intlayer_with_nextjs_14.md +123 -48
  1569. package/docs/zh/intlayer_with_nextjs_15.md +124 -47
  1570. package/docs/zh/intlayer_with_nextjs_16.md +124 -45
  1571. package/docs/zh/intlayer_with_nextjs_compiler.md +124 -17
  1572. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +125 -13
  1573. package/docs/zh/intlayer_with_nextjs_page_router.md +113 -97
  1574. package/docs/zh/intlayer_with_nuxt.md +114 -12
  1575. package/docs/zh/intlayer_with_react_native+expo.md +106 -11
  1576. package/docs/zh/intlayer_with_react_router_v7.md +134 -31
  1577. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +134 -30
  1578. package/docs/zh/intlayer_with_solid_start.md +125 -10
  1579. package/docs/zh/intlayer_with_storybook.md +7 -20
  1580. package/docs/zh/intlayer_with_svelte_kit.md +109 -12
  1581. package/docs/zh/intlayer_with_tanstack+solid.md +132 -32
  1582. package/docs/zh/intlayer_with_tanstack.md +254 -194
  1583. package/docs/zh/intlayer_with_vanilla.md +118 -10
  1584. package/docs/zh/intlayer_with_vite+lit.md +124 -11
  1585. package/docs/zh/intlayer_with_vite+preact.md +153 -44
  1586. package/docs/zh/intlayer_with_vite+react.md +107 -15
  1587. package/docs/zh/intlayer_with_vite+react_compiler.md +110 -5
  1588. package/docs/zh/intlayer_with_vite+solid.md +116 -5
  1589. package/docs/zh/intlayer_with_vite+svelte.md +131 -26
  1590. package/docs/zh/intlayer_with_vite+vanilla.md +129 -12
  1591. package/docs/zh/intlayer_with_vite+vue.md +102 -6
  1592. package/docs/zh/introduction.md +105 -2
  1593. package/docs/zh/migration_from_i18next_to_intlayer.md +3 -5
  1594. package/docs/zh/migration_from_next-i18next_to_intlayer.md +3 -5
  1595. package/docs/zh/migration_from_next-intl_to_intlayer.md +3 -5
  1596. package/docs/zh/migration_from_nuxtjs_i18n_to_intlayer.md +3 -5
  1597. package/docs/zh/migration_from_react-i18next_to_intlayer.md +3 -5
  1598. package/docs/zh/migration_from_vue-i18n_to_intlayer.md +3 -5
  1599. package/docs/zh/packages/vite-intlayer/intlayerMinify.md +1 -1
  1600. package/docs/zh/releases/v6.md +1 -1
  1601. package/docs/zh-TW/bundle_optimization.md +186 -186
  1602. package/docs/zh-TW/intlayer_with_angular_21.md +3 -3
  1603. package/docs/zh-TW/introduction.md +0 -1
  1604. package/package.json +7 -7
  1605. package/src/common.ts +45 -18
  1606. package/src/generated/blog.entry.ts +349 -0
  1607. package/src/generated/docs.entry.ts +20 -0
@@ -0,0 +1,314 @@
1
+ ---
2
+ createdAt: 2026-08-29
3
+ updatedAt: 2026-08-29
4
+ title: "Hreflang,多语言 SEO 指南"
5
+ description: "什么是 hreflang,搜索引擎强制执行的规则,为什么 x-default 几乎总是错误的,以及如何在 Next.js 和 TanStack Start 中生成正确的标签。"
6
+ keywords:
7
+ - hreflang
8
+ - SEO
9
+ - Internationalization
10
+ - Intlayer
11
+ - i18n
12
+ - Sitemap
13
+ - Canonical
14
+ - Next.js
15
+ - TanStack Start
16
+ slugs:
17
+ - blog
18
+ - hreflang-guide-multilingual-seo
19
+ author: aymericzip
20
+ ---
21
+
22
+ # Hreflang:多语言 SEO 指南
23
+
24
+ 你翻译了你的应用。你发布了 `/en`、`/fr`、`/es`。但法语用户仍然登录到英文页面。
25
+
26
+ 翻译很容易。困难的一半是告诉搜索引擎这些页面是**同一页面的其他语言版本**,而不是三个相互竞争的文档。这就是 `hreflang` 的作用,也是大多数多语言网站悄悄失去流量的地方。
27
+
28
+ ---
29
+
30
+ ## hreflang 实际上是什么
31
+
32
+ 一个页面上的注释,说:_这个 URL 在那里有等效的版本,适用于那些语言。_
33
+
34
+ ```html
35
+ <link rel="alternate" hreflang="en" href="https://example.com/about" />
36
+ <link rel="alternate" hreflang="fr" href="https://example.com/fr/about" />
37
+ <link rel="alternate" hreflang="es" href="https://example.com/es/about" />
38
+ <link rel="alternate" hreflang="x-default" href="https://example.com/about" />
39
+ ```
40
+
41
+ 它为你争取两样东西:为合适的用户展示正确的版本,以及将你的多语言版本合并到一个集群中,而不是作为重复内容互相蚕食。
42
+
43
+ 需要明确的是它不是什么。它**不是重定向**——它是一个提示,Google 可能会覆盖它。它**不是排名提升**——它改变的是_哪个_版本排名,而不是_是否_排名。而且 Bing 完全忽略它,而是依赖 `content-language` 和地理定位。
44
+
45
+ ---
46
+
47
+ ## 在哪里声明它
48
+
49
+ 三种放置方式,都有效。选择一种并坚持——同一个集群在两个地方声明是集合漂移的原因。
50
+
51
+ **HTML `<head>`** 是通常的选择。一个需要注意的问题:水合后注入的标签是不可靠的。如果你的框架只在客户端添加它们,爬虫可能永远看不到它们。
52
+
53
+ **XML sitemap** 在大规模使用中更有优势。十个语言版本跨越 5,000 页面意味着需要向浏览器发送 50,000 个 `<link>` 元素,而这些元素对页面毫无用处;在 sitemap 中它不会占用页面的任何字节。
54
+
55
+ **HTTP `Link` header** 是唯一适用于 PDF 等非 HTML 文件的选项。
56
+
57
+ ---
58
+
59
+ ## 规则
60
+
61
+ ### 自我引用和互惠性
62
+
63
+ 设置在 `/fr/about` 上必须包含指向 `/fr/about` 的 `hreflang="fr"`。如果 `/about` 指向 `/fr/about`,那么 `/fr/about` 也必须指回去。Google 将单向引用称为"no return tag"并将其丢弃。
64
+
65
+ 实际上这意味着**集群中的每一页都必须发送相同的链接集**。从一个共享的语言列表生成它们不仅仅是一种便利,一旦你拥有超过两个语言版本,这是保持正确性的唯一方式。
66
+
67
+ ### 始终使用绝对 URL
68
+
69
+ ```html
70
+ <!-- 被默认忽略 -->
71
+ <link rel="alternate" hreflang="fr" href="/fr/about" />
72
+
73
+ <!-- 正确 -->
74
+ <link rel="alternate" hreflang="fr" href="https://example.com/fr/about" />
75
+ ```
76
+
77
+ 这个原因值得理解而不仅仅是记忆。`hreflang` 是一个跨文档引用:搜索引擎构建一个由 URL 键值的集群,在集群中的每一页都共享这个集群。相对路径只有相对于它所在的文档才有意义,因此它无法表达这一点。它也无法跨越主机——而替代版本通常会这样做,当一个语言版本存在于 `example.fr` 或 `fr.example.com` 时。在 sitemap 或 HTTP 头中,根本没有可以用来解析的基础文档。
78
+
79
+ 这在代码中有直接的后果。`getLocalizedUrl("/about", "fr")` 返回 `/fr/about` — 相对路径输入,相对路径输出。对于 `hreflang`,你必须向其提供绝对 URL:
80
+
81
+ ```ts
82
+ getLocalizedUrl("/about", "fr"); // → "/fr/about" ❌ 被丢弃
83
+ getLocalizedUrl("https://example.com/about", "fr"); // → "https://example.com/fr/about" ✅
84
+ ```
85
+
86
+ 唯一的例外是一个框架在渲染之前为你解析相对值:Next.js 根据 `metadataBase` 展开相对的 `alternates`。没问题 — 但规则适用于**发出的 HTML**,所以用 `curl` 检查,而不是 DevTools 检查器。
87
+
88
+ ### 语言代码
89
+
90
+ ISO 639-1 用于语言,ISO 3166-1 Alpha 2 用于可选的地区:`fr`、`fr-CA`、`pt-BR`。
91
+
92
+ 两个陷阱几乎会困住每个人。单独的地区代码是无效的——`hreflang="ca"` 表示加泰罗尼亚语,而不是加拿大;你需要 `en-CA` 或 `fr-CA`。而 `en-UK` 不存在:英国的国家代码是 `GB`,所以是 `en-GB`。
93
+
94
+ 只有在你确实为该地区提供不同内容时才添加地区——不同的价格、不同的法律声明。`fr` 和 `fr-FR` 在相同内容上是冗余的。
95
+
96
+ ### x-default
97
+
98
+ ```html
99
+ <link rel="alternate" hreflang="x-default" href="https://example.com/" />
100
+ ```
101
+
102
+ 最容易被遗忘且最容易被误解的一个概念是 `x-default`——少于 30% 的应用正确实现它。
103
+
104
+ 这是用户语言与你的集合中任何内容都不匹配时的回退方案。荷兰语使用者访问仅提供英语、法语和西班牙语的网站时无法匹配任何条目;没有 `x-default`,Google 会为你做出选择。
105
+
106
+ 人们经常误解的是它的含义。`x-default` **不是"英文版本"** 也 **不是"默认 locale"**,尽管它通常指向那里。它的意思是 _这个集合不覆盖的用户的页面_。这就是为什么让它指向语言选择器或地理重定向登陆页面是合理的,通常也更好——而不是指向 `/en`。如果你没有这样的页面,你的主要语言是明智的选择。
107
+
108
+ 两件事需要区分清楚:`x-default` 是该集合中的一个额外条目,而不是自引用条目的替代品,而且像其他每个条目一样,它必须在集群中的每个页面上完全相同地出现。
109
+
110
+ ---
111
+
112
+ ## canonical 陷阱
113
+
114
+ 每个本地化页面必须**是它自己的 canonical**:
115
+
116
+ ```html
117
+ <!-- 在 https://example.com/fr/about -->
118
+ <link rel="canonical" href="https://example.com/fr/about" />
119
+ <link rel="alternate" hreflang="fr" href="https://example.com/fr/about" />
120
+ <link rel="alternate" hreflang="en" href="https://example.com/about" />
121
+ ```
122
+
123
+ 将每个语言版本的 canonical 都指向英文版本反而会这样做:
124
+
125
+ ```html
126
+ <!-- 在 https://example.com/fr/about — 会破坏该页面 -->
127
+ <link rel="canonical" href="https://example.com/about" />
128
+ ```
129
+
130
+ 表示法语页面是不应被索引的重复内容,而 `hreflang` 则表示这是应该提供给法语用户的页面。这些信号相互矛盾,canonical 优先级更高,结果是你的法语页面会被从索引中移除。
131
+
132
+ **Canonical 在每个语言版本中是自引用的。`hreflang` 描述的是整个集群。**
133
+
134
+ ---
135
+
136
+ ## 选择 URL 结构
137
+
138
+ `hreflang` 对 URL 进行注释,所以结构应该优先考虑。
139
+
140
+ | 结构 | 示例 | 权衡 |
141
+ | ---------- | ----------------- | ------------------------------------------------- |
142
+ | **子目录** | `example.com/fr/` | 一个域名,权限共享 — 地理信号较弱 |
143
+ | **子域名** | `fr.example.com` | 易于添加或删除语言版本 — 可能看起来像一个独立网站 |
144
+ | **ccTLDs** | `example.fr` | 最强的国家信号 — 每个域名建立权限 |
145
+
146
+ 对大多数项目来说,子目录是正确的默认选择。只有当你真正以独立的国家业务运营时,才应该考虑使用 ccTLDs。
147
+
148
+ 应该避免的一个结构是:基于 `Accept-Language` 或 IP 在**同一 URL** 上提供不同的语言。爬虫会看到一个版本并索引一个版本;其他所有内容都是不可见的。
149
+
150
+ > Intlayer 通过 `routing.mode` 和 `routing.domains` 支持这三种方式。参见[自定义域名](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/custom_domains.md)和[配置参考](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
151
+
152
+ ---
153
+
154
+ ## 实现
155
+
156
+ 手动编写这些标签无法在添加第二种语言时保持一致。应该从你的语言列表中派生它们。
157
+
158
+ <Steps>
159
+
160
+ <Step number={1} title="在每个页面上发出集群">
161
+
162
+ 相同的集合到处都有,每个语言环境的规范链接,绝对URL,包括 `x-default`。
163
+
164
+ <Tabs>
165
+
166
+ <Tab label="Next.js" value="nextjs">
167
+
168
+ Metadata API 暴露 `alternates.languages`,而 `getMultilingualUrls` 从你配置的语言环境构建整个记录:
169
+
170
+ ```tsx fileName="src/app/[locale]/about/page.tsx"
171
+ import { getMultilingualUrls } from "intlayer";
172
+ import type { Metadata } from "next";
173
+ import type { LocalPromiseParams } from "next-intlayer";
174
+
175
+ const SITE_URL = "https://example.com";
176
+
177
+ export const generateMetadata = async ({
178
+ params,
179
+ }: LocalPromiseParams): Promise<Metadata> => {
180
+ const { locale } = await params;
181
+
182
+ /**
183
+ * getMultilingualUrls(`${SITE_URL}/about`) 返回:
184
+ * {
185
+ * en: 'https://example.com/about',
186
+ * fr: 'https://example.com/fr/about',
187
+ * es: 'https://example.com/es/about',
188
+ * }
189
+ */
190
+ const multilingualUrls = getMultilingualUrls(`${SITE_URL}/about`);
191
+
192
+ return {
193
+ alternates: {
194
+ canonical: multilingualUrls[locale as keyof typeof multilingualUrls],
195
+ languages: { ...multilingualUrls, "x-default": `${SITE_URL}/about` },
196
+ },
197
+ };
198
+ };
199
+ ```
200
+
201
+ 完整设置: [Next.js 16 i18n 指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_with_nextjs_16.md)。
202
+
203
+ </Tab>
204
+
205
+ <Tab label="TanStack Start" value="tanstack">
206
+
207
+ 路由的 `head` 函数构建链接。`localeMap` 遍历你配置的语言环境,所以向配置中添加一个语言环境会在所有地方同时添加它:
208
+
209
+ ```tsx fileName="src/routes/{-$locale}/about.tsx"
210
+ import { createFileRoute } from "@tanstack/react-router";
211
+ import { defaultLocale, getLocalizedUrl, localeMap } from "intlayer";
212
+
213
+ const SITE_URL = "https://example.com";
214
+
215
+ export const Route = createFileRoute("/{-$locale}/about")({
216
+ head: ({ params }) => {
217
+ const { locale = defaultLocale } = params;
218
+ const url = `${SITE_URL}/about`;
219
+
220
+ return {
221
+ links: [
222
+ { rel: "canonical", href: getLocalizedUrl(url, locale) },
223
+
224
+ ...localeMap(({ locale: mapLocale }) => ({
225
+ rel: "alternate",
226
+ hrefLang: mapLocale,
227
+ href: getLocalizedUrl(url, mapLocale),
228
+ })),
229
+
230
+ {
231
+ rel: "alternate",
232
+ hrefLang: "x-default",
233
+ href: getLocalizedUrl(url, defaultLocale),
234
+ },
235
+ ],
236
+ };
237
+ },
238
+ });
239
+ ```
240
+
241
+ `head` 在服务器上运行,因此标签会被插入初始 HTML 中。完整配置:[TanStack Start i18n 指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_with_tanstack.md)。
242
+
243
+ </Tab>
244
+
245
+ </Tabs>
246
+
247
+ </Step>
248
+
249
+ <Step number={2} title="或将其全部移至站点地图">
250
+
251
+ 大规模应用时,将注解完全从页面中移出。`generateSitemap` 根据配置读取 locale 和路由模式,为每个条目生成 `xhtml:link` 备用链接:
252
+
253
+ ```ts fileName="src/routes/sitemap[.]xml.ts"
254
+ import { generateSitemap } from "intlayer";
255
+
256
+ const sitemap = generateSitemap(
257
+ [
258
+ { path: "/", changefreq: "daily", priority: 1.0 },
259
+ { path: "/about", changefreq: "monthly", priority: 0.8 },
260
+ ],
261
+ { siteUrl: "https://example.com" }
262
+ );
263
+ ```
264
+
265
+ 两个值得了解的选项:
266
+
267
+ - `xhtmlLinks` (默认值 `true`) — 只有在 locale URL 实际不同时,才会发出交替链接。在 `no-prefix` 模式下,每个 locale 共享一个 URL,因此除非 `routing.domains` 为 locale 分配自己的主机名,否则会被跳过。
268
+ - `entryPerLocale`(默认值 `false`)—— 默认情况下,一个 `<url>` 条目包含所有的备用语言版本。两种形式都是有效的,但只有列在 `<loc>` 中的 URL 才会在 Search Console 中被计算为**已提交**;仅作为备用语言的区域设置会保持可发现性但不会被归属到任何 sitemap。启用此选项会为每个本地化 URL 提供其自己的条目,并重复完整的备用语言集。这会按区域设置计数增加条目,因此需要注意 50,000 个 URL / 50 MB 的限制,超过后应分割为 sitemap 索引。
269
+
270
+ </Step>
271
+
272
+ <Step number={3} title="验证爬虫接收到的内容">
273
+
274
+ `hreflang` 会无声地失败,因此应该检查它而不是假设它有效。
275
+
276
+ 读取源代码,而不是检查器 — `curl https://example.com/fr/about | grep hreflang` 显示爬虫获取的内容;DevTools 显示 JavaScript 运行后的 DOM。然后跟随每个备用链接,确认它使用相同的集合指向回来,并且它们都不重定向。Search Console 的国际定位报告捕获整个站点中的其余部分。
277
+
278
+ 对于多语言特定的爬取,[Intlayer SEO Scanner](https://intlayer.org/i18n-seo-scanner) 检查本地化页面中的缺失标签、损坏的备用链接和规范冲突。
279
+
280
+ </Step>
281
+
282
+ </Steps>
283
+
284
+ ---
285
+
286
+ ## 检查清单
287
+
288
+ - [ ] 每个地区都有一个独特的、可爬取的 URL
289
+ - [ ] 每个页面自引用,并且每个引用都是相互的
290
+ - [ ] 相同的集合在集群中的每个页面上发布
291
+ - [ ] 所有 `href` 值在生成的 HTML 中都是绝对路径
292
+ - [ ] 代码遵循 ISO 639-1 + ISO 3166-1 Alpha 2 标准(`en-GB`,而非 `en-UK`)
293
+ - [ ] `x-default` 存在,并指向未匹配用户应访问的位置
294
+ - [ ] 规范标签在每个 locale 中自引用
295
+ - [ ] 标签是服务端渲染的,不是 hydration 后注入的
296
+ - [ ] 在恰好一个位置声明
297
+ - [ ] 没有跨 locale 的重定向
298
+
299
+ ---
300
+
301
+ ## 总结
302
+
303
+ `hreflang` 简单但容不得半点差错。一个缺失的返回标签、一个相对 URL、一个跨 locale 的规范标签,整个集群就会被丢弃且不会报错。这些问题通常都源于手工编写标签。
304
+
305
+ 从单个 locale 列表派生集合,进行服务器端渲染,保持 canonical 自引用,并给予 `x-default` 应有的重视。做好这一次,正确性就不再是你需要维护的东西。
306
+
307
+ ### 深入了解
308
+
309
+ - [SEO 和国际化](https://github.com/aymericzip/intlayer/blob/main/docs/blog/zh/internationalization_and_SEO.md) — 更广泛的多语言 SEO 图景
310
+ - [Next.js 中的 SEO 和 i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/zh/nextjs-multilingual-seo-comparison.md) — `next-intl` vs `next-i18next` vs Intlayer
311
+ - [Next.js 16 i18n 指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_with_nextjs_16.md)
312
+ - [TanStack Start i18n 指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_with_tanstack.md)
313
+ - [每个区域的自定义域名](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/custom_domains.md)
314
+ - [配置参考](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)
@@ -0,0 +1,247 @@
1
+ ---
2
+ createdAt: 2026-09-02
3
+ updatedAt: 2026-09-02
4
+ title: "在 CI/CD 中自动化翻译而不发布糟糕文案"
5
+ description: 在三个阶段自动化 i18n,pre-push、pull request 与运行时。如何基于覆盖率拦截构建、安全自动补全并避免无限提交循环。
6
+ keywords:
7
+ - 自动化翻译 ci
8
+ - i18n ci cd
9
+ - github actions 翻译
10
+ - husky pre-push
11
+ - 持续本地化
12
+ - 翻译流水线
13
+ slugs:
14
+ - blog
15
+ - i18n-in-ci-cd-pipelines
16
+ author: aymericzip
17
+ ---
18
+
19
+ # 在 CI/CD 中自动化翻译而不发布糟糕文案
20
+
21
+ 手动翻译根本无法跟上现代软件的发布节奏。周五有人新增了一个文案字符串,导出操作要等到下一个迭代,而此时又有另外三种语言落后了。实现自动化并不复杂。如何在不悄悄向用户发布未经验证的机器输出的前提下实现自动化,才是真正值得深入思考的问题。
22
+
23
+ ## 目录
24
+
25
+ <TOC/>
26
+
27
+ ## 无需迁移现有代码即可实现自动化
28
+
29
+ 下面介绍的流水线架构与具体的库无关,工具本身也是如此。如果你的文案采用 i18next、next-intl、react-intl、vue-i18n 或 next-translate 的 JSON 字典格式,[Sync JSON 插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-json.md) 可以就地读写这些文件:
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", // 或针对 next-intl / react-intl 的 "icu"
39
+ }),
40
+ ],
41
+ };
42
+
43
+ export default config;
44
+ ```
45
+
46
+ 你的应用可以继续保持原有的导入方式。后续的 CI 任务将直接填充并校验你现有的字典,审查者在 PR 中看到的 diff 只是 `locales/fr/checkout.json` 的更新,而不是大规模的代码迁移。还有用于 gettext 工作流的 [Sync PO 插件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-po.md),以及保持运行时 API 不变的 [兼容适配器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compat/index.md)。
47
+
48
+ ## 将拦截门禁(Gate)与内容填充(Fill)分离
49
+
50
+ 两项完全不同的任务经常被混淆。
51
+
52
+ **门禁(Gate)** 是一项会失败的检查。它的作用是声明当前构建不可发布,因为缺少必需的语言环境。它不写入任何文件。
53
+
54
+ **填充(Fill)** 是一项变更操作。它生成缺失的翻译并提交代码。它绝不会导致构建失败。
55
+
56
+ 仅运行填充意味着没有任何机制进行拦截,未经验证的机器文案会直接流向生产环境。仅运行门禁意味着构建频繁变红,每次都需要人工介入修复。大多数团队希望同时拥有两者,但绑定到不同的触发器上:在 Pull Request 上触发填充,在合并到发布分支时触发门禁。
57
+
58
+ ## 自动化的落脚点对比
59
+
60
+ | 阶段 | 触发器 | 适用场景 | 成本 |
61
+ | :------------ | :------- | :--------------------------- | :------------------------------------- |
62
+ | Pre-push 钩子 | 本地 Git | 快速反馈,不消耗 CI 分钟数 | 在开发者的机器上运行并消耗个人 API Key |
63
+ | Pull request | CI 任务 | 合并前审查,安全统一管理密钥 | 消耗 CI 分钟数及每个 PR 的模型调用费用 |
64
+ | 发布分支 | CI 任务 | 基于覆盖率的严格拦截门禁 | 廉价,无模型调用 |
65
+ | 运行时 | CMS | 无需重新构建即可更新内容 | 依赖托管服务 |
66
+
67
+ ## Pre-push:最快速的反馈循环
68
+
69
+ Husky 可以在代码离开本地机器之前完成填充,因此新生成的翻译会与引入新字符串的代码处于同一个推送中。
70
+
71
+ ```bash fileName=".husky/pre-push"
72
+ npx intlayer build
73
+ npx intlayer fill --unpushed --mode complete
74
+ ```
75
+
76
+ `--unpushed` 将工作范围限制为尚未推送的内容,从而避免每次推送都耗费大量时间。`--mode complete` 只填充缺失的内容,不会重写已经有值的条目,确保人工审查过的翻译绝不会被静默覆盖。
77
+
78
+ 在 Monorepo 中,可以针对各个应用单独限定范围:
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
+ 缺点也是显而易见的:每个开发者都需要一个 API Key,而且费用由执行推送的人承担。这就是为什么团队扩大后大多数会将其迁移到 CI 的原因。
88
+
89
+ ## Pull request:在审查发生的地方进行填充
90
+
91
+ 在 GitHub Actions 中处理相同的逻辑,并将范围限制在 diff 中:
92
+
93
+ ```yaml fileName=".github/workflows/intlayer-translate.yml"
94
+ name: Intlayer Auto-Fill
95
+ on:
96
+ pull_request:
97
+ branches: ["main"]
98
+
99
+ permissions:
100
+ contents: write
101
+ pull-requests: write
102
+
103
+ concurrency:
104
+ group: "autofill-${{ github.ref }}"
105
+ cancel-in-progress: true
106
+
107
+ jobs:
108
+ autofill:
109
+ runs-on: ubuntu-latest
110
+ env:
111
+ AI_PROVIDER: openai
112
+ AI_MODEL: gpt-5-mini
113
+ AI_API_KEY: ${{ secrets.AI_API_KEY }}
114
+ steps:
115
+ - uses: actions/checkout@v4
116
+ with:
117
+ persist-credentials: true
118
+ fetch-depth: 0
119
+ - uses: actions/setup-node@v4
120
+ with:
121
+ node-version: 20
122
+ - run: npm install
123
+ - run: npx intlayer build
124
+ - run: npx intlayer fill --git-diff --mode complete --provider $AI_PROVIDER --model $AI_MODEL --api-key $AI_API_KEY
125
+ - name: Commit
126
+ run: |
127
+ if [ -n "$(git status --porcelain)" ]; then
128
+ git config --local user.email "action@github.com"
129
+ git config --local user.name "GitHub Action"
130
+ git add .
131
+ git commit -m "chore: auto-fill missing translations [skip ci]"
132
+ git push origin HEAD:${{ github.head_ref }}
133
+ fi
134
+ ```
135
+
136
+ 其中有四个关键配置:
137
+
138
+ - **`fetch-depth: 0`** 是 `--git-diff` 正常运行所必需的。浅克隆(Shallow clone)没有基准分支来进行 diff,填充过程会静默处理空内容。
139
+ - **提交信息中的 `[skip ci]`** 可以防止工作流无限次互相触发。如果没有它,该任务会触发新的运行并再次提交,一夜之间就会耗尽 CI 配额。
140
+ - **带有 `cancel-in-progress` 的 `concurrency`** 可以防止并发推送相互竞争写入相同的文件。
141
+ - **`--git-diff`** 将填充范围限定在 PR 中变更的内容。如果省略它,每次运行都会重新翻译整个字典。
142
+
143
+ 翻译内容会作为 commit 提交到 PR 分支,这意味着代码审查者可以在 diff 中进行审核。这正是选择在此阶段执行而不是合并后再执行的根本原因。
144
+
145
+ ## 发布分支:门禁检查
146
+
147
+ 门禁不需要访问 AI 模型,执行速度应当非常快。
148
+
149
+ ```yaml fileName=".github/workflows/ci.yml"
150
+ - run: npm run test:i18n
151
+ ```
152
+
153
+ 通过断言覆盖率的测试来提供保障,而不是依赖终端输出:
154
+
155
+ ```ts fileName="i18n.test.ts"
156
+ import { listMissingTranslations } from "intlayer/cli";
157
+
158
+ test("没有缺失必需的语言环境", 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` 虽然会输出检查报告,但退出状态码始终为 0,仅供参考而不会阻断流水线。可以在本地使用该命令;而在 CI 中使用测试断言。更多区别参见 [如何检测缺失的翻译](https://github.com/aymericzip/intlayer/blob/main/docs/blog/zh/detecting_missing_translations.md)。
168
+
169
+ ## `requiredLocales` 让门禁在实际开发中可持续运行
170
+
171
+ 如果门禁要求所有十八种语言全部完整,就会因为最慢的一种语言未就绪而阻塞所有发布,最终在一个月内被团队彻底禁用。
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
+ 声明你支持的所有语言,并且仅将那些必须阻断发布的语言设为必需项。其余语言可以异步补充,绝不会拖延代码上线。
188
+
189
+ ## 将翻译完全移出代码仓库
190
+
191
+ 另一种模式是在代码中仅保留一种基准语言,其余语言通过带有 Live Sync 功能的 CMS 进行远程管理。这样内容变动完全不需要重新构建应用,使文案修改周期与技术部署周期解耦。
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
+ 这非常适合非技术人员负责文案的团队。这是一种权衡:你获得了内容编辑的自主权,但放弃了仅通过 git checkout 即可完全确定应用渲染状态的确定性。详情见 [CMS 文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_CMS.md)。
211
+
212
+ 请注意,`clientSecret` 属于服务端凭证。它应当保存在 CI Secrets 和服务器环境变量中,绝不能暴露给客户端 bundle。
213
+
214
+ ## 坦诚面对局限性
215
+
216
+ 以上所有方案自动化的都是**覆盖率**,而不是**翻译质量**。机器自动填充把一个原本显眼的缺失变成了看不见的缺失:由于 key 已经有了值,审计顺利通过,但没有任何人阅读过这段文案。
217
+
218
+ 对于内部后台、更新日志或处于 Beta 阶段的语言,这完全可以接受。但对于定价页面、法律条款、支付失败提示或任何用户做决策前阅读的内容,这是不可接受的。这些内容必须经过人工审核,并全程使用 `--mode complete`,确保审核过的文案不会在后续构建中被自动覆盖。
219
+
220
+ 同时为模型提供上下文以保证文案风格统一:
221
+
222
+ ```ts
223
+ ai: {
224
+ applicationContext: "B2B 发票管理应用。正式专业语调。绝不要翻译产品名称。",
225
+ }
226
+ ```
227
+
228
+ ## 常见错误
229
+
230
+ - **自动提交中缺少 `[skip ci]`。** 导致任务陷入死循环耗尽配额。
231
+ - **使用 `--git-diff` 时进行了浅克隆(Shallow clone)。** 没有比较基准,什么都没填充且没有任何警告。
232
+ - **每次运行都填充整个字典目录。** 务必使用 `--git-diff` 或 `--unpushed` 控制成本。
233
+ - **将 CLI 报告用作门禁检查。** 退出状态码为 0,无法阻断流程。
234
+ - **将每种语言都设为必需(required)。** 首次阻塞发布时就会导致检查被永久移除。
235
+ - **只配置了填充任务却没有设置任何门禁。** 没有任何步骤会报错,未经审查的机翻直接上线。
236
+ - **将模型 API Key 存放在代码库中。** 必须和 `clientSecret` 一样保存在 CI Secrets 中。
237
+
238
+ ## 深入阅读
239
+
240
+ - [CI/CD:通过 Husky、GitHub Actions 与 CMS 自动生成翻译](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/CI_CD.md)
241
+ - [测试你的内容并在覆盖率不足时阻断构建](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/testing.md)
242
+ - [autoFill:自动生成各语言环境的声明文件](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/autoFill.md)
243
+ - [配置参考:`locales`、`requiredLocales`、`editor`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)
244
+ - [跨框架性能基准报告](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/benchmark/index.md)
245
+ - [i18next 兼容适配器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compat/i18next.md)
246
+ - [如何检测缺失的翻译](https://github.com/aymericzip/intlayer/blob/main/docs/blog/zh/detecting_missing_translations.md)
247
+ - [如何测试翻译而不写出脆弱的测试](https://github.com/aymericzip/intlayer/blob/main/docs/blog/zh/i18n_testing_strategies.md)
@@ -19,8 +19,6 @@ author: aymericzip
19
19
 
20
20
  # i18n 的含义:什么是国际化,为什么它很重要?
21
21
 
22
- ![i18n 插图](https://github.com/aymericzip/intlayer/blob/main/docs/assets/i18n.webp)
23
-
24
22
  ## 理解 \"i18n 的含义\"
25
23
 
26
24
  如果你从事软件开发、网页设计或数字营销,你可能遇到过 **i18n** 这个术语。**i18n 的真正含义**其实是 **国际化** (internationalization) 的一个数字略写。