@intlayer/docs 7.0.7 → 7.0.8-canary.0

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 (726) hide show
  1. package/blog/ar/i18n_using_next-i18next.md +1068 -0
  2. package/blog/ar/i18n_using_next-intl.md +768 -0
  3. package/blog/ar/intlayer_with_react-intl.md +0 -4
  4. package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +5 -4
  5. package/blog/de/i18n_using_next-i18next.md +1107 -0
  6. package/blog/de/i18n_using_next-intl.md +760 -0
  7. package/blog/de/intlayer_with_react-intl.md +0 -4
  8. package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  9. package/blog/en/i18n_using_next-i18next.md +1073 -0
  10. package/blog/en/i18n_using_next-intl.md +757 -0
  11. package/blog/en/intlayer_with_i18next.md +71 -8
  12. package/blog/en/intlayer_with_next-i18next.md +71 -8
  13. package/blog/en/intlayer_with_next-intl.md +71 -8
  14. package/blog/en/intlayer_with_react-i18next.md +69 -8
  15. package/blog/en/intlayer_with_react-intl.md +68 -9
  16. package/blog/en/intlayer_with_vue-i18n.md +68 -7
  17. package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
  18. package/blog/en/vue-i18n_vs_intlayer.md +2 -0
  19. package/blog/en-GB/i18n_using_next-i18next.md +1074 -0
  20. package/blog/en-GB/i18n_using_next-intl.md +757 -0
  21. package/blog/en-GB/intlayer_with_i18next.md +15 -6
  22. package/blog/en-GB/intlayer_with_next-i18next.md +16 -6
  23. package/blog/en-GB/intlayer_with_next-intl.md +16 -6
  24. package/blog/en-GB/intlayer_with_react-i18next.md +16 -7
  25. package/blog/en-GB/intlayer_with_react-intl.md +14 -9
  26. package/blog/en-GB/intlayer_with_vue-i18n.md +16 -7
  27. package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  28. package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
  29. package/blog/en-GB/vue-i18n_vs_intlayer.md +2 -0
  30. package/blog/es/i18n_using_next-i18next.md +1066 -0
  31. package/blog/es/i18n_using_next-intl.md +757 -0
  32. package/blog/es/intlayer_with_react-intl.md +0 -4
  33. package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  34. package/blog/fr/i18n_using_next-i18next.md +1078 -0
  35. package/blog/fr/i18n_using_next-intl.md +759 -0
  36. package/blog/fr/intlayer_with_react-intl.md +0 -4
  37. package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  38. package/blog/hi/i18n_using_next-i18next.md +1068 -0
  39. package/blog/hi/i18n_using_next-intl.md +758 -0
  40. package/blog/hi/intlayer_with_react-intl.md +0 -4
  41. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  42. package/blog/id/i18n_using_next-i18next.md +1078 -0
  43. package/blog/id/i18n_using_next-intl.md +757 -0
  44. package/blog/id/index.md +69 -0
  45. package/blog/id/internationalization_and_SEO.md +364 -0
  46. package/blog/id/intlayer_with_react-intl.md +0 -4
  47. package/blog/id/list_i18n_technologies/CMS/drupal.md +143 -0
  48. package/blog/id/list_i18n_technologies/CMS/wix.md +167 -0
  49. package/blog/id/list_i18n_technologies/CMS/wordpress.md +188 -0
  50. package/blog/id/list_i18n_technologies/frameworks/angular.md +125 -0
  51. package/blog/id/list_i18n_technologies/frameworks/flutter.md +150 -0
  52. package/blog/id/list_i18n_technologies/frameworks/react-native.md +217 -0
  53. package/blog/id/list_i18n_technologies/frameworks/react.md +155 -0
  54. package/blog/id/list_i18n_technologies/frameworks/svelte.md +131 -0
  55. package/blog/id/list_i18n_technologies/frameworks/vue.md +130 -0
  56. package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1500 -0
  57. package/blog/id/nextjs-multilingual-seo-comparison.md +361 -0
  58. package/blog/id/rag_powered_documentation_assistant.md +288 -0
  59. package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
  60. package/blog/id/vue-i18n_vs_intlayer.md +278 -0
  61. package/blog/id/what_is_internationalization.md +166 -0
  62. package/blog/it/i18n_using_next-i18next.md +1078 -0
  63. package/blog/it/i18n_using_next-intl.md +758 -0
  64. package/blog/it/intlayer_with_react-intl.md +0 -4
  65. package/blog/it/react-i18next_vs_react-intl_vs_intlayer.md +4 -0
  66. package/blog/it/vue-i18n_vs_intlayer.md +2 -0
  67. package/blog/ja/i18n_using_next-i18next.md +1078 -0
  68. package/blog/ja/i18n_using_next-intl.md +758 -0
  69. package/blog/ja/intlayer_with_react-intl.md +0 -4
  70. package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  71. package/blog/ko/i18n_using_next-i18next.md +1075 -0
  72. package/blog/ko/i18n_using_next-intl.md +759 -0
  73. package/blog/ko/intlayer_with_react-intl.md +0 -4
  74. package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  75. package/blog/pl/i18n_using_next-i18next.md +1078 -0
  76. package/blog/pl/i18n_using_next-intl.md +758 -0
  77. package/blog/pl/index.md +69 -0
  78. package/blog/pl/internationalization_and_SEO.md +363 -0
  79. package/blog/pl/intlayer_with_react-intl.md +0 -4
  80. package/blog/pl/list_i18n_technologies/CMS/drupal.md +143 -0
  81. package/blog/pl/list_i18n_technologies/CMS/wix.md +167 -0
  82. package/blog/pl/list_i18n_technologies/CMS/wordpress.md +196 -0
  83. package/blog/pl/list_i18n_technologies/frameworks/angular.md +125 -0
  84. package/blog/pl/list_i18n_technologies/frameworks/flutter.md +151 -0
  85. package/blog/pl/list_i18n_technologies/frameworks/react-native.md +217 -0
  86. package/blog/pl/list_i18n_technologies/frameworks/react.md +155 -0
  87. package/blog/pl/list_i18n_technologies/frameworks/svelte.md +131 -0
  88. package/blog/pl/list_i18n_technologies/frameworks/vue.md +130 -0
  89. package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +1501 -0
  90. package/blog/pl/nextjs-multilingual-seo-comparison.md +362 -0
  91. package/blog/pl/rag_powered_documentation_assistant.md +288 -0
  92. package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
  93. package/blog/pl/vue-i18n_vs_intlayer.md +278 -0
  94. package/blog/pl/what_is_internationalization.md +167 -0
  95. package/blog/pt/i18n_using_next-i18next.md +1067 -0
  96. package/blog/pt/i18n_using_next-intl.md +760 -0
  97. package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  98. package/blog/ru/i18n_using_next-i18next.md +1106 -0
  99. package/blog/ru/i18n_using_next-intl.md +759 -0
  100. package/blog/ru/intlayer_with_react-intl.md +0 -4
  101. package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  102. package/blog/tr/i18n_using_next-i18next.md +1078 -0
  103. package/blog/tr/i18n_using_next-intl.md +760 -0
  104. package/blog/tr/intlayer_with_react-intl.md +0 -4
  105. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  106. package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
  107. package/blog/tr/vue-i18n_vs_intlayer.md +2 -0
  108. package/blog/vi/i18n_using_next-i18next.md +1080 -0
  109. package/blog/vi/i18n_using_next-intl.md +758 -0
  110. package/blog/vi/index.md +69 -0
  111. package/blog/vi/internationalization_and_SEO.md +363 -0
  112. package/blog/vi/intlayer_with_react-intl.md +0 -4
  113. package/blog/vi/list_i18n_technologies/CMS/drupal.md +143 -0
  114. package/blog/vi/list_i18n_technologies/CMS/wix.md +167 -0
  115. package/blog/vi/list_i18n_technologies/CMS/wordpress.md +188 -0
  116. package/blog/vi/list_i18n_technologies/frameworks/angular.md +125 -0
  117. package/blog/vi/list_i18n_technologies/frameworks/flutter.md +150 -0
  118. package/blog/vi/list_i18n_technologies/frameworks/react-native.md +217 -0
  119. package/blog/vi/list_i18n_technologies/frameworks/react.md +155 -0
  120. package/blog/vi/list_i18n_technologies/frameworks/svelte.md +131 -0
  121. package/blog/vi/list_i18n_technologies/frameworks/vue.md +130 -0
  122. package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1520 -0
  123. package/blog/vi/nextjs-multilingual-seo-comparison.md +362 -0
  124. package/blog/vi/rag_powered_documentation_assistant.md +288 -0
  125. package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
  126. package/blog/vi/vue-i18n_vs_intlayer.md +278 -0
  127. package/blog/vi/what_is_internationalization.md +168 -0
  128. package/blog/zh/i18n_using_next-i18next.md +1105 -0
  129. package/blog/zh/i18n_using_next-intl.md +758 -0
  130. package/blog/zh/intlayer_with_react-intl.md +0 -4
  131. package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  132. package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
  133. package/dist/cjs/common.cjs +0 -4
  134. package/dist/cjs/common.cjs.map +1 -1
  135. package/dist/cjs/generated/blog.entry.cjs +38 -6
  136. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  137. package/dist/cjs/generated/docs.entry.cjs +0 -6
  138. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  139. package/dist/cjs/generated/frequentQuestions.entry.cjs +0 -6
  140. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  141. package/dist/cjs/generated/legal.entry.cjs +0 -6
  142. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  143. package/dist/esm/generated/blog.entry.mjs +38 -0
  144. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  145. package/dist/types/generated/blog.entry.d.ts +2 -0
  146. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  147. package/docs/ar/component_i18n.md +1 -1
  148. package/docs/ar/configuration.md +6 -0
  149. package/docs/ar/intlayer_cli.md +8 -3
  150. package/docs/ar/intlayer_with_next-i18next.md +619 -0
  151. package/docs/ar/intlayer_with_next-intl.md +446 -0
  152. package/docs/ar/intlayer_with_nextjs_16.md +21 -0
  153. package/docs/ar/intlayer_with_tanstack.md +4 -0
  154. package/docs/ar/intlayer_with_vite+react.md +4 -0
  155. package/docs/de/component_i18n.md +1 -1
  156. package/docs/de/configuration.md +6 -0
  157. package/docs/de/intlayer_cli.md +8 -3
  158. package/docs/de/intlayer_with_next-i18next.md +627 -0
  159. package/docs/de/intlayer_with_next-intl.md +451 -0
  160. package/docs/de/intlayer_with_nextjs_16.md +21 -0
  161. package/docs/de/intlayer_with_tanstack.md +4 -0
  162. package/docs/de/intlayer_with_vite+react.md +4 -0
  163. package/docs/en/component_i18n.md +1 -1
  164. package/docs/en/intlayer_cli.md +8 -1
  165. package/docs/en/intlayer_with_astro.md +10 -2
  166. package/docs/en/intlayer_with_create_react_app.md +8 -0
  167. package/docs/en/intlayer_with_lynx+react.md +8 -0
  168. package/docs/en/intlayer_with_nestjs.md +10 -0
  169. package/docs/en/intlayer_with_nextjs_14.md +10 -2
  170. package/docs/en/intlayer_with_nextjs_15.md +21 -4
  171. package/docs/en/intlayer_with_nextjs_16.md +17 -0
  172. package/docs/en/intlayer_with_nuxt.md +8 -0
  173. package/docs/en/intlayer_with_react_native+expo.md +10 -2
  174. package/docs/en/intlayer_with_react_router_v7.md +8 -0
  175. package/docs/en/intlayer_with_tanstack.md +10 -0
  176. package/docs/en/intlayer_with_vite+preact.md +10 -2
  177. package/docs/en/intlayer_with_vite+react.md +21 -4
  178. package/docs/en/intlayer_with_vite+vue.md +10 -2
  179. package/docs/en-GB/component_i18n.md +1 -1
  180. package/docs/en-GB/configuration.md +6 -0
  181. package/docs/en-GB/intlayer_cli.md +8 -3
  182. package/docs/en-GB/intlayer_with_angular.md +4 -4
  183. package/docs/en-GB/intlayer_with_express.md +4 -4
  184. package/docs/en-GB/intlayer_with_lynx+react.md +12 -12
  185. package/{blog/en/_intlayer_with_next-i18next.md → docs/en-GB/intlayer_with_next-i18next.md} +241 -42
  186. package/{blog/en/_intlayer_with_next-intl.md → docs/en-GB/intlayer_with_next-intl.md} +144 -29
  187. package/docs/en-GB/intlayer_with_nextjs_16.md +21 -0
  188. package/docs/en-GB/intlayer_with_tanstack.md +5 -1
  189. package/docs/en-GB/intlayer_with_vite+react.md +4 -0
  190. package/docs/en-GB/packages/next-intlayer/t.md +2 -2
  191. package/docs/es/component_i18n.md +1 -1
  192. package/docs/es/configuration.md +6 -0
  193. package/docs/es/intlayer_cli.md +8 -3
  194. package/docs/es/intlayer_with_next-i18next.md +628 -0
  195. package/docs/es/intlayer_with_next-intl.md +446 -0
  196. package/docs/es/intlayer_with_nextjs_16.md +21 -0
  197. package/docs/es/intlayer_with_tanstack.md +4 -0
  198. package/docs/es/intlayer_with_vite+react.md +4 -0
  199. package/docs/fr/configuration.md +6 -0
  200. package/docs/fr/intlayer_cli.md +8 -3
  201. package/docs/fr/intlayer_with_next-i18next.md +628 -0
  202. package/docs/fr/intlayer_with_next-intl.md +446 -0
  203. package/docs/fr/intlayer_with_nextjs_16.md +23 -2
  204. package/docs/fr/intlayer_with_tanstack.md +4 -0
  205. package/docs/fr/intlayer_with_vite+react.md +4 -0
  206. package/docs/hi/component_i18n.md +1 -1
  207. package/docs/hi/configuration.md +6 -0
  208. package/docs/hi/intlayer_cli.md +8 -0
  209. package/docs/hi/intlayer_with_next-i18next.md +628 -0
  210. package/docs/hi/intlayer_with_next-intl.md +446 -0
  211. package/docs/hi/intlayer_with_nextjs_16.md +21 -0
  212. package/docs/hi/intlayer_with_tanstack.md +4 -0
  213. package/docs/hi/intlayer_with_vite+react.md +4 -0
  214. package/docs/id/CI_CD.md +198 -0
  215. package/docs/id/autoFill.md +284 -0
  216. package/docs/id/component_i18n.md +186 -0
  217. package/docs/id/configuration.md +710 -0
  218. package/docs/id/dictionary/condition.md +231 -0
  219. package/docs/id/dictionary/content_file.md +1092 -0
  220. package/docs/id/dictionary/enumeration.md +245 -0
  221. package/docs/id/dictionary/file.md +237 -0
  222. package/docs/id/dictionary/function_fetching.md +214 -0
  223. package/docs/id/dictionary/gender.md +273 -0
  224. package/docs/id/dictionary/insertion.md +192 -0
  225. package/docs/id/dictionary/markdown.md +381 -0
  226. package/docs/id/dictionary/nesting.md +273 -0
  227. package/docs/id/dictionary/translation.md +310 -0
  228. package/docs/id/formatters.md +596 -0
  229. package/docs/id/how_works_intlayer.md +256 -0
  230. package/docs/id/index.md +176 -0
  231. package/docs/id/interest_of_intlayer.md +293 -0
  232. package/docs/id/intlayer_CMS.md +549 -0
  233. package/docs/id/intlayer_cli.md +850 -0
  234. package/docs/id/intlayer_visual_editor.md +288 -0
  235. package/docs/id/intlayer_with_angular.md +694 -0
  236. package/docs/id/intlayer_with_astro.md +252 -0
  237. package/docs/id/intlayer_with_create_react_app.md +1233 -0
  238. package/docs/id/intlayer_with_express.md +411 -0
  239. package/docs/id/intlayer_with_lynx+react.md +518 -0
  240. package/docs/id/intlayer_with_nestjs.md +272 -0
  241. package/docs/id/intlayer_with_next-i18next.md +628 -0
  242. package/docs/id/intlayer_with_next-intl.md +446 -0
  243. package/docs/id/intlayer_with_nextjs_14.md +1617 -0
  244. package/docs/id/intlayer_with_nextjs_15.md +1698 -0
  245. package/docs/id/intlayer_with_nextjs_16.md +21 -0
  246. package/docs/id/intlayer_with_nextjs_page_router.md +1478 -0
  247. package/docs/id/intlayer_with_nuxt.md +808 -0
  248. package/docs/id/intlayer_with_react_native+expo.md +699 -0
  249. package/docs/id/intlayer_with_react_router_v7.md +496 -0
  250. package/docs/id/intlayer_with_tanstack.md +564 -0
  251. package/docs/id/intlayer_with_vite+preact.md +1737 -0
  252. package/docs/id/intlayer_with_vite+react.md +1413 -0
  253. package/docs/id/intlayer_with_vite+solid.md +289 -0
  254. package/docs/id/intlayer_with_vite+svelte.md +289 -0
  255. package/docs/id/intlayer_with_vite+vue.md +1088 -0
  256. package/docs/id/introduction.md +218 -0
  257. package/docs/id/locale_mapper.md +242 -0
  258. package/docs/id/mcp_server.md +211 -0
  259. package/docs/id/packages/express-intlayer/t.md +458 -0
  260. package/docs/id/packages/intlayer/getConfiguration.md +145 -0
  261. package/docs/id/packages/intlayer/getEnumeration.md +159 -0
  262. package/docs/id/packages/intlayer/getHTMLTextDir.md +122 -0
  263. package/docs/id/packages/intlayer/getLocaleLang.md +81 -0
  264. package/docs/id/packages/intlayer/getLocaleName.md +119 -0
  265. package/docs/id/packages/intlayer/getLocalizedUrl.md +309 -0
  266. package/docs/id/packages/intlayer/getMultilingualUrls.md +223 -0
  267. package/docs/id/packages/intlayer/getPathWithoutLocale.md +75 -0
  268. package/docs/id/packages/intlayer/getTranslation.md +190 -0
  269. package/docs/id/packages/intlayer/getTranslationContent.md +188 -0
  270. package/docs/id/packages/next-intlayer/t.md +352 -0
  271. package/docs/id/packages/next-intlayer/useDictionary.md +271 -0
  272. package/docs/id/packages/next-intlayer/useIntlayer.md +264 -0
  273. package/docs/id/packages/next-intlayer/useLocale.md +166 -0
  274. package/docs/id/packages/react-intlayer/t.md +303 -0
  275. package/docs/id/packages/react-intlayer/useDictionary.md +287 -0
  276. package/docs/id/packages/react-intlayer/useI18n.md +267 -0
  277. package/docs/id/packages/react-intlayer/useIntlayer.md +254 -0
  278. package/docs/id/packages/react-intlayer/useLocale.md +210 -0
  279. package/docs/id/per_locale_file.md +323 -0
  280. package/docs/id/readme.md +261 -0
  281. package/docs/id/releases/v6.md +305 -0
  282. package/docs/id/roadmap.md +362 -0
  283. package/docs/id/testing.md +202 -0
  284. package/docs/id/vs_code_extension.md +126 -0
  285. package/docs/it/component_i18n.md +1 -1
  286. package/docs/it/configuration.md +6 -0
  287. package/docs/it/intlayer_cli.md +8 -3
  288. package/docs/it/intlayer_with_next-i18next.md +628 -0
  289. package/docs/it/intlayer_with_next-intl.md +446 -0
  290. package/docs/it/intlayer_with_nextjs_16.md +21 -0
  291. package/docs/it/intlayer_with_tanstack.md +4 -0
  292. package/docs/it/intlayer_with_vite+react.md +4 -0
  293. package/docs/ja/component_i18n.md +1 -1
  294. package/docs/ja/configuration.md +6 -0
  295. package/docs/ja/intlayer_cli.md +8 -3
  296. package/docs/ja/intlayer_with_next-i18next.md +627 -0
  297. package/docs/ja/intlayer_with_next-intl.md +446 -0
  298. package/docs/ja/intlayer_with_nextjs_16.md +21 -0
  299. package/docs/ja/intlayer_with_tanstack.md +4 -0
  300. package/docs/ja/intlayer_with_vite+react.md +4 -0
  301. package/docs/ko/configuration.md +6 -0
  302. package/docs/ko/intlayer_cli.md +8 -3
  303. package/docs/ko/intlayer_with_next-i18next.md +627 -0
  304. package/docs/ko/intlayer_with_next-intl.md +446 -0
  305. package/docs/ko/intlayer_with_nextjs_16.md +21 -0
  306. package/docs/ko/intlayer_with_tanstack.md +4 -0
  307. package/docs/ko/intlayer_with_vite+react.md +4 -0
  308. package/docs/pl/CI_CD.md +198 -0
  309. package/docs/pl/autoFill.md +284 -0
  310. package/docs/pl/component_i18n.md +186 -0
  311. package/docs/pl/configuration.md +710 -0
  312. package/docs/pl/dictionary/condition.md +232 -0
  313. package/docs/pl/dictionary/content_file.md +1130 -0
  314. package/docs/pl/dictionary/enumeration.md +245 -0
  315. package/docs/pl/dictionary/file.md +234 -0
  316. package/docs/pl/dictionary/function_fetching.md +214 -0
  317. package/docs/pl/dictionary/gender.md +276 -0
  318. package/docs/pl/dictionary/insertion.md +188 -0
  319. package/docs/pl/dictionary/markdown.md +408 -0
  320. package/docs/pl/dictionary/nesting.md +273 -0
  321. package/docs/pl/dictionary/translation.md +310 -0
  322. package/docs/pl/formatters.md +596 -0
  323. package/docs/pl/how_works_intlayer.md +256 -0
  324. package/docs/pl/index.md +176 -0
  325. package/docs/pl/interest_of_intlayer.md +291 -0
  326. package/docs/pl/intlayer_CMS.md +549 -0
  327. package/docs/pl/intlayer_cli.md +857 -0
  328. package/docs/pl/intlayer_visual_editor.md +288 -0
  329. package/docs/pl/intlayer_with_angular.md +690 -0
  330. package/docs/pl/intlayer_with_astro.md +280 -0
  331. package/docs/pl/intlayer_with_create_react_app.md +1235 -0
  332. package/docs/pl/intlayer_with_express.md +411 -0
  333. package/docs/pl/intlayer_with_lynx+react.md +518 -0
  334. package/docs/pl/intlayer_with_nestjs.md +272 -0
  335. package/docs/pl/intlayer_with_next-i18next.md +628 -0
  336. package/docs/pl/intlayer_with_next-intl.md +446 -0
  337. package/docs/pl/intlayer_with_nextjs_14.md +1594 -0
  338. package/docs/pl/intlayer_with_nextjs_15.md +1701 -0
  339. package/docs/pl/intlayer_with_nextjs_16.md +21 -0
  340. package/docs/pl/intlayer_with_nextjs_page_router.md +1513 -0
  341. package/docs/pl/intlayer_with_nuxt.md +885 -0
  342. package/docs/pl/intlayer_with_react_native+expo.md +698 -0
  343. package/docs/pl/intlayer_with_react_router_v7.md +503 -0
  344. package/docs/pl/intlayer_with_tanstack.md +562 -0
  345. package/docs/pl/intlayer_with_vite+preact.md +1736 -0
  346. package/docs/pl/intlayer_with_vite+react.md +1438 -0
  347. package/docs/pl/intlayer_with_vite+solid.md +290 -0
  348. package/docs/pl/intlayer_with_vite+svelte.md +289 -0
  349. package/docs/pl/intlayer_with_vite+vue.md +1116 -0
  350. package/docs/pl/introduction.md +209 -0
  351. package/docs/pl/locale_mapper.md +242 -0
  352. package/docs/pl/mcp_server.md +211 -0
  353. package/docs/pl/packages/express-intlayer/t.md +458 -0
  354. package/docs/pl/packages/intlayer/getConfiguration.md +146 -0
  355. package/docs/pl/packages/intlayer/getEnumeration.md +160 -0
  356. package/docs/pl/packages/intlayer/getHTMLTextDir.md +121 -0
  357. package/docs/pl/packages/intlayer/getLocaleLang.md +81 -0
  358. package/docs/pl/packages/intlayer/getLocaleName.md +118 -0
  359. package/docs/pl/packages/intlayer/getLocalizedUrl.md +300 -0
  360. package/docs/pl/packages/intlayer/getMultilingualUrls.md +221 -0
  361. package/docs/pl/packages/intlayer/getPathWithoutLocale.md +75 -0
  362. package/docs/pl/packages/intlayer/getTranslation.md +190 -0
  363. package/docs/pl/packages/intlayer/getTranslationContent.md +189 -0
  364. package/docs/pl/packages/next-intlayer/t.md +353 -0
  365. package/docs/pl/packages/next-intlayer/useDictionary.md +270 -0
  366. package/docs/pl/packages/next-intlayer/useIntlayer.md +263 -0
  367. package/docs/pl/packages/next-intlayer/useLocale.md +166 -0
  368. package/docs/pl/packages/react-intlayer/t.md +303 -0
  369. package/docs/pl/packages/react-intlayer/useDictionary.md +289 -0
  370. package/docs/pl/packages/react-intlayer/useI18n.md +249 -0
  371. package/docs/pl/packages/react-intlayer/useIntlayer.md +256 -0
  372. package/docs/pl/packages/react-intlayer/useLocale.md +210 -0
  373. package/docs/pl/per_locale_file.md +321 -0
  374. package/docs/pl/readme.md +261 -0
  375. package/docs/pl/releases/v6.md +305 -0
  376. package/docs/pl/roadmap.md +362 -0
  377. package/docs/pl/testing.md +202 -0
  378. package/docs/pl/vs_code_extension.md +126 -0
  379. package/docs/pt/component_i18n.md +1 -1
  380. package/docs/pt/configuration.md +6 -0
  381. package/docs/pt/intlayer_cli.md +8 -3
  382. package/docs/pt/intlayer_with_next-i18next.md +627 -0
  383. package/docs/pt/intlayer_with_next-intl.md +446 -0
  384. package/docs/pt/intlayer_with_nextjs_16.md +21 -0
  385. package/docs/pt/intlayer_with_tanstack.md +4 -0
  386. package/docs/pt/intlayer_with_vite+react.md +4 -0
  387. package/docs/ru/component_i18n.md +1 -1
  388. package/docs/ru/configuration.md +6 -0
  389. package/docs/ru/intlayer_cli.md +301 -22
  390. package/docs/ru/intlayer_with_next-i18next.md +629 -0
  391. package/docs/ru/intlayer_with_next-intl.md +448 -0
  392. package/docs/ru/intlayer_with_nextjs_16.md +21 -0
  393. package/docs/ru/intlayer_with_tanstack.md +4 -0
  394. package/docs/ru/intlayer_with_vite+react.md +4 -0
  395. package/docs/tr/component_i18n.md +1 -1
  396. package/docs/tr/configuration.md +6 -0
  397. package/docs/tr/intlayer_cli.md +8 -0
  398. package/docs/tr/intlayer_with_next-i18next.md +627 -0
  399. package/docs/tr/intlayer_with_next-intl.md +446 -0
  400. package/docs/tr/intlayer_with_nextjs_16.md +21 -0
  401. package/docs/tr/intlayer_with_tanstack.md +4 -0
  402. package/docs/tr/intlayer_with_vite+react.md +4 -0
  403. package/docs/vi/CI_CD.md +198 -0
  404. package/docs/vi/autoFill.md +284 -0
  405. package/docs/vi/component_i18n.md +186 -0
  406. package/docs/vi/configuration.md +710 -0
  407. package/docs/vi/dictionary/condition.md +237 -0
  408. package/docs/vi/dictionary/content_file.md +1115 -0
  409. package/docs/vi/dictionary/enumeration.md +255 -0
  410. package/docs/vi/dictionary/file.md +234 -0
  411. package/docs/vi/dictionary/function_fetching.md +212 -0
  412. package/docs/vi/dictionary/gender.md +275 -0
  413. package/docs/vi/dictionary/insertion.md +191 -0
  414. package/docs/vi/dictionary/markdown.md +381 -0
  415. package/docs/vi/dictionary/nesting.md +273 -0
  416. package/docs/vi/dictionary/translation.md +309 -0
  417. package/docs/vi/formatters.md +595 -0
  418. package/docs/vi/how_works_intlayer.md +256 -0
  419. package/docs/vi/index.md +174 -0
  420. package/docs/vi/interest_of_intlayer.md +292 -0
  421. package/docs/vi/intlayer_CMS.md +549 -0
  422. package/docs/vi/intlayer_cli.md +850 -0
  423. package/docs/vi/intlayer_visual_editor.md +288 -0
  424. package/docs/vi/intlayer_with_angular.md +692 -0
  425. package/docs/vi/intlayer_with_astro.md +252 -0
  426. package/docs/vi/intlayer_with_create_react_app.md +1230 -0
  427. package/docs/vi/intlayer_with_express.md +409 -0
  428. package/docs/vi/intlayer_with_lynx+react.md +520 -0
  429. package/docs/vi/intlayer_with_nestjs.md +272 -0
  430. package/docs/vi/intlayer_with_next-i18next.md +628 -0
  431. package/docs/vi/intlayer_with_next-intl.md +446 -0
  432. package/docs/vi/intlayer_with_nextjs_14.md +1584 -0
  433. package/docs/vi/intlayer_with_nextjs_15.md +1738 -0
  434. package/docs/vi/intlayer_with_nextjs_16.md +21 -0
  435. package/docs/vi/intlayer_with_nextjs_page_router.md +1504 -0
  436. package/docs/vi/intlayer_with_nuxt.md +821 -0
  437. package/docs/vi/intlayer_with_react_native+expo.md +700 -0
  438. package/docs/vi/intlayer_with_react_router_v7.md +498 -0
  439. package/docs/vi/intlayer_with_tanstack.md +562 -0
  440. package/docs/vi/intlayer_with_vite+preact.md +1722 -0
  441. package/docs/vi/intlayer_with_vite+react.md +1407 -0
  442. package/docs/vi/intlayer_with_vite+solid.md +287 -0
  443. package/docs/vi/intlayer_with_vite+svelte.md +289 -0
  444. package/docs/vi/intlayer_with_vite+vue.md +1071 -0
  445. package/docs/vi/introduction.md +215 -0
  446. package/docs/vi/locale_mapper.md +242 -0
  447. package/docs/vi/mcp_server.md +211 -0
  448. package/docs/vi/packages/express-intlayer/t.md +457 -0
  449. package/docs/vi/packages/intlayer/getConfiguration.md +145 -0
  450. package/docs/vi/packages/intlayer/getEnumeration.md +162 -0
  451. package/docs/vi/packages/intlayer/getHTMLTextDir.md +121 -0
  452. package/docs/vi/packages/intlayer/getLocaleLang.md +81 -0
  453. package/docs/vi/packages/intlayer/getLocaleName.md +129 -0
  454. package/docs/vi/packages/intlayer/getLocalizedUrl.md +309 -0
  455. package/docs/vi/packages/intlayer/getMultilingualUrls.md +221 -0
  456. package/docs/vi/packages/intlayer/getPathWithoutLocale.md +75 -0
  457. package/docs/vi/packages/intlayer/getTranslation.md +201 -0
  458. package/docs/vi/packages/intlayer/getTranslationContent.md +188 -0
  459. package/docs/vi/packages/next-intlayer/t.md +352 -0
  460. package/docs/vi/packages/next-intlayer/useDictionary.md +273 -0
  461. package/docs/vi/packages/next-intlayer/useIntlayer.md +264 -0
  462. package/docs/vi/packages/next-intlayer/useLocale.md +166 -0
  463. package/docs/vi/packages/react-intlayer/t.md +304 -0
  464. package/docs/vi/packages/react-intlayer/useDictionary.md +288 -0
  465. package/docs/vi/packages/react-intlayer/useI18n.md +295 -0
  466. package/docs/vi/packages/react-intlayer/useIntlayer.md +256 -0
  467. package/docs/vi/packages/react-intlayer/useLocale.md +210 -0
  468. package/docs/vi/per_locale_file.md +326 -0
  469. package/docs/vi/readme.md +261 -0
  470. package/docs/vi/releases/v6.md +305 -0
  471. package/docs/vi/roadmap.md +346 -0
  472. package/docs/vi/testing.md +202 -0
  473. package/docs/vi/vs_code_extension.md +126 -0
  474. package/docs/zh/configuration.md +6 -0
  475. package/docs/zh/intlayer_cli.md +8 -3
  476. package/docs/zh/intlayer_with_next-i18next.md +628 -0
  477. package/docs/zh/intlayer_with_next-intl.md +448 -0
  478. package/docs/zh/intlayer_with_nextjs_16.md +21 -0
  479. package/docs/zh/intlayer_with_tanstack.md +4 -0
  480. package/docs/zh/intlayer_with_vite+react.md +4 -0
  481. package/frequent_questions/ar/SSR_Next_no_[locale].md +1 -2
  482. package/frequent_questions/ar/array_as_content_declaration.md +1 -2
  483. package/frequent_questions/ar/build_dictionaries.md +1 -2
  484. package/frequent_questions/ar/build_error_CI_CD.md +1 -2
  485. package/frequent_questions/ar/bun_set_up.md +1 -2
  486. package/frequent_questions/ar/customized_locale_list.md +1 -2
  487. package/frequent_questions/ar/domain_routing.md +1 -2
  488. package/frequent_questions/ar/esbuild_error.md +1 -2
  489. package/frequent_questions/ar/get_locale_cookie.md +1 -2
  490. package/frequent_questions/ar/intlayer_command_undefined.md +1 -2
  491. package/frequent_questions/ar/locale_incorect_in_url.md +1 -2
  492. package/frequent_questions/ar/static_rendering.md +1 -3
  493. package/frequent_questions/ar/translated_path_url.md +1 -2
  494. package/frequent_questions/ar/unknown_command.md +1 -2
  495. package/frequent_questions/de/SSR_Next_no_[locale].md +1 -2
  496. package/frequent_questions/de/array_as_content_declaration.md +1 -2
  497. package/frequent_questions/de/build_dictionaries.md +1 -2
  498. package/frequent_questions/de/build_error_CI_CD.md +1 -2
  499. package/frequent_questions/de/bun_set_up.md +1 -2
  500. package/frequent_questions/de/customized_locale_list.md +1 -2
  501. package/frequent_questions/de/domain_routing.md +1 -2
  502. package/frequent_questions/de/esbuild_error.md +1 -2
  503. package/frequent_questions/de/get_locale_cookie.md +1 -2
  504. package/frequent_questions/de/intlayer_command_undefined.md +1 -2
  505. package/frequent_questions/de/locale_incorect_in_url.md +1 -2
  506. package/frequent_questions/de/static_rendering.md +1 -3
  507. package/frequent_questions/de/translated_path_url.md +1 -2
  508. package/frequent_questions/de/unknown_command.md +1 -2
  509. package/frequent_questions/en/SSR_Next_no_[locale].md +1 -2
  510. package/frequent_questions/en/array_as_content_declaration.md +1 -2
  511. package/frequent_questions/en/build_dictionaries.md +1 -2
  512. package/frequent_questions/en/build_error_CI_CD.md +1 -2
  513. package/frequent_questions/en/bun_set_up.md +1 -2
  514. package/frequent_questions/en/customized_locale_list.md +1 -2
  515. package/frequent_questions/en/domain_routing.md +1 -2
  516. package/frequent_questions/en/esbuild_error.md +1 -2
  517. package/frequent_questions/en/get_locale_cookie.md +1 -2
  518. package/frequent_questions/en/intlayer_command_undefined.md +1 -2
  519. package/frequent_questions/en/locale_incorect_in_url.md +1 -2
  520. package/frequent_questions/en/static_rendering.md +1 -3
  521. package/frequent_questions/en/translated_path_url.md +1 -2
  522. package/frequent_questions/en/unknown_command.md +1 -2
  523. package/frequent_questions/en-GB/SSR_Next_no_[locale].md +1 -2
  524. package/frequent_questions/en-GB/array_as_content_declaration.md +1 -2
  525. package/frequent_questions/en-GB/build_dictionaries.md +1 -2
  526. package/frequent_questions/en-GB/build_error_CI_CD.md +1 -2
  527. package/frequent_questions/en-GB/bun_set_up.md +1 -2
  528. package/frequent_questions/en-GB/customized_locale_list.md +1 -2
  529. package/frequent_questions/en-GB/domain_routing.md +1 -2
  530. package/frequent_questions/en-GB/esbuild_error.md +1 -2
  531. package/frequent_questions/en-GB/get_locale_cookie.md +1 -2
  532. package/frequent_questions/en-GB/intlayer_command_undefined.md +1 -2
  533. package/frequent_questions/en-GB/locale_incorect_in_url.md +1 -2
  534. package/frequent_questions/en-GB/static_rendering.md +1 -3
  535. package/frequent_questions/en-GB/translated_path_url.md +1 -2
  536. package/frequent_questions/en-GB/unknown_command.md +1 -2
  537. package/frequent_questions/es/SSR_Next_no_[locale].md +1 -2
  538. package/frequent_questions/es/array_as_content_declaration.md +1 -2
  539. package/frequent_questions/es/build_dictionaries.md +1 -2
  540. package/frequent_questions/es/build_error_CI_CD.md +1 -2
  541. package/frequent_questions/es/bun_set_up.md +1 -2
  542. package/frequent_questions/es/customized_locale_list.md +1 -2
  543. package/frequent_questions/es/domain_routing.md +1 -2
  544. package/frequent_questions/es/esbuild_error.md +1 -2
  545. package/frequent_questions/es/get_locale_cookie.md +1 -2
  546. package/frequent_questions/es/intlayer_command_undefined.md +1 -2
  547. package/frequent_questions/es/locale_incorect_in_url.md +1 -2
  548. package/frequent_questions/es/static_rendering.md +1 -3
  549. package/frequent_questions/es/translated_path_url.md +1 -2
  550. package/frequent_questions/es/unknown_command.md +1 -2
  551. package/frequent_questions/fr/SSR_Next_no_[locale].md +1 -2
  552. package/frequent_questions/fr/array_as_content_declaration.md +1 -2
  553. package/frequent_questions/fr/build_dictionaries.md +1 -2
  554. package/frequent_questions/fr/build_error_CI_CD.md +1 -2
  555. package/frequent_questions/fr/bun_set_up.md +1 -2
  556. package/frequent_questions/fr/customized_locale_list.md +1 -2
  557. package/frequent_questions/fr/domain_routing.md +1 -2
  558. package/frequent_questions/fr/esbuild_error.md +1 -2
  559. package/frequent_questions/fr/get_locale_cookie.md +1 -2
  560. package/frequent_questions/fr/intlayer_command_undefined.md +1 -2
  561. package/frequent_questions/fr/locale_incorect_in_url.md +1 -2
  562. package/frequent_questions/fr/static_rendering.md +1 -3
  563. package/frequent_questions/fr/translated_path_url.md +1 -2
  564. package/frequent_questions/fr/unknown_command.md +1 -2
  565. package/frequent_questions/hi/SSR_Next_no_[locale].md +1 -2
  566. package/frequent_questions/hi/array_as_content_declaration.md +1 -2
  567. package/frequent_questions/hi/build_dictionaries.md +1 -2
  568. package/frequent_questions/hi/build_error_CI_CD.md +1 -2
  569. package/frequent_questions/hi/bun_set_up.md +1 -2
  570. package/frequent_questions/hi/customized_locale_list.md +1 -2
  571. package/frequent_questions/hi/domain_routing.md +1 -2
  572. package/frequent_questions/hi/esbuild_error.md +1 -2
  573. package/frequent_questions/hi/get_locale_cookie.md +1 -2
  574. package/frequent_questions/hi/intlayer_command_undefined.md +1 -2
  575. package/frequent_questions/hi/locale_incorect_in_url.md +1 -2
  576. package/frequent_questions/hi/static_rendering.md +1 -3
  577. package/frequent_questions/hi/translated_path_url.md +1 -2
  578. package/frequent_questions/hi/unknown_command.md +1 -2
  579. package/frequent_questions/id/SSR_Next_no_[locale].md +104 -0
  580. package/frequent_questions/id/array_as_content_declaration.md +71 -0
  581. package/frequent_questions/id/build_dictionaries.md +58 -0
  582. package/frequent_questions/id/build_error_CI_CD.md +74 -0
  583. package/frequent_questions/id/bun_set_up.md +53 -0
  584. package/frequent_questions/id/customized_locale_list.md +64 -0
  585. package/frequent_questions/id/domain_routing.md +113 -0
  586. package/frequent_questions/id/esbuild_error.md +29 -0
  587. package/frequent_questions/id/get_locale_cookie.md +142 -0
  588. package/frequent_questions/id/intlayer_command_undefined.md +155 -0
  589. package/frequent_questions/id/locale_incorect_in_url.md +73 -0
  590. package/frequent_questions/id/static_rendering.md +44 -0
  591. package/frequent_questions/id/translated_path_url.md +55 -0
  592. package/frequent_questions/id/unknown_command.md +97 -0
  593. package/frequent_questions/it/SSR_Next_no_[locale].md +1 -2
  594. package/frequent_questions/it/array_as_content_declaration.md +1 -2
  595. package/frequent_questions/it/build_dictionaries.md +1 -2
  596. package/frequent_questions/it/build_error_CI_CD.md +1 -2
  597. package/frequent_questions/it/bun_set_up.md +1 -2
  598. package/frequent_questions/it/customized_locale_list.md +1 -2
  599. package/frequent_questions/it/domain_routing.md +1 -2
  600. package/frequent_questions/it/esbuild_error.md +1 -2
  601. package/frequent_questions/it/get_locale_cookie.md +1 -2
  602. package/frequent_questions/it/intlayer_command_undefined.md +1 -2
  603. package/frequent_questions/it/locale_incorect_in_url.md +1 -2
  604. package/frequent_questions/it/static_rendering.md +1 -3
  605. package/frequent_questions/it/translated_path_url.md +1 -2
  606. package/frequent_questions/it/unknown_command.md +1 -2
  607. package/frequent_questions/ja/SSR_Next_no_[locale].md +1 -2
  608. package/frequent_questions/ja/array_as_content_declaration.md +1 -2
  609. package/frequent_questions/ja/build_dictionaries.md +1 -2
  610. package/frequent_questions/ja/build_error_CI_CD.md +1 -2
  611. package/frequent_questions/ja/bun_set_up.md +1 -2
  612. package/frequent_questions/ja/customized_locale_list.md +1 -2
  613. package/frequent_questions/ja/domain_routing.md +1 -2
  614. package/frequent_questions/ja/esbuild_error.md +1 -2
  615. package/frequent_questions/ja/get_locale_cookie.md +1 -2
  616. package/frequent_questions/ja/intlayer_command_undefined.md +1 -2
  617. package/frequent_questions/ja/locale_incorect_in_url.md +1 -2
  618. package/frequent_questions/ja/static_rendering.md +1 -3
  619. package/frequent_questions/ja/translated_path_url.md +1 -2
  620. package/frequent_questions/ja/unknown_command.md +1 -2
  621. package/frequent_questions/ko/SSR_Next_no_[locale].md +1 -2
  622. package/frequent_questions/ko/array_as_content_declaration.md +1 -2
  623. package/frequent_questions/ko/build_dictionaries.md +1 -2
  624. package/frequent_questions/ko/build_error_CI_CD.md +1 -2
  625. package/frequent_questions/ko/bun_set_up.md +1 -2
  626. package/frequent_questions/ko/customized_locale_list.md +1 -2
  627. package/frequent_questions/ko/domain_routing.md +1 -2
  628. package/frequent_questions/ko/esbuild_error.md +1 -2
  629. package/frequent_questions/ko/get_locale_cookie.md +1 -2
  630. package/frequent_questions/ko/intlayer_command_undefined.md +1 -2
  631. package/frequent_questions/ko/locale_incorect_in_url.md +1 -2
  632. package/frequent_questions/ko/static_rendering.md +1 -3
  633. package/frequent_questions/ko/translated_path_url.md +1 -2
  634. package/frequent_questions/ko/unknown_command.md +1 -2
  635. package/frequent_questions/pl/SSR_Next_no_[locale].md +104 -0
  636. package/frequent_questions/pl/array_as_content_declaration.md +71 -0
  637. package/frequent_questions/pl/build_dictionaries.md +58 -0
  638. package/frequent_questions/pl/build_error_CI_CD.md +74 -0
  639. package/frequent_questions/pl/bun_set_up.md +54 -0
  640. package/frequent_questions/pl/customized_locale_list.md +64 -0
  641. package/frequent_questions/pl/domain_routing.md +113 -0
  642. package/frequent_questions/pl/esbuild_error.md +29 -0
  643. package/frequent_questions/pl/get_locale_cookie.md +142 -0
  644. package/frequent_questions/pl/intlayer_command_undefined.md +155 -0
  645. package/frequent_questions/pl/locale_incorect_in_url.md +73 -0
  646. package/frequent_questions/pl/static_rendering.md +44 -0
  647. package/frequent_questions/pl/translated_path_url.md +55 -0
  648. package/frequent_questions/pl/unknown_command.md +97 -0
  649. package/frequent_questions/pt/SSR_Next_no_[locale].md +1 -2
  650. package/frequent_questions/pt/array_as_content_declaration.md +1 -2
  651. package/frequent_questions/pt/build_dictionaries.md +1 -2
  652. package/frequent_questions/pt/build_error_CI_CD.md +1 -2
  653. package/frequent_questions/pt/bun_set_up.md +1 -2
  654. package/frequent_questions/pt/customized_locale_list.md +1 -2
  655. package/frequent_questions/pt/domain_routing.md +1 -2
  656. package/frequent_questions/pt/esbuild_error.md +1 -2
  657. package/frequent_questions/pt/get_locale_cookie.md +1 -2
  658. package/frequent_questions/pt/intlayer_command_undefined.md +1 -2
  659. package/frequent_questions/pt/locale_incorect_in_url.md +1 -2
  660. package/frequent_questions/pt/static_rendering.md +1 -3
  661. package/frequent_questions/pt/translated_path_url.md +1 -2
  662. package/frequent_questions/pt/unknown_command.md +1 -2
  663. package/frequent_questions/ru/SSR_Next_no_[locale].md +1 -2
  664. package/frequent_questions/ru/array_as_content_declaration.md +1 -2
  665. package/frequent_questions/ru/build_dictionaries.md +1 -2
  666. package/frequent_questions/ru/build_error_CI_CD.md +1 -2
  667. package/frequent_questions/ru/bun_set_up.md +1 -2
  668. package/frequent_questions/ru/customized_locale_list.md +1 -2
  669. package/frequent_questions/ru/domain_routing.md +1 -2
  670. package/frequent_questions/ru/esbuild_error.md +1 -2
  671. package/frequent_questions/ru/get_locale_cookie.md +1 -2
  672. package/frequent_questions/ru/intlayer_command_undefined.md +1 -2
  673. package/frequent_questions/ru/locale_incorect_in_url.md +1 -2
  674. package/frequent_questions/ru/static_rendering.md +1 -2
  675. package/frequent_questions/ru/translated_path_url.md +1 -2
  676. package/frequent_questions/ru/unknown_command.md +1 -2
  677. package/frequent_questions/tr/SSR_Next_no_[locale].md +1 -2
  678. package/frequent_questions/tr/array_as_content_declaration.md +1 -2
  679. package/frequent_questions/tr/build_dictionaries.md +1 -2
  680. package/frequent_questions/tr/build_error_CI_CD.md +1 -2
  681. package/frequent_questions/tr/bun_set_up.md +1 -2
  682. package/frequent_questions/tr/customized_locale_list.md +1 -2
  683. package/frequent_questions/tr/domain_routing.md +1 -2
  684. package/frequent_questions/tr/esbuild_error.md +1 -2
  685. package/frequent_questions/tr/get_locale_cookie.md +1 -2
  686. package/frequent_questions/tr/intlayer_command_undefined.md +1 -2
  687. package/frequent_questions/tr/locale_incorect_in_url.md +1 -2
  688. package/frequent_questions/tr/static_rendering.md +1 -2
  689. package/frequent_questions/tr/translated_path_url.md +1 -2
  690. package/frequent_questions/tr/unknown_command.md +1 -2
  691. package/frequent_questions/vi/SSR_Next_no_[locale].md +106 -0
  692. package/frequent_questions/vi/array_as_content_declaration.md +71 -0
  693. package/frequent_questions/vi/build_dictionaries.md +58 -0
  694. package/frequent_questions/vi/build_error_CI_CD.md +74 -0
  695. package/frequent_questions/vi/bun_set_up.md +53 -0
  696. package/frequent_questions/vi/customized_locale_list.md +64 -0
  697. package/frequent_questions/vi/domain_routing.md +113 -0
  698. package/frequent_questions/vi/esbuild_error.md +29 -0
  699. package/frequent_questions/vi/get_locale_cookie.md +142 -0
  700. package/frequent_questions/vi/intlayer_command_undefined.md +155 -0
  701. package/frequent_questions/vi/locale_incorect_in_url.md +73 -0
  702. package/frequent_questions/vi/static_rendering.md +44 -0
  703. package/frequent_questions/vi/translated_path_url.md +55 -0
  704. package/frequent_questions/vi/unknown_command.md +97 -0
  705. package/frequent_questions/zh/SSR_Next_no_[locale].md +1 -2
  706. package/frequent_questions/zh/array_as_content_declaration.md +1 -2
  707. package/frequent_questions/zh/build_dictionaries.md +1 -2
  708. package/frequent_questions/zh/build_error_CI_CD.md +1 -2
  709. package/frequent_questions/zh/bun_set_up.md +1 -2
  710. package/frequent_questions/zh/customized_locale_list.md +1 -2
  711. package/frequent_questions/zh/domain_routing.md +1 -2
  712. package/frequent_questions/zh/esbuild_error.md +1 -2
  713. package/frequent_questions/zh/get_locale_cookie.md +1 -2
  714. package/frequent_questions/zh/intlayer_command_undefined.md +1 -2
  715. package/frequent_questions/zh/locale_incorect_in_url.md +1 -2
  716. package/frequent_questions/zh/static_rendering.md +1 -3
  717. package/frequent_questions/zh/translated_path_url.md +1 -2
  718. package/frequent_questions/zh/unknown_command.md +1 -2
  719. package/legal/id/privacy_notice.md +83 -0
  720. package/legal/id/terms_of_service.md +55 -0
  721. package/legal/pl/privacy_notice.md +83 -0
  722. package/legal/pl/terms_of_service.md +55 -0
  723. package/legal/vi/privacy_notice.md +83 -0
  724. package/legal/vi/terms_of_service.md +55 -0
  725. package/package.json +19 -18
  726. package/src/generated/blog.entry.ts +38 -0
