@intlayer/docs 7.0.7 → 7.0.8-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (726) hide show
  1. package/blog/ar/i18n_using_next-i18next.md +1068 -0
  2. package/blog/ar/i18n_using_next-intl.md +768 -0
  3. package/blog/ar/intlayer_with_react-intl.md +0 -4
  4. package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +5 -4
  5. package/blog/de/i18n_using_next-i18next.md +1107 -0
  6. package/blog/de/i18n_using_next-intl.md +760 -0
  7. package/blog/de/intlayer_with_react-intl.md +0 -4
  8. package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  9. package/blog/en/i18n_using_next-i18next.md +1073 -0
  10. package/blog/en/i18n_using_next-intl.md +757 -0
  11. package/blog/en/intlayer_with_i18next.md +71 -8
  12. package/blog/en/intlayer_with_next-i18next.md +71 -8
  13. package/blog/en/intlayer_with_next-intl.md +71 -8
  14. package/blog/en/intlayer_with_react-i18next.md +69 -8
  15. package/blog/en/intlayer_with_react-intl.md +68 -9
  16. package/blog/en/intlayer_with_vue-i18n.md +68 -7
  17. package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
  18. package/blog/en/vue-i18n_vs_intlayer.md +2 -0
  19. package/blog/en-GB/i18n_using_next-i18next.md +1074 -0
  20. package/blog/en-GB/i18n_using_next-intl.md +757 -0
  21. package/blog/en-GB/intlayer_with_i18next.md +15 -6
  22. package/blog/en-GB/intlayer_with_next-i18next.md +16 -6
  23. package/blog/en-GB/intlayer_with_next-intl.md +16 -6
  24. package/blog/en-GB/intlayer_with_react-i18next.md +16 -7
  25. package/blog/en-GB/intlayer_with_react-intl.md +14 -9
  26. package/blog/en-GB/intlayer_with_vue-i18n.md +16 -7
  27. package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  28. package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
  29. package/blog/en-GB/vue-i18n_vs_intlayer.md +2 -0
  30. package/blog/es/i18n_using_next-i18next.md +1066 -0
  31. package/blog/es/i18n_using_next-intl.md +757 -0
  32. package/blog/es/intlayer_with_react-intl.md +0 -4
  33. package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  34. package/blog/fr/i18n_using_next-i18next.md +1078 -0
  35. package/blog/fr/i18n_using_next-intl.md +759 -0
  36. package/blog/fr/intlayer_with_react-intl.md +0 -4
  37. package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  38. package/blog/hi/i18n_using_next-i18next.md +1068 -0
  39. package/blog/hi/i18n_using_next-intl.md +758 -0
  40. package/blog/hi/intlayer_with_react-intl.md +0 -4
  41. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  42. package/blog/id/i18n_using_next-i18next.md +1078 -0
  43. package/blog/id/i18n_using_next-intl.md +757 -0
  44. package/blog/id/index.md +69 -0
  45. package/blog/id/internationalization_and_SEO.md +364 -0
  46. package/blog/id/intlayer_with_react-intl.md +0 -4
  47. package/blog/id/list_i18n_technologies/CMS/drupal.md +143 -0
  48. package/blog/id/list_i18n_technologies/CMS/wix.md +167 -0
  49. package/blog/id/list_i18n_technologies/CMS/wordpress.md +188 -0
  50. package/blog/id/list_i18n_technologies/frameworks/angular.md +125 -0
  51. package/blog/id/list_i18n_technologies/frameworks/flutter.md +150 -0
  52. package/blog/id/list_i18n_technologies/frameworks/react-native.md +217 -0
  53. package/blog/id/list_i18n_technologies/frameworks/react.md +155 -0
  54. package/blog/id/list_i18n_technologies/frameworks/svelte.md +131 -0
  55. package/blog/id/list_i18n_technologies/frameworks/vue.md +130 -0
  56. package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1500 -0
  57. package/blog/id/nextjs-multilingual-seo-comparison.md +361 -0
  58. package/blog/id/rag_powered_documentation_assistant.md +288 -0
  59. package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
  60. package/blog/id/vue-i18n_vs_intlayer.md +278 -0
  61. package/blog/id/what_is_internationalization.md +166 -0
  62. package/blog/it/i18n_using_next-i18next.md +1078 -0
  63. package/blog/it/i18n_using_next-intl.md +758 -0
  64. package/blog/it/intlayer_with_react-intl.md +0 -4
  65. package/blog/it/react-i18next_vs_react-intl_vs_intlayer.md +4 -0
  66. package/blog/it/vue-i18n_vs_intlayer.md +2 -0
  67. package/blog/ja/i18n_using_next-i18next.md +1078 -0
  68. package/blog/ja/i18n_using_next-intl.md +758 -0
  69. package/blog/ja/intlayer_with_react-intl.md +0 -4
  70. package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  71. package/blog/ko/i18n_using_next-i18next.md +1075 -0
  72. package/blog/ko/i18n_using_next-intl.md +759 -0
  73. package/blog/ko/intlayer_with_react-intl.md +0 -4
  74. package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  75. package/blog/pl/i18n_using_next-i18next.md +1078 -0
  76. package/blog/pl/i18n_using_next-intl.md +758 -0
  77. package/blog/pl/index.md +69 -0
  78. package/blog/pl/internationalization_and_SEO.md +363 -0
  79. package/blog/pl/intlayer_with_react-intl.md +0 -4
  80. package/blog/pl/list_i18n_technologies/CMS/drupal.md +143 -0
  81. package/blog/pl/list_i18n_technologies/CMS/wix.md +167 -0
  82. package/blog/pl/list_i18n_technologies/CMS/wordpress.md +196 -0
  83. package/blog/pl/list_i18n_technologies/frameworks/angular.md +125 -0
  84. package/blog/pl/list_i18n_technologies/frameworks/flutter.md +151 -0
  85. package/blog/pl/list_i18n_technologies/frameworks/react-native.md +217 -0
  86. package/blog/pl/list_i18n_technologies/frameworks/react.md +155 -0
  87. package/blog/pl/list_i18n_technologies/frameworks/svelte.md +131 -0
  88. package/blog/pl/list_i18n_technologies/frameworks/vue.md +130 -0
  89. package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +1501 -0
  90. package/blog/pl/nextjs-multilingual-seo-comparison.md +362 -0
  91. package/blog/pl/rag_powered_documentation_assistant.md +288 -0
  92. package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
  93. package/blog/pl/vue-i18n_vs_intlayer.md +278 -0
  94. package/blog/pl/what_is_internationalization.md +167 -0
  95. package/blog/pt/i18n_using_next-i18next.md +1067 -0
  96. package/blog/pt/i18n_using_next-intl.md +760 -0
  97. package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  98. package/blog/ru/i18n_using_next-i18next.md +1106 -0
  99. package/blog/ru/i18n_using_next-intl.md +759 -0
  100. package/blog/ru/intlayer_with_react-intl.md +0 -4
  101. package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  102. package/blog/tr/i18n_using_next-i18next.md +1078 -0
  103. package/blog/tr/i18n_using_next-intl.md +760 -0
  104. package/blog/tr/intlayer_with_react-intl.md +0 -4
  105. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  106. package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
  107. package/blog/tr/vue-i18n_vs_intlayer.md +2 -0
  108. package/blog/vi/i18n_using_next-i18next.md +1080 -0
  109. package/blog/vi/i18n_using_next-intl.md +758 -0
  110. package/blog/vi/index.md +69 -0
  111. package/blog/vi/internationalization_and_SEO.md +363 -0
  112. package/blog/vi/intlayer_with_react-intl.md +0 -4
  113. package/blog/vi/list_i18n_technologies/CMS/drupal.md +143 -0
  114. package/blog/vi/list_i18n_technologies/CMS/wix.md +167 -0
  115. package/blog/vi/list_i18n_technologies/CMS/wordpress.md +188 -0
  116. package/blog/vi/list_i18n_technologies/frameworks/angular.md +125 -0
  117. package/blog/vi/list_i18n_technologies/frameworks/flutter.md +150 -0
  118. package/blog/vi/list_i18n_technologies/frameworks/react-native.md +217 -0
  119. package/blog/vi/list_i18n_technologies/frameworks/react.md +155 -0
  120. package/blog/vi/list_i18n_technologies/frameworks/svelte.md +131 -0
  121. package/blog/vi/list_i18n_technologies/frameworks/vue.md +130 -0
  122. package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1520 -0
  123. package/blog/vi/nextjs-multilingual-seo-comparison.md +362 -0
  124. package/blog/vi/rag_powered_documentation_assistant.md +288 -0
  125. package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
  126. package/blog/vi/vue-i18n_vs_intlayer.md +278 -0
  127. package/blog/vi/what_is_internationalization.md +168 -0
  128. package/blog/zh/i18n_using_next-i18next.md +1105 -0
  129. package/blog/zh/i18n_using_next-intl.md +758 -0
  130. package/blog/zh/intlayer_with_react-intl.md +0 -4
  131. package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  132. package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
  133. package/dist/cjs/common.cjs +0 -4
  134. package/dist/cjs/common.cjs.map +1 -1
  135. package/dist/cjs/generated/blog.entry.cjs +38 -6
  136. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  137. package/dist/cjs/generated/docs.entry.cjs +0 -6
  138. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  139. package/dist/cjs/generated/frequentQuestions.entry.cjs +0 -6
  140. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  141. package/dist/cjs/generated/legal.entry.cjs +0 -6
  142. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  143. package/dist/esm/generated/blog.entry.mjs +38 -0
  144. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  145. package/dist/types/generated/blog.entry.d.ts +2 -0
  146. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  147. package/docs/ar/component_i18n.md +1 -1
  148. package/docs/ar/configuration.md +6 -0
  149. package/docs/ar/intlayer_cli.md +8 -3
  150. package/docs/ar/intlayer_with_next-i18next.md +619 -0
  151. package/docs/ar/intlayer_with_next-intl.md +446 -0
  152. package/docs/ar/intlayer_with_nextjs_16.md +21 -0
  153. package/docs/ar/intlayer_with_tanstack.md +4 -0
  154. package/docs/ar/intlayer_with_vite+react.md +4 -0
  155. package/docs/de/component_i18n.md +1 -1
  156. package/docs/de/configuration.md +6 -0
  157. package/docs/de/intlayer_cli.md +8 -3
  158. package/docs/de/intlayer_with_next-i18next.md +627 -0
  159. package/docs/de/intlayer_with_next-intl.md +451 -0
  160. package/docs/de/intlayer_with_nextjs_16.md +21 -0
  161. package/docs/de/intlayer_with_tanstack.md +4 -0
  162. package/docs/de/intlayer_with_vite+react.md +4 -0
  163. package/docs/en/component_i18n.md +1 -1
  164. package/docs/en/intlayer_cli.md +8 -1
  165. package/docs/en/intlayer_with_astro.md +10 -2
  166. package/docs/en/intlayer_with_create_react_app.md +8 -0
  167. package/docs/en/intlayer_with_lynx+react.md +8 -0
  168. package/docs/en/intlayer_with_nestjs.md +10 -0
  169. package/docs/en/intlayer_with_nextjs_14.md +10 -2
  170. package/docs/en/intlayer_with_nextjs_15.md +21 -4
  171. package/docs/en/intlayer_with_nextjs_16.md +17 -0
  172. package/docs/en/intlayer_with_nuxt.md +8 -0
  173. package/docs/en/intlayer_with_react_native+expo.md +10 -2
  174. package/docs/en/intlayer_with_react_router_v7.md +8 -0
  175. package/docs/en/intlayer_with_tanstack.md +10 -0
  176. package/docs/en/intlayer_with_vite+preact.md +10 -2
  177. package/docs/en/intlayer_with_vite+react.md +21 -4
  178. package/docs/en/intlayer_with_vite+vue.md +10 -2
  179. package/docs/en-GB/component_i18n.md +1 -1
  180. package/docs/en-GB/configuration.md +6 -0
  181. package/docs/en-GB/intlayer_cli.md +8 -3
  182. package/docs/en-GB/intlayer_with_angular.md +4 -4
  183. package/docs/en-GB/intlayer_with_express.md +4 -4
  184. package/docs/en-GB/intlayer_with_lynx+react.md +12 -12
  185. package/{blog/en/_intlayer_with_next-i18next.md → docs/en-GB/intlayer_with_next-i18next.md} +241 -42
  186. package/{blog/en/_intlayer_with_next-intl.md → docs/en-GB/intlayer_with_next-intl.md} +144 -29
  187. package/docs/en-GB/intlayer_with_nextjs_16.md +21 -0
  188. package/docs/en-GB/intlayer_with_tanstack.md +5 -1
  189. package/docs/en-GB/intlayer_with_vite+react.md +4 -0
  190. package/docs/en-GB/packages/next-intlayer/t.md +2 -2
  191. package/docs/es/component_i18n.md +1 -1
  192. package/docs/es/configuration.md +6 -0
  193. package/docs/es/intlayer_cli.md +8 -3
  194. package/docs/es/intlayer_with_next-i18next.md +628 -0
  195. package/docs/es/intlayer_with_next-intl.md +446 -0
  196. package/docs/es/intlayer_with_nextjs_16.md +21 -0
  197. package/docs/es/intlayer_with_tanstack.md +4 -0
  198. package/docs/es/intlayer_with_vite+react.md +4 -0
  199. package/docs/fr/configuration.md +6 -0
  200. package/docs/fr/intlayer_cli.md +8 -3
  201. package/docs/fr/intlayer_with_next-i18next.md +628 -0
  202. package/docs/fr/intlayer_with_next-intl.md +446 -0
  203. package/docs/fr/intlayer_with_nextjs_16.md +23 -2
  204. package/docs/fr/intlayer_with_tanstack.md +4 -0
  205. package/docs/fr/intlayer_with_vite+react.md +4 -0
  206. package/docs/hi/component_i18n.md +1 -1
  207. package/docs/hi/configuration.md +6 -0
  208. package/docs/hi/intlayer_cli.md +8 -0
  209. package/docs/hi/intlayer_with_next-i18next.md +628 -0
  210. package/docs/hi/intlayer_with_next-intl.md +446 -0
  211. package/docs/hi/intlayer_with_nextjs_16.md +21 -0
  212. package/docs/hi/intlayer_with_tanstack.md +4 -0
  213. package/docs/hi/intlayer_with_vite+react.md +4 -0
  214. package/docs/id/CI_CD.md +198 -0
  215. package/docs/id/autoFill.md +284 -0
  216. package/docs/id/component_i18n.md +186 -0
  217. package/docs/id/configuration.md +710 -0
  218. package/docs/id/dictionary/condition.md +231 -0
  219. package/docs/id/dictionary/content_file.md +1092 -0
  220. package/docs/id/dictionary/enumeration.md +245 -0
  221. package/docs/id/dictionary/file.md +237 -0
  222. package/docs/id/dictionary/function_fetching.md +214 -0
  223. package/docs/id/dictionary/gender.md +273 -0
  224. package/docs/id/dictionary/insertion.md +192 -0
  225. package/docs/id/dictionary/markdown.md +381 -0
  226. package/docs/id/dictionary/nesting.md +273 -0
  227. package/docs/id/dictionary/translation.md +310 -0
  228. package/docs/id/formatters.md +596 -0
  229. package/docs/id/how_works_intlayer.md +256 -0
  230. package/docs/id/index.md +176 -0
  231. package/docs/id/interest_of_intlayer.md +293 -0
  232. package/docs/id/intlayer_CMS.md +549 -0
  233. package/docs/id/intlayer_cli.md +850 -0
  234. package/docs/id/intlayer_visual_editor.md +288 -0
  235. package/docs/id/intlayer_with_angular.md +694 -0
  236. package/docs/id/intlayer_with_astro.md +252 -0
  237. package/docs/id/intlayer_with_create_react_app.md +1233 -0
  238. package/docs/id/intlayer_with_express.md +411 -0
  239. package/docs/id/intlayer_with_lynx+react.md +518 -0
  240. package/docs/id/intlayer_with_nestjs.md +272 -0
  241. package/docs/id/intlayer_with_next-i18next.md +628 -0
  242. package/docs/id/intlayer_with_next-intl.md +446 -0
  243. package/docs/id/intlayer_with_nextjs_14.md +1617 -0
  244. package/docs/id/intlayer_with_nextjs_15.md +1698 -0
  245. package/docs/id/intlayer_with_nextjs_16.md +21 -0
  246. package/docs/id/intlayer_with_nextjs_page_router.md +1478 -0
  247. package/docs/id/intlayer_with_nuxt.md +808 -0
  248. package/docs/id/intlayer_with_react_native+expo.md +699 -0
  249. package/docs/id/intlayer_with_react_router_v7.md +496 -0
  250. package/docs/id/intlayer_with_tanstack.md +564 -0
  251. package/docs/id/intlayer_with_vite+preact.md +1737 -0
  252. package/docs/id/intlayer_with_vite+react.md +1413 -0
  253. package/docs/id/intlayer_with_vite+solid.md +289 -0
  254. package/docs/id/intlayer_with_vite+svelte.md +289 -0
  255. package/docs/id/intlayer_with_vite+vue.md +1088 -0
  256. package/docs/id/introduction.md +218 -0
  257. package/docs/id/locale_mapper.md +242 -0
  258. package/docs/id/mcp_server.md +211 -0
  259. package/docs/id/packages/express-intlayer/t.md +458 -0
  260. package/docs/id/packages/intlayer/getConfiguration.md +145 -0
  261. package/docs/id/packages/intlayer/getEnumeration.md +159 -0
  262. package/docs/id/packages/intlayer/getHTMLTextDir.md +122 -0
  263. package/docs/id/packages/intlayer/getLocaleLang.md +81 -0
  264. package/docs/id/packages/intlayer/getLocaleName.md +119 -0
  265. package/docs/id/packages/intlayer/getLocalizedUrl.md +309 -0
  266. package/docs/id/packages/intlayer/getMultilingualUrls.md +223 -0
  267. package/docs/id/packages/intlayer/getPathWithoutLocale.md +75 -0
  268. package/docs/id/packages/intlayer/getTranslation.md +190 -0
  269. package/docs/id/packages/intlayer/getTranslationContent.md +188 -0
  270. package/docs/id/packages/next-intlayer/t.md +352 -0
  271. package/docs/id/packages/next-intlayer/useDictionary.md +271 -0
  272. package/docs/id/packages/next-intlayer/useIntlayer.md +264 -0
  273. package/docs/id/packages/next-intlayer/useLocale.md +166 -0
  274. package/docs/id/packages/react-intlayer/t.md +303 -0
  275. package/docs/id/packages/react-intlayer/useDictionary.md +287 -0
  276. package/docs/id/packages/react-intlayer/useI18n.md +267 -0
  277. package/docs/id/packages/react-intlayer/useIntlayer.md +254 -0
  278. package/docs/id/packages/react-intlayer/useLocale.md +210 -0
  279. package/docs/id/per_locale_file.md +323 -0
  280. package/docs/id/readme.md +261 -0
  281. package/docs/id/releases/v6.md +305 -0
  282. package/docs/id/roadmap.md +362 -0
  283. package/docs/id/testing.md +202 -0
  284. package/docs/id/vs_code_extension.md +126 -0
  285. package/docs/it/component_i18n.md +1 -1
  286. package/docs/it/configuration.md +6 -0
  287. package/docs/it/intlayer_cli.md +8 -3
  288. package/docs/it/intlayer_with_next-i18next.md +628 -0
  289. package/docs/it/intlayer_with_next-intl.md +446 -0
  290. package/docs/it/intlayer_with_nextjs_16.md +21 -0
  291. package/docs/it/intlayer_with_tanstack.md +4 -0
  292. package/docs/it/intlayer_with_vite+react.md +4 -0
  293. package/docs/ja/component_i18n.md +1 -1
  294. package/docs/ja/configuration.md +6 -0
  295. package/docs/ja/intlayer_cli.md +8 -3
  296. package/docs/ja/intlayer_with_next-i18next.md +627 -0
  297. package/docs/ja/intlayer_with_next-intl.md +446 -0
  298. package/docs/ja/intlayer_with_nextjs_16.md +21 -0
  299. package/docs/ja/intlayer_with_tanstack.md +4 -0
  300. package/docs/ja/intlayer_with_vite+react.md +4 -0
  301. package/docs/ko/configuration.md +6 -0
  302. package/docs/ko/intlayer_cli.md +8 -3
  303. package/docs/ko/intlayer_with_next-i18next.md +627 -0
  304. package/docs/ko/intlayer_with_next-intl.md +446 -0
  305. package/docs/ko/intlayer_with_nextjs_16.md +21 -0
  306. package/docs/ko/intlayer_with_tanstack.md +4 -0
  307. package/docs/ko/intlayer_with_vite+react.md +4 -0
  308. package/docs/pl/CI_CD.md +198 -0
  309. package/docs/pl/autoFill.md +284 -0
  310. package/docs/pl/component_i18n.md +186 -0
  311. package/docs/pl/configuration.md +710 -0
  312. package/docs/pl/dictionary/condition.md +232 -0
  313. package/docs/pl/dictionary/content_file.md +1130 -0
  314. package/docs/pl/dictionary/enumeration.md +245 -0
  315. package/docs/pl/dictionary/file.md +234 -0
  316. package/docs/pl/dictionary/function_fetching.md +214 -0
  317. package/docs/pl/dictionary/gender.md +276 -0
  318. package/docs/pl/dictionary/insertion.md +188 -0
  319. package/docs/pl/dictionary/markdown.md +408 -0
  320. package/docs/pl/dictionary/nesting.md +273 -0
  321. package/docs/pl/dictionary/translation.md +310 -0
  322. package/docs/pl/formatters.md +596 -0
  323. package/docs/pl/how_works_intlayer.md +256 -0
  324. package/docs/pl/index.md +176 -0
  325. package/docs/pl/interest_of_intlayer.md +291 -0
  326. package/docs/pl/intlayer_CMS.md +549 -0
  327. package/docs/pl/intlayer_cli.md +857 -0
  328. package/docs/pl/intlayer_visual_editor.md +288 -0
  329. package/docs/pl/intlayer_with_angular.md +690 -0
  330. package/docs/pl/intlayer_with_astro.md +280 -0
  331. package/docs/pl/intlayer_with_create_react_app.md +1235 -0
  332. package/docs/pl/intlayer_with_express.md +411 -0
  333. package/docs/pl/intlayer_with_lynx+react.md +518 -0
  334. package/docs/pl/intlayer_with_nestjs.md +272 -0
  335. package/docs/pl/intlayer_with_next-i18next.md +628 -0
  336. package/docs/pl/intlayer_with_next-intl.md +446 -0
  337. package/docs/pl/intlayer_with_nextjs_14.md +1594 -0
  338. package/docs/pl/intlayer_with_nextjs_15.md +1701 -0
  339. package/docs/pl/intlayer_with_nextjs_16.md +21 -0
  340. package/docs/pl/intlayer_with_nextjs_page_router.md +1513 -0
  341. package/docs/pl/intlayer_with_nuxt.md +885 -0
  342. package/docs/pl/intlayer_with_react_native+expo.md +698 -0
  343. package/docs/pl/intlayer_with_react_router_v7.md +503 -0
  344. package/docs/pl/intlayer_with_tanstack.md +562 -0
  345. package/docs/pl/intlayer_with_vite+preact.md +1736 -0
  346. package/docs/pl/intlayer_with_vite+react.md +1438 -0
  347. package/docs/pl/intlayer_with_vite+solid.md +290 -0
  348. package/docs/pl/intlayer_with_vite+svelte.md +289 -0
  349. package/docs/pl/intlayer_with_vite+vue.md +1116 -0
  350. package/docs/pl/introduction.md +209 -0
  351. package/docs/pl/locale_mapper.md +242 -0
  352. package/docs/pl/mcp_server.md +211 -0
  353. package/docs/pl/packages/express-intlayer/t.md +458 -0
  354. package/docs/pl/packages/intlayer/getConfiguration.md +146 -0
  355. package/docs/pl/packages/intlayer/getEnumeration.md +160 -0
  356. package/docs/pl/packages/intlayer/getHTMLTextDir.md +121 -0
  357. package/docs/pl/packages/intlayer/getLocaleLang.md +81 -0
  358. package/docs/pl/packages/intlayer/getLocaleName.md +118 -0
  359. package/docs/pl/packages/intlayer/getLocalizedUrl.md +300 -0
  360. package/docs/pl/packages/intlayer/getMultilingualUrls.md +221 -0
  361. package/docs/pl/packages/intlayer/getPathWithoutLocale.md +75 -0
  362. package/docs/pl/packages/intlayer/getTranslation.md +190 -0
  363. package/docs/pl/packages/intlayer/getTranslationContent.md +189 -0
  364. package/docs/pl/packages/next-intlayer/t.md +353 -0
  365. package/docs/pl/packages/next-intlayer/useDictionary.md +270 -0
  366. package/docs/pl/packages/next-intlayer/useIntlayer.md +263 -0
  367. package/docs/pl/packages/next-intlayer/useLocale.md +166 -0
  368. package/docs/pl/packages/react-intlayer/t.md +303 -0
  369. package/docs/pl/packages/react-intlayer/useDictionary.md +289 -0
  370. package/docs/pl/packages/react-intlayer/useI18n.md +249 -0
  371. package/docs/pl/packages/react-intlayer/useIntlayer.md +256 -0
  372. package/docs/pl/packages/react-intlayer/useLocale.md +210 -0
  373. package/docs/pl/per_locale_file.md +321 -0
  374. package/docs/pl/readme.md +261 -0
  375. package/docs/pl/releases/v6.md +305 -0
  376. package/docs/pl/roadmap.md +362 -0
  377. package/docs/pl/testing.md +202 -0
  378. package/docs/pl/vs_code_extension.md +126 -0
  379. package/docs/pt/component_i18n.md +1 -1
  380. package/docs/pt/configuration.md +6 -0
  381. package/docs/pt/intlayer_cli.md +8 -3
  382. package/docs/pt/intlayer_with_next-i18next.md +627 -0
  383. package/docs/pt/intlayer_with_next-intl.md +446 -0
  384. package/docs/pt/intlayer_with_nextjs_16.md +21 -0
  385. package/docs/pt/intlayer_with_tanstack.md +4 -0
  386. package/docs/pt/intlayer_with_vite+react.md +4 -0
  387. package/docs/ru/component_i18n.md +1 -1
  388. package/docs/ru/configuration.md +6 -0
  389. package/docs/ru/intlayer_cli.md +301 -22
  390. package/docs/ru/intlayer_with_next-i18next.md +629 -0
  391. package/docs/ru/intlayer_with_next-intl.md +448 -0
  392. package/docs/ru/intlayer_with_nextjs_16.md +21 -0
  393. package/docs/ru/intlayer_with_tanstack.md +4 -0
  394. package/docs/ru/intlayer_with_vite+react.md +4 -0
  395. package/docs/tr/component_i18n.md +1 -1
  396. package/docs/tr/configuration.md +6 -0
  397. package/docs/tr/intlayer_cli.md +8 -0
  398. package/docs/tr/intlayer_with_next-i18next.md +627 -0
  399. package/docs/tr/intlayer_with_next-intl.md +446 -0
  400. package/docs/tr/intlayer_with_nextjs_16.md +21 -0
  401. package/docs/tr/intlayer_with_tanstack.md +4 -0
  402. package/docs/tr/intlayer_with_vite+react.md +4 -0
  403. package/docs/vi/CI_CD.md +198 -0
  404. package/docs/vi/autoFill.md +284 -0
  405. package/docs/vi/component_i18n.md +186 -0
  406. package/docs/vi/configuration.md +710 -0
  407. package/docs/vi/dictionary/condition.md +237 -0
  408. package/docs/vi/dictionary/content_file.md +1115 -0
  409. package/docs/vi/dictionary/enumeration.md +255 -0
  410. package/docs/vi/dictionary/file.md +234 -0
  411. package/docs/vi/dictionary/function_fetching.md +212 -0
  412. package/docs/vi/dictionary/gender.md +275 -0
  413. package/docs/vi/dictionary/insertion.md +191 -0
  414. package/docs/vi/dictionary/markdown.md +381 -0
  415. package/docs/vi/dictionary/nesting.md +273 -0
  416. package/docs/vi/dictionary/translation.md +309 -0
  417. package/docs/vi/formatters.md +595 -0
  418. package/docs/vi/how_works_intlayer.md +256 -0
  419. package/docs/vi/index.md +174 -0
  420. package/docs/vi/interest_of_intlayer.md +292 -0
  421. package/docs/vi/intlayer_CMS.md +549 -0
  422. package/docs/vi/intlayer_cli.md +850 -0
  423. package/docs/vi/intlayer_visual_editor.md +288 -0
  424. package/docs/vi/intlayer_with_angular.md +692 -0
  425. package/docs/vi/intlayer_with_astro.md +252 -0
  426. package/docs/vi/intlayer_with_create_react_app.md +1230 -0
  427. package/docs/vi/intlayer_with_express.md +409 -0
  428. package/docs/vi/intlayer_with_lynx+react.md +520 -0
  429. package/docs/vi/intlayer_with_nestjs.md +272 -0
  430. package/docs/vi/intlayer_with_next-i18next.md +628 -0
  431. package/docs/vi/intlayer_with_next-intl.md +446 -0
  432. package/docs/vi/intlayer_with_nextjs_14.md +1584 -0
  433. package/docs/vi/intlayer_with_nextjs_15.md +1738 -0
  434. package/docs/vi/intlayer_with_nextjs_16.md +21 -0
  435. package/docs/vi/intlayer_with_nextjs_page_router.md +1504 -0
  436. package/docs/vi/intlayer_with_nuxt.md +821 -0
  437. package/docs/vi/intlayer_with_react_native+expo.md +700 -0
  438. package/docs/vi/intlayer_with_react_router_v7.md +498 -0
  439. package/docs/vi/intlayer_with_tanstack.md +562 -0
  440. package/docs/vi/intlayer_with_vite+preact.md +1722 -0
  441. package/docs/vi/intlayer_with_vite+react.md +1407 -0
  442. package/docs/vi/intlayer_with_vite+solid.md +287 -0
  443. package/docs/vi/intlayer_with_vite+svelte.md +289 -0
  444. package/docs/vi/intlayer_with_vite+vue.md +1071 -0
  445. package/docs/vi/introduction.md +215 -0
  446. package/docs/vi/locale_mapper.md +242 -0
  447. package/docs/vi/mcp_server.md +211 -0
  448. package/docs/vi/packages/express-intlayer/t.md +457 -0
  449. package/docs/vi/packages/intlayer/getConfiguration.md +145 -0
  450. package/docs/vi/packages/intlayer/getEnumeration.md +162 -0
  451. package/docs/vi/packages/intlayer/getHTMLTextDir.md +121 -0
  452. package/docs/vi/packages/intlayer/getLocaleLang.md +81 -0
  453. package/docs/vi/packages/intlayer/getLocaleName.md +129 -0
  454. package/docs/vi/packages/intlayer/getLocalizedUrl.md +309 -0
  455. package/docs/vi/packages/intlayer/getMultilingualUrls.md +221 -0
  456. package/docs/vi/packages/intlayer/getPathWithoutLocale.md +75 -0
  457. package/docs/vi/packages/intlayer/getTranslation.md +201 -0
  458. package/docs/vi/packages/intlayer/getTranslationContent.md +188 -0
  459. package/docs/vi/packages/next-intlayer/t.md +352 -0
  460. package/docs/vi/packages/next-intlayer/useDictionary.md +273 -0
  461. package/docs/vi/packages/next-intlayer/useIntlayer.md +264 -0
  462. package/docs/vi/packages/next-intlayer/useLocale.md +166 -0
  463. package/docs/vi/packages/react-intlayer/t.md +304 -0
  464. package/docs/vi/packages/react-intlayer/useDictionary.md +288 -0
  465. package/docs/vi/packages/react-intlayer/useI18n.md +295 -0
  466. package/docs/vi/packages/react-intlayer/useIntlayer.md +256 -0
  467. package/docs/vi/packages/react-intlayer/useLocale.md +210 -0
  468. package/docs/vi/per_locale_file.md +326 -0
  469. package/docs/vi/readme.md +261 -0
  470. package/docs/vi/releases/v6.md +305 -0
  471. package/docs/vi/roadmap.md +346 -0
  472. package/docs/vi/testing.md +202 -0
  473. package/docs/vi/vs_code_extension.md +126 -0
  474. package/docs/zh/configuration.md +6 -0
  475. package/docs/zh/intlayer_cli.md +8 -3
  476. package/docs/zh/intlayer_with_next-i18next.md +628 -0
  477. package/docs/zh/intlayer_with_next-intl.md +448 -0
  478. package/docs/zh/intlayer_with_nextjs_16.md +21 -0
  479. package/docs/zh/intlayer_with_tanstack.md +4 -0
  480. package/docs/zh/intlayer_with_vite+react.md +4 -0
  481. package/frequent_questions/ar/SSR_Next_no_[locale].md +1 -2
  482. package/frequent_questions/ar/array_as_content_declaration.md +1 -2
  483. package/frequent_questions/ar/build_dictionaries.md +1 -2
  484. package/frequent_questions/ar/build_error_CI_CD.md +1 -2
  485. package/frequent_questions/ar/bun_set_up.md +1 -2
  486. package/frequent_questions/ar/customized_locale_list.md +1 -2
  487. package/frequent_questions/ar/domain_routing.md +1 -2
  488. package/frequent_questions/ar/esbuild_error.md +1 -2
  489. package/frequent_questions/ar/get_locale_cookie.md +1 -2
  490. package/frequent_questions/ar/intlayer_command_undefined.md +1 -2
  491. package/frequent_questions/ar/locale_incorect_in_url.md +1 -2
  492. package/frequent_questions/ar/static_rendering.md +1 -3
  493. package/frequent_questions/ar/translated_path_url.md +1 -2
  494. package/frequent_questions/ar/unknown_command.md +1 -2
  495. package/frequent_questions/de/SSR_Next_no_[locale].md +1 -2
  496. package/frequent_questions/de/array_as_content_declaration.md +1 -2
  497. package/frequent_questions/de/build_dictionaries.md +1 -2
  498. package/frequent_questions/de/build_error_CI_CD.md +1 -2
  499. package/frequent_questions/de/bun_set_up.md +1 -2
  500. package/frequent_questions/de/customized_locale_list.md +1 -2
  501. package/frequent_questions/de/domain_routing.md +1 -2
  502. package/frequent_questions/de/esbuild_error.md +1 -2
  503. package/frequent_questions/de/get_locale_cookie.md +1 -2
  504. package/frequent_questions/de/intlayer_command_undefined.md +1 -2
  505. package/frequent_questions/de/locale_incorect_in_url.md +1 -2
  506. package/frequent_questions/de/static_rendering.md +1 -3
  507. package/frequent_questions/de/translated_path_url.md +1 -2
  508. package/frequent_questions/de/unknown_command.md +1 -2
  509. package/frequent_questions/en/SSR_Next_no_[locale].md +1 -2
  510. package/frequent_questions/en/array_as_content_declaration.md +1 -2
  511. package/frequent_questions/en/build_dictionaries.md +1 -2
  512. package/frequent_questions/en/build_error_CI_CD.md +1 -2
  513. package/frequent_questions/en/bun_set_up.md +1 -2
  514. package/frequent_questions/en/customized_locale_list.md +1 -2
  515. package/frequent_questions/en/domain_routing.md +1 -2
  516. package/frequent_questions/en/esbuild_error.md +1 -2
  517. package/frequent_questions/en/get_locale_cookie.md +1 -2
  518. package/frequent_questions/en/intlayer_command_undefined.md +1 -2
  519. package/frequent_questions/en/locale_incorect_in_url.md +1 -2
  520. package/frequent_questions/en/static_rendering.md +1 -3
  521. package/frequent_questions/en/translated_path_url.md +1 -2
  522. package/frequent_questions/en/unknown_command.md +1 -2
  523. package/frequent_questions/en-GB/SSR_Next_no_[locale].md +1 -2
  524. package/frequent_questions/en-GB/array_as_content_declaration.md +1 -2
  525. package/frequent_questions/en-GB/build_dictionaries.md +1 -2
  526. package/frequent_questions/en-GB/build_error_CI_CD.md +1 -2
  527. package/frequent_questions/en-GB/bun_set_up.md +1 -2
  528. package/frequent_questions/en-GB/customized_locale_list.md +1 -2
  529. package/frequent_questions/en-GB/domain_routing.md +1 -2
  530. package/frequent_questions/en-GB/esbuild_error.md +1 -2
  531. package/frequent_questions/en-GB/get_locale_cookie.md +1 -2
  532. package/frequent_questions/en-GB/intlayer_command_undefined.md +1 -2
  533. package/frequent_questions/en-GB/locale_incorect_in_url.md +1 -2
  534. package/frequent_questions/en-GB/static_rendering.md +1 -3
  535. package/frequent_questions/en-GB/translated_path_url.md +1 -2
  536. package/frequent_questions/en-GB/unknown_command.md +1 -2
  537. package/frequent_questions/es/SSR_Next_no_[locale].md +1 -2
  538. package/frequent_questions/es/array_as_content_declaration.md +1 -2
  539. package/frequent_questions/es/build_dictionaries.md +1 -2
  540. package/frequent_questions/es/build_error_CI_CD.md +1 -2
  541. package/frequent_questions/es/bun_set_up.md +1 -2
  542. package/frequent_questions/es/customized_locale_list.md +1 -2
  543. package/frequent_questions/es/domain_routing.md +1 -2
  544. package/frequent_questions/es/esbuild_error.md +1 -2
  545. package/frequent_questions/es/get_locale_cookie.md +1 -2
  546. package/frequent_questions/es/intlayer_command_undefined.md +1 -2
  547. package/frequent_questions/es/locale_incorect_in_url.md +1 -2
  548. package/frequent_questions/es/static_rendering.md +1 -3
  549. package/frequent_questions/es/translated_path_url.md +1 -2
  550. package/frequent_questions/es/unknown_command.md +1 -2
  551. package/frequent_questions/fr/SSR_Next_no_[locale].md +1 -2
  552. package/frequent_questions/fr/array_as_content_declaration.md +1 -2
  553. package/frequent_questions/fr/build_dictionaries.md +1 -2
  554. package/frequent_questions/fr/build_error_CI_CD.md +1 -2
  555. package/frequent_questions/fr/bun_set_up.md +1 -2
  556. package/frequent_questions/fr/customized_locale_list.md +1 -2
  557. package/frequent_questions/fr/domain_routing.md +1 -2
  558. package/frequent_questions/fr/esbuild_error.md +1 -2
  559. package/frequent_questions/fr/get_locale_cookie.md +1 -2
  560. package/frequent_questions/fr/intlayer_command_undefined.md +1 -2
  561. package/frequent_questions/fr/locale_incorect_in_url.md +1 -2
  562. package/frequent_questions/fr/static_rendering.md +1 -3
  563. package/frequent_questions/fr/translated_path_url.md +1 -2
  564. package/frequent_questions/fr/unknown_command.md +1 -2
  565. package/frequent_questions/hi/SSR_Next_no_[locale].md +1 -2
  566. package/frequent_questions/hi/array_as_content_declaration.md +1 -2
  567. package/frequent_questions/hi/build_dictionaries.md +1 -2
  568. package/frequent_questions/hi/build_error_CI_CD.md +1 -2
  569. package/frequent_questions/hi/bun_set_up.md +1 -2
  570. package/frequent_questions/hi/customized_locale_list.md +1 -2
  571. package/frequent_questions/hi/domain_routing.md +1 -2
  572. package/frequent_questions/hi/esbuild_error.md +1 -2
  573. package/frequent_questions/hi/get_locale_cookie.md +1 -2
  574. package/frequent_questions/hi/intlayer_command_undefined.md +1 -2
  575. package/frequent_questions/hi/locale_incorect_in_url.md +1 -2
  576. package/frequent_questions/hi/static_rendering.md +1 -3
  577. package/frequent_questions/hi/translated_path_url.md +1 -2
  578. package/frequent_questions/hi/unknown_command.md +1 -2
  579. package/frequent_questions/id/SSR_Next_no_[locale].md +104 -0
  580. package/frequent_questions/id/array_as_content_declaration.md +71 -0
  581. package/frequent_questions/id/build_dictionaries.md +58 -0
  582. package/frequent_questions/id/build_error_CI_CD.md +74 -0
  583. package/frequent_questions/id/bun_set_up.md +53 -0
  584. package/frequent_questions/id/customized_locale_list.md +64 -0
  585. package/frequent_questions/id/domain_routing.md +113 -0
  586. package/frequent_questions/id/esbuild_error.md +29 -0
  587. package/frequent_questions/id/get_locale_cookie.md +142 -0
  588. package/frequent_questions/id/intlayer_command_undefined.md +155 -0
  589. package/frequent_questions/id/locale_incorect_in_url.md +73 -0
  590. package/frequent_questions/id/static_rendering.md +44 -0
  591. package/frequent_questions/id/translated_path_url.md +55 -0
  592. package/frequent_questions/id/unknown_command.md +97 -0
  593. package/frequent_questions/it/SSR_Next_no_[locale].md +1 -2
  594. package/frequent_questions/it/array_as_content_declaration.md +1 -2
  595. package/frequent_questions/it/build_dictionaries.md +1 -2
  596. package/frequent_questions/it/build_error_CI_CD.md +1 -2
  597. package/frequent_questions/it/bun_set_up.md +1 -2
  598. package/frequent_questions/it/customized_locale_list.md +1 -2
  599. package/frequent_questions/it/domain_routing.md +1 -2
  600. package/frequent_questions/it/esbuild_error.md +1 -2
  601. package/frequent_questions/it/get_locale_cookie.md +1 -2
  602. package/frequent_questions/it/intlayer_command_undefined.md +1 -2
  603. package/frequent_questions/it/locale_incorect_in_url.md +1 -2
  604. package/frequent_questions/it/static_rendering.md +1 -3
  605. package/frequent_questions/it/translated_path_url.md +1 -2
  606. package/frequent_questions/it/unknown_command.md +1 -2
  607. package/frequent_questions/ja/SSR_Next_no_[locale].md +1 -2
  608. package/frequent_questions/ja/array_as_content_declaration.md +1 -2
  609. package/frequent_questions/ja/build_dictionaries.md +1 -2
  610. package/frequent_questions/ja/build_error_CI_CD.md +1 -2
  611. package/frequent_questions/ja/bun_set_up.md +1 -2
  612. package/frequent_questions/ja/customized_locale_list.md +1 -2
  613. package/frequent_questions/ja/domain_routing.md +1 -2
  614. package/frequent_questions/ja/esbuild_error.md +1 -2
  615. package/frequent_questions/ja/get_locale_cookie.md +1 -2
  616. package/frequent_questions/ja/intlayer_command_undefined.md +1 -2
  617. package/frequent_questions/ja/locale_incorect_in_url.md +1 -2
  618. package/frequent_questions/ja/static_rendering.md +1 -3
  619. package/frequent_questions/ja/translated_path_url.md +1 -2
  620. package/frequent_questions/ja/unknown_command.md +1 -2
  621. package/frequent_questions/ko/SSR_Next_no_[locale].md +1 -2
  622. package/frequent_questions/ko/array_as_content_declaration.md +1 -2
  623. package/frequent_questions/ko/build_dictionaries.md +1 -2
  624. package/frequent_questions/ko/build_error_CI_CD.md +1 -2
  625. package/frequent_questions/ko/bun_set_up.md +1 -2
  626. package/frequent_questions/ko/customized_locale_list.md +1 -2
  627. package/frequent_questions/ko/domain_routing.md +1 -2
  628. package/frequent_questions/ko/esbuild_error.md +1 -2
  629. package/frequent_questions/ko/get_locale_cookie.md +1 -2
  630. package/frequent_questions/ko/intlayer_command_undefined.md +1 -2
  631. package/frequent_questions/ko/locale_incorect_in_url.md +1 -2
  632. package/frequent_questions/ko/static_rendering.md +1 -3
  633. package/frequent_questions/ko/translated_path_url.md +1 -2
  634. package/frequent_questions/ko/unknown_command.md +1 -2
  635. package/frequent_questions/pl/SSR_Next_no_[locale].md +104 -0
  636. package/frequent_questions/pl/array_as_content_declaration.md +71 -0
  637. package/frequent_questions/pl/build_dictionaries.md +58 -0
  638. package/frequent_questions/pl/build_error_CI_CD.md +74 -0
  639. package/frequent_questions/pl/bun_set_up.md +54 -0
  640. package/frequent_questions/pl/customized_locale_list.md +64 -0
  641. package/frequent_questions/pl/domain_routing.md +113 -0
  642. package/frequent_questions/pl/esbuild_error.md +29 -0
  643. package/frequent_questions/pl/get_locale_cookie.md +142 -0
  644. package/frequent_questions/pl/intlayer_command_undefined.md +155 -0
  645. package/frequent_questions/pl/locale_incorect_in_url.md +73 -0
  646. package/frequent_questions/pl/static_rendering.md +44 -0
  647. package/frequent_questions/pl/translated_path_url.md +55 -0
  648. package/frequent_questions/pl/unknown_command.md +97 -0
  649. package/frequent_questions/pt/SSR_Next_no_[locale].md +1 -2
  650. package/frequent_questions/pt/array_as_content_declaration.md +1 -2
  651. package/frequent_questions/pt/build_dictionaries.md +1 -2
  652. package/frequent_questions/pt/build_error_CI_CD.md +1 -2
  653. package/frequent_questions/pt/bun_set_up.md +1 -2
  654. package/frequent_questions/pt/customized_locale_list.md +1 -2
  655. package/frequent_questions/pt/domain_routing.md +1 -2
  656. package/frequent_questions/pt/esbuild_error.md +1 -2
  657. package/frequent_questions/pt/get_locale_cookie.md +1 -2
  658. package/frequent_questions/pt/intlayer_command_undefined.md +1 -2
  659. package/frequent_questions/pt/locale_incorect_in_url.md +1 -2
  660. package/frequent_questions/pt/static_rendering.md +1 -3
  661. package/frequent_questions/pt/translated_path_url.md +1 -2
  662. package/frequent_questions/pt/unknown_command.md +1 -2
  663. package/frequent_questions/ru/SSR_Next_no_[locale].md +1 -2
  664. package/frequent_questions/ru/array_as_content_declaration.md +1 -2
  665. package/frequent_questions/ru/build_dictionaries.md +1 -2
  666. package/frequent_questions/ru/build_error_CI_CD.md +1 -2
  667. package/frequent_questions/ru/bun_set_up.md +1 -2
  668. package/frequent_questions/ru/customized_locale_list.md +1 -2
  669. package/frequent_questions/ru/domain_routing.md +1 -2
  670. package/frequent_questions/ru/esbuild_error.md +1 -2
  671. package/frequent_questions/ru/get_locale_cookie.md +1 -2
  672. package/frequent_questions/ru/intlayer_command_undefined.md +1 -2
  673. package/frequent_questions/ru/locale_incorect_in_url.md +1 -2
  674. package/frequent_questions/ru/static_rendering.md +1 -2
  675. package/frequent_questions/ru/translated_path_url.md +1 -2
  676. package/frequent_questions/ru/unknown_command.md +1 -2
  677. package/frequent_questions/tr/SSR_Next_no_[locale].md +1 -2
  678. package/frequent_questions/tr/array_as_content_declaration.md +1 -2
  679. package/frequent_questions/tr/build_dictionaries.md +1 -2
  680. package/frequent_questions/tr/build_error_CI_CD.md +1 -2
  681. package/frequent_questions/tr/bun_set_up.md +1 -2
  682. package/frequent_questions/tr/customized_locale_list.md +1 -2
  683. package/frequent_questions/tr/domain_routing.md +1 -2
  684. package/frequent_questions/tr/esbuild_error.md +1 -2
  685. package/frequent_questions/tr/get_locale_cookie.md +1 -2
  686. package/frequent_questions/tr/intlayer_command_undefined.md +1 -2
  687. package/frequent_questions/tr/locale_incorect_in_url.md +1 -2
  688. package/frequent_questions/tr/static_rendering.md +1 -2
  689. package/frequent_questions/tr/translated_path_url.md +1 -2
  690. package/frequent_questions/tr/unknown_command.md +1 -2
  691. package/frequent_questions/vi/SSR_Next_no_[locale].md +106 -0
  692. package/frequent_questions/vi/array_as_content_declaration.md +71 -0
  693. package/frequent_questions/vi/build_dictionaries.md +58 -0
  694. package/frequent_questions/vi/build_error_CI_CD.md +74 -0
  695. package/frequent_questions/vi/bun_set_up.md +53 -0
  696. package/frequent_questions/vi/customized_locale_list.md +64 -0
  697. package/frequent_questions/vi/domain_routing.md +113 -0
  698. package/frequent_questions/vi/esbuild_error.md +29 -0
  699. package/frequent_questions/vi/get_locale_cookie.md +142 -0
  700. package/frequent_questions/vi/intlayer_command_undefined.md +155 -0
  701. package/frequent_questions/vi/locale_incorect_in_url.md +73 -0
  702. package/frequent_questions/vi/static_rendering.md +44 -0
  703. package/frequent_questions/vi/translated_path_url.md +55 -0
  704. package/frequent_questions/vi/unknown_command.md +97 -0
  705. package/frequent_questions/zh/SSR_Next_no_[locale].md +1 -2
  706. package/frequent_questions/zh/array_as_content_declaration.md +1 -2
  707. package/frequent_questions/zh/build_dictionaries.md +1 -2
  708. package/frequent_questions/zh/build_error_CI_CD.md +1 -2
  709. package/frequent_questions/zh/bun_set_up.md +1 -2
  710. package/frequent_questions/zh/customized_locale_list.md +1 -2
  711. package/frequent_questions/zh/domain_routing.md +1 -2
  712. package/frequent_questions/zh/esbuild_error.md +1 -2
  713. package/frequent_questions/zh/get_locale_cookie.md +1 -2
  714. package/frequent_questions/zh/intlayer_command_undefined.md +1 -2
  715. package/frequent_questions/zh/locale_incorect_in_url.md +1 -2
  716. package/frequent_questions/zh/static_rendering.md +1 -3
  717. package/frequent_questions/zh/translated_path_url.md +1 -2
  718. package/frequent_questions/zh/unknown_command.md +1 -2
  719. package/legal/id/privacy_notice.md +83 -0
  720. package/legal/id/terms_of_service.md +55 -0
  721. package/legal/pl/privacy_notice.md +83 -0
  722. package/legal/pl/terms_of_service.md +55 -0
  723. package/legal/vi/privacy_notice.md +83 -0
  724. package/legal/vi/terms_of_service.md +55 -0
  725. package/package.json +19 -18
  726. package/src/generated/blog.entry.ts +38 -0
