@intlayer/docs 5.5.11 → 5.6.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 (494) hide show
  1. package/blog/ar/intlayer_with_next-intl.md +0 -1
  2. package/blog/ar/list_i18n_technologies/CMS/wordpress.md +1 -1
  3. package/blog/ar/list_i18n_technologies/frameworks/angular.md +1 -1
  4. package/blog/ar/list_i18n_technologies/frameworks/flutter.md +1 -1
  5. package/blog/ar/list_i18n_technologies/frameworks/react-native.md +1 -1
  6. package/blog/ar/list_i18n_technologies/frameworks/react.md +1 -1
  7. package/blog/ar/list_i18n_technologies/frameworks/svelte.md +1 -1
  8. package/blog/ar/list_i18n_technologies/frameworks/vue.md +1 -1
  9. package/blog/ar/what_is_internationalization.md +2 -2
  10. package/blog/de/intlayer_with_next-intl.md +0 -1
  11. package/blog/de/list_i18n_technologies/CMS/wordpress.md +1 -1
  12. package/blog/de/list_i18n_technologies/frameworks/angular.md +1 -1
  13. package/blog/de/list_i18n_technologies/frameworks/flutter.md +1 -1
  14. package/blog/de/list_i18n_technologies/frameworks/react-native.md +1 -1
  15. package/blog/de/list_i18n_technologies/frameworks/react.md +1 -1
  16. package/blog/de/list_i18n_technologies/frameworks/svelte.md +1 -1
  17. package/blog/de/list_i18n_technologies/frameworks/vue.md +1 -1
  18. package/blog/de/what_is_internationalization.md +2 -2
  19. package/blog/en/intlayer_with_next-intl.md +0 -1
  20. package/blog/en/list_i18n_technologies/CMS/wordpress.md +1 -1
  21. package/blog/en/list_i18n_technologies/frameworks/angular.md +1 -1
  22. package/blog/en/list_i18n_technologies/frameworks/flutter.md +1 -1
  23. package/blog/en/list_i18n_technologies/frameworks/react-native.md +1 -1
  24. package/blog/en/list_i18n_technologies/frameworks/react.md +1 -1
  25. package/blog/en/list_i18n_technologies/frameworks/svelte.md +1 -1
  26. package/blog/en/list_i18n_technologies/frameworks/vue.md +1 -1
  27. package/blog/en/what_is_internationalization.md +2 -2
  28. package/blog/en-GB/intlayer_with_next-intl.md +0 -1
  29. package/blog/en-GB/list_i18n_technologies/CMS/wordpress.md +1 -1
  30. package/blog/en-GB/list_i18n_technologies/frameworks/angular.md +1 -1
  31. package/blog/en-GB/list_i18n_technologies/frameworks/flutter.md +1 -1
  32. package/blog/en-GB/list_i18n_technologies/frameworks/react-native.md +1 -1
  33. package/blog/en-GB/list_i18n_technologies/frameworks/svelte.md +1 -1
  34. package/blog/en-GB/list_i18n_technologies/frameworks/vue.md +1 -1
  35. package/blog/en-GB/what_is_internationalization.md +2 -2
  36. package/blog/es/intlayer_with_next-intl.md +0 -1
  37. package/blog/es/list_i18n_technologies/CMS/wordpress.md +1 -1
  38. package/blog/es/list_i18n_technologies/frameworks/angular.md +1 -1
  39. package/blog/es/list_i18n_technologies/frameworks/flutter.md +1 -1
  40. package/blog/es/list_i18n_technologies/frameworks/react-native.md +1 -1
  41. package/blog/es/list_i18n_technologies/frameworks/react.md +1 -1
  42. package/blog/es/list_i18n_technologies/frameworks/svelte.md +1 -1
  43. package/blog/es/list_i18n_technologies/frameworks/vue.md +1 -1
  44. package/blog/es/what_is_internationalization.md +2 -2
  45. package/blog/fr/intlayer_with_next-intl.md +0 -1
  46. package/blog/fr/list_i18n_technologies/CMS/wordpress.md +1 -1
  47. package/blog/fr/list_i18n_technologies/frameworks/angular.md +1 -1
  48. package/blog/fr/list_i18n_technologies/frameworks/flutter.md +1 -1
  49. package/blog/fr/list_i18n_technologies/frameworks/react-native.md +1 -1
  50. package/blog/fr/list_i18n_technologies/frameworks/react.md +1 -1
  51. package/blog/fr/list_i18n_technologies/frameworks/svelte.md +1 -1
  52. package/blog/fr/list_i18n_technologies/frameworks/vue.md +1 -1
  53. package/blog/fr/what_is_internationalization.md +2 -2
  54. package/blog/hi/list_i18n_technologies/CMS/wordpress.md +1 -1
  55. package/blog/hi/list_i18n_technologies/frameworks/angular.md +1 -1
  56. package/blog/hi/list_i18n_technologies/frameworks/flutter.md +1 -1
  57. package/blog/hi/list_i18n_technologies/frameworks/react-native.md +1 -1
  58. package/blog/hi/list_i18n_technologies/frameworks/react.md +1 -1
  59. package/blog/hi/list_i18n_technologies/frameworks/svelte.md +1 -1
  60. package/blog/hi/list_i18n_technologies/frameworks/vue.md +1 -1
  61. package/blog/hi/what_is_internationalization.md +2 -2
  62. package/blog/it/intlayer_with_next-intl.md +0 -1
  63. package/blog/it/list_i18n_technologies/CMS/wordpress.md +1 -1
  64. package/blog/it/list_i18n_technologies/frameworks/angular.md +1 -1
  65. package/blog/it/list_i18n_technologies/frameworks/react-native.md +1 -1
  66. package/blog/it/list_i18n_technologies/frameworks/react.md +1 -1
  67. package/blog/it/list_i18n_technologies/frameworks/svelte.md +1 -1
  68. package/blog/it/list_i18n_technologies/frameworks/vue.md +1 -1
  69. package/blog/it/what_is_internationalization.md +2 -2
  70. package/blog/ja/intlayer_with_next-intl.md +0 -1
  71. package/blog/ja/list_i18n_technologies/CMS/wordpress.md +1 -1
  72. package/blog/ja/list_i18n_technologies/frameworks/angular.md +1 -1
  73. package/blog/ja/list_i18n_technologies/frameworks/flutter.md +1 -1
  74. package/blog/ja/list_i18n_technologies/frameworks/react-native.md +1 -1
  75. package/blog/ja/list_i18n_technologies/frameworks/react.md +1 -1
  76. package/blog/ja/list_i18n_technologies/frameworks/svelte.md +1 -1
  77. package/blog/ja/list_i18n_technologies/frameworks/vue.md +1 -1
  78. package/blog/ja/what_is_internationalization.md +2 -2
  79. package/blog/ko/intlayer_with_next-intl.md +0 -1
  80. package/blog/ko/list_i18n_technologies/CMS/wordpress.md +1 -1
  81. package/blog/ko/list_i18n_technologies/frameworks/angular.md +1 -1
  82. package/blog/ko/list_i18n_technologies/frameworks/react-native.md +1 -1
  83. package/blog/ko/list_i18n_technologies/frameworks/react.md +1 -1
  84. package/blog/ko/list_i18n_technologies/frameworks/vue.md +1 -1
  85. package/blog/pt/intlayer_with_next-intl.md +0 -1
  86. package/blog/pt/list_i18n_technologies/CMS/wordpress.md +1 -1
  87. package/blog/pt/list_i18n_technologies/frameworks/angular.md +1 -1
  88. package/blog/pt/list_i18n_technologies/frameworks/flutter.md +1 -1
  89. package/blog/pt/list_i18n_technologies/frameworks/react-native.md +1 -1
  90. package/blog/pt/list_i18n_technologies/frameworks/react.md +1 -1
  91. package/blog/pt/list_i18n_technologies/frameworks/svelte.md +1 -1
  92. package/blog/pt/list_i18n_technologies/frameworks/vue.md +1 -1
  93. package/blog/pt/what_is_internationalization.md +2 -2
  94. package/blog/ru/intlayer_with_next-intl.md +0 -1
  95. package/blog/ru/list_i18n_technologies/CMS/wordpress.md +1 -1
  96. package/blog/ru/list_i18n_technologies/frameworks/angular.md +1 -1
  97. package/blog/ru/list_i18n_technologies/frameworks/flutter.md +1 -1
  98. package/blog/ru/list_i18n_technologies/frameworks/react-native.md +1 -1
  99. package/blog/ru/list_i18n_technologies/frameworks/react.md +1 -1
  100. package/blog/ru/list_i18n_technologies/frameworks/svelte.md +1 -1
  101. package/blog/ru/list_i18n_technologies/frameworks/vue.md +1 -1
  102. package/blog/ru/what_is_internationalization.md +2 -2
  103. package/blog/zh/intlayer_with_next-intl.md +0 -1
  104. package/blog/zh/list_i18n_technologies/CMS/wordpress.md +1 -1
  105. package/blog/zh/list_i18n_technologies/frameworks/angular.md +1 -1
  106. package/blog/zh/list_i18n_technologies/frameworks/flutter.md +1 -1
  107. package/blog/zh/list_i18n_technologies/frameworks/react-native.md +1 -1
  108. package/blog/zh/list_i18n_technologies/frameworks/react.md +1 -1
  109. package/blog/zh/list_i18n_technologies/frameworks/svelte.md +1 -1
  110. package/blog/zh/list_i18n_technologies/frameworks/vue.md +1 -1
  111. package/blog/zh/what_is_internationalization.md +2 -2
  112. package/dist/cjs/blog.cjs +2 -2
  113. package/dist/cjs/blog.cjs.map +1 -1
  114. package/dist/cjs/common.cjs +17 -6
  115. package/dist/cjs/common.cjs.map +1 -1
  116. package/dist/cjs/doc.cjs +2 -2
  117. package/dist/cjs/doc.cjs.map +1 -1
  118. package/dist/cjs/frequentQuestions.cjs +2 -2
  119. package/dist/cjs/frequentQuestions.cjs.map +1 -1
  120. package/dist/cjs/generated/blog.entry.cjs +1152 -252
  121. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  122. package/dist/cjs/generated/docs.entry.cjs +3778 -1124
  123. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  124. package/dist/cjs/generated/frequentQuestions.entry.cjs +794 -161
  125. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  126. package/dist/cjs/generated/legal.entry.cjs +32 -31
  127. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  128. package/dist/cjs/legal.cjs +2 -2
  129. package/dist/cjs/legal.cjs.map +1 -1
  130. package/dist/esm/blog.mjs +2 -2
  131. package/dist/esm/blog.mjs.map +1 -1
  132. package/dist/esm/common.mjs +17 -6
  133. package/dist/esm/common.mjs.map +1 -1
  134. package/dist/esm/doc.mjs +2 -2
  135. package/dist/esm/doc.mjs.map +1 -1
  136. package/dist/esm/frequentQuestions.mjs +2 -2
  137. package/dist/esm/frequentQuestions.mjs.map +1 -1
  138. package/dist/esm/generated/blog.entry.mjs +1151 -252
  139. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  140. package/dist/esm/generated/docs.entry.mjs +3777 -1124
  141. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  142. package/dist/esm/generated/frequentQuestions.entry.mjs +793 -161
  143. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  144. package/dist/esm/generated/legal.entry.mjs +31 -31
  145. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  146. package/dist/esm/legal.mjs +2 -2
  147. package/dist/esm/legal.mjs.map +1 -1
  148. package/dist/types/blog.d.ts +2 -2
  149. package/dist/types/blog.d.ts.map +1 -1
  150. package/dist/types/common.d.ts +5 -2
  151. package/dist/types/common.d.ts.map +1 -1
  152. package/dist/types/doc.d.ts +2 -2
  153. package/dist/types/doc.d.ts.map +1 -1
  154. package/dist/types/frequentQuestions.d.ts +2 -2
  155. package/dist/types/frequentQuestions.d.ts.map +1 -1
  156. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  157. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  158. package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
  159. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  160. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  161. package/dist/types/legal.d.ts +2 -2
  162. package/dist/types/legal.d.ts.map +1 -1
  163. package/docs/ar/intlayer_CMS.md +1 -0
  164. package/docs/ar/intlayer_cli.md +292 -177
  165. package/docs/ar/intlayer_visual_editor.md +1 -0
  166. package/docs/ar/intlayer_with_angular.md +1 -0
  167. package/docs/ar/intlayer_with_create_react_app.md +1 -0
  168. package/docs/ar/intlayer_with_lynx+react.md +1 -0
  169. package/docs/ar/intlayer_with_nextjs_14.md +1 -0
  170. package/docs/ar/intlayer_with_nextjs_15.md +3 -1
  171. package/docs/ar/intlayer_with_nuxt.md +1 -0
  172. package/docs/ar/intlayer_with_react_native+expo.md +1 -0
  173. package/docs/ar/intlayer_with_vite+preact.md +4 -3
  174. package/docs/ar/intlayer_with_vite+react.md +108 -112
  175. package/docs/ar/intlayer_with_vite+solid.md +4 -3
  176. package/docs/ar/intlayer_with_vite+svelte.md +4 -3
  177. package/docs/ar/intlayer_with_vite+vue.md +5 -4
  178. package/docs/ar/mcp_server.md +126 -92
  179. package/docs/de/intlayer_CMS.md +1 -0
  180. package/docs/de/intlayer_cli.md +291 -171
  181. package/docs/de/intlayer_visual_editor.md +1 -0
  182. package/docs/de/intlayer_with_angular.md +1 -0
  183. package/docs/de/intlayer_with_create_react_app.md +1 -0
  184. package/docs/de/intlayer_with_lynx+react.md +1 -0
  185. package/docs/de/intlayer_with_nextjs_14.md +1 -0
  186. package/docs/de/intlayer_with_nextjs_15.md +3 -1
  187. package/docs/de/intlayer_with_nuxt.md +1 -0
  188. package/docs/de/intlayer_with_react_native+expo.md +1 -0
  189. package/docs/de/intlayer_with_vite+preact.md +4 -3
  190. package/docs/de/intlayer_with_vite+react.md +128 -146
  191. package/docs/de/intlayer_with_vite+solid.md +4 -3
  192. package/docs/de/intlayer_with_vite+svelte.md +4 -3
  193. package/docs/de/intlayer_with_vite+vue.md +5 -4
  194. package/docs/de/mcp_server.md +116 -112
  195. package/docs/en/CI_CD.md +3 -1
  196. package/docs/en/autoFill.md +3 -1
  197. package/docs/en/configuration.md +7 -3
  198. package/docs/en/dictionary/condition.md +3 -1
  199. package/docs/en/dictionary/content_extention_customization.md +3 -1
  200. package/docs/en/dictionary/enumeration.md +3 -1
  201. package/docs/en/dictionary/file.md +3 -1
  202. package/docs/en/dictionary/function_fetching.md +3 -1
  203. package/docs/en/dictionary/get_started.md +3 -1
  204. package/docs/en/dictionary/insertion.md +3 -1
  205. package/docs/en/dictionary/markdown.md +3 -1
  206. package/docs/en/dictionary/nesting.md +3 -1
  207. package/docs/en/dictionary/translation.md +3 -1
  208. package/docs/en/how_works_intlayer.md +3 -1
  209. package/docs/en/index.md +3 -1
  210. package/docs/en/interest_of_intlayer.md +3 -1
  211. package/docs/en/intlayer_CMS.md +4 -1
  212. package/docs/en/intlayer_cli.md +246 -136
  213. package/docs/en/intlayer_visual_editor.md +4 -1
  214. package/docs/en/intlayer_with_angular.md +4 -1
  215. package/docs/en/intlayer_with_create_react_app.md +4 -1
  216. package/docs/en/intlayer_with_express.md +3 -1
  217. package/docs/en/intlayer_with_lynx+react.md +4 -1
  218. package/docs/en/intlayer_with_nextjs_14.md +7 -1
  219. package/docs/en/intlayer_with_nextjs_15.md +8 -2
  220. package/docs/en/intlayer_with_nextjs_page_router.md +5 -1
  221. package/docs/en/intlayer_with_nuxt.md +4 -1
  222. package/docs/en/intlayer_with_react_native+expo.md +4 -1
  223. package/docs/en/intlayer_with_vite+preact.md +9 -4
  224. package/docs/en/intlayer_with_vite+react.md +18 -10
  225. package/docs/en/intlayer_with_vite+solid.md +7 -4
  226. package/docs/en/intlayer_with_vite+svelte.md +7 -4
  227. package/docs/en/intlayer_with_vite+vue.md +10 -5
  228. package/docs/en/introduction.md +3 -1
  229. package/docs/en/mcp_server.md +114 -80
  230. package/docs/en/packages/@intlayer/api/index.md +3 -1
  231. package/docs/en/packages/@intlayer/chokidar/index.md +3 -1
  232. package/docs/en/packages/@intlayer/cli/index.md +3 -1
  233. package/docs/en/packages/@intlayer/config/index.md +3 -1
  234. package/docs/en/packages/@intlayer/core/index.md +3 -1
  235. package/docs/en/packages/@intlayer/design-system/index.md +3 -1
  236. package/docs/en/packages/@intlayer/dictionary-entry/index.md +3 -1
  237. package/docs/en/packages/@intlayer/editor/index.md +3 -1
  238. package/docs/en/packages/@intlayer/editor-react/index.md +3 -1
  239. package/docs/en/packages/@intlayer/webpack/index.md +3 -1
  240. package/docs/en/packages/angular-intlayer/index.md +3 -1
  241. package/docs/en/packages/express-intlayer/index.md +3 -1
  242. package/docs/en/packages/express-intlayer/t.md +3 -1
  243. package/docs/en/packages/intlayer/getConfiguration.md +3 -1
  244. package/docs/en/packages/intlayer/getEnumeration.md +3 -1
  245. package/docs/en/packages/intlayer/getHTMLTextDir.md +3 -1
  246. package/docs/en/packages/intlayer/getLocaleLang.md +3 -1
  247. package/docs/en/packages/intlayer/getLocaleName.md +3 -1
  248. package/docs/en/packages/intlayer/getLocalizedUrl.md +3 -1
  249. package/docs/en/packages/intlayer/getMultilingualUrls.md +3 -1
  250. package/docs/en/packages/intlayer/getPathWithoutLocale.md +3 -1
  251. package/docs/en/packages/intlayer/getTranslation.md +3 -1
  252. package/docs/en/packages/intlayer/getTranslationContent.md +3 -1
  253. package/docs/en/packages/intlayer/index.md +3 -1
  254. package/docs/en/packages/intlayer-cli/index.md +3 -1
  255. package/docs/en/packages/intlayer-editor/index.md +3 -1
  256. package/docs/en/packages/lynx-intlayer/index.md +3 -1
  257. package/docs/en/packages/next-intlayer/index.md +3 -1
  258. package/docs/en/packages/next-intlayer/t.md +3 -1
  259. package/docs/en/packages/next-intlayer/useDictionary.md +3 -1
  260. package/docs/en/packages/next-intlayer/useIntlayer.md +3 -1
  261. package/docs/en/packages/next-intlayer/useIntlayerAsync.md +3 -1
  262. package/docs/en/packages/next-intlayer/useLocale.md +3 -1
  263. package/docs/en/packages/nuxt-intlayer/index.md +3 -1
  264. package/docs/en/packages/preact-intlayer/index.md +3 -1
  265. package/docs/en/packages/react-intlayer/index.md +3 -1
  266. package/docs/en/packages/react-intlayer/t.md +3 -1
  267. package/docs/en/packages/react-intlayer/useDictionary.md +3 -1
  268. package/docs/en/packages/react-intlayer/useIntlayer.md +3 -1
  269. package/docs/en/packages/react-intlayer/useIntlayerAsync.md +3 -1
  270. package/docs/en/packages/react-intlayer/useLocale.md +3 -1
  271. package/docs/en/packages/react-native-intlayer/index.md +3 -1
  272. package/docs/en/packages/react-scripts-intlayer/index.md +3 -1
  273. package/docs/en/packages/solid-intlayer/index.md +3 -1
  274. package/docs/en/packages/svelte-intlayer/index.md +3 -1
  275. package/docs/en/packages/vite-intlayer/index.md +3 -1
  276. package/docs/en/packages/vue-intlayer/index.md +3 -1
  277. package/docs/en/per_locale_file.md +3 -1
  278. package/docs/en/roadmap.md +5 -2
  279. package/docs/en/vs_code_extension.md +3 -1
  280. package/docs/en-GB/intlayer_CMS.md +1 -0
  281. package/docs/en-GB/intlayer_cli.md +257 -138
  282. package/docs/en-GB/intlayer_visual_editor.md +1 -0
  283. package/docs/en-GB/intlayer_with_angular.md +1 -0
  284. package/docs/en-GB/intlayer_with_create_react_app.md +1 -0
  285. package/docs/en-GB/intlayer_with_lynx+react.md +1 -0
  286. package/docs/en-GB/intlayer_with_nextjs_14.md +1 -0
  287. package/docs/en-GB/intlayer_with_nextjs_15.md +3 -1
  288. package/docs/en-GB/intlayer_with_nuxt.md +1 -0
  289. package/docs/en-GB/intlayer_with_react_native+expo.md +1 -0
  290. package/docs/en-GB/intlayer_with_vite+preact.md +4 -3
  291. package/docs/en-GB/intlayer_with_vite+react.md +71 -87
  292. package/docs/en-GB/intlayer_with_vite+solid.md +4 -3
  293. package/docs/en-GB/intlayer_with_vite+svelte.md +4 -3
  294. package/docs/en-GB/intlayer_with_vite+vue.md +5 -4
  295. package/docs/en-GB/mcp_server.md +116 -82
  296. package/docs/es/intlayer_CMS.md +1 -0
  297. package/docs/es/intlayer_cli.md +283 -164
  298. package/docs/es/intlayer_visual_editor.md +1 -0
  299. package/docs/es/intlayer_with_angular.md +1 -0
  300. package/docs/es/intlayer_with_create_react_app.md +1 -0
  301. package/docs/es/intlayer_with_lynx+react.md +1 -0
  302. package/docs/es/intlayer_with_nextjs_14.md +1 -0
  303. package/docs/es/intlayer_with_nextjs_15.md +3 -1
  304. package/docs/es/intlayer_with_nuxt.md +1 -0
  305. package/docs/es/intlayer_with_react_native+expo.md +1 -0
  306. package/docs/es/intlayer_with_vite+preact.md +4 -3
  307. package/docs/es/intlayer_with_vite+react.md +98 -98
  308. package/docs/es/intlayer_with_vite+solid.md +4 -3
  309. package/docs/es/intlayer_with_vite+svelte.md +4 -3
  310. package/docs/es/intlayer_with_vite+vue.md +5 -4
  311. package/docs/es/mcp_server.md +120 -86
  312. package/docs/es/vs_code_extension.md +1 -0
  313. package/docs/fr/intlayer_CMS.md +1 -0
  314. package/docs/fr/intlayer_cli.md +280 -184
  315. package/docs/fr/intlayer_visual_editor.md +1 -0
  316. package/docs/fr/intlayer_with_angular.md +1 -0
  317. package/docs/fr/intlayer_with_create_react_app.md +1 -0
  318. package/docs/fr/intlayer_with_lynx+react.md +1 -0
  319. package/docs/fr/intlayer_with_nextjs_14.md +1 -0
  320. package/docs/fr/intlayer_with_nextjs_15.md +3 -1
  321. package/docs/fr/intlayer_with_nuxt.md +1 -0
  322. package/docs/fr/intlayer_with_react_native+expo.md +1 -0
  323. package/docs/fr/intlayer_with_vite+preact.md +5 -4
  324. package/docs/fr/intlayer_with_vite+react.md +80 -69
  325. package/docs/fr/intlayer_with_vite+solid.md +4 -3
  326. package/docs/fr/intlayer_with_vite+svelte.md +4 -3
  327. package/docs/fr/intlayer_with_vite+vue.md +5 -4
  328. package/docs/fr/mcp_server.md +121 -87
  329. package/docs/hi/intlayer_CMS.md +1 -0
  330. package/docs/hi/intlayer_cli.md +295 -174
  331. package/docs/hi/intlayer_visual_editor.md +1 -0
  332. package/docs/hi/intlayer_with_angular.md +1 -0
  333. package/docs/hi/intlayer_with_create_react_app.md +1 -0
  334. package/docs/hi/intlayer_with_lynx+react.md +1 -0
  335. package/docs/hi/intlayer_with_nextjs_14.md +1 -0
  336. package/docs/hi/intlayer_with_nextjs_15.md +3 -1
  337. package/docs/hi/intlayer_with_nuxt.md +1 -0
  338. package/docs/hi/intlayer_with_react_native+expo.md +1 -0
  339. package/docs/hi/intlayer_with_vite+preact.md +4 -3
  340. package/docs/hi/intlayer_with_vite+react.md +114 -111
  341. package/docs/hi/intlayer_with_vite+solid.md +4 -3
  342. package/docs/hi/intlayer_with_vite+svelte.md +4 -3
  343. package/docs/hi/intlayer_with_vite+vue.md +5 -4
  344. package/docs/hi/mcp_server.md +118 -84
  345. package/docs/it/intlayer_CMS.md +1 -0
  346. package/docs/it/intlayer_cli.md +282 -167
  347. package/docs/it/intlayer_visual_editor.md +1 -0
  348. package/docs/it/intlayer_with_angular.md +1 -0
  349. package/docs/it/intlayer_with_create_react_app.md +1 -0
  350. package/docs/it/intlayer_with_lynx+react.md +1 -0
  351. package/docs/it/intlayer_with_nextjs_14.md +1 -0
  352. package/docs/it/intlayer_with_nextjs_15.md +3 -1
  353. package/docs/it/intlayer_with_nuxt.md +1 -0
  354. package/docs/it/intlayer_with_react_native+expo.md +1 -0
  355. package/docs/it/intlayer_with_vite+preact.md +4 -3
  356. package/docs/it/intlayer_with_vite+react.md +163 -116
  357. package/docs/it/intlayer_with_vite+solid.md +4 -3
  358. package/docs/it/intlayer_with_vite+svelte.md +4 -3
  359. package/docs/it/intlayer_with_vite+vue.md +4 -4
  360. package/docs/it/mcp_server.md +120 -86
  361. package/docs/ja/intlayer_CMS.md +1 -0
  362. package/docs/ja/intlayer_cli.md +285 -168
  363. package/docs/ja/intlayer_visual_editor.md +1 -0
  364. package/docs/ja/intlayer_with_angular.md +1 -0
  365. package/docs/ja/intlayer_with_create_react_app.md +1 -0
  366. package/docs/ja/intlayer_with_lynx+react.md +1 -0
  367. package/docs/ja/intlayer_with_nextjs_14.md +1 -0
  368. package/docs/ja/intlayer_with_nextjs_15.md +3 -1
  369. package/docs/ja/intlayer_with_nuxt.md +1 -0
  370. package/docs/ja/intlayer_with_react_native+expo.md +1 -0
  371. package/docs/ja/intlayer_with_vite+preact.md +4 -3
  372. package/docs/ja/intlayer_with_vite+react.md +160 -222
  373. package/docs/ja/intlayer_with_vite+solid.md +4 -3
  374. package/docs/ja/intlayer_with_vite+svelte.md +4 -3
  375. package/docs/ja/intlayer_with_vite+vue.md +5 -4
  376. package/docs/ja/mcp_server.md +121 -85
  377. package/docs/ko/intlayer_CMS.md +1 -0
  378. package/docs/ko/intlayer_cli.md +291 -175
  379. package/docs/ko/intlayer_visual_editor.md +1 -0
  380. package/docs/ko/intlayer_with_angular.md +1 -0
  381. package/docs/ko/intlayer_with_create_react_app.md +1 -0
  382. package/docs/ko/intlayer_with_lynx+react.md +1 -0
  383. package/docs/ko/intlayer_with_nextjs_14.md +1 -0
  384. package/docs/ko/intlayer_with_nextjs_15.md +3 -1
  385. package/docs/ko/intlayer_with_nuxt.md +1 -0
  386. package/docs/ko/intlayer_with_react_native+expo.md +1 -0
  387. package/docs/ko/intlayer_with_vite+preact.md +4 -3
  388. package/docs/ko/intlayer_with_vite+react.md +123 -152
  389. package/docs/ko/intlayer_with_vite+solid.md +4 -3
  390. package/docs/ko/intlayer_with_vite+svelte.md +4 -3
  391. package/docs/ko/intlayer_with_vite+vue.md +5 -4
  392. package/docs/ko/mcp_server.md +117 -83
  393. package/docs/ko/packages/intlayer/getLocalizedUrl.md +1 -23
  394. package/docs/pt/intlayer_CMS.md +1 -0
  395. package/docs/pt/intlayer_cli.md +274 -154
  396. package/docs/pt/intlayer_visual_editor.md +1 -0
  397. package/docs/pt/intlayer_with_angular.md +1 -0
  398. package/docs/pt/intlayer_with_create_react_app.md +1 -0
  399. package/docs/pt/intlayer_with_lynx+react.md +1 -0
  400. package/docs/pt/intlayer_with_nextjs_14.md +1 -0
  401. package/docs/pt/intlayer_with_nextjs_15.md +3 -1
  402. package/docs/pt/intlayer_with_nuxt.md +1 -0
  403. package/docs/pt/intlayer_with_react_native+expo.md +1 -0
  404. package/docs/pt/intlayer_with_vite+preact.md +4 -3
  405. package/docs/pt/intlayer_with_vite+react.md +117 -136
  406. package/docs/pt/intlayer_with_vite+solid.md +4 -3
  407. package/docs/pt/intlayer_with_vite+svelte.md +4 -3
  408. package/docs/pt/intlayer_with_vite+vue.md +4 -4
  409. package/docs/pt/mcp_server.md +121 -87
  410. package/docs/ru/intlayer_CMS.md +1 -0
  411. package/docs/ru/intlayer_cli.md +287 -170
  412. package/docs/ru/intlayer_visual_editor.md +1 -0
  413. package/docs/ru/intlayer_with_angular.md +1 -0
  414. package/docs/ru/intlayer_with_create_react_app.md +1 -0
  415. package/docs/ru/intlayer_with_lynx+react.md +1 -0
  416. package/docs/ru/intlayer_with_nextjs_14.md +1 -0
  417. package/docs/ru/intlayer_with_nextjs_15.md +3 -1
  418. package/docs/ru/intlayer_with_nuxt.md +1 -0
  419. package/docs/ru/intlayer_with_react_native+expo.md +1 -0
  420. package/docs/ru/intlayer_with_vite+preact.md +4 -3
  421. package/docs/ru/intlayer_with_vite+react.md +105 -87
  422. package/docs/ru/intlayer_with_vite+solid.md +4 -3
  423. package/docs/ru/intlayer_with_vite+svelte.md +4 -3
  424. package/docs/ru/intlayer_with_vite+vue.md +5 -4
  425. package/docs/ru/mcp_server.md +119 -85
  426. package/docs/zh/intlayer_CMS.md +1 -0
  427. package/docs/zh/intlayer_cli.md +275 -155
  428. package/docs/zh/intlayer_visual_editor.md +1 -0
  429. package/docs/zh/intlayer_with_angular.md +1 -0
  430. package/docs/zh/intlayer_with_create_react_app.md +1 -0
  431. package/docs/zh/intlayer_with_lynx+react.md +1 -0
  432. package/docs/zh/intlayer_with_nextjs_14.md +1 -0
  433. package/docs/zh/intlayer_with_nextjs_15.md +3 -1
  434. package/docs/zh/intlayer_with_nuxt.md +1 -0
  435. package/docs/zh/intlayer_with_react_native+expo.md +1 -0
  436. package/docs/zh/intlayer_with_vite+preact.md +4 -3
  437. package/docs/zh/intlayer_with_vite+react.md +154 -188
  438. package/docs/zh/intlayer_with_vite+solid.md +4 -3
  439. package/docs/zh/intlayer_with_vite+svelte.md +4 -3
  440. package/docs/zh/intlayer_with_vite+vue.md +5 -4
  441. package/docs/zh/mcp_server.md +119 -86
  442. package/docs/zh/packages/intlayer/getLocalizedUrl.md +1 -23
  443. package/frequent_questions/ar/build_error_CI_CD.md +75 -0
  444. package/frequent_questions/de/build_error_CI_CD.md +75 -0
  445. package/frequent_questions/en/build_error_CI_CD.md +75 -0
  446. package/frequent_questions/en-GB/build_error_CI_CD.md +75 -0
  447. package/frequent_questions/es/build_error_CI_CD.md +75 -0
  448. package/frequent_questions/fr/build_error_CI_CD.md +75 -0
  449. package/frequent_questions/hi/build_error_CI_CD.md +75 -0
  450. package/frequent_questions/it/build_error_CI_CD.md +75 -0
  451. package/frequent_questions/ja/build_error_CI_CD.md +75 -0
  452. package/frequent_questions/ja/intlayer_command_undefined.md +3 -3
  453. package/frequent_questions/ko/build_error_CI_CD.md +75 -0
  454. package/frequent_questions/ko/intlayer_command_undefined.md +3 -3
  455. package/frequent_questions/pt/build_error_CI_CD.md +75 -0
  456. package/frequent_questions/ru/build_error_CI_CD.md +75 -0
  457. package/frequent_questions/zh/build_error_CI_CD.md +75 -0
  458. package/frequent_questions/zh/intlayer_command_undefined.md +3 -3
  459. package/legal/ar/privacy_notice.md +83 -0
  460. package/legal/ar/terms_of_service.md +55 -0
  461. package/legal/de/privacy_notice.md +83 -0
  462. package/legal/de/terms_of_service.md +55 -0
  463. package/legal/en/privacy_notice.md +83 -0
  464. package/legal/en/terms_of_service.md +55 -0
  465. package/legal/en-GB/privacy_notice.md +83 -0
  466. package/legal/en-GB/terms_of_service.md +55 -0
  467. package/legal/es/privacy_notice.md +83 -0
  468. package/legal/es/terms_of_service.md +55 -0
  469. package/legal/fr/privacy_notice.md +83 -0
  470. package/legal/fr/terms_of_service.md +55 -0
  471. package/legal/hi/privacy_notice.md +83 -0
  472. package/legal/hi/terms_of_service.md +55 -0
  473. package/legal/it/privacy_notice.md +83 -0
  474. package/legal/it/terms_of_service.md +55 -0
  475. package/legal/ja/privacy_notice.md +83 -0
  476. package/legal/ja/terms_of_service.md +55 -0
  477. package/legal/ko/privacy_notice.md +83 -0
  478. package/legal/ko/terms_of_service.md +55 -0
  479. package/legal/pt/privacy_notice.md +83 -0
  480. package/legal/pt/terms_of_service.md +55 -0
  481. package/legal/ru/privacy_notice.md +83 -0
  482. package/legal/ru/terms_of_service.md +55 -0
  483. package/legal/zh/privacy_notice.md +83 -0
  484. package/legal/zh/terms_of_service.md +55 -0
  485. package/package.json +12 -11
  486. package/src/blog.ts +6 -4
  487. package/src/common.ts +25 -7
  488. package/src/doc.ts +6 -4
  489. package/src/frequentQuestions.ts +6 -4
  490. package/src/generated/blog.entry.ts +1177 -280
  491. package/src/generated/docs.entry.ts +3868 -1217
  492. package/src/generated/frequentQuestions.entry.ts +808 -178
  493. package/src/generated/legal.entry.ts +34 -36
  494. package/src/legal.ts +6 -4