@@ -1,3 +1,64 @@
1
+ ---
2
+ createdAt: 2025-10-05
3
+ updatedAt: 2025-10-05
4
+ title: How to translate your Next.js 15 using next-i18next – i18n guide 2025
5
+ description: A practical, production-ready guide to internationalise a Next.js 15 App Router app with i18next/next-i18next and enhance it with Intlayer.
6
+ keywords:
7
+ - Internationalisation
8
+ - Documentation
9
+ - Intlayer
10
+ - Next.js 15
11
+ - next-i18next
12
+ - i18next
13
+ - JavaScript
14
+ - React
15
+ slugs:
16
+ - doc
17
+ - next-i18next
18
+ applicationTemplate: https://github.com/aymericzip/intlayer-next-i18next-template
19
+ ---
20
+
21
+ # Translate your Next.js 15 using next-i18next website using Intlayer | Internationalisation (i18n)
22
+
23
+ ### Who this guide is for
24
+
25
+ - **Junior**: Follow the exact steps and copy the code blocks. You’ll get a working multilingual app.
26
+ - **Mid-level**: Use the checklists and best-practice callouts to avoid common pitfalls.
27
+ - **Senior**: Skim the high-level structure, SEO, and automation sections; you’ll find sensible defaults and extension points.
28
+
29
+ ### What you’ll build
30
+
31
+ - App Router project with localised routes (e.g., `/`, `/fr/...`)
32
+ - i18n config with locales, default locale, RTL support
33
+ - Server-side i18n initialisation and a client provider
34
+ - Namespaced translations loaded on-demand
35
+ - SEO with `hreflang`, localised `sitemap`, `robots`
36
+ - Middleware for locale routing
37
+ - Intlayer integration to automate translation workflows (tests, AI fill, JSON sync)
38
+
39
+ > Note: next-i18next is built on top of i18next. This guide uses the i18next primitives compatible with next-i18next in the App Router, while keeping the architecture simple and production-ready.
40
+ > For a broader comparison, see [next-i18next vs next-i18next vs Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/{{locale}}/next-i18next_vs_next-i18next_vs_intlayer.md).
41
+
42
+ ---
43
+
44
+ ## 1) Project structure
45
+
46
+ Install the next-i18next dependencies:
47
+
48
+ ```bash packageManager="npm"
49
+ npm install next-i18next i18next react-i18next i18next-resources-to-backend
50
+ ```
51
+
52
+ ```bash packageManager="pnpm"
53
+ pnpm add next-i18next i18next react-i18next i18next-resources-to-backend
54
+ ```
55
+
56
+ ```bash packageManager="yarn"
57
+ yarn add next-i18next i18next react-i18next i18next-resources-to-backend
58
+ ```
59
+
60
+ Start with a clear structure. Keep messages split by locale and namespace.
61
+
1
62
  ```bash
2
63
  .
3
64
  ├── i18n.config.ts
@@ -21,6 +82,32 @@
21
82
  └── ServerComponent.tsx
22
83
  ```