@@ -0,0 +1,446 @@
1
+ ---
2
+ createdAt: 2025-10-05
3
+ updatedAt: 2025-10-05
4
+ title: Next.js 15'inizi next-intl kullanarak nasıl çevirirsiniz – i18n rehberi 2025
5
+ description: Next.js 15 App Router web sitenizi çok dilli hale nasıl getireceğinizi keşfedin. Uluslararasılaştırma (i18n) ve çeviri için dokümantasyonu takip edin.
6
+ keywords:
7
+ - Uluslararasılaştırma
8
+ - Dokümantasyon
9
+ - Intlayer
10
+ - Next.js 15
11
+ - next-intl
12
+ - JavaScript
13
+ - React
14
+ slugs:
15
+ - doc
16
+ - next-intl
17
+ applicationTemplate: https://github.com/aymericzip/intlayer-next-intl-template
18
+ ---
19
+
20
+ # Intlayer kullanarak Next.js 15 sitenizi next-intl ile çevirin | Uluslararasılaştırma (i18n)
21
+
22
+ Bu rehber, Next.js 15 (App Router) uygulamasında next-intl en iyi uygulamalarını adım adım anlatır ve sağlam çeviri yönetimi ve otomasyon için Intlayer'ı nasıl entegre edeceğinizi gösterir.
23
+
24
+ Karşılaştırmayı [next-i18next vs next-intl vs Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md) sayfasında inceleyin.
25
+
26
+ - Yeni başlayanlar için: çalışan çok dilli bir uygulama elde etmek için adım adım bölümleri takip edin.
27
+ - Orta seviye geliştiriciler için: payload optimizasyonu ve sunucu/istemci ayrımına dikkat edin.
28
+ - Uzmanlar için: statik üretim, middleware, SEO entegrasyonu ve otomasyon kancalarına dikkat edin.
29
+
30
+ Ele alacaklarımız:
31
+
32
+ - Kurulum ve dosya yapısı
33
+ - Mesajların yüklenme optimizasyonu
34
+ - İstemci ve sunucu bileşen kullanımı
35
+ - SEO için metadata, sitemap, robots
36
+ - Locale yönlendirmesi için middleware
37
+ - Üstüne Intlayer eklemek (CLI ve otomasyon)
38
+
39
+ ## next-intl kullanarak uygulamanızı kurun
40
+
41
+ next-intl bağımlılıklarını yükleyin:
42
+
43
+ ```bash packageManager="npm"
44
+ npm install next-intl
45
+ ```
46
+
47
+ ```bash packageManager="pnpm"
48
+ pnpm add next-intl
49
+ ```
50
+
51
+ ```bash packageManager="yarn"
52
+ yarn add next-intl
53
+ ```
54
+
55
+ ```bash
56
+ .
57
+ ├── locales
58
+ │ ├── en
59
+ │ │ ├── common.json
60
+ │ │ └── about.json
61
+ │ ├── fr
62
+ │ │ ├── common.json
63
+ │ │ └── about.json
64
+ │ └── es
65
+ │ ├── common.json
66
+ │ └── about.json
67
+ └── src
68
+ ├── i18n.ts
69
+ ├── middleware.ts
70
+ ├── app
71
+ │ └── [locale]
72
+ │ ├── layout.tsx
73
+ │ └── about
74
+ │ └── page.tsx
75
+ └── components
76
+ ├── ClientComponentExample.tsx
77
+ └── ServerComponent.tsx
78
+ ```
79
+
80
+ #### Kurulum ve İçerik Yükleme
81
+
82
+ Yalnızca rotalarınızın ihtiyaç duyduğu namespace'leri yükleyin ve locale'leri erken doğrulayın. Mümkün olduğunda sunucu bileşenlerini senkron tutun ve istemciye yalnızca gerekli mesajları gönderin.
83
+
84
+ ```tsx fileName="src/i18n.ts"
85
+ import { getRequestConfig } from "next-intl/server";
86
+ import { notFound } from "next/navigation";
87
+
88
+ export const locales = ["en", "fr", "es"] as const;
89
+ export const defaultLocale = "en" as const;
90
+
91
+ async function loadMessages(locale: string) {
92
+ // Yalnızca layout/ sayfalarınızın ihtiyaç duyduğu namespace'leri yükleyin
93
+ const [common, about] = await Promise.all([
94
+ import(`../locales/${locale}/common.json`).then((m) => m.default),
95
+ import(`../locales/${locale}/about.json`).then((m) => m.default),
96
+ ]);
97
+
98
+ return { common, about } as const;
99
+ }
100
+
101
+ export default getRequestConfig(async ({ locale }) => {
102
+ if (!locales.includes(locale as any)) notFound();
103
+
104
+ return {
105
+ messages: await loadMessages(locale),
106
+ };
107
+ });
108
+ ```
109
+
110
+ ```tsx fileName="src/app/[locale]/layout.tsx"
111
+ import type { ReactNode } from "react";
112
+ import { locales } from "@/i18n";
113
+ import {
114
+ getLocaleDirection,
115
+ unstable_setRequestLocale,
116
+ } from "next-intl/server";
117
+
118
+ export const dynamic = "force-static";
119
+
120
+ export function generateStaticParams() {
121
+ return locales.map((locale) => ({ locale }));
122
+ }
123
+
124
+ export default async function LocaleLayout({
125
+ children,
126
+ params,
127
+ }: {
128
+ children: ReactNode;
129
+ params: { locale: string };
130
+ }) {
131
+ const { locale } = params;
132
+
133
+ // Bu sunucu renderı (RSC) için aktif istek yerelini ayarla
134
+ unstable_setRequestLocale(locale);
135
+
136
+ const dir = getLocaleDirection(locale);
137
+
138
+ return (
139
+ <html lang={locale} dir={dir}>
140
+ <body>{children}</body>
141
+ </html>
142
+ );
143
+ }
144
+ ```
145
+
146
+ ```tsx fileName="src/app/[locale]/about/page.tsx"
147
+ import { getTranslations, getMessages, getFormatter } from "next-intl/server";
148
+ import { NextIntlClientProvider } from "next-intl";
149
+ import pick from "lodash/pick";
150
+ import ServerComponent from "@/components/ServerComponent";
151
+ import ClientComponentExample from "@/components/ClientComponentExample";
152
+
153
+ export const dynamic = "force-static";
154
+
155
+ export default async function AboutPage({
156
+ params,
157
+ }: {
158
+ params: { locale: string };
159
+ }) {
160
+ const { locale } = params;
161
+
162
+ // Mesajlar sunucu tarafında yüklenir. İstemciye sadece gerekenleri gönderin.
163
+ const messages = await getMessages();
164
+ const clientMessages = pick(messages, ["common", "about"]);
165
+
166
+ // Sadece sunucu tarafı çeviriler/formatlama
167
+ const tAbout = await getTranslations("about");
168
+ const tCounter = await getTranslations("about.counter");
169
+ const format = await getFormatter();
170
+
171
+ const initialFormattedCount = format.number(0);
172
+
173
+ return (
174
+ <NextIntlClientProvider locale={locale} messages={clientMessages}>
175
+ <main>
176
+ <h1>{tAbout("title")}</h1>
177
+ <ClientComponentExample />
178
+ <ServerComponent
179
+ formattedCount={initialFormattedCount}
180
+ label={tCounter("label")}
181
+ increment={tCounter("increment")}
182
+ />
183
+ </main>
184
+ </NextIntlClientProvider>
185
+ );
186
+ }
187
+ ```
188
+
189
+ ### Bir istemci bileşeninde kullanım
190
+
191
+ Bir sayaç render eden istemci bileşenine bir örnek alalım.
192
+
193
+ **Çeviriler (şekil yeniden kullanıldı; bunları istediğiniz gibi next-intl mesajlarına yükleyin)**
194
+
195
+ ```json fileName="locales/en/about.json"
196
+ {
197
+ "counter": {
198
+ "label": "Counter",
199
+ "increment": "Increment"
200
+ }
201
+ }
202
+ ```
203
+
204
+ ```json fileName="locales/fr/about.json"
205
+ {
206
+ "counter": {
207
+ "label": "Sayaç",
208
+ "increment": "Arttır"
209
+ }
210
+ }
211
+ ```
212
+
213
+ **İstemci bileşeni**
214
+
215
+ ```tsx fileName="src/components/ClientComponentExample.tsx"
216
+ "use client";
217
+
218
+ import React, { useState } from "react";
219
+ import { useTranslations, useFormatter } from "next-intl";
220
+
221
+ const ClientComponentExample = () => {
222
+ // Doğrudan iç içe nesneye kapsam belirleme
223
+ const t = useTranslations("about.counter");
224
+ const format = useFormatter();
225
+ const [count, setCount] = useState(0);
226
+
227
+ return (
228
+ <div>
229
+ <p>{format.number(count)}</p>
230
+ <button
231
+ aria-label={t("label")}
232
+ onClick={() => setCount((count) => count + 1)}
233
+ >
234
+ {t("increment")}
235
+ </button>
236
+ </div>
237
+ );
238
+ };
239
+ ```
240
+
241
+ > Sayfa istemci mesajına "about" mesajını eklemeyi unutmayın
242
+ > (istemcinizin gerçekten ihtiyaç duyduğu ad alanlarını dahil edin).
243
+
244
+ ### Bir sunucu bileşeninde kullanım
245
+
246
+ Bu UI bileşeni bir sunucu bileşenidir ve bir istemci bileşeni altında render edilebilir (sayfa → istemci → sunucu). Önceden hesaplanmış dizeleri geçirerek senkron tutun.
247
+
248
+ ```tsx fileName="src/components/ServerComponent.tsx"
249
+ type ServerComponentProps = {
250
+ formattedCount: string;
251
+ label: string;
252
+ increment: string;
253
+ };
254
+
255
+ const ServerComponent = ({
256
+ formattedCount,
257
+ label,
258
+ increment,
259
+ }: ServerComponentProps) => {
260
+ return (
261
+ <div>
262
+ <p>{formattedCount}</p>
263
+ <button aria-label={label}>{increment}</button>
264
+ </div>
265
+ );
266
+ };
267
+ ```
268
+
269
+ Notlar:
270
+
271
+ - `formattedCount` değerini sunucu tarafında hesaplayın (örneğin, `const initialFormattedCount = format.number(0)`).
272
+ - Sunucu bileşenlerine fonksiyonlar veya serileştirilemeyen nesneler geçirmemeye dikkat edin.
273
+
274
+ ```tsx fileName="src/app/[locale]/about/layout.tsx"
275
+ import type { Metadata } from "next";
276
+ import { locales, defaultLocale } from "@/i18n";
277
+ import { getTranslations } from "next-intl/server";
278
+
279
+ function localizedPath(locale: string, path: string) {
280
+ return locale === defaultLocale ? path : "/" + locale + path;
281
+ }
282
+
283
+ export async function generateMetadata({
284
+ params,
285
+ }: {
286
+ params: { locale: string };
287
+ }): Promise<Metadata> {
288
+ const { locale } = params;
289
+ const t = await getTranslations({ locale, namespace: "about" });
290
+
291
+ const url = "/about";
292
+ const languages = Object.fromEntries(
293
+ locales.map((locale) => [locale, localizedPath(locale, url)])
294
+ );
295
+
296
+ return {
297
+ title: t("title"),
298
+ description: t("description"),
299
+ alternates: {
300
+ canonical: localizedPath(locale, url),
301
+ languages: { ...languages, "x-default": url },
302
+ },
303
+ };
304
+ }
305
+
306
+ // ... Sayfanın geri kalan kodu
307
+ ```
308
+
309
+ ```tsx fileName="src/app/sitemap.ts"
310
+ import type { MetadataRoute } from "next";
311
+ import { locales, defaultLocale } from "@/i18n";
312
+
313
+ const origin = "https://example.com";
314
+
315
+ const formatterLocalizedPath = (locale: string, path: string) =>
316
+ locale === defaultLocale ? origin + path : origin + "/" + locale + path;
317
+
318
+ export default function sitemap(): MetadataRoute.Sitemap {
319
+ const aboutLanguages = Object.fromEntries(
320
+ locales.map((l) => [l, formatterLocalizedPath(l, "/about")])
321
+ );
322
+
323
+ return [
324
+ {
325
+ url: formatterLocalizedPath(defaultLocale, "/about"),
326
+ lastModified: new Date(),
327
+ changeFrequency: "aylık",
328
+ priority: 0.7,
329
+ alternates: { languages: aboutLanguages },
330
+ },
331
+ ];
332
+ }
333
+ ```
334
+
335
+ ```tsx fileName="src/app/robots.ts"
336
+ import type { MetadataRoute } from "next";
337
+ import { locales, defaultLocale } from "@/i18n";
338
+
339
+ const origin = "https://example.com";
340
+ const withAllLocales = (path: string) => [
341
+ path,
342
+ ...locales
343
+ .filter((locale) => locale !== defaultLocale)
344
+ .map((locale) => "/" + locale + path),
345
+ ];
346
+
347
+ export default function robots(): MetadataRoute.Robots {
348
+ const disallow = [
349
+ ...withAllLocales("/dashboard"),
350
+ ...withAllLocales("/admin"),
351
+ ];
352
+
353
+ return {
354
+ rules: { userAgent: "*", allow: ["/"], disallow },
355
+ host: origin,
356
+ sitemap: origin + "/sitemap.xml",
357
+ };
358
+ }
359
+ ```
360
+
361
+ ### Yerel yönlendirme için Middleware
362
+
363
+ Yerel algılama ve yönlendirmeyi yönetmek için bir middleware ekleyin:
364
+
365
+ ```ts fileName="src/middleware.ts"
366
+ import createMiddleware from "next-intl/middleware";
367
+ import { locales, defaultLocale } from "@/i18n";
368
+
369
+ export default createMiddleware({
370
+ locales: [...locales],
371
+ defaultLocale,
372
+ localeDetection: true,
373
+ });
374
+
375
+ export const config = {
376
+ // API, Next dahili ve statik varlıkları atla
377
+ matcher: ["/((?!api|_next|.*\\..*).*)"],
378
+ };
379
+ ```
380
+
381
+ ### En iyi uygulamalar
382
+
383
+ - **html `lang` ve `dir` ayarlayın**: `src/app/[locale]/layout.tsx` içinde, `dir` değerini `getLocaleDirection(locale)` ile hesaplayın ve `<html lang={locale} dir={dir}>` olarak ayarlayın.
384
+ - **Mesajları namespace bazında ayırın**: JSON dosyalarını locale ve namespace bazında organize edin (örneğin, `common.json`, `about.json`).
385
+ - **İstemci yükünü minimize edin**: Sayfalarda, `NextIntlClientProvider`'a yalnızca gerekli namespace'leri gönderin (örneğin, `pick(messages, ['common', 'about'])`).
386
+ - **Statik sayfaları tercih edin**: `export const dynamic = 'force-static'` olarak dışa aktarın ve tüm `locales` için statik parametreler oluşturun.
387
+ - **Eşzamanlı sunucu bileşenleri**: Önceden hesaplanmış dizeleri (çevirilmiş etiketler, biçimlendirilmiş sayılar) async çağrılar veya serileştirilemeyen fonksiyonlar yerine geçirin.
388
+
389
+ ## next-intl üzerine Intlayer'ı uygulayın
390
+
391
+ Intlayer bağımlılıklarını yükleyin:
392
+
393
+ ```bash packageManager="npm"
394
+ npm install intlayer @intlayer/sync-json-plugin -D
395
+ ```
396
+
397
+ ```bash packageManager="yarn"
398
+ yarn add intlayer @intlayer/sync-json-plugin -D
399
+ ```
400
+
401
+ ```bash packageManager="pnpm"
402
+ pnpm add intlayer @intlayer/sync-json-plugin -D
403
+ ```
404
+
405
+ Intlayer yapılandırma dosyasını oluşturun:
406
+
407
+ ```tsx fileName="intlayer.config.ts"
408
+ import { type IntlayerConfig, Locales } from "intlayer";
409
+ import { syncJSON } from "@intlayer/sync-json-plugin";
410
+
411
+ const config: IntlayerConfig = {
412
+ internationalization: {
413
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
414
+ defaultLocale: Locales.ENGLISH,
415
+ },
416
+ ai: {
417
+ apiKey: process.env.OPENAI_API_KEY,
418
+ },
419
+ plugins: [
420
+ // Namespace başına klasör yapınızı Intlayer ile senkronize tutun
421
+ syncJSON({
422
+ source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
423
+ }),
424
+ ],
425
+ };
426
+
427
+ export default config;
428
+ ```
429
+
430
+ `package.json` betiklerini ekleyin:
431
+
432
+ ```json fileName="package.json"
433
+ {
434
+ "scripts": {
435
+ "i18n:fill": "intlayer fill",
436
+ "i18n:test": "intlayer test"
437
+ }
438
+ }
439
+ ```
440
+
441
+ Notlar:
442
+
443
+ - `intlayer fill`: yapılandırdığınız yerel ayarlara göre eksik çevirileri doldurmak için AI sağlayıcınızı kullanır.
444
+ - `intlayer test`: eksik/geçersiz çevirileri kontrol eder (CI'da kullanın).
445
+
446
+ Argümanları ve sağlayıcıları yapılandırabilirsiniz; bkz. [Intlayer CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_cli.md).
@@ -24,10 +24,31 @@ history:
24
24
 
25
25
  # Intlayer kullanarak Next.js 16 web sitenizi çevirin | Uluslararasılaştırma (i18n)
26
26
 
27
+ <Tab defaultTab="video">
28
+ <TabItem label="Video" value="video">
29
+
27
30
  <iframe title="Next.js için en iyi i18n çözümü mü? Intlayer'ı keşfedin" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
28
31
 
32
+ </TabItem>
33
+ <TabItem label="Code" value="code">
34
+
35
+ <iframe
36
+ src="https://stackblitz.com/github/aymericzip/intlayer-next-16-template?embed=1&ctl=1&file=intlayer.config.ts"
37
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
38
+ title="Demo CodeSandbox - How to Internationalize your application using Intlayer"
39
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
40
+ loading="lazy"
41
+ />
42
+
43
+ </TabItem>
44
+ </Tab>
45
+
29
46
  GitHub'da [Uygulama Şablonunu](https://github.com/aymericzip/intlayer-next-16-template) inceleyin.
30
47
 
48
+ ## İçindekiler
49
+
50
+ <TOC/>
51
+
31
52
  ## Intlayer Nedir?
32
53
 
33
54
  **Intlayer**, modern web uygulamalarında çok dilli desteği basitleştirmek için tasarlanmış yenilikçi, açık kaynaklı bir uluslararasılaştırma (i18n) kütüphanesidir. Intlayer, güçlü **App Router** dahil olmak üzere en son **Next.js 16** çerçevesiyle sorunsuz bir şekilde entegre olur. Verimli render için **Server Components** ile çalışacak şekilde optimize edilmiştir ve [**Turbopack**](https://nextjs.org/docs/architecture/turbopack) ile tam uyumludur.
@@ -28,6 +28,10 @@ history:
28
28
 
29
29
  # Intlayer ile Tanstack Start çevirin | Uluslararasılaştırma (i18n)
30
30
 
31
+ ## İçindekiler
32
+
33
+ <TOC/>
34
+
31
35
  Bu rehber, Tanstack Start projelerinde yerel dil yönlendirmesi, TypeScript desteği ve modern geliştirme uygulamalarıyla sorunsuz uluslararasılaştırma için **Intlayer**'ın nasıl entegre edileceğini göstermektedir.
32
36
 
33
37
  ## Intlayer Nedir?
@@ -25,6 +25,10 @@ history:
25
25
 
26
26
  # Intlayer ile Vite and React çevirin | Uluslararasılaştırma (i18n)
27
27
 
28
+ ## İçindekiler
29
+
30
+ <TOC/>
31
+
28
32
  <iframe title="Vite ve React için en iyi i18n çözümü? Intlayer'ı keşfedin" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?si=VaKmrYMmXjo3xpk2"/>
29
33
 
30
34
  GitHub'da [Uygulama Şablonu](https://github.com/aymericzip/intlayer-vite-react-template)'na bakın.
@@ -0,0 +1,198 @@
1
+ ---
2
+ createdAt: 2025-05-20
3
+ updatedAt: 2025-08-13
4
+ title: Tích hợp CI/CD
5
+ description: Tìm hiểu cách tích hợp Intlayer vào pipeline CI/CD của bạn để quản lý và triển khai nội dung tự động.
6
+ keywords:
7
+ - CI/CD
8
+ - Tích hợp liên tục
9
+ - Triển khai liên tục
10
+ - Tự động hóa
11
+ - Quốc tế hóa
12
+ - Tài liệu
13
+ - Intlayer
14
+ slugs:
15
+ - doc
16
+ - concept
17
+ - ci-cd
18
+ history:
19
+ - version: 5.5.10
20
+ date: 2025-06-29
21
+ changes: Khởi tạo lịch sử
22
+ ---
23
+
24
+ # Tự động tạo bản dịch trong pipeline CI/CD
25
+
26
+ Intlayer cho phép tự động tạo các bản dịch cho các file khai báo nội dung của bạn. Có nhiều cách để thực hiện điều này tùy thuộc vào quy trình làm việc của bạn.
27
+
28
+ ## Mục lục
29
+
30
+ <TOC/>
31
+
32
+ ## Sử dụng CMS
33
+
34
+ Với Intlayer, bạn có thể áp dụng một quy trình làm việc trong đó chỉ một locale duy nhất được khai báo cục bộ, trong khi tất cả các bản dịch được quản lý từ xa thông qua CMS. Điều này cho phép nội dung và các bản dịch hoàn toàn tách biệt khỏi codebase, mang lại sự linh hoạt hơn cho các biên tập viên nội dung và kích hoạt Live Sync (không cần phải xây dựng lại ứng dụng để áp dụng các thay đổi).
35
+
36
+ ### Cấu hình ví dụ
37
+
38
+ ```ts fileName="intlayer.config.ts"
39
+ import { Locales, type IntlayerConfig } from "intlayer";
40
+
41
+ const config: IntlayerConfig = {
42
+ internationalization: {
43
+ locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],
44
+ requiredLocales: [Locales.ENGLISH], // Các locale tùy chọn sẽ được quản lý từ xa
45
+ defaultLocale: Locales.ENGLISH,
46
+ },
47
+ editor: {
48
+ // Thông tin xác thực CMS nếu bạn sử dụng CMS
49
+ clientId: process.env.INTLAYER_CLIENT_ID,
50
+ clientSecret: process.env.INTLAYER_CLIENT_SECRET,
51
+ liveSync: true,
52
+ },
53
+ ai: {
54
+ applicationContext: "Đây là một ứng dụng thử nghiệm", // Giúp đảm bảo việc tạo bản dịch nhất quán
55
+ },
56
+ };
57
+
58
+ export default config;
59
+ ```
60
+
61
+ Để tìm hiểu thêm về CMS, tham khảo [tài liệu chính thức](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_CMS.md).
62
+
63
+ ## Sử dụng Husky
64
+
65
+ Bạn có thể tích hợp việc tạo bản dịch vào quy trình làm việc Git cục bộ của mình bằng cách sử dụng [Husky](https://typicode.github.io/husky/).
66
+
67
+ ### Cấu hình ví dụ
68
+
69
+ ```ts fileName="intlayer.config.ts"
70
+ import { Locales, type IntlayerConfig } from "intlayer";
71
+
72
+ const config: IntlayerConfig = {
73
+ internationalization: {
74
+ locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],
75
+ requiredLocales: [Locales.ENGLISH], // Các ngôn ngữ tùy chọn được xử lý từ xa
76
+ defaultLocale: Locales.ENGLISH,
77
+ },
78
+ editor: {
79
+ clientId: process.env.INTLAYER_CLIENT_ID,
80
+ clientSecret: process.env.INTLAYER_CLIENT_SECRET,
81
+ },
82
+ ai: {
83
+ provider: "openai",
84
+ apiKey: process.env.OPENAI_API_KEY, // Sử dụng khóa API của bạn
85
+
86
+ applicationContext: "Đây là một ứng dụng thử nghiệm", // Giúp đảm bảo việc tạo bản dịch nhất quán
87
+ },
88
+ };
89
+
90
+ export default config;
91
+ ```
92
+
93
+ ```bash fileName=".husky/pre-push"
94
+ npx intlayer build # Để đảm bảo từ điển được cập nhật
95
+ npx intlayer fill --unpushed --mode fill # Chỉ điền nội dung còn thiếu, không cập nhật những nội dung đã có
96
+ ```
97
+
98
+ > Để biết thêm thông tin về các lệnh Intlayer CLI và cách sử dụng chúng, hãy tham khảo [tài liệu CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_cli.md).
99
+
100
+ > Nếu bạn có nhiều ứng dụng trong kho mã của mình sử dụng các instance intlayer riêng biệt, bạn có thể sử dụng đối số `--base-dir` như sau:
101
+
102
+ ```bash fileName=".husky/pre-push"
103
+ # Ứng dụng 1
104
+ npx intlayer build --base-dir ./app1
105
+ npx intlayer fill --base-dir ./app1 --unpushed --mode fill
106
+
107
+ # Ứng dụng 2
108
+ npx intlayer build --base-dir ./app2
109
+ npx intlayer fill --base-dir ./app2 --unpushed --mode fill
110
+ ```
111
+
112
+ ## Sử dụng GitHub Actions
113
+
114
+ Intlayer cung cấp một lệnh CLI để tự động điền và xem lại nội dung từ điển. Điều này có thể được tích hợp vào quy trình CI/CD của bạn bằng cách sử dụng GitHub Actions.
115
+
116
+ ```yaml fileName=".github/workflows/intlayer-translate.yml"
117
+ name: Tự động điền Intlayer
118
+ # Điều kiện kích hoạt cho workflow này
119
+ on:
120
+ pull_request:
121
+ branches:
122
+ - "main"
123
+
124
+ permissions:
125
+ contents: write
126
+ pull-requests: write
127
+
128
+ concurrency:
129
+ group: "autofill-${{ github.ref }}"
130
+ cancel-in-progress: true
131
+
132
+ jobs:
133
+ autofill:
134
+ runs-on: ubuntu-latest
135
+ env:
136
+ # OpenAI
137
+ AI_MODEL: openai
138
+ AI_PROVIDER: gpt-5-mini
139
+ AI_API_KEY: ${{ secrets.AI_API_KEY }}
140
+
141
+ steps:
142
+ # Bước 1: Lấy mã nguồn mới nhất từ kho lưu trữ
143
+ - name: ⬇️ Kiểm tra kho lưu trữ
144
+ uses: actions/checkout@v4
145
+ with:
146
+ persist-credentials: true # Giữ lại thông tin xác thực để tạo PR
147
+ fetch-depth: 0 # Lấy toàn bộ lịch sử git để phân tích sự khác biệt
148
+
149
+ # Bước 2: Thiết lập môi trường Node.js
150
+ - name: 🟢 Thiết lập Node.js
151
+ uses: actions/setup-node@v4
152
+ with:
153
+ node-version: 20 # Sử dụng Node.js 20 LTS để đảm bảo ổn định
154
+
155
+ # Bước 3: Cài đặt các phụ thuộc của dự án
156
+ - name: 📦 Cài đặt phụ thuộc
157
+ run: npm install
158
+
159
+ # Bước 4: Cài đặt Intlayer CLI toàn cục để quản lý bản dịch
160
+ - name: 📦 Cài đặt Intlayer
161
+ run: npm install -g intlayer-cli
162
+
163
+ # Bước 5: Xây dựng dự án Intlayer để tạo các file bản dịch
164
+ - name: ⚙️ Xây dựng dự án Intlayer
165
+ run: npx intlayer build
166
+
167
+ # Bước 6: Sử dụng AI để tự động điền các bản dịch còn thiếu
168
+ - name: 🤖 Tự động điền bản dịch còn thiếu
169
+ run: npx intlayer fill --git-diff --mode fill --provider $AI_PROVIDER --model $AI_MODEL --api-key $AI_API_KEY
170
+
171
+ # Bước 7: Kiểm tra xem có thay đổi nào không và commit chúng
172
+ - name: � Kiểm tra thay đổi
173
+ id: check-changes
174
+ run: |
175
+ if [ -n "$(git status --porcelain)" ]; then
176
+ echo "has-changes=true" >> $GITHUB_OUTPUT
177
+ else
178
+ echo "has-changes=false" >> $GITHUB_OUTPUT
179
+ fi
180
+
181
+ # Bước 8: Commit và đẩy các thay đổi nếu có
182
+ - name: 📤 Commit và đẩy thay đổi
183
+ if: steps.check-changes.outputs.has-changes == 'true'
184
+ run: |
185
+ git config --local user.email "action@github.com"
186
+ git config --local user.name "GitHub Action"
187
+ git add .
188
+ git commit -m "chore: tự động điền bản dịch còn thiếu [skip ci]"
189
+ git push origin HEAD:${{ github.head_ref }}
190
+ ```
191
+
192
+ Để thiết lập các biến môi trường, hãy vào GitHub → Settings → Secrets and variables → Actions và thêm secret .
193
+
194
+ > Tương tự như với Husky, trong trường hợp monorepo, bạn có thể sử dụng đối số `--base-dir` để xử lý tuần tự từng ứng dụng.
195
+
196
+ > Mặc định, đối số `--git-diff` lọc các từ điển bao gồm các thay đổi từ base (mặc định `origin/main`) đến nhánh hiện tại (mặc định: `HEAD`).
197
+
198
+ > Để biết thêm thông tin về các lệnh Intlayer CLI và cách sử dụng chúng, hãy tham khảo [tài liệu CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_cli.md).