@intlayer/docs 7.0.7 → 7.0.8

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,760 @@
1
+ ---
2
+ createdAt: 2025-11-01
3
+ updatedAt: 2025-11-01
4
+ title: next-intl kullanarak Next.js uygulamanızı nasıl uluslararasılaştırırsınız
5
+ description: next-intl ile i18n kurulumu: çok dilli Next.js uygulamaları için en iyi uygulamalar ve SEO ipuçları, uluslararasılaştırma, içerik organizasyonu ve teknik kurulum konularını kapsar.
6
+ slugs:
7
+ - blog
8
+ - nextjs-internationalization-using-next-intl
9
+ applicationTemplate: https://github.com/aymericzip/next-intl-template
10
+ history:
11
+ - version: 7.0.0
12
+ date: 2025-11-01
13
+ changes: İlk sürüm
14
+ ---
15
+
16
+ # 2025'te next-intl kullanarak Next.js uygulamanızı nasıl uluslararasılaştırırsınız
17
+
18
+ ## İçindekiler
19
+
20
+ <TOC/>
21
+
22
+ ## next-intl nedir?
23
+
24
+ **next-intl**, özellikle Next.js App Router için tasarlanmış popüler bir uluslararasılaştırma (i18n) kütüphanesidir. Mükemmel TypeScript desteği ve yerleşik optimizasyonlarla çok dilli Next.js uygulamaları oluşturmanın sorunsuz bir yolunu sağlar.
25
+
26
+ > Tercih ederseniz, ayrıca [next-i18next rehberine](https://github.com/aymericzip/intlayer/blob/main/docs/blog/en/i18n_using_next-i18next.md) veya doğrudan [Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_next-intl.md) kullanmaya da başvurabilirsiniz.
27
+
28
+ > Karşılaştırmayı [next-i18next vs next-intl vs Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/en/next-i18next_vs_next-intl_vs_intlayer.md) sayfasında görebilirsiniz.
29
+
30
+ ## Takip etmeniz gereken uygulamalar
31
+
32
+ Uygulamaya başlamadan önce, takip etmeniz gereken bazı uygulamalar şunlardır:
33
+
34
+ - **HTML `lang` ve `dir` özniteliklerini ayarlayın**
35
+ Düzeninizde, `dir` değerini `getLocaleDirection(locale)` kullanarak hesaplayın ve uygun erişilebilirlik ve SEO için `<html lang={locale} dir={dir}>` olarak ayarlayın.
36
+ - **Mesajları namespace'e göre ayırın**
37
+ JSON dosyalarını locale ve namespace (örneğin, `common.json`, `about.json`) bazında organize edin, böylece sadece ihtiyacınız olanları yükleyebilirsiniz.
38
+ - **İstemci yükünü minimize edin**
39
+ Sayfalarda, `NextIntlClientProvider`'a sadece gerekli namespace'leri gönderin (örneğin, `pick(messages, ['common', 'about'])`).
40
+ - **Statik sayfaları tercih edin**
41
+ Daha iyi performans ve SEO için mümkün olduğunca statik sayfalar kullanın.
42
+ - **Sunucu bileşenlerinde I18n**
43
+ Sunucu bileşenleri, sayfalar veya `client` olarak işaretlenmemiş tüm bileşenler statiktir ve build zamanında önceden render edilebilir. Bu nedenle, çeviri fonksiyonlarını onlara props olarak geçmemiz gerekecek.
44
+ - **TypeScript tiplerini ayarlayın**
45
+ Uygulamanız genelinde tip güvenliğini sağlamak için locale'leriniz için TypeScript tiplerini yapılandırın.
46
+ - **Yönlendirme için proxy kullanımı**
47
+ Locale tespiti ve yönlendirmeyi yönetmek için bir proxy kullanın ve kullanıcıyı uygun locale önekli URL'ye yönlendirin.
48
+ - **Metadata, sitemap, robots.txt'nin uluslararasılaştırılması**
49
+ Next.js tarafından sağlanan `generateMetadata` fonksiyonunu kullanarak metadata, sitemap ve robots.txt dosyalarınızı uluslararasılaştırın; böylece tüm locale'lerde arama motorları tarafından daha iyi keşfedilmesini sağlayın.
50
+ - **Linkleri yerelleştirin**
51
+
52
+ `Link` bileşenini kullanarak bağlantıları yerelleştirin ve kullanıcıyı uygun locale önekiyle başlayan URL'ye yönlendirin. Sayfalarınızın tüm locale'lerde keşfedilmesini sağlamak önemlidir.
53
+
54
+ - **Testleri ve çevirileri otomatikleştirin**
55
+ Testlerin ve çevirilerin otomatikleştirilmesi, çok dilli uygulamanızı sürdürürken zaman kaybetmenizi önler.
56
+
57
+ > Uluslararasılaştırma ve SEO hakkında bilmeniz gereken her şeyi listeleyen dokümanımıza bakın: [next-intl ile Uluslararasılaştırma (i18n)](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/internationalization_and_SEO.md).
58
+
59
+ ---
60
+
61
+ ## Next.js Uygulamasında next-intl Kurulumuna Adım Adım Rehber
62
+
63
+ <iframe
64
+ src="https://stackblitz.com/github/aymericzip/next-intl-template?embed=1&ctl=1&file=src/i18n.ts"
65
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
66
+ title="Demo CodeSandbox - Intlayer kullanarak uygulamanızı nasıl uluslararasılaştırırsınız"
67
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
68
+ loading="lazy"
69
+ />
70
+
71
+ > GitHub'da [Uygulama Şablonuna](https://github.com/aymericzip/next-intl-template) bakın.
72
+
73
+ Oluşturacağımız proje yapısı şöyle:
74
+
75
+ ```bash
76
+ .
77
+ ├── global.ts
78
+ ├── locales
79
+ │ ├── en
80
+ │ │ ├── common.json
81
+ │ │ └── about.json
82
+ │ ├── fr
83
+ │ │ ├── common.json
84
+ │ │ └── about.json
85
+ │ └── es
86
+ │ ├── common.json
87
+ │ └── about.json
88
+ └── src # Src isteğe bağlıdır
89
+ ├── proxy.ts
90
+ ├── app
91
+ │ ├── i18n.ts
92
+ │ └── [locale]
93
+ │ ├── layout.tsx
94
+ │ ├── (home) # / (Tüm sayfaları home kaynaklarıyla kirletmemek için Route Grubu)
95
+ │ │ ├── layout.tsx
96
+ │ │ └── page.tsx
97
+ │ └── about # /about
98
+ │ ├── layout.tsx
99
+ │ └── page.tsx
100
+ └── components
101
+ ├── ClientComponent.tsx
102
+ └── ServerComponent.tsx
103
+ ```
104
+
105
+ ### Adım 1: Bağımlılıkları Yükleyin
106
+
107
+ Gerekli paketleri npm kullanarak yükleyin:
108
+
109
+ ```bash packageManager="npm"
110
+ npm install next-intl
111
+ ```
112
+
113
+ ```bash packageManager="pnpm"
114
+ pnpm add next-intl
115
+ ```
116
+
117
+ ```bash packageManager="yarn"
118
+ yarn add next-intl
119
+ ```
120
+
121
+ - **next-intl**: Çevirileri yönetmek için hooklar, sunucu fonksiyonları ve istemci sağlayıcıları sunan Next.js App Router için temel uluslararasılaştırma kütüphanesi.
122
+
123
+ ### Adım 2: Projenizi Yapılandırın
124
+
125
+ Desteklenen yerel ayarları tanımlayan ve next-intl'in istek yapılandırmasını ayarlayan bir yapılandırma dosyası oluşturun. Bu dosya, i18n kurulumunuz için tek gerçek kaynak olarak hizmet eder ve uygulamanız genelinde tür güvenliğini sağlar.
126
+
127
+ Yerel ayar yapılandırmanızı merkezi hale getirmek, tutarsızlıkları önler ve gelecekte yerel ayar eklemeyi veya kaldırmayı kolaylaştırır. `getRequestConfig` fonksiyonu her istekte çalışır ve her sayfa için yalnızca gereken çevirileri yükler, bu da kod bölme (code-splitting) yapılmasını sağlar ve paket boyutunu azaltır.
128
+
129
+ ```tsx fileName="src/i18n.ts"
130
+ import { notFound } from "next/navigation";
131
+ import createMiddleware from "next-intl/middleware";
132
+ import { createNavigation } from "next-intl/navigation";
133
+
134
+ // Tür güvenliği ile desteklenen yerel ayarları tanımlayın
135
+ export const locales = ["en", "fr", "es"] as const;
136
+ export type Locale = (typeof locales)[number];
137
+ export const defaultLocale: Locale = "en";
138
+
139
+ export function isRTL(locale: Locale | (string & {})) {
140
+ return /^(ar|fa|he|iw|ur|ps|sd|ug|yi|ckb|ku)(-|$)/i.test(locale);
141
+ }
142
+
143
+ // Kod bölme (code-splitting) için yerel ayara göre mesajları dinamik olarak yükle
144
+ // Promise.all, daha iyi performans için isim alanlarını paralel olarak yükler
145
+ async function loadMessages(locale: Locale) {
146
+ // Sadece layout/sayfalarınızın ihtiyaç duyduğu isim alanlarını yükleyin
147
+ const [common, home, about] = await Promise.all([
148
+ import(`../locales/${locale}/common.json`).then((m) => m.default),
149
+ import(`../locales/${locale}/home.json`).then((m) => m.default),
150
+ import(`../locales/${locale}/about.json`).then((m) => m.default),
151
+ // ... Gelecekteki JSON dosyaları buraya eklenmelidir
152
+ ]);
153
+
154
+ return { common, home, about } as const;
155
+ }
156
+
157
+ // Yerelleştirilmiş URL'ler oluşturmak için yardımcı fonksiyon (örneğin, /about vs /fr/about)
158
+ export function localizedPath(locale: string, path: string) {
159
+ return locale === defaultLocale ? path : `/${locale}${path}`;
160
+ }
161
+
162
+ // getRequestConfig her istekte çalışır ve sunucu bileşenlerine mesajlar sağlar
163
+ // next-intl'in Next.js'in sunucu tarafı render'ına bağlandığı yer burasıdır
164
+ export default async function getRequestConfig({
165
+ requestLocale,
166
+ }: {
167
+ requestLocale: Promise<string | undefined>;
168
+ }) {
169
+ const requested: Locale = ((await requestLocale) as Locale) ?? defaultLocale;
170
+
171
+ if (!locales.includes(requested)) notFound();
172
+
173
+ return {
174
+ locale: requested,
175
+ messages: await loadMessages(requested),
176
+ };
177
+ }
178
+
179
+ export function getCookie(locale: Locale) {
180
+ return [
181
+ `NEXT_LOCALE=${locale}`,
182
+ "Path=/",
183
+ `Max-Age=${60 * 60 * 24 * 365}`, // 1 yıl
184
+ "SameSite=Lax",
185
+ ].join("; ");
186
+ }
187
+
188
+ const routingOptions = {
189
+ locales,
190
+ defaultLocale,
191
+ localePrefix: "as-needed", // /en/... rotasını /... olarak değiştir
192
+ // Opsiyonel: yerelleştirilmiş yol adları
193
+ // pathnames: {
194
+ // '/': '/',
195
+ // '/about': {en: '/about', fr: '/a-propos', es: '/acerca-de'},
196
+ // '/blog/[slug]': '/blog/[slug]'
197
+ // }
198
+ // localeDetection: true, // "/" -> "/en" yönlendirmelerini çerezden engelle
199
+ } as const;
200
+
201
+ export const { Link, redirect, usePathname, useRouter, getPathname } =
202
+ createNavigation(routingOptions);
203
+
204
+ export const proxy = createMiddleware(routingOptions);
205
+ ```
206
+
207
+ ### Adım 3: Dinamik Yerel Rotaları Tanımlayın
208
+
209
+ Yerel ayarlar için dinamik yönlendirmeyi, uygulama klasörünüzde bir `[locale]` dizini oluşturarak ayarlayın. Bu, Next.js'in her yerel ayarın bir URL segmenti haline geldiği yerel ayar tabanlı yönlendirmeyi (örneğin, `/en/about`, `/fr/about`) yönetmesini sağlar.
210
+
211
+ Dinamik rotaların kullanılması, Next.js'in tüm yerel ayarlar için derleme zamanında statik sayfalar oluşturmasını sağlar, bu da performansı ve SEO'yu iyileştirir. Layout bileşeni, HTML `lang` ve `dir` özniteliklerini yerel ayara göre ayarlar; bu, erişilebilirlik ve arama motorlarının anlayışı için kritik öneme sahiptir.
212
+
213
+ ```tsx fileName="src/app/[locale]/layout.tsx"
214
+ import type { ReactNode } from "react";
215
+ import { locales } from "@/i18n";
216
+ import { getLocaleDirection, setRequestLocale } from "next-intl/server";
217
+
218
+ // Derleme zamanında (SSG) tüm yerel ayarlar için statik sayfalar önceden oluşturulur
219
+ // Bu, performansı ve SEO'yu iyileştirir
220
+ export function generateStaticParams() {
221
+ return locales.map((locale) => ({ locale }));
222
+ }
223
+
224
+ export default function LocaleLayout({
225
+ children,
226
+ params,
227
+ }: {
228
+ children: ReactNode;
229
+ params: Promise<{ locale: string }>;
230
+ }) {
231
+ // Next.js App Router'da, params bir Promise'dir (await edilebilir)
232
+ // Bu, dinamik rota segmentlerinin asenkron olarak çözülmesine olanak tanır
233
+ const { locale } = await params;
234
+
235
+ // Kritik: setRequestLocale, next-intl'e bu istek için hangi yerel ayarın kullanılacağını söyler
236
+ // Bunu yapmazsak, getTranslations() sunucu bileşenlerinde hangi yerelin kullanılacağını bilemez
237
+ setRequestLocale(locale);
238
+
239
+ // Doğru HTML render'ı için metin yönünü (LTR/RTL) al
240
+ const dir = getLocaleDirection(locale);
241
+
242
+ return (
243
+ <html lang={locale} dir={dir}>
244
+ <body>{children}</body>
245
+ </html>
246
+ );
247
+ }
248
+ }
249
+ ```
250
+
251
+ ```tsx fileName="src/app/[locale]/about/page.tsx"
252
+ import { getTranslations, getMessages, getFormatter } from "next-intl/server";
253
+ import { NextIntlClientProvider } from "next-intl";
254
+ import pick from "lodash/pick";
255
+ import ServerComponent from "@/components/ServerComponent";
256
+ import ClientComponent from "@/components/ClientComponent";
257
+
258
+ export default async function AboutPage({
259
+ params,
260
+ }: {
261
+ params: Promise<{ locale: string }>;
262
+ }) {
263
+ const { locale } = await params;
264
+
265
+ // Mesajlar sunucu tarafında yüklenir. İstemciye sadece gerekenler gönderilir.
266
+ // Bu, tarayıcıya gönderilen JavaScript paketini minimize eder
267
+ const messages = await getMessages();
268
+ const clientMessages = pick(messages, ["common", "about"]);
269
+
270
+ // Sadece sunucu tarafı çeviriler/formatlama
271
+ // Bunlar sunucuda çalışır ve bileşenlere props olarak geçirilebilir
272
+ const tAbout = await getTranslations("about");
273
+ const tCounter = await getTranslations("about.counter");
274
+ const format = await getFormatter();
275
+
276
+ const initialFormattedCount = format.number(0);
277
+
278
+ return (
279
+ // NextIntlClientProvider çevirileri istemci bileşenlerine kullanılabilir hale getirir
280
+ // İstemci bileşenlerinizin gerçekten kullandığı namespace'leri geçirin
281
+ <NextIntlClientProvider locale={locale} messages={clientMessages}>
282
+ <main>
283
+ <h1>{tAbout("title")}</h1>
284
+ <ClientComponent />
285
+ <ServerComponent
286
+ formattedCount={initialFormattedCount}
287
+ label={tCounter("label")}
288
+ increment={tCounter("increment")}
289
+ />
290
+ </main>
291
+ </NextIntlClientProvider>
292
+ );
293
+ }
294
+ ```
295
+
296
+ ### Adım 4: Çeviri Dosyalarınızı Oluşturun
297
+
298
+ Her locale ve namespace için JSON dosyaları oluşturun. Bu yapı, çevirileri mantıklı bir şekilde organize etmenizi ve her sayfa için yalnızca ihtiyacınız olanları yüklemenizi sağlar.
299
+
300
+ Çevirileri namespace bazında organize etmek (örneğin, `common.json`, `about.json`) kod bölme (code splitting) yapmanızı sağlar ve paket boyutunu küçültür. Her sayfa için yalnızca gereken çevirileri yüklersiniz, bu da performansı artırır.
301
+
302
+ ```json fileName="locales/en/common.json"
303
+ {
304
+ "welcome": "Welcome",
305
+ "greeting": "Hello, world!"
306
+ }
307
+ ```
308
+
309
+ ```json fileName="locales/fr/common.json"
310
+ {
311
+ "welcome": "Bienvenue",
312
+ "greeting": "Bonjour le monde!"
313
+ }
314
+ ```
315
+
316
+ ```json fileName="locales/en/about.json"
317
+ {
318
+ "title": "About",
319
+ "description": "About page description",
320
+ "counter": {
321
+ "label": "Counter",
322
+ "increment": "Increment"
323
+ }
324
+ }
325
+ ```
326
+
327
+ ```json fileName="locales/fr/about.json"
328
+ {
329
+ "title": "À propos",
330
+ "description": "Description de la page À propos",
331
+ "counter": {
332
+ "label": "Compteur",
333
+ "increment": "Incrémenter"
334
+ }
335
+ }
336
+ ```
337
+
338
+ ### Adım 5: Çevirileri Sayfalarınızda Kullanın
339
+
340
+ Sunucuda çevirileri yükleyen ve bunları hem sunucu hem de istemci bileşenlerine aktaran bir sayfa bileşeni oluşturun. Bu, çevirilerin render edilmeden önce yüklenmesini sağlar ve içerik yanıp sönmesini önler.
341
+
342
+ Sunucu tarafında çevirilerin yüklenmesi SEO'yu iyileştirir ve FOUC (Çevrilmemiş İçeriğin Yanıp Sönmesi) sorununu engeller. `pick` kullanarak yalnızca gerekli namespace'leri istemci sağlayıcısına göndererek, tarayıcıya gönderilen JavaScript paketini minimize ederiz.
343
+
344
+ ```tsx fileName="src/app/[locale]/about/page.tsx"
345
+ import { getTranslations, getMessages, getFormatter } from "next-intl/server";
346
+ import { NextIntlClientProvider } from "next-intl";
347
+ import pick from "lodash/pick";
348
+ import ServerComponent from "@/components/ServerComponent";
349
+ import ClientComponent from "@/components/ClientComponent";
350
+
351
+ export default async function AboutPage({
352
+ params,
353
+ }: {
354
+ params: Promise<{ locale: string }>;
355
+ }) {
356
+ const { locale } = await params;
357
+
358
+ // Mesajlar sunucu tarafında yüklenir. İstemciye sadece gerekenler gönderilir.
359
+ // Bu, tarayıcıya gönderilen JavaScript paketini minimize eder
360
+ const messages = await getMessages();
361
+ const clientMessages = pick(messages, ["common", "about"]);
362
+
363
+ // Sadece sunucu tarafı çeviriler/formatlama
364
+ // Bunlar sunucuda çalışır ve bileşenlere props olarak geçirilebilir
365
+ const tAbout = await getTranslations("about");
366
+ const tCounter = await getTranslations("about.counter");
367
+ const format = await getFormatter();
368
+
369
+ const initialFormattedCount = format.number(0);
370
+
371
+ return (
372
+ // NextIntlClientProvider, çevirileri istemci bileşenlerine kullanılabilir hale getirir
373
+ // İstemci bileşenlerinizin gerçekten kullandığı ad alanlarını geçin
374
+ <NextIntlClientProvider locale={locale} messages={clientMessages}>
375
+ <main>
376
+ <h1>{tAbout("title")}</h1>
377
+ <ClientComponent />
378
+ <ServerComponent
379
+ formattedCount={initialFormattedCount}
380
+ label={tCounter("label")}
381
+ increment={tCounter("increment")}
382
+ />
383
+ </main>
384
+ </NextIntlClientProvider>
385
+ );
386
+ }
387
+ ```
388
+
389
+ ### Adım 6: İstemci Bileşenlerinde Çevirileri Kullanma
390
+
391
+ İstemci bileşenleri, çevirilere ve biçimlendirme işlevlerine erişmek için `useTranslations` ve `useFormatter` hook'larını kullanabilir. Bu hook'lar `NextIntlClientProvider` bağlamından (context) okuma yapar.
392
+
393
+ İstemci bileşenlerin çevirilere erişmek için React hook'larına ihtiyacı vardır. `useTranslations` ve `useFormatter` hook'ları next-intl ile sorunsuz bir şekilde entegre olur ve dil değiştiğinde reaktif güncellemeler sağlar.
394
+
395
+ > Sayfanın istemci mesajlarına gerekli isim alanlarını eklemeyi unutmayın (yalnızca istemci bileşenlerinizin gerçekten ihtiyaç duyduğu isim alanlarını dahil edin).
396
+
397
+ ```tsx fileName="src/components/ClientComponent.tsx"
398
+ "use client";
399
+
400
+ import React, { useState } from "react";
401
+ import { useTranslations, useFormatter } from "next-intl";
402
+
403
+ const ClientComponent = () => {
404
+ // Doğrudan iç içe nesneye erişim sağla
405
+ // useTranslations/useFormatter, NextIntlClientProvider bağlamından okuyan hook'lardır
406
+ // Bu hook'lar yalnızca bileşen NextIntlClientProvider ile sarıldığında çalışır
407
+ const t = useTranslations("about.counter");
408
+ const format = useFormatter();
409
+ const [count, setCount] = useState(0);
410
+
411
+ return (
412
+ <div>
413
+ <p>{format.number(count)}</p>
414
+ <button
415
+ aria-label={t("label")}
416
+ onClick={() => setCount((count) => count + 1)}
417
+ >
418
+ {t("increment")}
419
+ </button>
420
+ </div>
421
+ );
422
+ };
423
+ ```
424
+
425
+ ### Adım 7: Sunucu Bileşenlerinde Çevirileri Kullanma
426
+
427
+ Sunucu bileşenleri React hook'larını kullanamaz, bu yüzden çeviriler ve biçimlendiriciler üst bileşenlerinden props olarak alınır. Bu yaklaşım sunucu bileşenlerini senkron tutar ve onların istemci bileşenlerinin içinde iç içe yerleştirilmesine izin verir.
428
+
429
+ İstemci sınırları altında iç içe olabilecek sunucu bileşenlerinin senkron olması gerekir. Çevrilmiş dizeleri ve biçimlendirilmiş değerleri props olarak geçirerek, asenkron işlemlerden kaçınır ve doğru render edilmesini sağlarız. Çevirileri ve biçimlendirmeyi üst sayfa bileşeninde önceden hesaplayın.
430
+
431
+ ```tsx fileName="src/components/ServerComponent.tsx"
432
+ // İstemci bileşenleri içinde iç içe olan sunucu bileşenleri senkron olmalıdır
433
+ // React, sunucu/istemci sınırı boyunca asenkron fonksiyonları serileştiremez
434
+ // Çözüm: Çevirileri/biçimlendirmeleri üst bileşende önceden hesaplayıp props olarak geçmek
435
+ type ServerComponentProps = {
436
+ formattedCount: string;
437
+ label: string;
438
+ increment: string;
439
+ };
440
+
441
+ const ServerComponent = ({
442
+ formattedCount,
443
+ label,
444
+ increment,
445
+ }: ServerComponentProps) => {
446
+ return (
447
+ <div>
448
+ <p>{formattedCount}</p>
449
+ <button aria-label={label}>{increment}</button>
450
+ </div>
451
+ );
452
+ };
453
+ ```
454
+
455
+ > Sayfa/düzeninizde, çevirileri ve biçimlendirmeyi önceden hesaplamak için `next-intl/server`'dan `getTranslations` ve `getFormatter` kullanın, ardından bunları props olarak sunucu bileşenlerine iletin.
456
+
457
+ ---
458
+
459
+ ### (İsteğe Bağlı) Adım 8: İçeriğinizin dilini değiştirin
460
+
461
+ next-intl ile içeriğinizin dilini değiştirmek için, aynı yol adına işaret eden ve yerel ayarı değiştiren yerel-dil farkında bağlantılar render edin. Sağlayıcı URL'leri otomatik olarak yeniden yazar, bu yüzden sadece mevcut rotayı hedeflemeniz yeterlidir.
462
+
463
+ ```tsx fileName="src/components/LocaleSwitcher.tsx"
464
+ "use client";
465
+
466
+ import Link from "next/link";
467
+ import { usePathname } from "next/navigation";
468
+ import { useLocale } from "next-intl";
469
+ import { defaultLocale, getCookie, type Locale, locales } from "@/i18n";
470
+
471
+ const getLocaleLabel = (locale: Locale): string => {
472
+ try {
473
+ const displayNames = new Intl.DisplayNames([locale], { type: "language" });
474
+ return displayNames.of(locale) ?? locale.toUpperCase();
475
+ } catch {
476
+ return locale.toUpperCase();
477
+ }
478
+ };
479
+
480
+ const localeFlags: Record<Locale, string> = {
481
+ en: "🇬🇧",
482
+ fr: "🇫🇷",
483
+ es: "🇪🇸",
484
+ };
485
+
486
+ export default function LocaleSwitcher() {
487
+ const activeLocale = useLocale();
488
+ const pathname = usePathname();
489
+
490
+ // Temel yolu almak için yol adından yerel öneki kaldır
491
+ const getBasePath = (path: string) => {
492
+ for (const locale of locales) {
493
+ if (path.startsWith(`/${locale}`)) {
494
+ return path.slice(locale.length + 1) || "/";
495
+ }
496
+ }
497
+ return path;
498
+ };
499
+
500
+ const basePath = getBasePath(pathname);
501
+
502
+ return (
503
+ <nav aria-label="Dil seçici">
504
+ <div>
505
+ {(locales as readonly Locale[]).map((locale) => {
506
+ const isActive = locale === activeLocale;
507
+ // Varsayılan locale göre href oluştur
508
+ const href =
509
+ locale === defaultLocale ? basePath : `/${locale}${basePath}`;
510
+ return (
511
+ <Link
512
+ key={locale}
513
+ href={href}
514
+ aria-current={isActive ? "sayfa" : undefined}
515
+ onClick={() => {
516
+ document.cookie = getCookie(locale);
517
+ }}
518
+ >
519
+ <span>{localeFlags[locale]}</span>
520
+ <span>{getLocaleLabel(locale)}</span>
521
+ <span>{locale.toUpperCase()}</span>
522
+ </Link>
523
+ );
524
+ })}
525
+ </div>
526
+ </nav>
527
+ );
528
+ }
529
+ ```
530
+
531
+ ### (İsteğe Bağlı) Adım 9: Yerelleştirilmiş Link bileşenini kullanma
532
+
533
+ `next-intl`, aktif locale otomatik olarak uygulayan yerelleştirilmiş bir link bileşeni içeren `next-intl/navigation` alt paketini sağlar. Bunu sizin için `@/i18n` dosyasında çıkardık, böylece şu şekilde kullanabilirsiniz:
534
+
535
+ ```tsx fileName="src/components/MyComponent.tsx"
536
+ import { Link } from "@/i18n";
537
+
538
+ return <Link href="/about">t("about.title")</Link>;
539
+ ```
540
+
541
+ ### (İsteğe Bağlı) Adım 10: Server Actions içinde aktif locale erişimi
542
+
543
+ Server Actions, `next-intl/server` kullanarak mevcut locale'i okuyabilir. Bu, yerelleştirilmiş e-postalar göndermek veya gönderilen verilerle birlikte dil tercihlerini saklamak için faydalıdır.
544
+
545
+ ```ts fileName="src/app/actions/get-current-locale.ts"
546
+ "use server";
547
+
548
+ import { getLocale } from "next-intl/server";
549
+
550
+ export async function getCurrentLocale() {
551
+ return getLocale();
552
+ }
553
+
554
+ export async function handleContactForm(formData: FormData) {
555
+ const locale = await getCurrentLocale();
556
+
557
+ // Şablonları, analiz etiketlerini vb. seçmek için locale kullanılır.
558
+ console.log(`Locale ${locale} üzerinden iletişim formu alındı`);
559
+ }
560
+ ```
561
+
562
+ > `getLocale`, `next-intl` proxy tarafından ayarlanan locale'i okur, bu yüzden sunucudaki her yerde çalışır: Route Handlers, Server Actions ve edge fonksiyonları.
563
+
564
+ ### (İsteğe Bağlı) Adım 11: Meta Verilerinizi Uluslararasılaştırın
565
+
566
+ İçeriği çevirmek önemlidir, ancak uluslararasılaştırmanın asıl amacı web sitenizi dünyaya daha görünür kılmaktır. I18n, uygun SEO ile web sitenizin görünürlüğünü artırmak için inanılmaz bir kaldıraçtır.
567
+
568
+ Doğru şekilde uluslararasılaştırılmış meta veriler, arama motorlarının sayfalarınızda hangi dillerin mevcut olduğunu anlamasına yardımcı olur. Bu, hreflang meta etiketlerinin ayarlanmasını, başlıkların ve açıklamaların çevrilmesini ve her yerel için kanonik URL'lerin doğru şekilde ayarlandığından emin olmayı içerir.
569
+
570
+ ```tsx fileName="src/app/[locale]/about/layout.tsx"
571
+ import type { Metadata } from "next";
572
+ import { locales, defaultLocale, localizedPath } from "@/i18n";
573
+ import { getTranslations } from "next-intl/server";
574
+
575
+ // generateMetadata her yerel için çalışır ve SEO dostu meta veriler oluşturur
576
+ // Bu, arama motorlarının alternatif dil sürümlerini anlamasına yardımcı olur
577
+ export async function generateMetadata({
578
+ params,
579
+ }: {
580
+ params: { locale: string };
581
+ }): Promise<Metadata> {
582
+ const { locale } = params;
583
+ const t = await getTranslations({ locale, namespace: "about" });
584
+
585
+ const url = "/about";
586
+ const languages = Object.fromEntries(
587
+ locales.map((locale) => [locale, localizedPath(locale, url)])
588
+ );
589
+
590
+ return {
591
+ title: t("title"),
592
+ description: t("description"),
593
+ alternates: {
594
+ canonical: localizedPath(locale, url),
595
+ languages: { ...languages, "x-default": url },
596
+ },
597
+ };
598
+ }
599
+
600
+ // ... Sayfanın geri kalan kodu
601
+ ```
602
+
603
+ ### (İsteğe bağlı) Adım 12: Site Haritanızı Uluslararasılaştırın
604
+
605
+ Sayfalarınızın tüm yerel sürümlerini içeren bir sitemap oluşturun. Bu, arama motorlarının içeriğinizin tüm dil sürümlerini keşfetmesine ve dizine eklemesine yardımcı olur.
606
+
607
+ Doğru şekilde uluslararasılaştırılmış bir sitemap, arama motorlarının sayfalarınızın tüm dil sürümlerini bulmasını ve dizine eklemesini sağlar. Bu, uluslararası arama sonuçlarındaki görünürlüğü artırır.
608
+
609
+ ```tsx fileName="src/app/sitemap.ts"
610
+ import type { MetadataRoute } from "next";
611
+ import { defaultLocale, locales } from "@/i18n";
612
+
613
+ const origin = "https://example.com";
614
+
615
+ const formatterLocalizedPath = (locale: string, path: string) =>
616
+ locale === defaultLocale ? `${origin}${path}` : `${origin}/${locale}${path}`;
617
+
618
+ /**
619
+ * Tüm yerellerin ve onların yerelleştirilmiş yollarının haritasını alın
620
+ *
621
+ * Örnek çıktı:
622
+ * {
623
+ * "en": "https://example.com",
624
+ * "fr": "https://example.com/fr",
625
+ * "es": "https://example.com/es",
626
+ * "x-default": "https://example.com"
627
+ * }
628
+ */
629
+ const getLocalizedMap = (path: string) =>
630
+ Object.fromEntries([
631
+ ...locales.map((locale) => [locale, formatterLocalizedPath(locale, path)]),
632
+ ["x-default", formatterLocalizedPath(defaultLocale, path)],
633
+ ]);
634
+
635
+ // Daha iyi SEO için tüm yerel varyantlarla sitemap oluşturun
636
+ // alternates alanı arama motorlarına dil versiyonları hakkında bilgi verir
637
+ export default function sitemap(): MetadataRoute.Sitemap {
638
+ return [
639
+ {
640
+ url: formatterLocalizedPath(defaultLocale, "/"),
641
+ lastModified: new Date(),
642
+ changeFrequency: "monthly",
643
+ priority: 1.0,
644
+ alternates: { languages: getLocalizedMap("/") },
645
+ },
646
+ {
647
+ url: formatterLocalizedPath(defaultLocale, "/about"),
648
+ lastModified: new Date(),
649
+ changeFrequency: "monthly",
650
+ priority: 0.7,
651
+ alternates: { languages: getLocalizedMap("/about") },
652
+ },
653
+ ];
654
+ }
655
+ ```
656
+
657
+ ### (İsteğe Bağlı) Adım 13: robots.txt Dosyanızı Uluslararasılaştırın
658
+
659
+ Korunan rotalarınızın tüm yerel sürümlerini düzgün şekilde yöneten bir robots.txt dosyası oluşturun. Bu, arama motorlarının yönetici veya kontrol paneli sayfalarını hiçbir dilde dizine eklememesini sağlar.
660
+
661
+ Tüm yereller için robots.txt dosyasını doğru yapılandırmak, rotalarınız her yerel için farklı olduğunda arama motorlarının hassas sayfaları dizine eklemesini engeller.
662
+
663
+ ```tsx fileName="src/app/robots.ts"
664
+ import type { MetadataRoute } from "next";
665
+ import { locales, defaultLocale } from "@/i18n";
666
+
667
+ const origin = "https://example.com";
668
+ // Tüm yereller için yolları oluştur (örneğin, /admin, /fr/admin, /es/admin)
669
+ const withAllLocales = (path: string) => [
670
+ path,
671
+ ...locales
672
+ .filter((locale) => locale !== defaultLocale)
673
+ .map((locale) => "/" + locale + path),
674
+ ];
675
+
676
+ export default function robots(): MetadataRoute.Robots {
677
+ const disallow = [
678
+ ...withAllLocales("/dashboard"),
679
+ ...withAllLocales("/admin"),
680
+ ];
681
+
682
+ return {
683
+ rules: { userAgent: "*", allow: ["/"], disallow },
684
+ host: origin,
685
+ sitemap: origin + "/sitemap.xml",
686
+ };
687
+ }
688
+ ```
689
+
690
+ ### (İsteğe Bağlı) Adım 14: Yerel Yönlendirme için Proxy Kurulumu
691
+
692
+ Kullanıcının tercih ettiği yereli otomatik olarak algılayan ve onları uygun yerel ön ekli URL'ye yönlendiren bir proxy oluşturun. next-intl, bunu otomatik olarak halleden kullanışlı bir proxy fonksiyonu sağlar.
693
+
694
+ Proxy, kullanıcıların sitenizi ziyaret ettiklerinde tercih ettikleri dile otomatik olarak yönlendirilmesini sağlar. Ayrıca, kullanıcının tercihlerini gelecekteki ziyaretler için kaydeder ve böylece kullanıcı deneyimini iyileştirir.
695
+
696
+ ```ts fileName="src/proxy.ts"
697
+ import { proxy } from "@/i18n";
698
+
699
+ // Middleware, rotalardan önce çalışır, dil tespiti ve yönlendirmeyi yönetir
700
+ // localeDetection: true, Accept-Language başlığını kullanarak dili otomatik algılar
701
+ export default proxy;
702
+
703
+ export const config = {
704
+ // API, Next dahili ve statik varlıkları atla
705
+ // Regex: api, _next ile başlayan veya nokta (dosya) içeren rotalar hariç tüm rotalarla eşleşir
706
+ matcher: ["/((?!api|_next|.*\\..*).*)"],
707
+ };
708
+ ```
709
+
710
+ ### (İsteğe Bağlı) Adım 15: Locale için TypeScript Tiplerini Ayarlama
711
+
712
+ TypeScript kurulumu, anahtarlarınız için otomatik tamamlama ve tip güvenliği elde etmenize yardımcı olur.
713
+
714
+ Bunun için, proje kök dizininizde bir global.ts dosyası oluşturabilir ve aşağıdaki kodu ekleyebilirsiniz:
715
+
716
+ ```ts fileName="global.ts"
717
+ import type { locales } from "@/i18n";
718
+
719
+ type Messages = {
720
+ common: typeof import("./locales/en/common.json");
721
+ home: typeof import("./locales/en/home.json");
722
+ about: typeof import("./locales/en/about.json");
723
+ // ... Gelecekteki JSON dosyaları da buraya eklenmelidir
724
+ };
725
+
726
+ declare module "next-intl" {
727
+ interface AppConfig {
728
+ Locale: (typeof locales)[number];
729
+ Messages: Messages;
730
+ }
731
+ }
732
+ ```
733
+
734
+ Bu kod, Module Augmentation kullanarak locales ve messages öğelerini next-intl AppConfig türüne ekleyecektir.
735
+
736
+ ### (İsteğe Bağlı) Adım 15: Çevirilerinizi Intlayer ile Otomatikleştirin
737
+
738
+ Intlayer, uygulamanızdaki yerelleştirme sürecine yardımcı olmak için tasarlanmış **ücretsiz** ve **açık kaynaklı** bir kütüphanedir. next-intl çeviri yükleme ve yönetimini üstlenirken, Intlayer çeviri iş akışını otomatikleştirmenize yardımcı olur.
739
+
740
+ Çevirileri manuel olarak yönetmek zaman alıcı ve hata yapmaya açık olabilir. Intlayer, çeviri testini, oluşturulmasını ve yönetimini otomatikleştirerek zaman kazandırır ve uygulamanız genelinde tutarlılığı sağlar.
741
+
742
+ Intlayer size şunları sağlar:
743
+
744
+ - **İçeriğinizi kod tabanınızda istediğiniz yerde tanımlayın**
745
+ Intlayer, `.content.{ts|js|json}` dosyalarını kullanarak içeriğinizi kod tabanınızda istediğiniz yerde tanımlamanıza olanak tanır. Bu, içeriğinizin daha iyi organize edilmesini sağlayarak kod tabanınızın okunabilirliğini ve sürdürülebilirliğini artırır.
746
+
747
+ - **Eksik çevirileri test edin**
748
+ Intlayer, CI/CD pipeline'ınıza veya birim testlerinize entegre edilebilen test fonksiyonları sağlar. Çevirilerinizi test etmek hakkında daha fazla bilgi edinin: [testing your translations](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/testing.md).
749
+
750
+ - **Çevirilerinizi otomatikleştirin**
751
+ Intlayer, çevirilerinizi otomatikleştirmek için bir CLI ve bir VSCode uzantısı sağlar. Bu, CI/CD pipeline'ınıza entegre edilebilir. Çevirilerinizi otomatikleştirmek hakkında daha fazla bilgi edinin: [automating your translations](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_cli.md).
752
+ Kendi **API anahtarınızı ve tercih ettiğiniz AI sağlayıcısını** kullanabilirsiniz. Ayrıca bağlama duyarlı çeviriler sağlar, bkz. [fill content](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/autoFill.md).
753
+
754
+ - **Harici içeriği bağlayın**
755
+ Intlayer, içeriğinizi harici bir içerik yönetim sistemi (CMS) ile bağlamanıza olanak tanır. İçeriği optimize edilmiş bir şekilde alıp JSON kaynaklarınıza ekleyebilirsiniz. Harici içeriğin nasıl alınacağı hakkında daha fazla bilgi için [fetching external content](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/dictionary/function_fetching.md) sayfasını inceleyin.
756
+
757
+ - **Görsel editör**
758
+ Intlayer, içeriğinizi görsel bir editör kullanarak düzenlemenizi sağlayan ücretsiz bir görsel editör sunar. Çevirilerinizi görsel olarak düzenlemek hakkında daha fazla bilgi için [visual editing your translations](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_visual_editor.md) sayfasını ziyaret edin.
759
+
760
+ Ve daha fazlası. Intlayer tarafından sunulan tüm özellikleri keşfetmek için lütfen [Interest of Intlayer documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/interest_of_intlayer.md) dokümantasyonuna bakınız.