23
84
 
85
+ Checklist (mid/senior):
86
+
87
+ - Keep one JSON per namespace per locale
88
+ - Do not over-centralise messages; use small, page/feature-scoped namespaces
89
+ - Avoid importing all locales at once; load only what you need
90
+
91
+ ---
92
+
93
+ ## 2) Install dependencies
94
+
95
+ ```bash
96
+ pnpm add i18next react-i18next i18next-resources-to-backend
97
+ ```
98
+
99
+ If you plan to use next-i18next APIs or config interop, also:
100
+
101
+ ```bash
102
+ pnpm add next-i18next
103
+ ```
104
+
105
+ ---
106
+
107
+ ## 3) Core i18n config
108
+
109
+ Define locales, default locale, RTL, and helpers for localised paths/URLs.
110
+
24
111
  ```ts fileName="i18n.config.ts"
25
112
  export const locales = ["en", "fr"] as const;
26
113
  export type Locale = (typeof locales)[number];
@@ -41,6 +128,14 @@ export function abs(locale: string, path: string) {
41
128
  }
42
129
  ```
43
130
 
131
+ Senior note: If you use `next-i18next.config.js`, keep it aligned with `i18n.config.ts` to avoid divergence.
132
+
133
+ ---
134
+
135
+ ## 4) Server-side i18n initialization
136
+
137
+ Initialise i18next on the server with a dynamic backend that imports only the required locale/namespace JSON.
138
+
44
139
  ```ts fileName="src/app/i18n/server.ts"
45
140
  import { createInstance } from "i18next";
46
141
  import { initReactI18next } from "react-i18next/initReactI18next";
@@ -73,6 +168,14 @@ export async function initI18next(
73
168
  }
74
169
  ```