@@ -1,40 +1,43 @@
1
1
  ---
2
- createdAt: 2025-03-07
3
- updatedAt: 2025-06-29
4
- title: React Native Expo 모바일 앱 번역하기 (i18n)
5
- description: React NativeExpo 모바일 앱을 다국어로 만드는 방법을 알아보세요. 문서를 따라 국제화(i18n) 번역을 진행하세요.
2
+ createdAt: 2024-03-07
3
+ updatedAt: 2024-03-07
4
+ title: Vite + React에서 Intlayer 시작하기
5
+ description: Intlayer를 사용하여 Vite React 애플리케이션에 국제화(i18n)를 추가하는 방법을 배우세요. 가이드를 따라 앱을 다국어로 만드세요.
6
6
  keywords:
7
7
  - 국제화
8
8
  - 문서
9
9
  - Intlayer
10
10
  - Vite
11
11
  - React
12
- - React Native
13
- - JavaScript
12
+ - i18n
13
+ - 자바스크립트
14
14
  slugs:
15
15
  - doc
16
16
  - environment
17
- - react-native-and-expo
18
- ---
17
+ - vite-and-react
18
+ applicationTemplate: https://github.com/aymericzip/intlayer-vite-react-template
19
+ youtubeVideo: https://www.youtube.com/watch?v=dS9L7uJeak4---
20
+
21
+ # Intlayer와 Vite 및 React로 국제화(i18n) 시작하기
19
22
 
