@intlayer/docs 7.0.6 → 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
@@ -0,0 +1,627 @@
1
+ ---
2
+ createdAt: 2025-10-05
3
+ updatedAt: 2025-10-05
4
+ title: next-i18next を使った Next.js 15 の翻訳方法 – 2025 年版 i18n ガイド
5
+ description: next-i18next/next-i18next を使って Next.js 15 の App Router アプリを国際化し、Intlayer で強化する実践的で本番対応のガイド。
6
+ keywords:
7
+ - 国際化
8
+ - ドキュメント
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
+ # Intlayer を使った next-i18next による Next.js 15 の翻訳 | 国際化 (i18n)
22
+
23
+ ### このガイドの対象者
24
+
25
+ - **ジュニア**: 正確な手順に従い、コードブロックをコピーしてください。動作する多言語アプリが手に入ります。
26
+ - **ミッドレベル**: チェックリストやベストプラクティスの注意点を活用して、よくある落とし穴を回避しましょう。
27
+ - **シニア**: 高レベルの構造、SEO、オートメーションのセクションをざっと確認してください。合理的なデフォルト設定や拡張ポイントが見つかります。
28
+
29
+ ### 作成するもの
30
+
31
+ - ローカライズされたルートを持つ App Router プロジェクト(例:`/`, `/fr/...`)
32
+ - ロケール、デフォルトロケール、RTL対応を含む i18n 設定
33
+ - サーバーサイドの i18n 初期化とクライアントプロバイダー
34
+ - 名前空間付きの翻訳をオンデマンドで読み込み
35
+ - `hreflang`、ローカライズされた `sitemap`、`robots` を使った SEO
36
+ - ロケールルーティング用のミドルウェア
37
+ - 翻訳ワークフローを自動化する Intlayer 統合(テスト、AI 補完、JSON 同期)
38
+
39
+ > 注意: next-i18next は i18next の上に構築されています。このガイドでは、App Router で next-i18next と互換性のある i18next のプリミティブを使用しつつ、アーキテクチャをシンプルかつ本番環境向けに保っています。
40
+ > より広範な比較については、[next-i18next vs next-i18next vs Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ja/next-i18next_vs_next-i18next_vs_intlayer.md) を参照してください。
41
+
42
+ ---
43
+
44
+ ## 1) プロジェクト構成
45
+
46
+ next-i18next の依存関係をインストールします:
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
+ 明確な構造から始めましょう。メッセージはロケールとネームスペースごとに分割して保持します。
61
+
62
+ ```bash
63
+ .
64
+ ├── i18n.config.ts
65
+ └── src
66
+ ├── locales
67
+ │ ├── en
68
+ │ │ ├── common.json
69
+ │ │ └── about.json
70
+ │ └── fr
71
+ │ ├── common.json
72
+ │ └── about.json
73
+ ├── app
74
+ │ ├── i18n
75
+ │ │ └── server.ts
76
+ │ └── [locale]
77
+ │ ├── layout.tsx
78
+ │ └── about.tsx
79
+ └── components
80
+ ├── I18nProvider.tsx
81
+ ├── ClientComponent.tsx
82
+ └── ServerComponent.tsx
83
+ ```
84
+
85
+ チェックリスト(中級/上級):
86
+
87
+ - ロケールごとにネームスペースあたり1つのJSONを保持する
88
+ - メッセージを過度に集中管理しない。小さなページや機能単位のネームスペースを使う
89
+ - すべてのロケールを一度にインポートしない。必要なものだけをロードする
90
+
91
+ ---
92
+
93
+ ## 2) 依存関係のインストール
94
+
95
+ ```bash
96
+ pnpm add i18next react-i18next i18next-resources-to-backend
97
+ ```
98
+
99
+ next-i18next の API や設定の相互運用を使用する予定がある場合は、以下も追加してください:
100
+
101
+ ```bash
102
+ pnpm add next-i18next
103
+ ```
104
+
105
+ ---
106
+
107
+ ## 3) コア i18n 設定
108
+
109
+ ロケール、デフォルトロケール、RTL、およびローカライズされたパス/URL のヘルパーを定義します。
110
+
111
+ ```ts fileName="i18n.config.ts"
112
+ export const locales = ["en", "fr"] as const;
113
+ export type Locale = (typeof locales)[number];
114
+
115
+ export const defaultLocale: Locale = "en";
116
+
117
+ export const rtlLocales = ["ar", "he", "fa", "ur"] as const;
118
+ export const isRtl = (locale: string) =>
119
+ (rtlLocales as readonly string[]).includes(locale);
120
+
121
+ export function localizedPath(locale: string, path: string) {
122
+ return locale === defaultLocale ? path : "/" + locale + path;
123
+ }
124
+
125
+ const ORIGIN = "https://example.com";
126
+ export function abs(locale: string, path: string) {
127
+ return ORIGIN + localizedPath(locale, path);
128
+ }
129
+ ```
130
+
131
+ シニアノート: `next-i18next.config.js` を使用する場合は、`i18n.config.ts` と整合性を保ち、ズレが生じないようにしてください。
132
+
133
+ ---
134
+
135
+ ## 4) サーバーサイドのi18n初期化
136
+
137
+ 必要なロケール/ネームスペースのJSONのみをインポートする動的バックエンドで、サーバー上でi18nextを初期化します。
138
+
139
+ ```ts fileName="src/app/i18n/server.ts"
140
+ import { createInstance } from "i18next";
141
+ import { initReactI18next } from "react-i18next/initReactI18next";
142
+ import resourcesToBackend from "i18next-resources-to-backend";
143
+ import { defaultLocale } from "@/i18n.config";
144
+
145
+ // src/locales/<locale>/<namespace>.json からJSONリソースを読み込み
146
+ const backend = resourcesToBackend(
147
+ (locale: string, namespace: string) =>
148
+ import(`../../locales/${locale}/${namespace}.json`)
149
+ );
150
+
151
+ export async function initI18next(
152
+ locale: string,
153
+ namespaces: string[] = ["common"]
154
+ ) {
155
+ const i18n = createInstance();
156
+ await i18n
157
+ .use(initReactI18next)
158
+ .use(backend)
159
+ .init({
160
+ lng: locale,
161
+ fallbackLng: defaultLocale,
162
+ ns: namespaces,
163
+ defaultNS: "common",
164
+ interpolation: { escapeValue: false },
165
+ react: { useSuspense: false },
166
+ });
167
+ return i18n;
168
+ }
169
+ ```
170
+
171
+ 中間メモ: ペイロードを制限するために、ページごとのnamespaceリストは短く保ってください。グローバルな「キャッチオール」バンドルは避けてください。
172
+
173
+ ---
174
+
175
+ ## 5) Reactコンポーネント用クライアントプロバイダー
176
+
177
+ サーバー設定を反映し、要求されたnamespaceのみをロードするプロバイダーでクライアントコンポーネントをラップします。
178
+
179
+ ```tsx fileName="src/components/I18nProvider.tsx"
180
+ "use client";
181
+
182
+ import * as React from "react";
183
+ import { I18nextProvider } from "react-i18next";
184
+ import { createInstance } from "i18next";
185
+ import { initReactI18next } from "react-i18next/initReactI18next";
186
+ import resourcesToBackend from "i18next-resources-to-backend";
187
+ import { defaultLocale } from "@/i18n.config";
188
+
189
+ const backend = resourcesToBackend(
190
+ (locale: string, namespace: string) =>
191
+ import(`../../locales/${locale}/${namespace}.json`)
192
+ );
193
+
194
+ type Props = {
195
+ locale: string;
196
+ namespaces?: string[];
197
+ resources?: Record<string, any>; // { ns: バンドル }
198
+ children: React.ReactNode;
199
+ };
200
+
201
+ export default function I18nProvider({
202
+ locale,
203
+ namespaces = ["common"],
204
+ resources,
205
+ children,
206
+ }: Props) {
207
+ const [i18n] = React.useState(() => {
208
+ const i = createInstance();
209
+
210
+ i.use(initReactI18next)
211
+ .use(backend)
212
+ .init({
213
+ lng: locale,
214
+ fallbackLng: defaultLocale,
215
+ ns: namespaces,
216
+ resources: resources ? { [locale]: resources } : undefined,
217
+ defaultNS: "common",
218
+ interpolation: { escapeValue: false },
219
+ react: { useSuspense: false },
220
+ });
221
+
222
+ return i;
223
+ });
224
+
225
+ return <I18nextProvider i18n={i18n}>{children}</I18nextProvider>;
226
+ }
227
+ ```
228
+
229
+ ジュニア向けのヒント: クライアントにすべてのメッセージを渡す必要はありません。ページの名前空間だけから始めましょう。
230
+
231
+ ---
232
+
233
+ ## 6) ローカライズされたレイアウトとルート
234
+
235
+ 言語と方向を設定し、ロケールごとにルートを事前生成して静的レンダリングを促進します。
236
+
237
+ ```tsx fileName="src/app/[locale]/layout.tsx"
238
+ import type { ReactNode } from "react";
239
+ import { locales, defaultLocale, isRtl, type Locale } from "@/i18n.config";
240
+
241
+ export const dynamicParams = false;
242
+
243
+ export function generateStaticParams() {
244
+ return locales.map((locale) => ({ locale }));
245
+ }
246
+
247
+ export default function LocaleLayout({
248
+ children,
249
+ params,
250
+ }: {
251
+ children: ReactNode;
252
+ params: { locale: string };
253
+ }) {
254
+ const locale: Locale = (locales as readonly string[]).includes(params.locale)
255
+ ? (params.locale as any)
256
+ : defaultLocale;
257
+
258
+ const dir = isRtl(locale) ? "rtl" : "ltr";
259
+
260
+ return (
261
+ <html lang={locale} dir={dir}>
262
+ <body>{children}</body>
263
+ </html>
264
+ );
265
+ }
266
+ ```
267
+
268
+ ---
269
+
270
+ ## 7) サーバー+クライアント使用例ページ
271
+
272
+ ```tsx fileName="src/app/[locale]/about.tsx"
273
+ import I18nProvider from "@/components/I18nProvider";
274
+ import { initI18next } from "@/app/i18n/server";
275
+ import type { Locale } from "@/i18n.config";
276
+ import ClientComponent from "@/components/ClientComponent";
277
+ import ServerComponent from "@/components/ServerComponent";
278
+
279
+ // ページの静的レンダリングを強制
280
+ export const dynamic = "force-static";
281
+
282
+ export default async function AboutPage({
283
+ params: { locale },
284
+ }: {
285
+ params: { locale: Locale };
286
+ }) {
287
+ const namespaces = ["common", "about"] as const;
288
+
289
+ const i18n = await initI18next(locale, [...namespaces]);
290
+ const tAbout = i18n.getFixedT(locale, "about");
291
+
292
+ return (
293
+ <I18nProvider locale={locale} namespaces={[...namespaces]}>
294
+ <main>
295
+ <h1>{tAbout("title")}</h1>
296
+
297
+ <ClientComponent />
298
+ <ServerComponent t={tAbout} locale={locale} count={0} />
299
+ </main>
300
+ </I18nProvider>
301
+ );
302
+ }
303
+ ```
304
+
305
+ 翻訳(各名前空間ごとに `src/locales/...` に1つのJSON):
306
+
307
+ ```json fileName="src/locales/en/about.json"
308
+ {
309
+ "title": "About",
310
+ "description": "About page description",
311
+ "counter": {
312
+ "label": "Counter",
313
+ "increment": "Increment"
314
+ }
315
+ }
316
+ ```
317
+
318
+ ```json fileName="src/locales/fr/about.json"
319
+ {
320
+ "title": "À propos",
321
+ "description": "Description de la page À propos",
322
+ "counter": {
323
+ "label": "Compteur",
324
+ "increment": "Incrémenter"
325
+ }
326
+ }
327
+ ```
328
+
329
+ クライアントコンポーネント(必要な名前空間のみを読み込み):
330
+
331
+ ```tsx fileName="src/components/ClientComponent.tsx"
332
+ "use client";
333
+
334
+ import React, { useState } from "react";
335
+ import { useTranslation } from "react-i18next";
336
+
337
+ const ClientComponent = () => {
338
+ const { t, i18n } = useTranslation("about");
339
+ const [count, setCount] = useState(0);
340
+
341
+ const numberFormat = new Intl.NumberFormat(i18n.language);
342
+
343
+ return (
344
+ <div>
345
+ <p>{numberFormat.format(count)}</p>
346
+ <button
347
+ aria-label={t("counter.label")}
348
+ onClick={() => setCount((c) => c + 1)}
349
+ >
350
+ {t("counter.increment")}
351
+ </button>
352
+ </div>
353
+ );
354
+ };
355
+
356
+ export default ClientComponent;
357
+ ```
358
+
359
+ > ページやプロバイダーには必要な名前空間(例:`about`)のみを含めるようにしてください。
360
+ > Reactのバージョンが19未満の場合は、`Intl.NumberFormat`のような重いフォーマッターをメモ化してください。
361
+
362
+ クライアント境界内に埋め込まれた同期サーバーコンポーネント:
363
+
364
+ ```tsx fileName="src/components/ServerComponent.tsx"
365
+ type ServerComponentProps = {
366
+ t: (key: string) => string;
367
+ locale: string;
368
+ count: number;
369
+ };
370
+
371
+ const ServerComponent = ({ t, locale, count }: ServerComponentProps) => {
372
+ const formatted = new Intl.NumberFormat(locale).format(count);
373
+
374
+ return (
375
+ <div>
376
+ <p>{formatted}</p>
377
+ <button aria-label={t("counter.label")}>{t("counter.increment")}</button>
378
+ </div>
379
+ );
380
+ };
381
+
382
+ export default ServerComponent;
383
+ ```
384
+
385
+ ---
386
+
387
+ ## 8) SEO: メタデータ、Hreflang、サイトマップ、ロボット
388
+
389
+ コンテンツの翻訳はリーチを拡大する手段です。多言語SEOを徹底的に設定しましょう。
390
+
391
+ ベストプラクティス:
392
+
393
+ - ルートに `lang` と `dir` を設定する
394
+ - 各ロケールに対して `alternates.languages` を追加する(+ `x-default`)
395
+ - 翻訳されたURLを `sitemap.xml` にリストし、`hreflang` を使用する
396
+ - ローカライズされたプライベートエリア(例:`/fr/admin`)を `robots.txt` で除外する
397
+
398
+ ```tsx fileName="src/app/[locale]/about/layout.tsx"
399
+ import type { Metadata } from "next";
400
+ import { locales, defaultLocale, localizedPath } from "@/i18n.config";
401
+
402
+ export async function generateMetadata({
403
+ params,
404
+ }: {
405
+ params: { locale: string };
406
+ }): Promise<Metadata> {
407
+ const { locale } = params;
408
+
409
+ // src/localesから正しいJSONバンドルをインポート
410
+ const messages = (await import("@/locales/" + locale + "/about.json"))
411
+ .default;
412
+
413
+ const languages = Object.fromEntries(
414
+ locales.map((locale) => [locale, localizedPath(locale, "/about")])
415
+ );
416
+
417
+ return {
418
+ title: messages.title,
419
+ description: messages.description,
420
+ alternates: {
421
+ canonical: localizedPath(locale, "/about"),
422
+ languages: { ...languages, "x-default": "/about" },
423
+ },
424
+ };
425
+ }
426
+
427
+ export default async function AboutPage() {
428
+ return <h1>About</h1>;
429
+ }
430
+ ```
431
+
432
+ ```ts fileName="src/app/sitemap.ts"
433
+ import type { MetadataRoute } from "next";
434
+ import { locales, defaultLocale, abs } from "@/i18n.config";
435
+
436
+ export default function sitemap(): MetadataRoute.Sitemap {
437
+ const languages = Object.fromEntries(
438
+ locales.map((locale) => [locale, abs(locale, "/about")])
439
+ );
440
+
441
+ return [
442
+ {
443
+ url: abs(defaultLocale, "/about"),
444
+ lastModified: new Date(),
445
+ changeFrequency: "monthly", // 更新頻度は月次
446
+ priority: 0.7, // 優先度
447
+ alternates: { languages }, // 代替言語のURL
448
+ },
449
+ ];
450
+ }
451
+ ```
452
+
453
+ ```ts fileName="src/app/robots.ts"
454
+ import type { MetadataRoute } from "next";
455
+ import { locales, defaultLocale, localizedPath } from "@/i18n.config";
456
+
457
+ const ORIGIN = "https://example.com";
458
+
459
+ const expandAllLocales = (path: string) => [
460
+ localizedPath(defaultLocale, path),
461
+ ...locales
462
+ .filter((locale) => locale !== defaultLocale)
463
+ .map((locale) => localizedPath(locale, path)),
464
+ ];
465
+
466
+ export default function robots(): MetadataRoute.Robots {
467
+ const disallow = [
468
+ ...expandAllLocales("/dashboard"),
469
+ ...expandAllLocales("/admin"),
470
+ ];
471
+
472
+ return {
473
+ rules: { userAgent: "*", allow: ["/"], disallow },
474
+ host: ORIGIN,
475
+ sitemap: ORIGIN + "/sitemap.xml",
476
+ };
477
+ }
478
+ ```
479
+
480
+ ---
481
+
482
+ ## 9) ロケールルーティングのためのミドルウェア
483
+
484
+ ロケールを検出し、ロケールがない場合はローカライズされたルートにリダイレクトします。
485
+
486
+ ```ts fileName="src/middleware.ts"
487
+ import { NextResponse, type NextRequest } from "next/server";
488
+ import { defaultLocale, locales } from "@/i18n.config";
489
+
490
+ const PUBLIC_FILE = /\.[^/]+$/; // 拡張子のあるファイルを除外
491
+
492
+ export function middleware(request: NextRequest) {
493
+ const { pathname } = request.nextUrl;
494
+
495
+ if (
496
+ pathname.startsWith("/_next") ||
497
+ pathname.startsWith("/api") ||
498
+ pathname.startsWith("/static") ||
499
+ PUBLIC_FILE.test(pathname)
500
+ ) {
501
+ return;
502
+ }
503
+
504
+ const hasLocale = locales.some(
505
+ (locale) =>
506
+ pathname === "/" + locale || pathname.startsWith("/" + locale + "/")
507
+ );
508
+ if (!hasLocale) {
509
+ const locale = defaultLocale;
510
+ const url = request.nextUrl.clone();
511
+ url.pathname = "/" + locale + (pathname === "/" ? "" : pathname);
512
+ return NextResponse.redirect(url);
513
+ }
514
+ }
515
+
516
+ export const config = {
517
+ matcher: [
518
+ // これらで始まるパスと拡張子を持つファイルを除くすべてのパスにマッチ
519
+ "/((?!api|_next|static|.*\\..*).*)",
520
+ ],
521
+ };
522
+ ```
523
+
524
+ ---
525
+
526
+ ## 10) パフォーマンスと開発者体験(DX)のベストプラクティス
527
+
528
+ - **htmlの`lang`と`dir`を設定する**: `src/app/[locale]/layout.tsx`で実施済み。
529
+ - **メッセージをネームスペースごとに分割する**: バンドルを小さく保つ(`common.json`、`about.json`など)。
530
+ - **クライアントのペイロードを最小化する**: ページでは必要なネームスペースのみをプロバイダーに渡す。
531
+ - **静的ページを優先する**: ロケールごとに`export const dynamic = 'force-static'`と`generateStaticParams`を使用する。
532
+ - **サーバーコンポーネントを同期させる**: レンダリング時の非同期呼び出しの代わりに事前計算された文字列やフォーマットを渡す。
533
+ - **重い処理をメモ化する**: 特に古いReactバージョンのクライアントコードで重要。
534
+ - **キャッシュとヘッダー**: 可能な場合は動的レンダリングよりも静的または`revalidate`を優先する。
535
+
536
+ ---
537
+
538
+ ## 11) テストとCI
539
+
540
+ - `t`を使用するコンポーネントに対してユニットテストを追加し、キーが存在することを確認する。
541
+ - 各ネームスペースがロケール間で同じキーを持っていることを検証します。
542
+ - デプロイ前にCIで不足しているキーを検出します。
543
+
544
+ Intlayerはこれらの多くを自動化します(次のセクションを参照)。
545
+
546
+ ---
547
+
548
+ ## 12) Intlayerを導入する(自動化)
549
+
550
+ IntlayerはJSON翻訳の同期を保ち、不足しているキーのテストを行い、必要に応じてAIで補完するのに役立ちます。
551
+
552
+ intlayerの依存関係をインストールします:
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
+ internationalization: {
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
+ パッケージスクリプトを追加します:
592
+
593
+ ```json fileName="package.json"
594
+ {
595
+ "scripts": {
596
+ "i18n:fill": "intlayer fill",
597
+ "i18n:test": "intlayer test"
598
+ }
599
+ }
600
+ ```
601
+
602
+ 一般的なフロー:
603
+
604
+ - CIで `pnpm i18n:test` を実行し、キーが不足している場合にビルドを失敗させる
605
+ - ローカルで `pnpm i18n:fill` を実行し、新しく追加されたキーに対してAI翻訳を提案する
606
+
607
+ > CLI引数を指定することも可能です。詳細は[Intlayer CLIドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_cli.md)をご覧ください。
608
+
609
+ ---
610
+
611
+ ## 13) トラブルシューティング
612
+
613
+ - **キーが見つからない**: ページやプロバイダーが正しいnamespaceをリストしていること、そしてJSONファイルが`src/locales/<locale>/<namespace>.json`に存在することを確認してください。
614
+ - **言語が間違っている/英語が一瞬表示される**: `middleware.ts`のロケール検出とプロバイダーの`lng`を再確認してください。
615
+ - **RTLレイアウトの問題**: `dir`が`isRtl(locale)`から正しく取得されているか、またCSSが`[dir="rtl"]`に対応しているかを確認してください。
616
+ - **SEOのalternateが不足している**: `alternates.languages`にすべてのロケールと`x-default`が含まれていることを確認してください。
617
+ - **バンドルサイズが大きすぎる**: namespaceをさらに分割し、クライアント側で`locales`ツリー全体をインポートしないようにしてください。
618
+
619
+ ---
620
+
621
+ ## 14) 次にやること
622
+
623
+ - 機能が拡張されるにつれて、より多くのロケールとネームスペースを追加する
624
+ - エラーページ、メール、およびAPI駆動のコンテンツをローカライズする
625
+ - 翻訳更新のために自動でPRをオープンするIntlayerのワークフローを拡張する
626
+
627
+ スターターをお探しの場合は、テンプレートをお試しください: `https://github.com/aymericzip/intlayer-next-i18next-template`。