75
170
 
171
+ Mid note: Keep the namespace list short per page to limit payload. Avoid global “catch-all” bundles.
172
+
173
+ ---
174
+
175
+ ## 5) Client provider for React components
176
+
177
+ Wrap client components with a provider that mirrors the server config and loads only the requested namespaces.
178
+
76
179
  ```tsx fileName="src/components/I18nProvider.tsx"
77
180
  "use client";
78
181
 
@@ -123,6 +226,14 @@ export default function I18nProvider({
123
226
  }
124
227
  ```
125
228
 
229
+ Junior tip: You don’t need to pass all messages to the client. Start with the page’s namespaces only.
230
+
231
+ ---
232
+
233
+ ## 6) Localised layout and routes
234
+
235
+ Set language and direction, and pre-generate routes per locale to favour static rendering.
236
+
126
237
  ```tsx fileName="src/app/[locale]/layout.tsx"
127
238
  import type { ReactNode } from "react";
128
239
  import { locales, defaultLocale, isRtl, type Locale } from "@/i18n.config";
@@ -154,6 +265,10 @@ export default function LocaleLayout({
154
265
  }
155
266
  ```
156
267
 
268
+ ---
269
+
270
+ ## 7) Example page with server + client usage
271
+
157
272
  ```tsx fileName="src/app/[locale]/about.tsx"
158
273
  import I18nProvider from "@/components/I18nProvider";
159
274
  import { initI18next } from "@/app/i18n/server";
@@ -161,6 +276,9 @@ import type { Locale } from "@/i18n.config";
161
276
  import ClientComponent from "@/components/ClientComponent";
162
277
  import ServerComponent from "@/components/ServerComponent";
163
278
 
279
+ // Force static rendering for the page
280
+ export const dynamic = "force-static";
281
+
164
282
  export default async function AboutPage({
165
283
  params: { locale },
166
284
  }: {
@@ -184,7 +302,7 @@ export default async function AboutPage({
184
302
  }
185
303
  ```
