@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>`**는 일반적인 선택입니다. 한 가지 주의사항: hydration 후에 주입된 태그는 신뢰할 수 없습니다. 프레임워크가 클라이언트 측에서만 추가하면 크롤러가 이를 볼 수 없을 수 있습니다.
52
+
53
+ **XML sitemap**은 규모가 클 때 더 좋습니다. 10개의 로케일에 걸쳐 5,000개의 페이지가 있으면 50,000개의 `<link>` 요소가 브라우저에 전송되는데 아무 의미가 없습니다. sitemap에서는 페이지에 0바이트가 소요됩니다.
54
+
55
+ **HTTP `Link` header**는 PDF와 같은 non-HTML 파일의 유일한 옵션입니다.
56
+
57
+ ---
58
+
59
+ ## 규칙
60
+
61
+ ### Self-reference와 상호성
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`은 cross-document 참조입니다: 검색 엔진은 URL을 키로 하는 cluster를 구축하고, 이를 cluster 내의 모든 페이지에서 공유합니다. 상대 경로는 그것이 포함된 문서에 상대적인 의미만 가지므로, 이를 표현할 수 없습니다. 또한 host를 넘을 수 없으며, locale이 `example.fr` 또는 `fr.example.com`에 있을 때 alternate는 종종 host를 넘습니다. sitemap이나 HTTP header에는 resolve할 base document가 전혀 없습니다.
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는 상대 `alternates`를 `metadataBase`에 대해 확장합니다. 좋습니다 — 하지만 규칙은 **생성된 HTML**에 적용되므로, DevTools inspector가 아닌 `curl`로 확인하세요.
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`는 **"영어 버전"이 아니며** **"기본 로케일"도 아닙니다**. 비록 대개 그곳을 가리키지만 말입니다. 이는 _이 집합이 다루지 않는 사용자를 위한 페이지_를 의미합니다. 이것이 정당한 이유이며, 종종 더 나은 이유이기도 한데, `/en` 대신 언어 선택기나 지역 리디렉션 랜딩 페이지를 가리키는 것입니다. 그러한 페이지가 없다면 귀하의 주요 언어가 합리적인 답변입니다.
107
+
108
+ 두 가지를 명확히 해야 합니다: `x-default`는 self-referencing 항목을 대체하는 것이 아니라 세트의 추가 항목이며, 다른 모든 항목처럼 클러스터의 모든 페이지에서 동일하게 나타나야 합니다.
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
+ 대부분의 프로젝트에서 서브디렉토리가 올바른 기본값입니다. ccTLD에 도달하는 것은 정말로 별도의 국가 비즈니스로 운영할 때만입니다.
147
+
148
+ 피해야 할 구조 하나: `Accept-Language` 또는 IP에 기반하여 **동일한 URL**에서 다른 언어를 제공하는 것입니다. 크롤러는 한 버전을 보고 한 버전을 인덱싱합니다. 다른 모든 것은 보이지 않습니다.
149
+
150
+ > Intlayer는 `routing.mode` 및 `routing.domains`를 통해 세 가지 모두를 지원합니다. [사용자 정의 도메인](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/custom_domains.md) 및 [구성 참조](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md)를 참조하십시오.
151
+
152
+ ---
153
+
154
+ ## 구현
155
+
156
+ 이러한 태그를 수동으로 작성하면 두 번째 locale과의 접촉에서 유지되지 않습니다. 대신 locale 목록에서 파생시키세요.
157
+
158
+ <Steps>
159
+
160
+ <Step number={1} title="모든 페이지에서 cluster 내보내기">
161
+
162
+ 모든 곳에서 동일한 set, locale별 canonical, 절대 URL, `x-default` 포함.
163
+
164
+ <Tabs>
165
+
166
+ <Tab label="Next.js" value="nextjs">
167
+
168
+ Metadata API는 `alternates.languages`를 노출하고, `getMultilingualUrls`는 구성된 locale에서 전체 record를 빌드합니다:
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/ko/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 guide](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_tanstack.md).
242
+
243
+ </Tab>
244
+
245
+ </Tabs>
246
+
247
+ </Step>
248
+
249
+ <Step number={2} title="또는 모든 것을 sitemap으로 이동">
250
+
251
+ 규모가 커지면 페이지에서 주석을 완전히 제거하세요. `generateSitemap`은 config에서 로케일과 라우팅 모드를 읽어 항목마다 `xhtml:link` alternates를 생성합니다:
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`) — alternates는 locale URL이 실제로 다른 경우에만 emit됩니다. `no-prefix` 모드에서는 모든 locale이 하나의 URL을 공유하므로, `routing.domains`에서 locale에 자체 호스트명을 제공하지 않는 한 skip됩니다.
268
+ - `entryPerLocale` (기본값 `false`) — 기본적으로 하나의 `<url>` 항목이 모든 대체 언어를 포함합니다. 두 형식 모두 유효하지만, `<loc>`으로 나열된 URL만 Search Console에서 _제출됨_으로 계산되며, 대체 언어 전용 locale은 발견 가능하지만 sitemap에 속하지 않습니다. 이 옵션을 켜면 모든 지역화된 URL이 자체 항목을 가지고 전체 대체 언어 세트가 반복됩니다. 이렇게 하면 항목 수가 locale 수만큼 증가하므로 50,000 URL / 50 MB 제한을 주의하고, 초과하면 sitemap 인덱스로 분할하세요.
269
+
270
+ </Step>
271
+
272
+ <Step number={3} title="crawler가 수신하는 내용 확인">
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)는 로컬라이즈된 페이지 전체에서 누락된 태그, 끊어진 대체 항목 및 canonical 충돌을 확인합니다.
279
+
280
+ </Step>
281
+
282
+ </Steps>
283
+
284
+ ---
285
+
286
+ ## 체크리스트
287
+
288
+ - [ ] 각 로캘은 고유하고 크롤 가능한 URL을 가집니다
289
+ - [ ] 모든 페이지는 자체 참조하며, 모든 참조는 상호적입니다
290
+ - [ ] 동일한 집합이 클러스터의 모든 페이지에 제공됩니다
291
+ - [ ] 모든 `href` 값이 emitted HTML에서 절대 경로입니다
292
+ - [ ] 코드는 ISO 639-1 + ISO 3166-1 Alpha 2입니다 (`en-GB`, `en-UK` 아님)
293
+ - [ ] `x-default`가 존재하며, 매칭되지 않은 사용자가 이동해야 할 위치를 가리킵니다
294
+ - [ ] Canonical은 locale별로 자체 참조합니다
295
+ - [ ] 태그는 서버에서 렌더링되며, hydration 후에 주입되지 않습니다
296
+ - [ ] 정확히 한 곳에서 선언됩니다
297
+ - [ ] Alternate 리다이렉트가 없습니다
298
+
299
+ ---
300
+
301
+ ## 마무리
302
+
303
+ `hreflang`은 단순하면서도 엄격합니다. 하나의 누락된 return 태그, 하나의 상대 URL, 하나의 cross-locale canonical이 있으면 클러스터가 아무 오류 없이 버려집니다. 이 모든 문제는 태그를 수동으로 작성하는 데서 비롯됩니다.
304
+
305
+ 단일 로케일 목록에서 세트를 도출하고, 서버 측에서 렌더링하고, canonical을 자기 참조적으로 유지하며, `x-default`에 그에 맞는 관심을 기울이세요. 한 번 그렇게 하면 정확성 유지가 더 이상 문제가 되지 않습니다.
306
+
307
+ ### 더 알아보기
308
+
309
+ - [SEO 및 국제화](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ko/internationalization_and_SEO.md) — 더 넓은 다국어 SEO 그림
310
+ - [Next.js의 SEO 및 i18n](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ko/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/ko/intlayer_with_nextjs_16.md)
312
+ - [TanStack Start i18n 가이드](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_tanstack.md)
313
+ - [로케일별 커스텀 도메인](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/custom_domains.md)
314
+ - [설정 참조](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md)
@@ -0,0 +1,247 @@
1
+ ---
2
+ createdAt: 2026-09-02
3
+ updatedAt: 2026-09-02
4
+ title: "품질 저하 없이 CI/CD 파이프라인에서 번역을 자동화하는 방법"
5
+ description: i18n을 자동화할 수 있는 3단계 (pre-push, pull request, 런타임). 커버리지를 기반으로 빌드를 제어(gate)하고, 안전하게 자동 채우기를 수행하며, 무한 커밋 루프를 방지하는 방법.
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/ko/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
+ 기존 애플리케이션의 import문은 그대로 유지됩니다. CI 작업이 기존 카탈로그를 채우고 검증하므로, 리뷰어가 보게 되는 변경 사항은 대규모 코드 전환이 아닌 `locales/fr/checkout.json` 파일의 변경일 뿐입니다. gettext 워크플로를 위한 [Sync PO 플러그인](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/plugins/sync-po.md)과 런타임 API를 유지해 주는 [호환 어댑터](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/compat/index.md)도 제공됩니다.
47
+
48
+ ## 차단 검사(Gate)와 자동 완성(Fill) 분리하기
49
+
50
+ 서로 다른 두 가지 작업이 자주 혼동되곤 합니다.
51
+
52
+ **게이트(Gate)**는 실패를 유발하는 검사입니다. 필수 로케일 번역이 누락되었을 때 빌드가 통과되지 못하도록 막는 역할을 하며, 어떤 파일도 수정하지 않습니다.
53
+
54
+ **필(Fill)**은 변경 작업입니다. 누락된 번역을 생성하고 이를 커밋합니다. 빌드를 실패시키지 않습니다.
55
+
56
+ Fill만 단독으로 실행하면 아무것도 차단되지 않아 검토되지 않은 AI 번역 결과가 프로덕션에 그대로 배포됩니다. 반대로 Gate만 실행하면 빌드가 빈번히 깨져 사람이 매번 수동으로 해결해야 합니다. 대부분의 팀에서는 두 가지를 서로 다른 트리거에 연결하는 방식을 선택합니다. 즉, Pull Request에서는 Fill을 실행하고, 릴리스 브랜치로 머지할 때 Gate를 적용합니다.
57
+
58
+ ## 자동화를 적용할 수 있는 단계 비교
59
+
60
+ | 단계 | 트리거 | 적합한 용도 | 비용 |
61
+ | :------------ | :------- | :---------------------------------------- | :------------------------------------- |
62
+ | Pre-push 훅 | 로컬 Git | 빠른 피드백, CI 실행 시간 소모 없음 | 개발자의 로컬 머신 및 개인 API 키 사용 |
63
+ | Pull request | CI Job | 머지 전 코드 리뷰, 시크릿의 안전한 중앙화 | CI 실행 시간 및 PR당 AI 모델 호출 비용 |
64
+ | 릴리스 브랜치 | CI Job | 커버리지에 대한 엄격한 차단(Gate) | 저렴함, AI 모델 호출 없음 |
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
+ 모노레포의 경우 각 앱별로 범위를 지정합니다:
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 키를 가지고 있어야 하며 비용 부담이 푸시를 수행하는 사람에게 발생합니다. 그렇기 때문에 팀 규모가 커지면 대개 이 작업을 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
+ 여기에는 4가지 필수적인 설정이 있습니다:
137
+
138
+ - **`fetch-depth: 0`**: `--git-diff`가 작동하기 위해 반드시 필요합니다. Shallow clone은 비교할 베이스가 없어 아무것도 채우지 않고 넘어갑니다.
139
+ - **커밋 메시지의 `[skip ci]`**: 워크플로가 무한 재귀 실행되는 것을 막아줍니다. 이 문구가 없으면 커밋이 새 실행을 트리거하고 그 실행이 다시 커밋하여 밤새 CI 크레딧을 낭비하게 됩니다.
140
+ - **`cancel-in-progress`가 포함된 `concurrency`**: 두 번의 동시 푸시가 같은 파일을 덮어쓰며 경쟁하는 것을 방지합니다.
141
+ - **`--git-diff`**: PR에서 변경된 사항으로만 대상을 좁힙니다. 이를 생략하면 매 실행마다 전체 카탈로그를 다시 번역하게 됩니다.
142
+
143
+ 자동 생성된 번역이 PR 브랜치에 커밋으로 남기 때문에 리뷰어가 diff를 통해 눈으로 확인할 수 있습니다. 이것이 머지 후가 아니라 PR 단계에서 수행하는 핵심 이유입니다.
144
+
145
+ ## 릴리스 브랜치: Gate 단계
146
+
147
+ Gate는 모델 호출이 필요 없으며 빠르게 실행되어야 합니다.
148
+
149
+ ```yaml fileName=".github/workflows/ci.yml"
150
+ - run: npm run test:i18n
151
+ ```
152
+
153
+ 터미널 출력에만 의존하지 않고 테스트 코드로 커버리지를 직접 단언(assert)합니다:
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을 반환하므로 정보 제공용일 뿐 빌드를 막지 못합니다. 로컬에서는 이 CLI를 쓰고, CI에서는 테스트 어설션을 활용하세요. 자세한 내용은 [누락된 번역 감지하기](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ko/detecting_missing_translations.md)를 참고하세요.
168
+
169
+ ## `requiredLocales`로 지속 가능한 검사 유지하기
170
+
171
+ 18개 언어가 모두 완료되어야만 통과하는 Gate는 가장 느린 언어가 완성될 때까지 모든 릴리스를 막아버려, 결국 한 달도 안 되어 비활성화되고 맙니다.
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
+ 서비스하는 모든 로케일을 등록하되, 릴리스를 차단해야 하는 핵심 언어만 `requiredLocales`로 지정하세요. 나머지 언어는 비동기적으로 완성해 나가며 배포 일정을 지연시키지 않습니다.
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 체크아웃만으로 앱 렌더링 상태를 온전히 파악하기 어려워진다는 트레이드오프가 있습니다. 자세한 내용은 [CMS 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_CMS.md)를 확인하세요.
211
+
212
+ `clientSecret`은 서버 측 보안 자격 증명입니다. CI 시크릿이나 서버 환경 변수에서 관리해야 하며 클라이언트 번들에 노출되지 않도록 주의하세요.
213
+
214
+ ## 솔직한 한계점
215
+
216
+ 위의 모든 방법은 번역의 **존재(커버리지)**를 자동화하는 것이지 **품질**을 보장하는 것은 아닙니다. 자동 채우기는 눈에 띄는 빈자리를 눈에 띄지 않는 자리로 바꿉니다. 키에 값이 채워졌으므로 검사는 통과하지만 아무도 그 문장을 읽어보지 않았기 때문입니다.
217
+
218
+ 내부용 도구, 변경 로그, 베타 로케일이라면 이것으로 충분할 수 있습니다. 하지만 가격 정책, 법적 고지, 결제 오류 메시지 등 고객의 결정에 직접적인 영향을 미치는 영역에는 적합하지 않습니다. 이런 중요한 문구는 반드시 사람의 검토를 거치도록 하고, `--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 리포트를 Gate로 활용.** 항상 종료 코드 0으로 끝나 빌드가 멈추지 않습니다.
234
+ - **모든 로케일을 필수(required)로 설정.** 첫 릴리스 지연 발생 시 검사 자체가 제거될 위험이 큽니다.
235
+ - **Gate 없는 Fill 전용 작업.** 어떤 빌드도 실패하지 않아 검증되지 않은 기계 번역이 그대로 배포됩니다.
236
+ - **저장소에 모델 API 키 노출.** `clientSecret`과 마찬가지로 반드시 CI 시크릿에 보관해야 합니다.
237
+
238
+ ## 더 알아보기
239
+
240
+ - [CI/CD: Husky, GitHub Actions, CMS를 통한 번역 자동 생성](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/CI_CD.md)
241
+ - [콘텐츠 테스트 및 커버리지 기반 빌드 차단](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/testing.md)
242
+ - [autoFill: 로케일별 선언 파일 자동 생성](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/autoFill.md)
243
+ - [설정 레퍼런스: `locales`, `requiredLocales`, `editor`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md)
244
+ - [프레임워크 간 벤치마크 리포트](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/benchmark/index.md)
245
+ - [i18next 호환 어댑터](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/compat/i18next.md)
246
+ - [누락된 번역 감지하기](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ko/detecting_missing_translations.md)
247
+ - [깨지기 쉬운 테스트 없이 번역 검증하기](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ko/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)의 수략어(numeronym)입니다.