20
- # Intlayer와 Vite, React 국제화(i18n) 시작하기
23
+ <iframe title="The best i18n solution for Vite and React? Discover Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?si=VaKmrYMmXjo3xpk2"/>
21
24
 
22
- GitHub에서 [애플리케이션 템플릿](https://github.com/aymericzip/intlayer-vite-react-template)을 확인하세요.
25
+ GitHub에서 [애플리케이션 템플릿](https://github.com/aymericzip/intlayer-vite-react-template)을 참조하세요.
23
26
 
24
- ## Intlayer란 무엇인가요?
27
+ ## Intlayer란?
25
28
 
26
- **Intlayer**는 현대 웹 애플리케이션에서 다국어 지원을 간소화하기 위해 설계된 혁신적인 오픈 소스 국제화(i18n) 라이브러리입니다.
29
+ **Intlayer**는 최신 웹 애플리케이션에서 다국어 지원을 간소화하기 위해 설계된 혁신적이고 오픈 소스인 국제화(i18n) 라이브러리입니다.
27
30
 
28
31
  Intlayer를 사용하면 다음을 할 수 있습니다:
29
32
 
30
- - **컴포넌트 수준에서 선언적 사전을 사용하여 번역을 쉽게 관리**할 수 있습니다.
33
+ - **컴포넌트 수준에서 선언적 사전을 사용하여** 번역을 쉽게 관리할 수 있습니다.
31
34
  - **메타데이터, 라우트 및 콘텐츠를 동적으로 현지화**할 수 있습니다.
32
35
  - **자동 생성된 타입으로 TypeScript 지원을 보장**하여 자동 완성 및 오류 감지를 향상시킵니다.
33
36
  - **동적 로케일 감지 및 전환과 같은 고급 기능**을 활용할 수 있습니다.
34
37
 
35
38
  ---
36
39
 
37
- ## Vite React 애플리케이션에서 Intlayer 설정 단계별 가이드
40
+ ## Vite React 애플리케이션에서 Intlayer 설정 단계별 가이드
38
41
 
39
42
  ### 1단계: 의존성 설치
40
43
 
@@ -42,17 +45,17 @@ npm을 사용하여 필요한 패키지를 설치하세요:
42
45
 
43
46
  ```bash packageManager="npm"
44
47
  npm install intlayer react-intlayer
45
- npm install --save-dev vite-intlayer
48
+ npm install vite-intlayer --save-dev
46
49
  ```
47
50
 
48
51
  ```bash packageManager="pnpm"
49
52
  pnpm add intlayer react-intlayer
50
- pnpm add --save-dev vite-intlayer
53
+ pnpm add vite-intlayer --save-dev
51
54
  ```
52
55
 
53
56
  ```bash packageManager="yarn"
54
57
  yarn add intlayer react-intlayer
55
- yarn add --save-dev vite-intlayer
58
+ yarn add vite-intlayer --save-dev
56
59
  ```
57
60
 
58
61
  - **intlayer**
@@ -60,14 +63,14 @@ yarn add --save-dev vite-intlayer
60
63
  구성 관리, 번역, [콘텐츠 선언](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/dictionary/get_started.md), 트랜스파일링 및 [CLI 명령어](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_cli.md)를 위한 국제화 도구를 제공하는 핵심 패키지입니다.
61
64
 
62
65
  - **react-intlayer**
63
- Intlayer를 React 애플리케이션과 통합하는 패키지로, React 국제화를 위한 컨텍스트 제공자와 훅을 제공합니다.
66
+ Intlayer를 React 애플리케이션과 통합하는 패키지로, React 국제화를 위한 컨텍스트 프로바이더와 훅을 제공합니다.
64
67
 
65
68
  - **vite-intlayer**
66
- Vite 번들러([Vite bundler](https://vite.dev/guide/why.html#why-bundle-for-production))Intlayer를 통합하기 위한 Vite 플러그인과, 사용자의 선호 로케일 감지, 쿠키 관리, URL 리디렉션 처리를 위한 미들웨어를 포함합니다.
69
+ Intlayer를 [Vite 번들러](https://vite.dev/guide/why.html#why-bundle-for-production)와 통합하기 위한 Vite 플러그인과, 사용자의 선호 로케일 감지, 쿠키 관리, URL 리디렉션 처리를 위한 미들웨어를 포함합니다.
67
70
 
68
71
  ### 2단계: 프로젝트 구성
69
72
 
70
- 애플리케이션의 언어를 구성하기 위한 설정 파일을 만드세요:
73
+ 애플리케이션의 언어를 구성하기 위해 설정 파일을 만드세요:
71
74
 
72
75
  ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
73
76
  import { Locales, type IntlayerConfig } from "intlayer";
@@ -164,7 +167,7 @@ module.exports = defineConfig({
164
167
  });
165
168
  ```
166
169
 
167
- > `intlayerPlugin()` Vite 플러그인은 Intlayer를 Vite와 통합하는 데 사용됩니다. 이 플러그인은 콘텐츠 선언 파일의 빌드를 보장하고 개발 모드에서 이를 모니터링합니다. 또한 Vite 애플리케이션 내에서 Intlayer 환경 변수를 정의합니다. 추가로, 성능 최적화를 위한 별칭(alias) 제공합니다.
170
+ > `intlayerPlugin()` Vite 플러그인은 Intlayer를 Vite와 통합하는 데 사용됩니다. 이 플러그인은 콘텐츠 선언 파일의 빌드를 보장하고 개발 모드에서 이를 모니터링합니다. 또한 Vite 애플리케이션 내에서 Intlayer 환경 변수를 정의합니다. 추가로, 성능 최적화를 위한 별칭(alias) 제공합니다.
168
171
 
169
172
  ### 4단계: 콘텐츠 선언하기
170
173
 
@@ -204,12 +207,12 @@ const appContent = {
204
207
  ),
205
208
  fr: (
206
209
  <>
207
- <code>src/App.tsx</code>를 편집하고 저장하여 HMR을 테스트하세요
210
+ HMR을 테스트하려면 <code>src/App.tsx</code>를 편집하고 저장하세요
208
211
  </>
209
212
  ),
210
213
  es: (
211
214
  <>
212
- <code>src/App.tsx</code>를 편집하고 저장하여 HMR을 테스트하세요
215
+ HMR을 테스트하려면 <code>src/App.tsx</code>를 편집하고 저장하세요
213
216
  </>
214
217
  ),
215
218
  }),
@@ -235,13 +238,11 @@ const appContent = {
235
238
  viteLogo: t({
236
239
  en: "Vite logo",
237
240
  fr: "Logo Vite",
238
- ko: "Vite 로고",
239
241
  es: "Logo Vite",
240
242
  }),
241
243
  reactLogo: t({
242
244
  en: "React logo",
243
245
  fr: "Logo React",
244
- ko: "React 로고",
245
246
  es: "Logo React",
246
247
  }),
247
248
 
@@ -250,7 +251,6 @@ const appContent = {
250
251
  count: t({
251
252
  en: "count is ",
252
253
  fr: "le compte est ",
253
- ko: "카운트는 ",
254
254
  es: "el recuento es ",
255
255
  }),
256
256
 
@@ -258,10 +258,11 @@ const appContent = {
258
258
  t <
259
259
  ReactNode >
260
260
  {
261
- // 콘텐츠에 React 노드를 사용하는 경우 React를 반드시 import 하세요
261
+ // 콘텐츠에 React 노드를 사용하는 경우 React를 반드시 import하세요
262
262
  en: (
263
263
  <>
264
- Edit <code>src/App.tsx</code> and save to test HMR
264
+ Edit <code>src/App.tsx</code> 파일을 수정하고 저장하여 HMR
265
+ 테스트하세요
265
266
  </>
266
267
  ),
267
268
  fr: (
@@ -277,7 +278,6 @@ const appContent = {
277
278
  },
278
279
 
279
280
  readTheDocs: t({
280
- ko: "더 알아보려면 Vite 및 React 로고를 클릭하세요",
281
281
  en: "Click on the Vite and React logos to learn more",
282
282
  fr: "Cliquez sur les logos Vite et React pour en savoir plus",
283
283
  es: "Haga clic en los logotipos de Vite y React para obtener más información",
@@ -318,7 +318,7 @@ const appContent = {
318
318
  t <
319
319
  ReactNode >
320
320
  {
321
- // 콘텐츠에 React 노드를 사용하는 경우 React를 반드시 import 하세요
321
+ // 콘텐츠에 React 노드를 사용하는 경우 React를 임포트하는 것을 잊지 마세요
322
322
  en: (
323
323
  <>
324
324
  Edit <code>src/App.tsx</code> and save to test HMR
@@ -331,7 +331,7 @@ const appContent = {
331
331
  ),
332
332
  es: (
333
333
  <>
334
- Edita <code>src/App.tsx</code> 저장하여 HMR을 테스트하세요
334
+ Edita <code>src/App.tsx</code> y guarda para probar HMR
335
335
  </>
336
336
  ),
337
337
  },
@@ -340,7 +340,7 @@ const appContent = {
340
340
  en: "Click on the Vite and React logos to learn more",
341
341
  fr: "Cliquez sur les logos Vite et React pour en savoir plus",
342
342
  es: "Haga clic en los logotipos de Vite y React para obtener más información",
343
- ko: "더 알아보려면 Vite 및 React 로고를 클릭하세요",
343
+ ko: "Vite 및 React 로고를 클릭하여 자세히 알아보세요",
344
344
  }),
345
345
  },
346
346
  };
@@ -365,37 +365,37 @@ module.exports = appContent;
365
365
  "reactLogo": {
366
366
  "nodeType": "translation",
367
367
  "translation": {
368
- "ko": "React 로고",
369
368
  "en": "React logo",
370
369
  "fr": "Logo React",
371
- "es": "Logo React"
370
+ "es": "Logo React",
371
+ "ko": "리액트 로고"
372
372
  }
373
373
  },
374
374
  "title": {
375
375
  "nodeType": "translation",
376
376
  "translation": {
377
- "ko": "Vite + React",
378
377
  "en": "Vite + React",
379
378
  "fr": "Vite + React",
380
- "es": "Vite + React"
379
+ "es": "Vite + React",
380
+ "ko": "Vite + React"
381
381
  }
382
382
  },
383
383
  "count": {
384
384
  "nodeType": "translation",
385
385
  "translation": {
386
- "ko": "카운트는 ",
387
386
  "en": "count is ",
388
387
  "fr": "le compte est ",
389
- "es": "el recuento es "
388
+ "es": "el recuento es ",
389
+ "ko": "카운트는 "
390
390
  }
391
391
  },
392
392
  "edit": {
393
393
  "nodeType": "translation",
394
394
  "translation": {
395
- "ko": "src/App.tsx를 편집하고 저장하여 HMR을 테스트하세요",
396
395
  "en": "Edit src/App.tsx and save to test HMR",
397
396
  "fr": "Éditez src/App.tsx et enregistrez pour tester HMR",
398
- "es": "Edita src/App.tsx y guarda para probar HMR"
397
+ "es": "Edita src/App.tsx y guarda para probar HMR",
398
+ "ko": "src/App.tsx를 편집하고 저장하여 HMR을 테스트하세요"
399
399
  }
400
400
  },
401
401
  "readTheDocs": {
@@ -411,11 +411,11 @@ module.exports = appContent;
411
411
  }
412
412
  ```
413
413
 
414
- > 애플리케이션 내 어디서든 `contentDir` 디렉토리(기본값은 `./src`)에 포함되는 즉시 콘텐츠 선언을 정의할 수 있습니다. 그리고 콘텐츠 선언 파일 확장자(기본값은 `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`)와 일치해야 합니다.
414
+ > 애플리케이션 내 어디에서든 `contentDir` 디렉토리(기본값: `./src`)에 포함되면 콘텐츠 선언을 정의할 수 있습니다. 그리고 콘텐츠 선언 파일 확장자(기본값: `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`)와 일치해야 합니다.
415
415
 
416
416
  > 자세한 내용은 [콘텐츠 선언 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/dictionary/get_started.md)를 참조하세요.
417
417
 
418
- > 콘텐츠 파일에 TSX 코드가 포함된 경우, 콘텐츠 파일에서 `import React from "react";`를 임포트하는 것을 고려해야 합니다.
418
+ > 콘텐츠 파일에 TSX 코드가 포함된 경우, 콘텐츠 파일에 `import React from "react";`를 가져오는 것을 고려해야 합니다.
419
419
 
420
420
  ### 5단계: 코드에서 Intlayer 사용하기
421
421
 
@@ -568,7 +568,7 @@ module.exports = App;
568
568
  > <img src={content.image.src.value} alt={content.image.value} />
569
569
  > ```
570
570
 
571
- > `useIntlayer` 훅에 대해 더 알고 싶다면, [문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/packages/react-intlayer/useIntlayer.md)를 참고하세요.
571
+ > `useIntlayer` 훅에 대해 더 알아보려면 [문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/packages/react-intlayer/useIntlayer.md)를 참조하세요.
572
572
 
573
573
  ### (선택 사항) 6단계: 콘텐츠의 언어 변경하기
574
574
 
@@ -627,14 +627,14 @@ const LocaleSwitcher = () => {
627
627
  - https://example.com/fr/about
628
628
  ```
629
629
 
630
- > 기본적으로 기본 로케일에 대해서는 경로에 접두사가 붙지 않습니다. 기본 로케일에 접두사를 붙이고 싶다면, 구성 파일에서 `middleware.prefixDefault` 옵션을 `true`로 설정할 수 있습니다. 자세한 내용은 [구성 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md)를 참조하세요.
630
+ > 기본적으로, 기본 로케일에 대해서는 경로에 접두사가 붙지 않습니다. 기본 로케일에 접두사를 붙이고 싶다면, 구성 설정에서 `middleware.prefixDefault` 옵션을 `true`로 설정할 수 있습니다. 자세한 내용은 [구성 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md)를 참조하세요.
631
631
 
632
632
  애플리케이션에 지역화된 라우팅을 추가하려면, 애플리케이션의 라우트를 감싸고 로케일 기반 라우팅을 처리하는 `LocaleRouter` 컴포넌트를 생성할 수 있습니다. 다음은 [React Router](https://reactrouter.com/home)를 사용한 예제입니다:
633
633
 
634
634
  ```tsx fileName="src/components/LocaleRouter.tsx" codeFormat="typescript"
635
635
  // 필요한 의존성과 함수들을 임포트합니다
636
- import { type Locales, configuration, getPathWithoutLocale } from "intlayer"; // 'intlayer'에서 제공하는 유틸리티 함수와 타입
637
- import type { FC, PropsWithChildren } from "react"; // 함수형 컴포넌트와 props 타입을 위한 React 타입
636
+ import { type Locales, configuration, getPathWithoutLocale } from "intlayer"; // 'intlayer'에서 제공하는 유틸리티 함수 타입
637
+ import type { FC, PropsWithChildren } from "react"; // 함수형 컴포넌트 props 타입
638
638
  import { IntlayerProvider } from "react-intlayer"; // 국제화 컨텍스트를 위한 프로바이더
639
639
  import {
640
640
  BrowserRouter,
@@ -644,7 +644,7 @@ import {
644
644
  useLocation,
645
645
  } from "react-router-dom"; // 네비게이션 관리를 위한 라우터 컴포넌트
646
646
 
647
- // Intlayer에서 설정 구조 분해 할당
647
+ // Intlayer에서 설정값 구조 분해 할당
648
648
  const { internationalization, middleware } = configuration;
649
649
  const { locales, defaultLocale } = internationalization;
650
650
 
@@ -667,7 +667,7 @@ const AppLocalized: FC<PropsWithChildren<{ locale: Locales }>> = ({
667
667
  );
668
668
 
669
669
  /**
670
- * middleware.prefixDefault가 true인 경우, 기본 로케일은 항상 접두사가 붙어야 합니다.
670
+ * middleware.prefixDefault가 true인 경우, 기본 로케일은 항상 접두사로 붙어야 합니다.
671
671
  */
672
672
  if (middleware.prefixDefault) {
673
673
  // 로케일 유효성 검사
@@ -676,19 +676,19 @@ const AppLocalized: FC<PropsWithChildren<{ locale: Locales }>> = ({
676
676
  return (
677
677
  <Navigate
678
678
  to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
679
- replace // 현재 기록 항목을 새 항목으로 교체
679
+ replace // 현재 기록 항목을 새 항목으로 교체합니다
680
680
  />
681
681
  );
682
682
  }
683
683
 
684
- // 자식 컴포넌트를 IntlayerProvider로 감싸고 현재 로케일을 설정
684
+ // 자식 컴포넌트를 IntlayerProvider로 감싸고 현재 로케일을 설정합니다
685
685
  return (
686
686
  <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
687
687
  );
688
688
  } else {
689
689
  /**
690
690
  * middleware.prefixDefault가 false일 때, 기본 로케일은 접두사가 붙지 않습니다.
691
- * 현재 로케일이 유효하고 기본 로케일이 아님을 확인합니다.
691
+ * 현재 로케일이 유효하며 기본 로케일이 아님을 확인합니다.
692
692
  */
693
693
  if (
694
694
  currentLocale.toString() !== defaultLocale.toString() &&
@@ -698,11 +698,11 @@ const AppLocalized: FC<PropsWithChildren<{ locale: Locales }>> = ({
698
698
  )
699
699
  .includes(currentLocale) // 현재 로케일이 유효한 로케일 목록에 있는지 확인
700
700
  ) {
701
- // 로케일 접두사가 없는 경로로 리디렉션
701
+ // 로케일 접두어가 없는 경로로 리디렉션
702
702
  return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
703
703
  }
704
704
 
705
- // 자식 컴포넌트를 IntlayerProvider로 감싸고 현재 로케일 설정
705
+ // IntlayerProvider로 자식 컴포넌트를 감싸고 현재 로케일 설정
706
706
  return (
707
707
  <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
708
708
  );
@@ -722,10 +722,10 @@ export const LocaleRouter: FC<PropsWithChildren> = ({ children }) => (
722
722
  )
723
723
  .map((locale) => (
724
724
  <Route
725
- // 로케일을 캡처하는 라우트 패턴 (예: /en/, /fr/) 및 이후 모든 경로와 매칭
725
+ // 로케일을 캡처하는 경로 패턴 (예: /en/, /fr/) 및 이후 모든 경로와 매칭
726
726
  path={`/${locale}/*`}
727
727
  key={locale}
728
- element={<AppLocalized locale={locale}>{children}</AppLocalized>} // 로케일 관리를 위해 children을 감쌈
728
+ element={<AppLocalized locale={locale}>{children}</AppLocalized>} // 로케일 관리를 위해 children을 래핑
729
729
  />
730
730
  ))}
731
731
 
@@ -736,7 +736,7 @@ export const LocaleRouter: FC<PropsWithChildren> = ({ children }) => (
736
736
  path="*"
737
737
  element={
738
738
  <AppLocalized locale={defaultLocale}>{children}</AppLocalized>
739
- } // 로케일 관리를 위해 children을 감쌈
739
+ } // 로케일 관리를 위해 children을 래핑
740
740
  />
741
741
  )
742
742
  }
@@ -746,9 +746,9 @@ export const LocaleRouter: FC<PropsWithChildren> = ({ children }) => (
746
746
  ```
747
747
 
748
748
  ```jsx fileName="src/components/LocaleRouter.mjx" codeFormat="esm"
749
- // 필요한 종속성과 함수들을 임포트합니다.
750
- import { configuration, getPathWithoutLocale } from "intlayer"; // 'intlayer'에서 제공하는 유틸리티 함수와 타입들
751
- // 'intlayer'에서 제공하는 유틸리티 함수와 타입들
749
+ // 필요한 의존성과 함수들을 임포트합니다.
750
+ import { configuration, getPathWithoutLocale } from "intlayer"; // 'intlayer'에서 제공하는 유틸리티 함수와 타입
751
+ // 'intlayer'에서 제공하는 유틸리티 함수와 타입
752
752
  import { IntlayerProvider } from "react-intlayer"; // 국제화 컨텍스트를 위한 프로바이더
753
753
  import {
754
754
  BrowserRouter,
@@ -763,9 +763,9 @@ const { internationalization, middleware } = configuration;
763
763
  const { locales, defaultLocale } = internationalization;
764
764
 
765
765
  /**
766
- * 로케일 처리를 담당하며, 자식 컴포넌트를 적절한 로케일 컨텍스트로 감싸는 컴포넌트입니다.
766
+ * 로컬라이제이션을 처리하고 자식 컴포넌트를 적절한 로케일 컨텍스트로 감싸는 컴포넌트입니다.
767
767
  /**
768
- * URL 기반 로케일 감지 및 검증을 관리하는 컴포넌트입니다.
768
+ * URL 기반 로케일 감지 및 검증을 관리합니다.
769
769
  */
770
770
  const AppLocalized = ({ children, locale }) => {
771
771
  const { pathname, search } = useLocation(); // 현재 URL 경로를 가져옵니다.
@@ -779,7 +779,7 @@ const AppLocalized = ({ children, locale }) => {
779
779
  );
780
780
 
781
781
  /**
782
- * middleware.prefixDefault가 true인 경우 기본 로케일은 항상 접두사로 붙어야 합니다.
782
+ * middleware.prefixDefault가 true인 경우, 기본 로케일은 항상 접두사로 붙어야 합니다.
783
783
  */
784
784
  if (middleware.prefixDefault) {
785
785
  // 로케일을 검증합니다.
@@ -800,7 +800,7 @@ const AppLocalized = ({ children, locale }) => {
800
800
  } else {
801
801
  /**
802
802
  * middleware.prefixDefault가 false일 때, 기본 로케일은 접두사가 붙지 않습니다.
803
- * 현재 로케일이 유효하고 기본 로케일이 아님을 확인합니다.
803
+ * 현재 로케일이 유효하며 기본 로케일이 아님을 확인합니다.
804
804
  */
805
805
  if (
806
806
  currentLocale.toString() !== defaultLocale.toString() &&
@@ -808,13 +808,13 @@ const AppLocalized = ({ children, locale }) => {
808
808
  .filter(
809
809
  (locale) => locale.toString() !== defaultLocale.toString() // 기본 로케일 제외
810
810
  )
811
- .includes(currentLocale) // 현재 로케일이 유효한 로케일 목록에 포함되어 있는지 확인
811
+ .includes(currentLocale) // 현재 로케일이 유효한 로케일 목록에 있는지 확인
812
812
  ) {
813
813
  // 로케일 접두사가 없는 경로로 리디렉션
814
814
  return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
815
815
  }
816
816
 
817
- // 자식 컴포넌트를 IntlayerProvider로 감싸고 현재 로케일 설정
817
+ // IntlayerProvider로 자식 컴포넌트를 감싸고 현재 로케일 설정
818
818
  return (
819
819
  <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
820
820
  );
@@ -842,7 +842,7 @@ export const LocaleRouter = ({ children }) => (
842
842
  ))}
843
843
 
844
844
  {
845
- // 기본 로케일 접두어 사용이 비활성화된 경우, 루트 경로에서 직접 자식 컴포넌트를 렌더링
845
+ // 기본 로케일 접두어 사용이 비활성화된 경우, 루트 경로에서 자식 컴포넌트를 직접 렌더링
846
846
  !middleware.prefixDefault && (
847
847
  <Route
848
848
  path="*"
@@ -858,8 +858,8 @@ export const LocaleRouter = ({ children }) => (
858
858
  ```
859
859
 
860
860
  ```jsx fileName="src/components/LocaleRouter.cjx" codeFormat="commonjs"
861
- // 필요한 의존성과 함수들을 임포트합니다.
862
- const { configuration, getPathWithoutLocale } = require("intlayer"); // 'intlayer'에서 제공하는 유틸리티 함수와 타입
861
+ // 필요한 종속성과 함수들을 가져옵니다.
862
+ const { configuration, getPathWithoutLocale } = require("intlayer"); // 'intlayer'에서 제공하는 유틸리티 함수 타입
863
863
  const { IntlayerProvider, useLocale } = require("react-intlayer"); // 국제화 컨텍스트를 위한 프로바이더
864
864
  const {
865
865
  BrowserRouter,
@@ -867,7 +867,7 @@ const {
867
867
  Route,
868
868
  Navigate,
869
869
  useLocation,
870
- } = require("react-router-dom"); // 네비게이션 관리를 위한 라우터 컴포넌트들
870
+ } = require("react-router-dom"); // 내비게이션 관리를 위한 라우터 컴포넌트
871
871
 
872
872
  // Intlayer에서 설정을 구조 분해 할당합니다.
873
873
  const { internationalization, middleware } = configuration;
@@ -883,33 +883,33 @@ const AppLocalized = ({ children, locale }) => {
883
883
  // 현재 로케일을 결정하며, 제공되지 않은 경우 기본 로케일로 대체합니다.
884
884
  const currentLocale = locale ?? defaultLocale;
885
885
 
886
- // 경로에서 로케일 접두어를 제거하여 기본 경로를 만듭니다.
886
+ // 경로에서 로케일 접두사를 제거하여 기본 경로를 만듭니다.
887
887
  const pathWithoutLocale = getPathWithoutLocale(
888
888
  pathname // 현재 URL 경로
889
889
  );
890
890
 
891
891
  /**
892
- * middleware.prefixDefault가 true인 경우, 기본 로케일은 항상 접두어로 붙어야 합니다.
892
+ * middleware.prefixDefault가 true인 경우, 기본 로케일은 항상 접두사로 붙어야 합니다.
893
893
  */
894
894
  if (middleware.prefixDefault) {
895
- // 로케일 유효성 검사
895
+ // 로케일을 검증합니다.
896
896
  if (!locale || !locales.includes(locale)) {
897
- // 기본 로케일과 업데이트된 경로로 리다이렉트합니다.
897
+ // 업데이트된 경로와 함께 기본 로케일로 리다이렉트합니다.
898
898
  return (
899
899
  <Navigate
900
900
  to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
901
- replace // 현재 기록 항목을 새 항목으로 교체합니다.
901
+ replace // 현재 기록 항목을 새 항목으로 교체
902
902
  />
903
903
  );
904
904
  }
905
905
 
906
- // 자식 컴포넌트를 IntlayerProvider로 감싸고 현재 로케일을 설정합니다.
906
+ // 자식 컴포넌트를 IntlayerProvider로 감싸고 현재 로케일을 설정
907
907
  return (
908
908
  <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
909
909
  );
910
910
  } else {
911
911
  /**
912
- * middleware.prefixDefault가 false일 때, 기본 로케일은 접두사로 붙지 않습니다.
912
+ * middleware.prefixDefault가 false일 때, 기본 로케일은 접두사가 붙지 않습니다.
913
913
  * 현재 로케일이 유효하며 기본 로케일이 아님을 확인합니다.
914
914
  */
915
915
  if (
@@ -920,7 +920,7 @@ const AppLocalized = ({ children, locale }) => {
920
920
  )
921
921
  .includes(currentLocale) // 현재 로케일이 유효한 로케일 목록에 포함되어 있는지 확인
922
922
  ) {
923
- // 로케일 접두사 없이 경로로 리디렉션합니다.
923
+ // 로케일 접두사가 없는 경로로 리디렉션합니다.
924
924
  return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
925
925
  }
926
926
 
@@ -933,7 +933,7 @@ const AppLocalized = ({ children, locale }) => {
933
933
 
934
934
  /**
935
935
  * 로케일별 경로를 설정하는 라우터 컴포넌트입니다.
936
- * React Router를 사용하여 네비게이션을 관리하고 로컬라이즈된 컴포넌트를 렌더링합니다.
936
+ * React Router를 사용하여 내비게이션을 관리하고 로컬라이즈된 컴포넌트를 렌더링합니다.
937
937
  */
938
938
  const LocaleRouter = ({ children }) => (
939
939
  <BrowserRouter>
@@ -944,21 +944,21 @@ const LocaleRouter = ({ children }) => (
944
944
  )
945
945
  .map((locale) => (
946
946
  <Route
947
- // 로케일을 캡처하는 경로 패턴 (예: /en/, /fr/) 및 이후 모든 경로를 매칭합니다.
947
+ // 로케일을 캡처하는 경로 패턴 (예: /en/, /fr/) 및 이후 모든 경로와 매칭합니다.
948
948
  path={`/${locale}/*`}
949
949
  key={locale}
950
- element={<AppLocalized locale={locale}>{children}</AppLocalized>} // 자식 컴포넌트를 로케일 관리로 감쌉니다
950
+ element={<AppLocalized locale={locale}>{children}</AppLocalized>} // 자식 컴포넌트를 로케일 관리로 감쌈
951
951
  />
952
952
  ))}
953
953
 
954
954
  {
955
- // 기본 로케일 접두어 사용이 비활성화된 경우, 루트 경로에서 자식 컴포넌트를 직접 렌더링합니다
955
+ // 기본 로케일 접두어 사용이 비활성화된 경우, 루트 경로에서 자식 컴포넌트를 직접 렌더링
956
956
  !middleware.prefixDefault && (
957
957
  <Route
958
958
  path="*"
959
959
  element={
960
960
  <AppLocalized locale={defaultLocale}>{children}</AppLocalized>
961
- } // 자식 컴포넌트를 로케일 관리로 감쌉니다
961
+ } // 자식 컴포넌트를 로케일 관리로 감쌈
962
962
  />
963
963
  )
964
964
  }
@@ -973,7 +973,7 @@ const LocaleRouter = ({ children }) => (
973
973
  import { LocaleRouter } from "./components/LocaleRouter";
974
974
  import type { FC } from "react";
975
975
 
976
- // ... 당신의 AppContent 컴포넌트
976
+ // ... 여러분의 AppContent 컴포넌트
977
977
 
978
978
  const App: FC = () => (
979
979
  <LocaleRouter>
@@ -985,7 +985,7 @@ const App: FC = () => (
985
985
  ```jsx fileName="src/App.mjx" codeFormat="esm"
986
986
  import { LocaleRouter } from "./components/LocaleRouter";
987
987
 
988
- // ... 당신의 AppContent 컴포넌트
988
+ // ... 여러분의 AppContent 컴포넌트
989
989
 
990
990
  const App = () => (
991
991
  <LocaleRouter>
@@ -997,7 +997,7 @@ const App = () => (
997
997
  ```jsx fileName="src/App.cjx" codeFormat="commonjs"
998
998
  const { LocaleRouter } = require("./components/LocaleRouter");
999
999
 
1000
- // ... 당신의 AppContent 컴포넌트
1000
+ // ... 여러분의 AppContent 컴포넌트
1001
1001
 
1002
1002
  const App = () => (
1003
1003
  <LocaleRouter>
@@ -1043,7 +1043,7 @@ module.exports = defineConfig({
1043
1043
 
1044
1044
  ### (선택 사항) 8단계: 로케일이 변경될 때 URL 변경하기
1045
1045
 
1046
- 로케일이 변경될 때 URL을 변경하려면, `useLocale` 훅에서 제공하는 `onLocaleChange` prop을 사용할 수 있습니다. 동시에, `react-router-dom`의 `useLocation`과 `useNavigate` 훅을 사용하여 URL 경로를 업데이트할 수 있습니다.
1046
+ 로케일이 변경될 때 URL을 변경하려면, `useLocale` 훅에서 제공하는 `onLocaleChange` 속성을 사용할 수 있습니다. 동시에, `react-router-dom`의 `useLocation`과 `useNavigate` 훅을 사용하여 URL 경로를 업데이트할 수 있습니다.
1047
1047
 
1048
1048
  ```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat="typescript"
1049
1049
  import { useLocation, useNavigate } from "react-router-dom";
@@ -1063,7 +1063,7 @@ const LocaleSwitcher: FC = () => {
1063
1063
  const { locale, availableLocales, setLocale } = useLocale({
1064
1064
  onLocaleChange: (locale) => {
1065
1065
  // 업데이트된 로케일로 URL을 구성합니다
1066
- // 예시: /es/about?foo=bar
1066
+ // 예: /es/about?foo=bar
1067
1067
  const pathWithLocale = getLocalizedUrl(`${pathname}${search}`, locale);
1068
1068
 
1069
1069
  // URL 경로를 업데이트합니다
@@ -1091,11 +1091,11 @@ const LocaleSwitcher: FC = () => {
1091
1091
  {localeItem}
1092
1092
  </span>
1093
1093
  <span>
1094
- {/* 해당 로케일의 언어명 - 예: Français */}
1094
+ {/* 해당 로케일에서의 언어명 - 예: Français */}
1095
1095
  {getLocaleName(localeItem, locale)}
1096
1096
  </span>
1097
1097
  <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1098
- {/* 현재 로케일에서의 언어명 - 예: Francés (현재 로케일이 Locales.SPANISH 경우) */}
1098
+ {/* 현재 로케일에서의 언어명 - 예: Francés (현재 로케일이 Locales.SPANISH ) */}
1099
1099
  {getLocaleName(localeItem)}
1100
1100
  </span>
1101
1101
  <span dir="ltr" lang={Locales.ENGLISH}>
@@ -1159,11 +1159,11 @@ const LocaleSwitcher = () => {
1159
1159
  {getLocaleName(localeItem, locale)}
1160
1160
  </span>
1161
1161
  <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1162
- {/* 현재 로케일에서의 언어 - 예: 현재 로케일이 Locales.SPANISH로 설정된 경우 Francés */}
1162
+ {/* 현재 로케일에서의 언어 - 예: Locales.SPANISH로 설정된 현재 로케일에서 Francés */}
1163
1163
  {getLocaleName(localeItem)}
1164
1164
  </span>
1165
1165
  <span dir="ltr" lang={Locales.ENGLISH}>
1166
- {/* 영어로 된 언어명 - 예: French */}
1166
+ {/* 영어로 된 언어 - 예: French */}
1167
1167
  {getLocaleName(localeItem, Locales.ENGLISH)}
1168
1168
  </span>
1169
1169
  </a>
@@ -1227,7 +1227,7 @@ const LocaleSwitcher = () => {
1227
1227
  {getLocaleName(localeItem)}
1228
1228
  </span>
1229
1229
  <span dir="ltr" lang={Locales.ENGLISH}>
1230
- {/* 영어로 된 언어 이름 - 예: French */}
1230
+ {/* 영어로 된 언어명 - 예: French */}
1231
1231
  {getLocaleName(localeItem, Locales.ENGLISH)}
1232
1232
  </span>
1233
1233
  </a>
@@ -1253,19 +1253,19 @@ const LocaleSwitcher = () => {
1253
1253
 
1254
1254
  ---
1255
1255
 
1256
- ### (선택 사항) 9단계: HTML의 언어 및 방향 속성 변경하기
1256
+ ### (선택 사항) 9단계: HTML의 언어 및 방향 속성 변경
1257
1257
 
1258
1258
  애플리케이션이 다국어를 지원할 때, 현재 로케일에 맞게 `<html>` 태그의 `lang` 및 `dir` 속성을 업데이트하는 것이 매우 중요합니다. 이렇게 하면 다음을 보장할 수 있습니다:
1259
1259
 
1260
1260
  - **접근성**: 화면 낭독기 및 보조 기술은 올바른 `lang` 속성에 의존하여 콘텐츠를 정확하게 발음하고 해석합니다.
1261
- - **텍스트 렌더링**: `dir`(방향) 속성은 텍스트가 올바른 순서로 렌더링되도록 보장합니다(예: 영어는 왼쪽에서 오른쪽, 아랍어나 히브리어는 오른쪽에서 왼쪽). 이는 가독성에 필수적입니다.
1262
- - **SEO**: 검색 엔진은 `lang` 속성을 사용하여 페이지의 언어를 판단하고, 올바른 현지화된 콘텐츠를 검색 결과에 제공하는 데 도움을 줍니다.
1261
+ - **텍스트 렌더링**: `dir`(방향) 속성은 텍스트가 올바른 순서로 렌더링되도록 보장합니다(예: 영어는 왼쪽에서 오른쪽으로, 아랍어나 히브리어는 오른쪽에서 왼쪽으로), 이는 가독성에 필수적입니다.
1262
+ - **SEO**: 검색 엔진은 `lang` 속성을 사용하여 페이지의 언어를 판단하고, 검색 결과에서 적절한 현지화된 콘텐츠를 제공하는 데 도움을 줍니다.
1263
1263
 
1264
1264
  로케일이 변경될 때 이러한 속성을 동적으로 업데이트하면, 지원되는 모든 언어에서 사용자에게 일관되고 접근 가능한 경험을 보장할 수 있습니다.
1265
1265
 
1266
1266
  #### 훅 구현하기
1267
1267
 
1268
- HTML 속성을 관리하는 커스텀 훅을 만드세요. 이 훅은 로케일 변경을 감지하고 그에 따라 속성을 업데이트합니다:
1268
+ HTML 속성을 관리하는 커스텀 훅을 만듭니다. 이 훅은 로케일 변경을 감지하여 속성을 적절히 업데이트합니다:
1269
1269
 
1270
1270
  ```tsx fileName="src/hooks/useI18nHTMLAttributes.tsx" codeFormat="typescript"
1271
1271
  import { useEffect } from "react";
@@ -1283,7 +1283,7 @@ export const useI18nHTMLAttributes = () => {
1283
1283
  const { locale } = useLocale();
1284
1284
 
1285
1285
  useEffect(() => {
1286
- // 현재 로케일에 맞게 언어 속성을 업데이트합니다.
1286
+ // 현재 로케일로 언어 속성을 업데이트합니다.
1287
1287
  document.documentElement.lang = locale;
1288
1288
 
1289
1289
  // 현재 로케일에 따라 텍스트 방향을 설정합니다.
@@ -1323,7 +1323,7 @@ const { useLocale } = require("react-intlayer");
1323
1323
  const { getHTMLTextDir } = require("intlayer");
1324
1324
 
1325
1325
  /**
1326
- * 현재 로케일을 기반으로 HTML <html> 요소의 `lang` 및 `dir` 속성을 업데이트합니다.
1326
+ * 현재 로케일에 따라 HTML <html> 요소의 `lang` 및 `dir` 속성을 업데이트합니다.
1327
1327
  * - `lang`: 브라우저와 검색 엔진에 페이지의 언어를 알립니다.
1328
1328
  * - `dir`: 올바른 읽기 순서 보장을 위해 설정합니다 (예: 영어는 'ltr', 아랍어는 'rtl').
1329
1329
  *
@@ -1355,7 +1355,7 @@ import { useI18nHTMLAttributes } from "./hooks/useI18nHTMLAttributes";
1355
1355
  import "./App.css";
1356
1356
 
1357
1357
  const AppContent: FC = () => {
1358
- // 로케일에 따라 <html> 태그의 lang dir 속성을 업데이트하기 위해 훅을 적용합니다.
1358
+ // 로케일에 따라 <html> 태그의 lang dir 속성을 업데이트하기 위해 훅을 적용합니다.
1359
1359
  useI18nHTMLAttributes();
1360
1360
 
1361
1361
  // ... 컴포넌트의 나머지 부분
@@ -1379,7 +1379,7 @@ const AppContent = () => {
1379
1379
  // 로케일에 따라 <html> 태그의 lang 및 dir 속성을 업데이트하기 위해 훅을 적용합니다.
1380
1380
  useI18nHTMLAttributes();
1381
1381
 
1382
- // ... 컴포넌트의 나머지 부분
1382
+ // ... 나머지 컴포넌트 내용
1383
1383
  };
1384
1384
 
1385
1385
  const App = () => (
@@ -1403,11 +1403,6 @@ const AppContent = () => {
1403
1403
 
1404
1404
  // ... 컴포넌트의 나머지 부분
1405
1405
  };
1406
- // 로케일에 따라 <html> 태그의 lang 및 dir 속성을 업데이트하기 위해 훅을 적용합니다.
1407
- useI18nHTMLAttributes();
1408
-
1409
- // ... 나머지 컴포넌트 내용
1410
- };
1411
1406
 
1412
1407
  const App = () => (
1413
1408
  <IntlayerProvider>
@@ -1418,11 +1413,11 @@ const App = () => (
1418
1413
  module.exports = App;
1419
1414
  ```
1420
1415
 
1421
- 이 변경 사항을 적용하면 애플리케이션은 다음을 수행합니다:
1416
+ 이 변경 사항을 적용하면 애플리케이션은 다음을 보장합니다:
1422
1417
 
1423
- - 현재 로케일을 올바르게 반영하는 **언어**(`lang`) 속성을 보장하여 SEO 및 브라우저 동작에 중요합니다.
1418
+ - 현재 로케일을 올바르게 반영하는 **언어**(`lang`) 속성으로 SEO 및 브라우저 동작에 중요합니다.
1424
1419
  - 로케일에 따라 **텍스트 방향**(`dir`)을 조정하여, 서로 다른 읽기 순서를 가진 언어에 대해 가독성과 사용성을 향상시킵니다.
1425
- - 보조 기술이 최적의 기능을 수행하는 데 의존하는 이러한 속성들 덕분에 더 **접근성 높은** 경험을 제공합니다.
1420
+ - 보조 기술이 이러한 속성에 의존하므로 더 **접근성 높은** 경험을 제공합니다.
1426
1421
 
1427
1422
  ### (선택 사항) 10단계: 지역화된 링크 컴포넌트 만들기
1428
1423
 
@@ -1430,9 +1425,9 @@ module.exports = App;
1430
1425
 
1431
1426
  이 동작은 여러 가지 이유로 유용합니다:
1432
1427
 
1433
- - **SEO 및 사용자 경험**: 지역화된 URL은 검색 엔진이 언어별 페이지를 올바르게 인덱싱하도록 도와주며, 사용자가 선호하는 언어로 된 콘텐츠를 제공합니다.
1434
- - **일관성**: 애플리케이션 전반에 걸쳐 지역화된 링크를 사용함으로써 내비게이션이 현재 로케일 내에서 유지되어 예상치 못한 언어 전환을 방지합니다.
1435
- /// **유지보수성**: 로컬라이제이션 로직을 단일 컴포넌트에 중앙 집중화하면 URL 관리를 단순화하여 애플리케이션이 성장함에 따라 코드베이스를 더 쉽게 유지보수하고 확장할 수 있습니다.
1428
+ - **SEO 및 사용자 경험**: 지역화된 URL은 검색 엔진이 언어별 페이지를 올바르게 색인화하도록 돕고, 사용자가 선호하는 언어로 된 콘텐츠를 제공합니다.
1429
+ - **일관성**: 애플리케이션 전반에 걸쳐 지역화된 링크를 사용함으로써 내비게이션이 현재 로케일 내에서 유지되어 예기치 않은 언어 전환을 방지합니다.
1430
+ - **유지보수성**: 로컬라이제이션 로직을 단일 컴포넌트에 중앙 집중화하면 URL 관리를 단순화하여 애플리케이션이 성장함에 따라 코드베이스를 더 쉽게 유지보수하고 확장할 수 있습니다.
1436
1431
 
1437
1432
  아래는 TypeScript로 구현한 로컬라이즈된 `Link` 컴포넌트입니다:
1438
1433
 
@@ -1461,7 +1456,7 @@ export const checkIsExternalLink = (href?: string): boolean =>
1461
1456
  /**
1462
1457
  * 현재 로케일에 따라 href 속성을 조정하는 커스텀 Link 컴포넌트입니다.
1463
1458
  * 내부 링크의 경우 `getLocalizedUrl`을 사용하여 URL 앞에 로케일을 붙입니다 (예: /fr/about).
1464
- * 이를 통해 내비게이션이 동일한 로케일 컨텍스트 내에서 유지되도록 합니다.
1459
+ * 이를 통해 내비게이션이 동일한 로케일 컨텍스트 내에서 이루어지도록 보장합니다.
1465
1460
  */
1466
1461
  export const Link = forwardRef<HTMLAnchorElement, LinkProps>(
1467
1462
  ({ href, children, ...props }, ref) => {
@@ -1497,8 +1492,8 @@ export const checkIsExternalLink = (href?: string): boolean =>
1497
1492
 
1498
1493
  /**
1499
1494
  * 현재 로케일에 따라 href 속성을 조정하는 커스텀 Link 컴포넌트입니다.
1500
- * 내부 링크의 경우 `getLocalizedUrl`을 사용하여 URL 앞에 로케일을 붙입니다 (예: /fr/about).
1501
- * 이를 통해 내비게이션이 동일한 로케일 컨텍스트 내에서 유지되도록 합니다.
1495
+ * 내부 링크의 경우 `getLocalizedUrl`을 사용하여 URL 앞에 로케일 접두사를 붙입니다 (예: /fr/about).
1496
+ * 이를 통해 내비게이션이 동일한 로케일 컨텍스트 내에서 이루어지도록 보장합니다.
1502
1497
  */
1503
1498
  export const Link = forwardRef(({ href, children, ...props }, ref) => {
1504
1499
  const { locale } = useLocale();
@@ -1532,13 +1527,13 @@ const checkIsExternalLink = (href) => /^https?:\/\//.test(href ?? "");
1532
1527
  /**
1533
1528
  * 현재 로케일에 따라 href 속성을 조정하는 커스텀 Link 컴포넌트입니다.
1534
1529
  * 내부 링크의 경우 `getLocalizedUrl`을 사용하여 URL 앞에 로케일을 붙입니다 (예: /fr/about).
1535
- * 이를 통해 내비게이션이 동일한 로케일 컨텍스트 내에서 유지되도록 합니다.
1530
+ * 이를 통해 내비게이션이 동일한 로케일 컨텍스트 내에서 이루어지도록 보장합니다.
1536
1531
  */
1537
1532
  const Link = forwardRef(({ href, children, ...props }, ref) => {
1538
1533
  const { locale } = useLocale();
1539
1534
  const isExternalLink = checkIsExternalLink(href);
1540
1535
 
1541
- // 링크가 내부 링크이고 유효한 href가 제공된 경우, 로케일이 적용된 URL을 가져옵니다.
1536
+ // 링크가 내부 링크이고 유효한 href가 제공된 경우, 로컬라이즈된 URL을 가져옵니다.
1542
1537
  const localizedHref = isExternalLink ? href : getLocalizedUrl(href, locale);
1543
1538
 
1544
1539
  return (
@@ -1556,7 +1551,7 @@ const Link = forwardRef(({ href, children, ...props }, ref) => {
1556
1551
  Link.displayName = "Link";
1557
1552
  ```
1558
1553
 
1559
- #### 작동 방식
1554
+ #### 작동 원리
1560
1555
 
1561
1556
  - **외부 링크 감지**:
1562
1557
  헬퍼 함수 `checkIsExternalLink`는 URL이 외부 링크인지 여부를 판단합니다. 외부 링크는 현지화가 필요 없으므로 변경하지 않습니다.
@@ -1565,12 +1560,12 @@ Link.displayName = "Link";
1565
1560
  `useLocale` 훅은 현재 로케일(예: 프랑스어의 경우 `fr`)을 제공합니다.
1566
1561
 
1567
1562
  - **URL 현지화**:
1568
- 내부 링크(즉, 외부 링크가 아닌 경우)에 대해서는 `getLocalizedUrl`을 사용하여 URL 앞에 현재 로케일을 자동으로 붙입니다. 예를 들어 사용자가 프랑스어 로케일에 있다면, `href`에 `/about`을 전달할 경우 `/fr/about`로 변환됩니다.
1563
+ 내부 링크(즉, 외부 링크가 아닌 경우)에 대해 `getLocalizedUrl`을 사용하여 URL 앞에 현재 로케일을 자동으로 붙입니다. 예를 들어 사용자가 프랑스어 로케일에 있다면, `href`에 `/about`을 전달하면 `/fr/about`로 변환됩니다.
1569
1564
 
1570
1565
  - **링크 반환**:
1571
1566
  컴포넌트는 지역화된 URL을 가진 `<a>` 요소를 반환하여, 내비게이션이 현재 로케일과 일치하도록 보장합니다.
1572
1567
 
1573
- 이 `Link` 컴포넌트를 애플리케이션 전반에 통합하면, 일관되고 언어에 민감한 사용자 경험을 유지할 수 있으며, SEO 및 사용성 향상에도 도움이 됩니다.
1568
+ 이 `Link` 컴포넌트를 애플리케이션 전반에 통합함으로써, 일관되고 언어 인식이 가능한 사용자 경험을 유지할 수 있으며, SEO 및 사용성 향상에도 도움이 됩니다.
1574
1569
 
1575
1570
  ### TypeScript 구성
1576
1571
 
@@ -1586,39 +1581,15 @@ TypeScript 구성에 자동 생성된 타입이 포함되어 있는지 확인하
1586
1581
  {
1587
1582
  // ... 기존 TypeScript 구성
1588
1583
  "include": [
1589
- // ... 기존 TypeScript 구성
1590
- ".intlayer/**/*.ts", // 자동 생성된 타입 포함
1591
- ],
1592
- }
1593
- ```
1594
-
1595
- 컴포넌트는 지역화된 URL을 가진 `<a>` 요소를 반환하여, 로케일에 맞는 일관된 내비게이션을 보장합니다.
1596
-
1597
- 이 `Link` 컴포넌트를 애플리케이션 전반에 통합하면, 일관되고 언어를 인식하는 사용자 경험을 유지하는 동시에 SEO와 사용성 향상의 이점을 누릴 수 있습니다.
1598
-
1599
- ### TypeScript 구성
1600
-
1601
- Intlayer는 모듈 증강(module augmentation)을 사용하여 TypeScript의 이점을 활용하고 코드베이스를 더욱 견고하게 만듭니다.
1602
-
1603
- ![alt text](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png)
1604
-
1605
- ![alt text](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png)
1606
-
1607
- TypeScript 구성에 자동 생성된 타입이 포함되어 있는지 확인하세요.
1608
-
1609
- ```json5 fileName="tsconfig.json"
1610
- {
1611
- // ... 기존 TypeScript 구성
1612
- "include": [
1613
- // ... 기존 TypeScript 구성
1584
+ // ... 기존 TypeScript 설정
1614
1585
  ".intlayer/**/*.ts", // 자동 생성된 타입 포함
1615
1586
  ],
1616
1587
  }
1617
1588
  ```
1618
1589
 
1619
- ### Git 구성
1590
+ ### Git 설정
1620
1591
 
1621
- Intlayer가 생성한 파일은 Git 저장소에 커밋하지 않도록 무시하는 것이 권장됩니다.
1592
+ Intlayer가 생성한 파일들은 Git 저장소에 커밋하지 않도록 무시하는 것이 권장됩니다.
1622
1593
 
1623
1594
  이를 위해 `.gitignore` 파일에 다음 지침을 추가할 수 있습니다:
1624
1595
 
@@ -1627,18 +1598,18 @@ Intlayer가 생성한 파일은 Git 저장소에 커밋하지 않도록 무시
1627
1598
  .intlayer
1628
1599
  ```
1629
1600
 
1630
- ### VS Code 확장
1601
+ ### VS Code 확장 프로그램
1631
1602
 
1632
- Intlayer와 함께 개발 경험을 향상시키기 위해 공식 **Intlayer VS Code 확장**을 설치할 수 있습니다.
1603
+ Intlayer와 함께 개발 경험을 향상시키기 위해 공식 **Intlayer VS Code 확장 프로그램**을 설치할 수 있습니다.
1633
1604
 
1634
1605
  [VS Code 마켓플레이스에서 설치하기](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
1635
1606
 
1636
- 확장은 다음 기능을 제공합니다:
1607
+ 확장 프로그램은 다음 기능을 제공합니다:
1637
1608
 
1638
1609
  - 번역 키에 대한 **자동 완성**.
1639
- - **누락된 번역에 대한 실시간 오류 감지**.
1640
- - **번역된 콘텐츠의 인라인 미리보기**.
1641
- - **번역을 쉽게 생성 업데이트할 수 있는 빠른 작업**.
1610
+ - **실시간 오류 감지**로 누락된 번역을 확인할 수 있습니다.
1611
+ - **인라인 미리보기**를 통해 번역된 내용을 바로 확인할 수 있습니다.
1612
+ - **빠른 작업**으로 번역을 쉽게 생성하고 업데이트할 수 있습니다.
1642
1613
 
1643
1614
  확장 기능 사용 방법에 대한 자세한 내용은 [Intlayer VS Code 확장 문서](https://intlayer.org/doc/vs-code-extension)를 참조하세요.
1644
1615