186
304
 
187
- **Translations (one JSON per namespace under `src/locales/...`)**
305
+ Translations (one JSON per namespace under `src/locales/...`):
188
306
 
189
307
  ```json fileName="src/locales/en/about.json"
190
308
  {
@@ -202,13 +320,13 @@ export default async function AboutPage({
202
320
  "title": "À propos",
203
321
  "description": "Description de la page À propos",
204
322
  "counter": {
205
- "label": "Compteur",
206
- "increment": "Incrémenter"
323
+ "label": "Counter",
324
+ "increment": "Increment"
207
325
  }
208
326
  }
209
327
  ```
210
328
 
211
- **Client component (loads only the required namespace)**
329
+ Client component (loads only the required namespace):
212
330
 
213
331
  ```tsx fileName="src/components/ClientComponent.tsx"
214
332
  "use client";
@@ -238,14 +356,10 @@ const ClientComponent = () => {
238
356
  export default ClientComponent;
239
357
  ```
240
358
 
241
- > Ensure the page/provider includes only the namespaces you need (e.g. `about`).
242
- > If you use React < 19, memoize heavy formatters like `Intl.NumberFormat`.
243
-
244
- ---
245
-
246
- ### Usage in a sync server component
359
+ > Ensure the page/provider includes only the namespaces you need (e.g., `about`).
360
+ > If you use React < 19, memoise heavy formatters like `Intl.NumberFormat`.
247
361
 
248
- This server component can be inserted under a client component. Because it might be nested under a client boundary, it should be synchronous. Compute translations and locale-dependent formatting in the parent (or pass the `t` function) and provide data via props.
362
+ Synchronous server component embedded under a client boundary:
249
363
 
250
364
  ```tsx fileName="src/components/ServerComponent.tsx"
251
365
  type ServerComponentProps = {
@@ -268,38 +382,18 @@ const ServerComponent = ({ t, locale, count }: ServerComponentProps) => {
268
382
  export default ServerComponent;
269
383
  ```
270
384
 
271
- ### Metadata / Sitemap / Robots
272
-
273
- Translating content is great. But people usually forget that the main goal of internationalization is to make your website more visible to the world. I18n is an incredible lever to improve your website visibility.
385
+ ---
274
386
 
275
- Here's a list of good practices regarding multilingual SEO.
387
+ ## 8) SEO: Metadata, Hreflang, Sitemap, Robots
276
388
 
277
- - set hreflang meta tags in the `<head>` tag
278
- > It helps search engines to understand what languages are available on the page
279
- - list all pages translations in the sitemap.xml using `http://www.w3.org/1999/xhtml` XML schema
280
- >
281
- - do not forget to exclude prefixed pages from the robots.txt (e.g. `/dashboard`, and `/fr/dashboard`, `/es/dashboard`)
282
- >
283
- - use custom Link component to redirect to the most localized page (e.g. in french `<a href="/fr/about">A propos</a>` )
284
- >
389
+ Translating content is a means to improve reach. Wire up multilingual SEO thoroughly.
285
390
 
286
- Developers often forget to properly reference their pages across locales.
391
+ Best practices:
287
392
 
288
- ```ts fileName="i18n.config.ts"
289
- export const locales = ["en", "fr"] as const;
290
- export type Locale = (typeof locales)[number];
291
- export const defaultLocale: Locale = "en";
292
- export const rtlLocales = ["ar", "he", "fa", "ur"] as const;
293
- export const isRtl = (locale: string) =>
294
- (rtlLocales as readonly string[]).includes(locale);
295
- export function localizedPath(locale: string, path: string) {
296
- return locale === defaultLocale ? path : "/" + locale + path;
297
- }
298
- const ORIGIN = "https://example.com";
299
- export function abs(locale: string, path: string) {
300
- return ORIGIN + localizedPath(locale, path);
301
- }
302
- ```
393
+ - Set `lang` and `dir` at the root
394
+ - Add `alternates.languages` for each locale (+ `x-default`)
395
+ - List translated URLs in `sitemap.xml` and use `hreflang`
396
+ - Exclude localised private areas (e.g., `/fr/admin`) in `robots.txt`
303
397
 
304
398
  ```tsx fileName="src/app/[locale]/about/layout.tsx"
305
399
  import type { Metadata } from "next";
@@ -385,9 +479,9 @@ export default function robots(): MetadataRoute.Robots {
385
479
 
386
480
  ---
387
481
 
388
- ### Middleware for locale routing
482
+ ## 9) Middleware for locale routing
389
483
 
390
- Add a middleware to handle locale detection and routing:
484
+ Detect locale and redirect to a localised route if missing.
391
485
 
392
486
  ```ts fileName="src/middleware.ts"
393
487
  import { NextResponse, type NextRequest } from "next/server";
@@ -421,8 +515,113 @@ export function middleware(request: NextRequest) {
421
515
 
422
516
  export const config = {
423
517
  matcher: [
424
- // Match all paths except the ones starting with these and files with an extension
518
+ // Match all paths except those starting with these and files with an extension
425
519
  "/((?!api|_next|static|.*\\..*).*)",
426
520
  ],
427
521
  };
428
522
  ```
523
+
524
+ ---
525
+
526
+ ## 10) Performance and DX best practices
527
+
528
+ - **Set html `lang` and `dir`**: Done in `src/app/[locale]/layout.tsx`.
529
+ - **Split messages by namespace**: Keep bundles small (`common.json`, `about.json`, etc.).
530
+ - **Minimise client payload**: On pages, pass only required namespaces to the provider.
531
+ - **Prefer static pages**: Use `export const dynamic = 'force-static'` and `generateStaticParams` per locale.
532
+ - **Sync server components**: Pass precomputed strings/formatting instead of async calls at render time.
533
+ - **Memoise heavy operations**: Especially in client code for older React versions.
534
+ - **Cache and headers**: Prefer static or `revalidate` over dynamic rendering when feasible.
535
+
536
+ ---
537
+
538
+ ## 11) Testing and CI
539
+
540
+ - Add unit tests for components using `t` to ensure keys exist.
541
+ - Validate that each namespace has the same keys across locales.
542
+ - Surface missing keys during CI before deployment.
543
+
544
+ Intlayer will automate much of this (see next section).
545
+
546
+ ---
547
+
548
+ ## 12) Add Intlayer on top (automation)
549
+
550
+ Intlayer helps you keep JSON translations in sync, test for missing keys, and fill with AI when desired.
551
+
552
+ Install the intlayer dependencies:
553
+
554
+ ```bash packageManager="npm"
555
+ npm install intlayer @intlayer/sync-json-plugin -D
556
+ ```
557
+
558
+ ```bash packageManager="pnpm"
559
+ pnpm add intlayer @intlayer/sync-json-plugin -D
560
+ ```
561
+
562
+ ```bash packageManager="yarn"
563
+ yarn add intlayer @intlayer/sync-json-plugin -D
564
+ ```
565
+
566
+ ```ts fileName="intlayer.config.ts"
567
+ import { type IntlayerConfig, Locales } from "intlayer";
568
+ import { locales, defaultLocale } from "@/i18n";
569
+ import { syncJSON } from "@intlayer/sync-json";
570
+
571
+ export const locales = [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH];
572
+
573
+ const config: IntlayerConfig = {
574
+ internationalisation: {
575
+ locales,
576
+ defaultLocale,
577
+ },
578
+ ai: {
579
+ apiKey: process.env.OPENAI_API_KEY,
580
+ },
581
+ plugins: [
582
+ syncJSON({
583
+ source: ({ locale }) => `./locales/${locale}.json`,
584
+ }),
585
+ ],
586
+ };
587
+
588
+ export default config;
589
+ ```
590
+
591
+ Add package scripts:
592
+
593
+ ```json fileName="package.json"
594
+ {
595
+ "scripts": {
596
+ "i18n:fill": "intlayer fill",
597
+ "i18n:test": "intlayer test"
598
+ }
599
+ }
600
+ ```
601
+
602
+ Common flows:
603
+
604
+ - `pnpm i18n:test` in CI to fail builds on missing keys
605
+ - `pnpm i18n:fill` locally to propose AI translations for newly added keys
606
+
607
+ > You can provide CLI arguments; see the [Intlayer CLI docs](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_cli.md).
608
+
609
+ ---
610
+
611
+ ## 13) Troubleshooting
612
+
613
+ - **Keys not found**: Ensure the page/provider lists the correct namespaces and the JSON file exists under `src/locales/<locale>/<namespace>.json`.
614
+ - **Wrong language/flash of English**: Double-check locale detection in `middleware.ts` and provider `lng`.
615
+ - **RTL layout issues**: Verify `dir` is derived from `isRtl(locale)` and that your CSS respects `[dir="rtl"]`.
616
+ - **SEO alternates missing**: Confirm `alternates.languages` includes all locales and `x-default`.
617
+ - **Bundles too large**: Split namespaces further and avoid importing entire `locales` trees on the client.
618
+
619
+ ---
620
+
621
+ ## 14) What’s next
622
+
623
+ - Add more locales and namespaces as features grow
624
+ - Localise error pages, emails, and API-driven content
625
+ - Extend Intlayer workflows to auto-open PRs for translation updates
626
+
627
+ If you prefer a starter, try the template: `https://github.com/aymericzip/intlayer-next-i18next-template`.
@@ -1,3 +1,57 @@
1
+ ---
2
+ createdAt: 2025-10-05
3
+ updatedAt: 2025-10-05
4
+ title: How to translate your Next.js 15 using next-intl – i18n guide 2025
5
+ description: Discover how to make your Next.js 15 App Router website multilingual. Follow the documentation to internationalise (i18n) and translate it.
6
+ keywords:
7
+ - Internationalisation
8
+ - Documentation
9
+ - Intlayer
10
+ - Next.js 15
11
+ - next-intl
12
+ - JavaScript
13
+ - React
14
+ slugs:
15
+ - doc
16
+ - next-intl
17
+ applicationTemplate: https://github.com/aymericzip/intlayer-next-intl-template
18
+ ---
19
+
20
+ # Translate your Next.js 15 using next-intl website using Intlayer | Internationalisation (i18n)
21
+
22
+ This guide walks you through next-intl best practices in a Next.js 15 (App Router) app, and shows how to layer Intlayer on top for robust translation management and automation.
23
+
24
+ See the comparison in [next-i18next vs next-intl vs Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/{{locale}}/next-i18next_vs_next-intl_vs_intlayer.md).
25
+
26
+ - For juniors: follow step-by-step sections to obtain a working multilingual app.
27
+ - For mid-level developers: pay attention to payload optimisation and server/client separation.
28
+ - For seniors: note static generation, middleware, SEO integration, and automation hooks.
29
+
30
+ What we’ll cover:
31
+
32
+ - Setup and file structure
33
+ - Optimising how messages are loaded
34
+ - Client and server component usage
35
+ - Metadata, sitemap, robots for SEO
36
+ - Middleware for locale routing
37
+ - Adding Intlayer on top (CLI and automation)
38
+
39
+ ## Set up your application using next-intl
40
+
41
+ Install the next-intl dependencies:
42
+
43
+ ```bash packageManager="npm"
44
+ npm install next-intl
45
+ ```
46
+
47
+ ```bash packageManager="pnpm"
48
+ pnpm add next-intl
49
+ ```
50
+
51
+ ```bash packageManager="yarn"
52
+ yarn add next-intl
53
+ ```
54
+
1
55
  ```bash
2
56
  .
3
57
  ├── locales
@@ -25,8 +79,7 @@
25
79
 
26
80
  #### Setup and Loading Content
27
81
 
28
- As mentioned previously, you must optimize how each JSON file is imported into your code.
29
- How the library handles content loading is important.
82
+ Load only the namespaces your routes require and validate locales early. Keep server components synchronous where possible and send only the required messages to the client.
30
83
 
31
84
  ```tsx fileName="src/i18n.ts"
32
85
  import { getRequestConfig } from "next-intl/server";
@@ -36,7 +89,7 @@ export const locales = ["en", "fr", "es"] as const;
36
89
  export const defaultLocale = "en" as const;
37
90
 
38
91
  async function loadMessages(locale: string) {
39
- // Load only the namespaces your layout/pages need
92
+ // Load only the namespaces your layout/pages require
40
93
  const [common, about] = await Promise.all([
41
94
  import(`../locales/${locale}/common.json`).then((m) => m.default),
42
95
  import(`../locales/${locale}/about.json`).then((m) => m.default),
@@ -62,18 +115,20 @@ import {
62
115
  unstable_setRequestLocale,
63
116
  } from "next-intl/server";
64
117
 
118
+ export const dynamic = "force-static";
119
+
65
120
  export function generateStaticParams() {
66
121
  return locales.map((locale) => ({ locale }));
67
122
  }
68
123
 
69
- export default function LocaleLayout({
124
+ export default async function LocaleLayout({
70
125
  children,
71
126
  params,
72
127
  }: {
73
128
  children: ReactNode;
74
- params: Promise<{ locale: string }>;
129
+ params: { locale: string };
75
130
  }) {
76
- const { locale } = await params;
131
+ const { locale } = params;
77
132
 
78
133
  // Set the active request locale for this server render (RSC)
79
134
  unstable_setRequestLocale(locale);
@@ -95,14 +150,16 @@ import pick from "lodash/pick";
95
150
  import ServerComponent from "@/components/ServerComponent";
96
151
  import ClientComponentExample from "@/components/ClientComponentExample";
97
152
 
153
+ export const dynamic = "force-static";
154
+
98
155
  export default async function AboutPage({
99
156
  params,
100
157
  }: {
101
- params: Promise<{ locale: string }>;
158
+ params: { locale: string };
102
159
  }) {
103
- const { locale } = await params;
160
+ const { locale } = params;
104
161
 
105
- // Messages are loaded server-side. Push only what's needed to the client.
162
+ // Messages are loaded server-side. Push only what is needed to the client.
106
163
  const messages = await getMessages();
107
164
  const clientMessages = pick(messages, ["common", "about"]);
108
165
 
@@ -181,39 +238,38 @@ const ClientComponentExample = () => {
181
238
  };
182
239
  ```
183
240
 
184
- > Don't forget to add "about" message on the page client message
241
+ > Don't forget to add the "about" message to the page client messages
185
242
  > (only include the namespaces your client actually needs).
186
243
 
187
244
  ### Usage in a server component
188
245
 
189
- We will take the case of a UI component. This component is a server component, and should be able to be inserted as a child of a client component. (page (server component) -> client component -> server component). As this component can be inserted as a child of a client component, it cannot be async.
246
+ This UI component is a server component and can be rendered beneath a client component (page client server). Keep it synchronous by passing precomputed strings.
190
247
 
191
248
  ```tsx fileName="src/components/ServerComponent.tsx"
192
249
  type ServerComponentProps = {
193
- count: number;
194
- t: (key: string) => string;
195
- formatter: Intl.NumberFormat;
250
+ formattedCount: string;
251
+ label: string;
252
+ increment: string;
196
253
  };
197
254
 
198
- const ServerComponent = ({ t, count, formatter }: ServerComponentProps) => {
199
- const formatted = formatter.format(count);
200
-
255
+ const ServerComponent = ({
256
+ formattedCount,
257
+ label,
258
+ increment,
259
+ }: ServerComponentProps) => {
201
260
  return (
202
261
  <div>
203
- <p>{formatted}</p>
204
- <button aria-label={t("label")}>{t("increment")}</button>
262
+ <p>{formattedCount}</p>
263
+ <button aria-label={label}>{increment}</button>
205
264
  </div>
206
265
  );
207
266
  };
208
267
  ```
209
268
 
210
- > As the server component cannot be async, you need to pass the translations and formatter function as props.
211
- >
212
- > In your page / layout:
213
- >
214
- > - `import { getTranslations, getFormatter } from "next-intl/server";`
215
- > - `const t = await getTranslations("about.counter");`
216
- > - `const formatter = await getFormatter().then((formatter) => formatter.number());`
269
+ Notes:
270
+
271
+ - Compute `formattedCount` server-side (e.g., `const initialFormattedCount = format.number(0)`).
272
+ - Avoid passing functions or non-serialisable objects into server components.
217
273
 
218
274
  ```tsx fileName="src/app/[locale]/about/layout.tsx"
219
275
  import type { Metadata } from "next";
@@ -325,7 +381,66 @@ export const config = {
325
381
  ### Best practices
326
382
 
327
383
  - **Set html `lang` and `dir`**: In `src/app/[locale]/layout.tsx`, compute `dir` via `getLocaleDirection(locale)` and set `<html lang={locale} dir={dir}>`.
328
- - **Split messages by namespace**: Organize JSON per locale and namespace (e.g., `common.json`, `about.json`).
329
- - **Minimize client payload**: On pages, send only required namespaces to `NextIntlClientProvider` (e.g., `pick(messages, ['common', 'about'])`).
384
+ - **Split messages by namespace**: Organise JSON per locale and namespace (e.g., `common.json`, `about.json`).
385
+ - **Minimise client payload**: On pages, send only required namespaces to `NextIntlClientProvider` (e.g., `pick(messages, ['common', 'about'])`).
330
386
  - **Prefer static pages**: Export `export const dynamic = 'force-static'` and generate static params for all `locales`.
331
- - **Synchronous server components**: Keep server components sync by passing precomputed strings (translated labels, formatted numbers) rather than async calls or non-serializable functions.
387
+ - **Synchronous server components**: Pass precomputed strings (translated labels, formatted numbers) rather than async calls or non-serialisable functions.
388
+
389
+ ## Implement Intlayer on top of next-intl
390
+
391
+ Install the intlayer dependencies:
392
+
393
+ ```bash packageManager="npm"
394
+ npm install intlayer @intlayer/sync-json-plugin -D
395
+ ```
396
+
397
+ ```bash packageManager="yarn"
398
+ yarn add intlayer @intlayer/sync-json-plugin -D
399
+ ```
400
+
401
+ ```bash packageManager="pnpm"
402
+ pnpm add intlayer @intlayer/sync-json-plugin -D
403
+ ```
404
+
405
+ Create the intlayer configuration file:
406
+
407
+ ```tsx fileName="intlayer.config.ts"
408
+ import { type IntlayerConfig, Locales } from "intlayer";
409
+ import { syncJSON } from "@intlayer/sync-json-plugin";
410
+
411
+ const config: IntlayerConfig = {
412
+ internationalization: {
413
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
414
+ defaultLocale: Locales.ENGLISH,
415
+ },
416
+ ai: {
417
+ apiKey: process.env.OPENAI_API_KEY,
418
+ },
419
+ plugins: [
420
+ // Keep your per-namespace folder structure in sync with Intlayer
421
+ syncJSON({
422
+ source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
423
+ }),
424
+ ],
425
+ };
426
+
427
+ export default config;
428
+ ```
429
+
430
+ Add `package.json` scripts:
431
+
432
+ ```json fileName="package.json"
433
+ {
434
+ "scripts": {
435
+ "i18n:fill": "intlayer fill",
436
+ "i18n:test": "intlayer test"
437
+ }
438
+ }
439
+ ```
440
+
441
+ Notes:
442
+
443
+ - `intlayer fill`: uses your AI provider to fill missing translations based on your configured locales.
444
+ - `intlayer test`: checks for missing or invalid translations (use it in CI).
445
+
446
+ You can configure arguments and providers; see [Intlayer CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en-GB/intlayer_cli.md).
@@ -24,10 +24,31 @@ history:
24
24
 
25
25
  # Translate your Next.js 16 website using Intlayer | Internationalisation (i18n)
26
26
 
27
+ <Tab defaultTab="video">
28
+ <TabItem label="Video" value="video">
29
+
27
30
  <iframe title="The best i18n solution for Next.js? Discover Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
28
31
 
32
+ </TabItem>
33
+ <TabItem label="Code" value="code">
34
+
35
+ <iframe
36
+ src="https://stackblitz.com/github/aymericzip/intlayer-next-16-template?embed=1&ctl=1&file=intlayer.config.ts"
37
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
38
+ title="Demo CodeSandbox - How to Internationalize your application using Intlayer"
39
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
40
+ loading="lazy"
41
+ />
42
+
43
+ </TabItem>
44
+ </Tab>
45
+
29
46
  See [Application Template](https://github.com/aymericzip/intlayer-next-16-template) on GitHub.
30
47
 
48
+ ## Table of Contents
49
+
50
+ <TOC/>
51
+
31
52
  ## What is Intlayer?
32
53
 
33
54
  **Intlayer** is an innovative, open-source internationalisation (i18n) library designed to simplify multilingual support in modern web applications. Intlayer seamlessly integrates with the latest **Next.js 16** framework, including its powerful **App Router**. It is optimised to work with **Server Components** for efficient rendering and is fully compatible with [**Turbopack**](https://nextjs.org/docs/architecture/turbopack).
@@ -26,7 +26,11 @@ history:
26
26
  changes: Added for Tanstack Start
27
27
  ---
28
28
 
29
- # Getting Started Internationalising (i18n) with Intlayer and Tanstack Start
29
+ # Translate your Tanstack Start website using Intlayer | Internationalisation (i18n)
30
+
31
+ ## Table of Contents
32
+
33
+ <TOC/>
30
34
 
31
35
  This guide demonstrates how to integrate **Intlayer** for seamless internationalisation in Tanstack Start projects with locale-aware routing, TypeScript support, and modern development practices.
32
36
 
@@ -25,6 +25,10 @@ history:
25
25
 
26
26
  # Getting Started Internationalising (i18n) with Intlayer and Vite and React
27
27
 
28
+ ## Table of Contents
29
+
30
+ <TOC/>
31
+
28
32
  <iframe title="The best i18n solution for Vite and React? Discover Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?si=VaKmrYMmXjo3xpk2"/>
29
33
 
30
34
  See [Application Template](https://github.com/aymericzip/intlayer-vite-react-template) on GitHub.