@intlayer/docs 5.5.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1135) hide show
  1. package/LICENSE +202 -0
  2. package/ar/CI_CD.md +149 -0
  3. package/ar/autoFill.md +157 -0
  4. package/ar/concept/content/file.md +1 -0
  5. package/ar/configuration.md +492 -0
  6. package/ar/dictionary/condition.md +213 -0
  7. package/ar/dictionary/content_extention_customization.md +81 -0
  8. package/ar/dictionary/enumeration.md +221 -0
  9. package/ar/dictionary/file.md +209 -0
  10. package/ar/dictionary/function_fetching.md +190 -0
  11. package/ar/dictionary/get_started.md +490 -0
  12. package/ar/dictionary/insertion.md +161 -0
  13. package/ar/dictionary/markdown.md +343 -0
  14. package/ar/dictionary/nesting.md +249 -0
  15. package/ar/dictionary/translation.md +307 -0
  16. package/ar/header.md +7 -0
  17. package/ar/how_works_intlayer.md +219 -0
  18. package/ar/index.md +125 -0
  19. package/ar/interest_of_intlayer.md +132 -0
  20. package/ar/intlayer_CMS.md +328 -0
  21. package/ar/intlayer_cli.md +258 -0
  22. package/ar/intlayer_visual_editor.md +210 -0
  23. package/ar/intlayer_with_angular.md +3 -0
  24. package/ar/intlayer_with_create_react_app.md +1196 -0
  25. package/ar/intlayer_with_express.md +270 -0
  26. package/ar/intlayer_with_lynx+react.md +482 -0
  27. package/ar/intlayer_with_nextjs_14.md +1260 -0
  28. package/ar/intlayer_with_nextjs_15.md +1311 -0
  29. package/ar/intlayer_with_nextjs_page_router.md +1099 -0
  30. package/ar/intlayer_with_react_native+expo.md +539 -0
  31. package/ar/intlayer_with_vite+preact.md +1679 -0
  32. package/ar/intlayer_with_vite+react.md +1582 -0
  33. package/ar/intlayer_with_vite+solid.md +3 -0
  34. package/ar/intlayer_with_vite+svelte.md +3 -0
  35. package/ar/intlayer_with_vite+vue.md +989 -0
  36. package/ar/introduction.md +190 -0
  37. package/ar/mcp_server.md +150 -0
  38. package/ar/packages/@intlayer/api/index.md +31 -0
  39. package/ar/packages/@intlayer/chokidar/index.md +31 -0
  40. package/ar/packages/@intlayer/cli/index.md +1 -0
  41. package/ar/packages/@intlayer/config/index.md +116 -0
  42. package/ar/packages/@intlayer/core/index.md +25 -0
  43. package/ar/packages/@intlayer/design-system/index.md +21 -0
  44. package/ar/packages/@intlayer/dictionary-entry/index.md +21 -0
  45. package/ar/packages/@intlayer/editor/index.md +21 -0
  46. package/ar/packages/@intlayer/editor-react/index.md +21 -0
  47. package/ar/packages/@intlayer/webpack/index.md +35 -0
  48. package/ar/packages/angular-intlayer/index.md +3 -0
  49. package/ar/packages/express-intlayer/index.md +232 -0
  50. package/ar/packages/express-intlayer/t.md +448 -0
  51. package/ar/packages/intlayer/getConfiguration.md +120 -0
  52. package/ar/packages/intlayer/getEnumeration.md +138 -0
  53. package/ar/packages/intlayer/getHTMLTextDir.md +97 -0
  54. package/ar/packages/intlayer/getLocaleLang.md +61 -0
  55. package/ar/packages/intlayer/getLocaleName.md +93 -0
  56. package/ar/packages/intlayer/getLocalizedUrl.md +221 -0
  57. package/ar/packages/intlayer/getMultilingualUrls.md +198 -0
  58. package/ar/packages/intlayer/getPathWithoutLocale.md +50 -0
  59. package/ar/packages/intlayer/getTranslation.md +175 -0
  60. package/ar/packages/intlayer/getTranslationContent.md +175 -0
  61. package/ar/packages/intlayer/index.md +254 -0
  62. package/ar/packages/intlayer-cli/index.md +41 -0
  63. package/ar/packages/intlayer-editor/index.md +113 -0
  64. package/ar/packages/lynx-intlayer/index.md +58 -0
  65. package/ar/packages/next-intlayer/index.md +267 -0
  66. package/ar/packages/next-intlayer/t.md +341 -0
  67. package/ar/packages/next-intlayer/useDictionary.md +248 -0
  68. package/ar/packages/next-intlayer/useIntlayer.md +237 -0
  69. package/ar/packages/next-intlayer/useIntlayerAsync.md +211 -0
  70. package/ar/packages/next-intlayer/useLocale.md +105 -0
  71. package/ar/packages/preact-intlayer/index.md +3 -0
  72. package/ar/packages/react-intlayer/index.md +261 -0
  73. package/ar/packages/react-intlayer/t.md +283 -0
  74. package/ar/packages/react-intlayer/useDictionary.md +268 -0
  75. package/ar/packages/react-intlayer/useIntlayer.md +225 -0
  76. package/ar/packages/react-intlayer/useIntlayerAsync.md +226 -0
  77. package/ar/packages/react-intlayer/useLocale.md +184 -0
  78. package/ar/packages/react-native-intlayer/index.md +57 -0
  79. package/ar/packages/react-scripts-intlayer/index.md +57 -0
  80. package/ar/packages/solid-intlayer/index.md +3 -0
  81. package/ar/packages/svelte-intlayer/index.md +3 -0
  82. package/ar/packages/vite-intlayer/index.md +53 -0
  83. package/ar/packages/vue-intlayer/index.md +3 -0
  84. package/ar/per_locale_file.md +298 -0
  85. package/ar/privacy_notice.md +61 -0
  86. package/ar/roadmap.md +208 -0
  87. package/ar/terms_of_service.md +33 -0
  88. package/ar/vs_code_extension.md +139 -0
  89. package/de/CI_CD.md +149 -0
  90. package/de/angular-intlayer/index.md +3 -0
  91. package/de/autoFill.md +157 -0
  92. package/de/configuration.md +501 -0
  93. package/de/dictionary/condition.md +213 -0
  94. package/de/dictionary/content_extention_customization.md +81 -0
  95. package/de/dictionary/enumeration.md +221 -0
  96. package/de/dictionary/file.md +207 -0
  97. package/de/dictionary/function_fetching.md +190 -0
  98. package/de/dictionary/get_started.md +466 -0
  99. package/de/dictionary/insertion.md +167 -0
  100. package/de/dictionary/markdown.md +345 -0
  101. package/de/dictionary/nesting.md +252 -0
  102. package/de/dictionary/translation.md +287 -0
  103. package/de/header.md +5 -0
  104. package/de/how_works_intlayer.md +216 -0
  105. package/de/index.md +125 -0
  106. package/de/insertion.md +0 -0
  107. package/de/interest_of_intlayer.md +132 -0
  108. package/de/intlayer_CMS.md +334 -0
  109. package/de/intlayer_cli.md +274 -0
  110. package/de/intlayer_visual_editor.md +210 -0
  111. package/de/intlayer_with_angular.md +3 -0
  112. package/de/intlayer_with_create_react_app.md +1200 -0
  113. package/de/intlayer_with_express.md +268 -0
  114. package/de/intlayer_with_lynx+react.md +482 -0
  115. package/de/intlayer_with_nextjs_14.md +1258 -0
  116. package/de/intlayer_with_nextjs_15.md +1306 -0
  117. package/de/intlayer_with_nextjs_page_router.md +1087 -0
  118. package/de/intlayer_with_react_native+expo.md +539 -0
  119. package/de/intlayer_with_vite+preact.md +1701 -0
  120. package/de/intlayer_with_vite+react.md +1584 -0
  121. package/de/intlayer_with_vite+solid.md +3 -0
  122. package/de/intlayer_with_vite+svelte.md +3 -0
  123. package/de/intlayer_with_vite+vue.md +989 -0
  124. package/de/introduction.md +186 -0
  125. package/de/mcp_server.md +150 -0
  126. package/de/packages/@intlayer/api/index.md +31 -0
  127. package/de/packages/@intlayer/chokidar/index.md +31 -0
  128. package/de/packages/@intlayer/cli/index.md +21 -0
  129. package/de/packages/@intlayer/config/index.md +116 -0
  130. package/de/packages/@intlayer/core/index.md +25 -0
  131. package/de/packages/@intlayer/design-system/index.md +21 -0
  132. package/de/packages/@intlayer/dictionary-entry/index.md +21 -0
  133. package/de/packages/@intlayer/editor/index.md +21 -0
  134. package/de/packages/@intlayer/editor-react/index.md +21 -0
  135. package/de/packages/@intlayer/webpack/index.md +35 -0
  136. package/de/packages/angular-intlayer/index.md +31 -0
  137. package/de/packages/express-intlayer/index.md +229 -0
  138. package/de/packages/express-intlayer/t.md +432 -0
  139. package/de/packages/intlayer/getConfiguration.md +120 -0
  140. package/de/packages/intlayer/getEnumeration.md +140 -0
  141. package/de/packages/intlayer/getHTMLTextDir.md +97 -0
  142. package/de/packages/intlayer/getLocaleLang.md +57 -0
  143. package/de/packages/intlayer/getLocaleName.md +93 -0
  144. package/de/packages/intlayer/getLocalizedUrl.md +221 -0
  145. package/de/packages/intlayer/getMultilingualUrls.md +198 -0
  146. package/de/packages/intlayer/getPathWithoutLocale.md +50 -0
  147. package/de/packages/intlayer/getTranslation.md +166 -0
  148. package/de/packages/intlayer/getTranslationContent.md +166 -0
  149. package/de/packages/intlayer/index.md +478 -0
  150. package/de/packages/intlayer-cli/index.md +41 -0
  151. package/de/packages/intlayer-editor/index.md +113 -0
  152. package/de/packages/lynx-intlayer/index.md +58 -0
  153. package/de/packages/next-intlayer/index.md +263 -0
  154. package/de/packages/next-intlayer/t.md +325 -0
  155. package/de/packages/next-intlayer/useDictionary.md +242 -0
  156. package/de/packages/next-intlayer/useIntlayer.md +237 -0
  157. package/de/packages/next-intlayer/useIntlayerAsync.md +211 -0
  158. package/de/packages/next-intlayer/useLocale.md +105 -0
  159. package/de/packages/preact-intlayer/index.md +3 -0
  160. package/de/packages/react-intlayer/index.md +260 -0
  161. package/de/packages/react-intlayer/t.md +277 -0
  162. package/de/packages/react-intlayer/useDictionary.md +260 -0
  163. package/de/packages/react-intlayer/useIntlayer.md +225 -0
  164. package/de/packages/react-intlayer/useIntlayerAsync.md +226 -0
  165. package/de/packages/react-intlayer/useLocale.md +184 -0
  166. package/de/packages/react-native-intlayer/index.md +57 -0
  167. package/de/packages/react-scripts-intlayer/index.md +57 -0
  168. package/de/packages/solid-intlayer/index.md +3 -0
  169. package/de/packages/svelte-intlayer/index.md +3 -0
  170. package/de/packages/vite-intlayer/index.md +53 -0
  171. package/de/packages/vue-intlayer/index.md +3 -0
  172. package/de/per_locale_file.md +298 -0
  173. package/de/privacy_notice.md +61 -0
  174. package/de/roadmap.md +206 -0
  175. package/de/terms_of_service.md +33 -0
  176. package/de/vs_code_extension.md +139 -0
  177. package/en/CI_CD.md +149 -0
  178. package/en/autoFill.md +157 -0
  179. package/en/configuration.md +506 -0
  180. package/en/dictionary/condition.md +213 -0
  181. package/en/dictionary/content_extention_customization.md +81 -0
  182. package/en/dictionary/enumeration.md +221 -0
  183. package/en/dictionary/file.md +198 -0
  184. package/en/dictionary/function_fetching.md +190 -0
  185. package/en/dictionary/get_started.md +504 -0
  186. package/en/dictionary/insertion.md +167 -0
  187. package/en/dictionary/markdown.md +355 -0
  188. package/en/dictionary/nesting.md +249 -0
  189. package/en/dictionary/translation.md +285 -0
  190. package/en/frequent_questions/build_dictionaries.md +37 -0
  191. package/en/frequent_questions/domain_routing.md +92 -0
  192. package/en/frequent_questions/esbuild_error.md +9 -0
  193. package/en/frequent_questions/get_locale_cookie.md +121 -0
  194. package/en/frequent_questions/intlayer_command_undefined.md +135 -0
  195. package/en/frequent_questions/locale_incorect_in_url.md +52 -0
  196. package/en/frequent_questions/static_rendering.md +24 -0
  197. package/en/frequent_questions/unknown_command.md +76 -0
  198. package/en/header.md +5 -0
  199. package/en/how_works_intlayer.md +219 -0
  200. package/en/index.md +139 -0
  201. package/en/interest_of_intlayer.md +133 -0
  202. package/en/intlayer_CMS.md +334 -0
  203. package/en/intlayer_cli.md +309 -0
  204. package/en/intlayer_visual_editor.md +244 -0
  205. package/en/intlayer_with_angular.md +139 -0
  206. package/en/intlayer_with_create_react_app.md +1209 -0
  207. package/en/intlayer_with_express.md +391 -0
  208. package/en/intlayer_with_lynx+react.md +483 -0
  209. package/en/intlayer_with_nextjs_14.md +1298 -0
  210. package/en/intlayer_with_nextjs_15.md +1347 -0
  211. package/en/intlayer_with_nextjs_page_router.md +1126 -0
  212. package/en/intlayer_with_react_native+expo.md +630 -0
  213. package/en/intlayer_with_vite+preact.md +1659 -0
  214. package/en/intlayer_with_vite+react.md +1605 -0
  215. package/en/intlayer_with_vite+solid.md +254 -0
  216. package/en/intlayer_with_vite+svelte.md +254 -0
  217. package/en/intlayer_with_vite+vue.md +1000 -0
  218. package/en/introduction.md +185 -0
  219. package/en/mcp_server.md +150 -0
  220. package/en/packages/@intlayer/api/index.md +31 -0
  221. package/en/packages/@intlayer/chokidar/index.md +31 -0
  222. package/en/packages/@intlayer/cli/index.md +21 -0
  223. package/en/packages/@intlayer/config/index.md +116 -0
  224. package/en/packages/@intlayer/core/index.md +25 -0
  225. package/en/packages/@intlayer/design-system/index.md +21 -0
  226. package/en/packages/@intlayer/dictionary-entry/index.md +21 -0
  227. package/en/packages/@intlayer/editor/index.md +21 -0
  228. package/en/packages/@intlayer/editor-react/index.md +21 -0
  229. package/en/packages/@intlayer/webpack/index.md +35 -0
  230. package/en/packages/angular-intlayer/index.md +31 -0
  231. package/en/packages/express-intlayer/index.md +229 -0
  232. package/en/packages/express-intlayer/t.md +432 -0
  233. package/en/packages/intlayer/getConfiguration.md +120 -0
  234. package/en/packages/intlayer/getEnumeration.md +138 -0
  235. package/en/packages/intlayer/getHTMLTextDir.md +97 -0
  236. package/en/packages/intlayer/getLocaleLang.md +57 -0
  237. package/en/packages/intlayer/getLocaleName.md +93 -0
  238. package/en/packages/intlayer/getLocalizedUrl.md +221 -0
  239. package/en/packages/intlayer/getMultilingualUrls.md +198 -0
  240. package/en/packages/intlayer/getPathWithoutLocale.md +50 -0
  241. package/en/packages/intlayer/getTranslation.md +166 -0
  242. package/en/packages/intlayer/getTranslationContent.md +166 -0
  243. package/en/packages/intlayer/index.md +476 -0
  244. package/en/packages/intlayer-cli/index.md +41 -0
  245. package/en/packages/intlayer-editor/index.md +113 -0
  246. package/en/packages/lynx-intlayer/index.md +60 -0
  247. package/en/packages/next-intlayer/index.md +263 -0
  248. package/en/packages/next-intlayer/t.md +326 -0
  249. package/en/packages/next-intlayer/useDictionary.md +242 -0
  250. package/en/packages/next-intlayer/useIntlayer.md +237 -0
  251. package/en/packages/next-intlayer/useIntlayerAsync.md +211 -0
  252. package/en/packages/next-intlayer/useLocale.md +105 -0
  253. package/en/packages/preact-intlayer/index.md +31 -0
  254. package/en/packages/react-intlayer/index.md +257 -0
  255. package/en/packages/react-intlayer/t.md +277 -0
  256. package/en/packages/react-intlayer/useDictionary.md +260 -0
  257. package/en/packages/react-intlayer/useIntlayer.md +225 -0
  258. package/en/packages/react-intlayer/useIntlayerAsync.md +226 -0
  259. package/en/packages/react-intlayer/useLocale.md +184 -0
  260. package/en/packages/react-native-intlayer/index.md +59 -0
  261. package/en/packages/react-scripts-intlayer/index.md +57 -0
  262. package/en/packages/solid-intlayer/index.md +31 -0
  263. package/en/packages/svelte-intlayer/index.md +31 -0
  264. package/en/packages/vite-intlayer/index.md +53 -0
  265. package/en/packages/vue-intlayer/index.md +31 -0
  266. package/en/per_locale_file.md +297 -0
  267. package/en/privacy_notice.md +61 -0
  268. package/en/roadmap.md +270 -0
  269. package/en/t.md +163 -0
  270. package/en/terms_of_service.md +33 -0
  271. package/en/vs_code_extension.md +129 -0
  272. package/en-GB/CI_CD.md +149 -0
  273. package/en-GB/autoFill.md +0 -0
  274. package/en-GB/configuration.md +490 -0
  275. package/en-GB/dictionary/condition.md +213 -0
  276. package/en-GB/dictionary/content_extention_customization.md +83 -0
  277. package/en-GB/dictionary/enumeration.md +221 -0
  278. package/en-GB/dictionary/file.md +201 -0
  279. package/en-GB/dictionary/function_fetching.md +190 -0
  280. package/en-GB/dictionary/get_started.md +466 -0
  281. package/en-GB/dictionary/insertion.md +167 -0
  282. package/en-GB/dictionary/markdown.md +343 -0
  283. package/en-GB/dictionary/nesting.md +249 -0
  284. package/en-GB/dictionary/translation.md +285 -0
  285. package/en-GB/header.md +1 -0
  286. package/en-GB/how_works_intlayer.md +217 -0
  287. package/en-GB/index.md +142 -0
  288. package/en-GB/interest_of_intlayer.md +123 -0
  289. package/en-GB/intlayer_CMS.md +334 -0
  290. package/en-GB/intlayer_cli.md +239 -0
  291. package/en-GB/intlayer_visual_editor.md +210 -0
  292. package/en-GB/intlayer_with_angular.md +3 -0
  293. package/en-GB/intlayer_with_create_react_app.md +1192 -0
  294. package/en-GB/intlayer_with_express.md +267 -0
  295. package/en-GB/intlayer_with_lynx+react.md +484 -0
  296. package/en-GB/intlayer_with_nextjs_14.md +1267 -0
  297. package/en-GB/intlayer_with_nextjs_15.md +1308 -0
  298. package/en-GB/intlayer_with_nextjs_page_router.md +1087 -0
  299. package/en-GB/intlayer_with_react_native+expo.md +539 -0
  300. package/en-GB/intlayer_with_vite+preact.md +1648 -0
  301. package/en-GB/intlayer_with_vite+react.md +1430 -0
  302. package/en-GB/intlayer_with_vite+solid.md +3 -0
  303. package/en-GB/intlayer_with_vite+svelte.md +3 -0
  304. package/en-GB/intlayer_with_vite+vue.md +993 -0
  305. package/en-GB/introduction.md +201 -0
  306. package/en-GB/mcp_server.md +150 -0
  307. package/en-GB/packages/@intlayer/api/index.md +31 -0
  308. package/en-GB/packages/@intlayer/chokidar/index.md +31 -0
  309. package/en-GB/packages/@intlayer/cli/index.md +21 -0
  310. package/en-GB/packages/@intlayer/config/index.md +116 -0
  311. package/en-GB/packages/@intlayer/core/index.md +25 -0
  312. package/en-GB/packages/@intlayer/design-system/index.md +21 -0
  313. package/en-GB/packages/@intlayer/dictionary-entry/index.md +21 -0
  314. package/en-GB/packages/@intlayer/editor/index.md +21 -0
  315. package/en-GB/packages/@intlayer/editor-react/index.md +21 -0
  316. package/en-GB/packages/@intlayer/webpack/index.md +35 -0
  317. package/en-GB/packages/angular-intlayer/index.md +3 -0
  318. package/en-GB/packages/express-intlayer/index.md +229 -0
  319. package/en-GB/packages/express-intlayer/t.md +432 -0
  320. package/en-GB/packages/intlayer/getConfiguration.md +120 -0
  321. package/en-GB/packages/intlayer/getEnumeration.md +140 -0
  322. package/en-GB/packages/intlayer/getHTMLTextDir.md +97 -0
  323. package/en-GB/packages/intlayer/getLocaleLang.md +57 -0
  324. package/en-GB/packages/intlayer/getLocaleName.md +93 -0
  325. package/en-GB/packages/intlayer/getLocalizedUrl.md +221 -0
  326. package/en-GB/packages/intlayer/getMultilingualUrls.md +198 -0
  327. package/en-GB/packages/intlayer/getPathWithoutLocale.md +50 -0
  328. package/en-GB/packages/intlayer/getTranslation.md +166 -0
  329. package/en-GB/packages/intlayer/getTranslationContent.md +166 -0
  330. package/en-GB/packages/intlayer/index.md +476 -0
  331. package/en-GB/packages/intlayer-cli/index.md +41 -0
  332. package/en-GB/packages/intlayer-editor/index.md +113 -0
  333. package/en-GB/packages/lynx-intlayer/index.md +58 -0
  334. package/en-GB/packages/next-intlayer/index.md +263 -0
  335. package/en-GB/packages/next-intlayer/t.md +326 -0
  336. package/en-GB/packages/next-intlayer/useDictionary.md +242 -0
  337. package/en-GB/packages/next-intlayer/useIntlayer.md +237 -0
  338. package/en-GB/packages/next-intlayer/useIntlayerAsync.md +211 -0
  339. package/en-GB/packages/next-intlayer/useLocale.md +105 -0
  340. package/en-GB/packages/preact-intlayer/index.md +3 -0
  341. package/en-GB/packages/react-intlayer/index.md +257 -0
  342. package/en-GB/packages/react-intlayer/t.md +277 -0
  343. package/en-GB/packages/react-intlayer/useDictionary.md +260 -0
  344. package/en-GB/packages/react-intlayer/useIntlayer.md +225 -0
  345. package/en-GB/packages/react-intlayer/useIntlayerAsync.md +226 -0
  346. package/en-GB/packages/react-intlayer/useLocale.md +184 -0
  347. package/en-GB/packages/react-native-intlayer/index.md +57 -0
  348. package/en-GB/packages/react-scripts-intlayer/index.md +57 -0
  349. package/en-GB/packages/solid-intlayer/index.md +3 -0
  350. package/en-GB/packages/svelte-intlayer/index.md +3 -0
  351. package/en-GB/packages/vite-intlayer/index.md +53 -0
  352. package/en-GB/packages/vue-intlayer/index.md +3 -0
  353. package/en-GB/per_locale_file.md +298 -0
  354. package/en-GB/privacy_notice.md +57 -0
  355. package/en-GB/roadmap.md +206 -0
  356. package/en-GB/terms_of_service.md +33 -0
  357. package/en-GB/vs_code_extension.md +139 -0
  358. package/es/CI_CD.md +149 -0
  359. package/es/autoFill.md +157 -0
  360. package/es/configuration.md +503 -0
  361. package/es/dictionary/condition.md +213 -0
  362. package/es/dictionary/content_extention_customization.md +81 -0
  363. package/es/dictionary/enumeration.md +221 -0
  364. package/es/dictionary/file.md +206 -0
  365. package/es/dictionary/function_fetching.md +190 -0
  366. package/es/dictionary/get_started.md +466 -0
  367. package/es/dictionary/insertion.md +161 -0
  368. package/es/dictionary/markdown.md +338 -0
  369. package/es/dictionary/nesting.md +249 -0
  370. package/es/dictionary/translation.md +287 -0
  371. package/es/header.md +5 -0
  372. package/es/how_works_intlayer.md +217 -0
  373. package/es/index.md +122 -0
  374. package/es/interest_of_intlayer.md +132 -0
  375. package/es/intlayer_CMS.md +334 -0
  376. package/es/intlayer_cli.md +274 -0
  377. package/es/intlayer_visual_editor.md +210 -0
  378. package/es/intlayer_with_angular.md +3 -0
  379. package/es/intlayer_with_create_react_app.md +1192 -0
  380. package/es/intlayer_with_express.md +276 -0
  381. package/es/intlayer_with_lynx+react.md +475 -0
  382. package/es/intlayer_with_nextjs_14.md +1258 -0
  383. package/es/intlayer_with_nextjs_15.md +1308 -0
  384. package/es/intlayer_with_nextjs_page_router.md +1088 -0
  385. package/es/intlayer_with_react_native+expo.md +180 -0
  386. package/es/intlayer_with_vite+preact.md +1637 -0
  387. package/es/intlayer_with_vite+react.md +1592 -0
  388. package/es/intlayer_with_vite+solid.md +3 -0
  389. package/es/intlayer_with_vite+svelte.md +3 -0
  390. package/es/intlayer_with_vite+vue.md +947 -0
  391. package/es/introduction.md +184 -0
  392. package/es/mcp_server.md +150 -0
  393. package/es/packages/@intlayer/api/index.md +31 -0
  394. package/es/packages/@intlayer/chokidar/index.md +31 -0
  395. package/es/packages/@intlayer/cli/index.md +21 -0
  396. package/es/packages/@intlayer/config/index.md +116 -0
  397. package/es/packages/@intlayer/core/index.md +25 -0
  398. package/es/packages/@intlayer/design-system/index.md +21 -0
  399. package/es/packages/@intlayer/dictionary-entry/index.md +21 -0
  400. package/es/packages/@intlayer/editor/index.md +21 -0
  401. package/es/packages/@intlayer/editor-react/index.md +21 -0
  402. package/es/packages/@intlayer/webpack/index.md +35 -0
  403. package/es/packages/angular-intlayer/index.md +3 -0
  404. package/es/packages/express-intlayer/index.md +229 -0
  405. package/es/packages/express-intlayer/t.md +432 -0
  406. package/es/packages/intlayer/getConfiguration.md +120 -0
  407. package/es/packages/intlayer/getEnumeration.md +138 -0
  408. package/es/packages/intlayer/getHTMLTextDir.md +97 -0
  409. package/es/packages/intlayer/getLocaleLang.md +57 -0
  410. package/es/packages/intlayer/getLocaleName.md +93 -0
  411. package/es/packages/intlayer/getLocalizedUrl.md +221 -0
  412. package/es/packages/intlayer/getMultilingualUrls.md +198 -0
  413. package/es/packages/intlayer/getPathWithoutLocale.md +50 -0
  414. package/es/packages/intlayer/getTranslation.md +166 -0
  415. package/es/packages/intlayer/getTranslationContent.md +166 -0
  416. package/es/packages/intlayer/index.md +478 -0
  417. package/es/packages/intlayer-cli/index.md +41 -0
  418. package/es/packages/intlayer-editor/index.md +115 -0
  419. package/es/packages/lynx-intlayer/index.md +58 -0
  420. package/es/packages/next-intlayer/index.md +263 -0
  421. package/es/packages/next-intlayer/t.md +325 -0
  422. package/es/packages/next-intlayer/useDictionary.md +242 -0
  423. package/es/packages/next-intlayer/useIntlayer.md +237 -0
  424. package/es/packages/next-intlayer/useIntlayerAsync.md +211 -0
  425. package/es/packages/next-intlayer/useLocale.md +105 -0
  426. package/es/packages/preact-intlayer/index.md +3 -0
  427. package/es/packages/react-intlayer/index.md +263 -0
  428. package/es/packages/react-intlayer/t.md +277 -0
  429. package/es/packages/react-intlayer/useDictionary.md +270 -0
  430. package/es/packages/react-intlayer/useIntlayer.md +225 -0
  431. package/es/packages/react-intlayer/useIntlayerAsync.md +226 -0
  432. package/es/packages/react-intlayer/useLocale.md +184 -0
  433. package/es/packages/react-native-intlayer/index.md +57 -0
  434. package/es/packages/react-scripts-intlayer/index.md +57 -0
  435. package/es/packages/solid-intlayer/index.md +3 -0
  436. package/es/packages/svelte-intlayer/index.md +5 -0
  437. package/es/packages/vite-intlayer/index.md +53 -0
  438. package/es/packages/vue-intlayer/index.md +3 -0
  439. package/es/per_locale_file.md +293 -0
  440. package/es/privacy_notice.md +61 -0
  441. package/es/roadmap.md +157 -0
  442. package/es/terms_of_service.md +33 -0
  443. package/es/vs_code_extension.md +139 -0
  444. package/fr/CI_CD.md +149 -0
  445. package/fr/autoFill.md +157 -0
  446. package/fr/configuration.md +481 -0
  447. package/fr/dictionary/condition.md +213 -0
  448. package/fr/dictionary/content_extention_customization.md +81 -0
  449. package/fr/dictionary/enumeration.md +221 -0
  450. package/fr/dictionary/file.md +206 -0
  451. package/fr/dictionary/function_fetching.md +190 -0
  452. package/fr/dictionary/get_started.md +466 -0
  453. package/fr/dictionary/insertion.md +161 -0
  454. package/fr/dictionary/markdown.md +335 -0
  455. package/fr/dictionary/nesting.md +249 -0
  456. package/fr/dictionary/translation.md +287 -0
  457. package/fr/header.md +5 -0
  458. package/fr/how_works_intlayer.md +217 -0
  459. package/fr/index.md +122 -0
  460. package/fr/interest_of_intlayer.md +132 -0
  461. package/fr/intlayer_CMS.md +334 -0
  462. package/fr/intlayer_cli.md +274 -0
  463. package/fr/intlayer_visual_editor.md +210 -0
  464. package/fr/intlayer_with_angular.md +3 -0
  465. package/fr/intlayer_with_create_react_app.md +1192 -0
  466. package/fr/intlayer_with_express.md +270 -0
  467. package/fr/intlayer_with_lynx+react.md +466 -0
  468. package/fr/intlayer_with_nextjs_14.md +1258 -0
  469. package/fr/intlayer_with_nextjs_15.md +1308 -0
  470. package/fr/intlayer_with_nextjs_page_router.md +1085 -0
  471. package/fr/intlayer_with_react_native+expo.md +535 -0
  472. package/fr/intlayer_with_vite+preact.md +1621 -0
  473. package/fr/intlayer_with_vite+react.md +1589 -0
  474. package/fr/intlayer_with_vite+solid.md +3 -0
  475. package/fr/intlayer_with_vite+svelte.md +3 -0
  476. package/fr/intlayer_with_vite+vue.md +947 -0
  477. package/fr/introduction.md +190 -0
  478. package/fr/mcp_server.md +152 -0
  479. package/fr/packages/@intlayer/api/index.md +31 -0
  480. package/fr/packages/@intlayer/chokidar/index.md +31 -0
  481. package/fr/packages/@intlayer/cli/index.md +21 -0
  482. package/fr/packages/@intlayer/config/index.md +116 -0
  483. package/fr/packages/@intlayer/core/index.md +25 -0
  484. package/fr/packages/@intlayer/design-system/index.md +21 -0
  485. package/fr/packages/@intlayer/dictionary-entry/index.md +21 -0
  486. package/fr/packages/@intlayer/editor/index.md +21 -0
  487. package/fr/packages/@intlayer/editor-react/index.md +21 -0
  488. package/fr/packages/@intlayer/webpack/index.md +35 -0
  489. package/fr/packages/angular-intlayer/index.md +3 -0
  490. package/fr/packages/express-intlayer/index.md +238 -0
  491. package/fr/packages/express-intlayer/t.md +432 -0
  492. package/fr/packages/intlayer/getConfiguration.md +120 -0
  493. package/fr/packages/intlayer/getEnumeration.md +138 -0
  494. package/fr/packages/intlayer/getHTMLTextDir.md +97 -0
  495. package/fr/packages/intlayer/getLocaleLang.md +57 -0
  496. package/fr/packages/intlayer/getLocaleName.md +93 -0
  497. package/fr/packages/intlayer/getLocalizedUrl.md +221 -0
  498. package/fr/packages/intlayer/getMultilingualUrls.md +198 -0
  499. package/fr/packages/intlayer/getPathWithoutLocale.md +50 -0
  500. package/fr/packages/intlayer/getTranslation.md +166 -0
  501. package/fr/packages/intlayer/getTranslationContent.md +166 -0
  502. package/fr/packages/intlayer/index.md +476 -0
  503. package/fr/packages/intlayer-cli/index.md +41 -0
  504. package/fr/packages/intlayer-editor/index.md +115 -0
  505. package/fr/packages/lynx-intlayer/index.md +58 -0
  506. package/fr/packages/next-intlayer/index.md +266 -0
  507. package/fr/packages/next-intlayer/t.md +325 -0
  508. package/fr/packages/next-intlayer/useDictionary.md +242 -0
  509. package/fr/packages/next-intlayer/useIntlayer.md +237 -0
  510. package/fr/packages/next-intlayer/useIntlayerAsync.md +211 -0
  511. package/fr/packages/next-intlayer/useLocale.md +105 -0
  512. package/fr/packages/preact-intlayer/index.md +3 -0
  513. package/fr/packages/react-intlayer/index.md +257 -0
  514. package/fr/packages/react-intlayer/t.md +277 -0
  515. package/fr/packages/react-intlayer/useDictionary.md +269 -0
  516. package/fr/packages/react-intlayer/useIntlayer.md +234 -0
  517. package/fr/packages/react-intlayer/useIntlayerAsync.md +226 -0
  518. package/fr/packages/react-intlayer/useLocale.md +184 -0
  519. package/fr/packages/react-native-intlayer/index.md +57 -0
  520. package/fr/packages/react-scripts-intlayer/index.md +57 -0
  521. package/fr/packages/solid-intlayer/index.md +3 -0
  522. package/fr/packages/svelte-intlayer/index.md +3 -0
  523. package/fr/packages/vite-intlayer/index.md +53 -0
  524. package/fr/packages/vue-intlayer/index.md +3 -0
  525. package/fr/per_locale_file.md +297 -0
  526. package/fr/privacy_notice.md +57 -0
  527. package/fr/roadmap.md +206 -0
  528. package/fr/terms_of_service.md +33 -0
  529. package/fr/vs_code_extension.md +139 -0
  530. package/hi/CI_CD.md +149 -0
  531. package/hi/autoFill.md +157 -0
  532. package/hi/configuration.md +509 -0
  533. package/hi/dictionary/condition.md +213 -0
  534. package/hi/dictionary/content_extention_customization.md +81 -0
  535. package/hi/dictionary/enumeration.md +221 -0
  536. package/hi/dictionary/file.md +209 -0
  537. package/hi/dictionary/function_fetching.md +188 -0
  538. package/hi/dictionary/get_started.md +490 -0
  539. package/hi/dictionary/insertion.md +167 -0
  540. package/hi/dictionary/markdown.md +344 -0
  541. package/hi/dictionary/nesting.md +249 -0
  542. package/hi/dictionary/translation.md +307 -0
  543. package/hi/header.md +7 -0
  544. package/hi/how_works_intlayer.md +217 -0
  545. package/hi/index.md +125 -0
  546. package/hi/interest_of_intlayer.md +132 -0
  547. package/hi/intlayer_CMS.md +334 -0
  548. package/hi/intlayer_cli.md +274 -0
  549. package/hi/intlayer_visual_editor.md +210 -0
  550. package/hi/intlayer_with_angular.md +3 -0
  551. package/hi/intlayer_with_create_react_app.md +1395 -0
  552. package/hi/intlayer_with_express.md +273 -0
  553. package/hi/intlayer_with_lynx+react.md +456 -0
  554. package/hi/intlayer_with_nextjs_14.md +1283 -0
  555. package/hi/intlayer_with_nextjs_15.md +1319 -0
  556. package/hi/intlayer_with_nextjs_page_router.md +1097 -0
  557. package/hi/intlayer_with_react_native+expo.md +554 -0
  558. package/hi/intlayer_with_vite+preact.md +1538 -0
  559. package/hi/intlayer_with_vite+react.md +1540 -0
  560. package/hi/intlayer_with_vite+solid.md +3 -0
  561. package/hi/intlayer_with_vite+svelte.md +3 -0
  562. package/hi/intlayer_with_vite+vue.md +840 -0
  563. package/hi/introduction.md +190 -0
  564. package/hi/mcp_server.md +150 -0
  565. package/hi/packages/@intlayer/api/index.md +31 -0
  566. package/hi/packages/@intlayer/chokidar/index.md +31 -0
  567. package/hi/packages/@intlayer/cli/index.md +21 -0
  568. package/hi/packages/@intlayer/config/index.md +116 -0
  569. package/hi/packages/@intlayer/core/index.md +25 -0
  570. package/hi/packages/@intlayer/design-system/index.md +21 -0
  571. package/hi/packages/@intlayer/dictionary-entry/index.md +21 -0
  572. package/hi/packages/@intlayer/editor/index.md +21 -0
  573. package/hi/packages/@intlayer/editor-react/index.md +21 -0
  574. package/hi/packages/@intlayer/webpack/index.md +35 -0
  575. package/hi/packages/angular-intlayer/index.md +3 -0
  576. package/hi/packages/express-intlayer/index.md +232 -0
  577. package/hi/packages/express-intlayer/t.md +445 -0
  578. package/hi/packages/intlayer/getConfiguration.md +120 -0
  579. package/hi/packages/intlayer/getEnumeration.md +138 -0
  580. package/hi/packages/intlayer/getHTMLTextDir.md +97 -0
  581. package/hi/packages/intlayer/getLocaleLang.md +57 -0
  582. package/hi/packages/intlayer/getLocaleName.md +93 -0
  583. package/hi/packages/intlayer/getLocalizedUrl.md +221 -0
  584. package/hi/packages/intlayer/getMultilingualUrls.md +198 -0
  585. package/hi/packages/intlayer/getPathWithoutLocale.md +50 -0
  586. package/hi/packages/intlayer/getTranslation.md +175 -0
  587. package/hi/packages/intlayer/getTranslationContent.md +175 -0
  588. package/hi/packages/intlayer/index.md +314 -0
  589. package/hi/packages/intlayer-cli/index.md +41 -0
  590. package/hi/packages/intlayer-editor/index.md +113 -0
  591. package/hi/packages/lynx-intlayer/index.md +58 -0
  592. package/hi/packages/next-intlayer/index.md +270 -0
  593. package/hi/packages/next-intlayer/t.md +337 -0
  594. package/hi/packages/next-intlayer/useDictionary.md +248 -0
  595. package/hi/packages/next-intlayer/useIntlayer.md +237 -0
  596. package/hi/packages/next-intlayer/useIntlayerAsync.md +211 -0
  597. package/hi/packages/next-intlayer/useLocale.md +105 -0
  598. package/hi/packages/preact-intlayer/index.md +3 -0
  599. package/hi/packages/react-intlayer/index.md +261 -0
  600. package/hi/packages/react-intlayer/t.md +283 -0
  601. package/hi/packages/react-intlayer/useDictionary.md +268 -0
  602. package/hi/packages/react-intlayer/useIntlayer.md +225 -0
  603. package/hi/packages/react-intlayer/useIntlayerAsync.md +226 -0
  604. package/hi/packages/react-intlayer/useLocale.md +184 -0
  605. package/hi/packages/react-native-intlayer/index.md +57 -0
  606. package/hi/packages/react-scripts-intlayer/index.md +57 -0
  607. package/hi/packages/solid-intlayer/index.md +3 -0
  608. package/hi/packages/svelte-intlayer/index.md +3 -0
  609. package/hi/packages/vite-intlayer/index.md +53 -0
  610. package/hi/packages/vue-intlayer/index.md +3 -0
  611. package/hi/per_locale_file.md +298 -0
  612. package/hi/privacy_notice.md +61 -0
  613. package/hi/roadmap.md +206 -0
  614. package/hi/terms_of_service.md +33 -0
  615. package/hi/vs_code_extension.md +139 -0
  616. package/index.cjs +1265 -0
  617. package/index.d.ts +100 -0
  618. package/it/CI_CD.md +149 -0
  619. package/it/autoFill.md +157 -0
  620. package/it/configuration.md +503 -0
  621. package/it/dictionary/condition.md +213 -0
  622. package/it/dictionary/content_extention_customization.md +81 -0
  623. package/it/dictionary/enumeration.md +221 -0
  624. package/it/dictionary/file.md +207 -0
  625. package/it/dictionary/function_fetching.md +190 -0
  626. package/it/dictionary/get_started.md +466 -0
  627. package/it/dictionary/insertion.md +161 -0
  628. package/it/dictionary/markdown.md +343 -0
  629. package/it/dictionary/nesting.md +249 -0
  630. package/it/dictionary/translation.md +287 -0
  631. package/it/header.md +7 -0
  632. package/it/how_works_intlayer.md +217 -0
  633. package/it/index.md +125 -0
  634. package/it/interest_of_intlayer.md +132 -0
  635. package/it/intlayer_CMS.md +334 -0
  636. package/it/intlayer_cli.md +274 -0
  637. package/it/intlayer_visual_editor.md +210 -0
  638. package/it/intlayer_with_angular.md +3 -0
  639. package/it/intlayer_with_create_react_app.md +413 -0
  640. package/it/intlayer_with_express.md +267 -0
  641. package/it/intlayer_with_lynx+react.md +482 -0
  642. package/it/intlayer_with_nextjs_14.md +1269 -0
  643. package/it/intlayer_with_nextjs_15.md +1319 -0
  644. package/it/intlayer_with_nextjs_page_router.md +1095 -0
  645. package/it/intlayer_with_react_native+expo.md +261 -0
  646. package/it/intlayer_with_vite+preact.md +1681 -0
  647. package/it/intlayer_with_vite+react.md +1580 -0
  648. package/it/intlayer_with_vite+solid.md +3 -0
  649. package/it/intlayer_with_vite+svelte.md +3 -0
  650. package/it/intlayer_with_vite+vue.md +989 -0
  651. package/it/introduction.md +192 -0
  652. package/it/mcp_server.md +152 -0
  653. package/it/packages/@intlayer/api/index.md +31 -0
  654. package/it/packages/@intlayer/chokidar/index.md +31 -0
  655. package/it/packages/@intlayer/cli/index.md +21 -0
  656. package/it/packages/@intlayer/config/index.md +116 -0
  657. package/it/packages/@intlayer/core/index.md +25 -0
  658. package/it/packages/@intlayer/design-system/index.md +21 -0
  659. package/it/packages/@intlayer/dictionary-entry/index.md +21 -0
  660. package/it/packages/@intlayer/editor/index.md +21 -0
  661. package/it/packages/@intlayer/editor-react/index.md +21 -0
  662. package/it/packages/@intlayer/webpack/index.md +35 -0
  663. package/it/packages/angular-intlayer/index.md +3 -0
  664. package/it/packages/express-intlayer/index.md +229 -0
  665. package/it/packages/express-intlayer/t.md +432 -0
  666. package/it/packages/intlayer/getConfiguration.md +120 -0
  667. package/it/packages/intlayer/getEnumeration.md +138 -0
  668. package/it/packages/intlayer/getHTMLTextDir.md +97 -0
  669. package/it/packages/intlayer/getLocaleLang.md +57 -0
  670. package/it/packages/intlayer/getLocaleName.md +93 -0
  671. package/it/packages/intlayer/getLocalizedUrl.md +221 -0
  672. package/it/packages/intlayer/getMultilingualUrls.md +200 -0
  673. package/it/packages/intlayer/getPathWithoutLocale.md +50 -0
  674. package/it/packages/intlayer/getTranslation.md +166 -0
  675. package/it/packages/intlayer/getTranslationContent.md +166 -0
  676. package/it/packages/intlayer/index.md +479 -0
  677. package/it/packages/intlayer-cli/index.md +41 -0
  678. package/it/packages/intlayer-editor/index.md +113 -0
  679. package/it/packages/lynx-intlayer/index.md +58 -0
  680. package/it/packages/next-intlayer/index.md +267 -0
  681. package/it/packages/next-intlayer/t.md +326 -0
  682. package/it/packages/next-intlayer/useDictionary.md +242 -0
  683. package/it/packages/next-intlayer/useIntlayer.md +237 -0
  684. package/it/packages/next-intlayer/useIntlayerAsync.md +211 -0
  685. package/it/packages/next-intlayer/useLocale.md +105 -0
  686. package/it/packages/preact-intlayer/index.md +3 -0
  687. package/it/packages/react-intlayer/index.md +260 -0
  688. package/it/packages/react-intlayer/t.md +277 -0
  689. package/it/packages/react-intlayer/useDictionary.md +260 -0
  690. package/it/packages/react-intlayer/useIntlayer.md +225 -0
  691. package/it/packages/react-intlayer/useIntlayerAsync.md +226 -0
  692. package/it/packages/react-intlayer/useLocale.md +184 -0
  693. package/it/packages/react-native-intlayer/index.md +57 -0
  694. package/it/packages/react-scripts-intlayer/index.md +57 -0
  695. package/it/packages/solid-intlayer/index.md +5 -0
  696. package/it/packages/svelte-intlayer/index.md +3 -0
  697. package/it/packages/vite-intlayer/index.md +53 -0
  698. package/it/packages/vue-intlayer/index.md +5 -0
  699. package/it/per_locale_file.md +298 -0
  700. package/it/privacy_notice.md +61 -0
  701. package/it/roadmap.md +206 -0
  702. package/it/terms_of_service.md +33 -0
  703. package/it/vs_code_extension.md +139 -0
  704. package/ja/CI_CD.md +149 -0
  705. package/ja/autoFill.md +157 -0
  706. package/ja/configuration.md +507 -0
  707. package/ja/dictionary/condition.md +213 -0
  708. package/ja/dictionary/content_extention_customization.md +81 -0
  709. package/ja/dictionary/enumeration.md +221 -0
  710. package/ja/dictionary/file.md +209 -0
  711. package/ja/dictionary/function_fetching.md +190 -0
  712. package/ja/dictionary/get_started.md +466 -0
  713. package/ja/dictionary/insertion.md +161 -0
  714. package/ja/dictionary/markdown.md +343 -0
  715. package/ja/dictionary/nesting.md +249 -0
  716. package/ja/dictionary/translation.md +287 -0
  717. package/ja/header.md +7 -0
  718. package/ja/how_works_intlayer.md +217 -0
  719. package/ja/index.md +125 -0
  720. package/ja/interest_of_intlayer.md +132 -0
  721. package/ja/intlayer_CMS.md +334 -0
  722. package/ja/intlayer_cli.md +274 -0
  723. package/ja/intlayer_visual_editor.md +213 -0
  724. package/ja/intlayer_with_angular.md +3 -0
  725. package/ja/intlayer_with_create_react_app.md +1186 -0
  726. package/ja/intlayer_with_express.md +267 -0
  727. package/ja/intlayer_with_lynx+react.md +482 -0
  728. package/ja/intlayer_with_nextjs_14.md +1256 -0
  729. package/ja/intlayer_with_nextjs_15.md +1308 -0
  730. package/ja/intlayer_with_nextjs_page_router.md +1085 -0
  731. package/ja/intlayer_with_react_native+expo.md +537 -0
  732. package/ja/intlayer_with_vite+preact.md +1601 -0
  733. package/ja/intlayer_with_vite+react.md +1555 -0
  734. package/ja/intlayer_with_vite+solid.md +3 -0
  735. package/ja/intlayer_with_vite+svelte.md +3 -0
  736. package/ja/intlayer_with_vite+vue.md +990 -0
  737. package/ja/introduction.md +186 -0
  738. package/ja/mcp_server.md +150 -0
  739. package/ja/packages/@intlayer/api/index.md +31 -0
  740. package/ja/packages/@intlayer/chokidar/index.md +31 -0
  741. package/ja/packages/@intlayer/cli/index.md +21 -0
  742. package/ja/packages/@intlayer/config/index.md +116 -0
  743. package/ja/packages/@intlayer/core/index.md +25 -0
  744. package/ja/packages/@intlayer/design-system/index.md +21 -0
  745. package/ja/packages/@intlayer/dictionary-entry/index.md +21 -0
  746. package/ja/packages/@intlayer/editor/index.md +21 -0
  747. package/ja/packages/@intlayer/editor-react/index.md +21 -0
  748. package/ja/packages/@intlayer/webpack/index.md +35 -0
  749. package/ja/packages/angular-intlayer/index.md +3 -0
  750. package/ja/packages/express-intlayer/index.md +229 -0
  751. package/ja/packages/express-intlayer/t.md +432 -0
  752. package/ja/packages/intlayer/getConfiguration.md +120 -0
  753. package/ja/packages/intlayer/getEnumeration.md +140 -0
  754. package/ja/packages/intlayer/getHTMLTextDir.md +97 -0
  755. package/ja/packages/intlayer/getLocaleLang.md +59 -0
  756. package/ja/packages/intlayer/getLocaleName.md +93 -0
  757. package/ja/packages/intlayer/getLocalizedUrl.md +221 -0
  758. package/ja/packages/intlayer/getMultilingualUrls.md +198 -0
  759. package/ja/packages/intlayer/getPathWithoutLocale.md +50 -0
  760. package/ja/packages/intlayer/getTranslation.md +166 -0
  761. package/ja/packages/intlayer/getTranslationContent.md +166 -0
  762. package/ja/packages/intlayer/index.md +479 -0
  763. package/ja/packages/intlayer-cli/index.md +41 -0
  764. package/ja/packages/intlayer-editor/index.md +115 -0
  765. package/ja/packages/lynx-intlayer/index.md +58 -0
  766. package/ja/packages/next-intlayer/index.md +263 -0
  767. package/ja/packages/next-intlayer/t.md +326 -0
  768. package/ja/packages/next-intlayer/useDictionary.md +242 -0
  769. package/ja/packages/next-intlayer/useIntlayer.md +237 -0
  770. package/ja/packages/next-intlayer/useIntlayerAsync.md +211 -0
  771. package/ja/packages/next-intlayer/useLocale.md +105 -0
  772. package/ja/packages/preact-intlayer/index.md +3 -0
  773. package/ja/packages/react-intlayer/index.md +257 -0
  774. package/ja/packages/react-intlayer/t.md +277 -0
  775. package/ja/packages/react-intlayer/useDictionary.md +260 -0
  776. package/ja/packages/react-intlayer/useIntlayer.md +225 -0
  777. package/ja/packages/react-intlayer/useIntlayerAsync.md +226 -0
  778. package/ja/packages/react-intlayer/useLocale.md +184 -0
  779. package/ja/packages/react-native-intlayer/index.md +57 -0
  780. package/ja/packages/react-scripts-intlayer/index.md +57 -0
  781. package/ja/packages/solid-intlayer/index.md +3 -0
  782. package/ja/packages/svelte-intlayer/index.md +3 -0
  783. package/ja/packages/vite-intlayer/index.md +53 -0
  784. package/ja/packages/vue-intlayer/index.md +3 -0
  785. package/ja/per_locale_file.md +298 -0
  786. package/ja/privacy_notice.md +57 -0
  787. package/ja/roadmap.md +206 -0
  788. package/ja/terms_of_service.md +33 -0
  789. package/ja/vs_code_extension.md +139 -0
  790. package/ko/CI_CD.md +149 -0
  791. package/ko/autoFill.md +157 -0
  792. package/ko/configuration.md +507 -0
  793. package/ko/dictionary/condition.md +213 -0
  794. package/ko/dictionary/content_extention_customization.md +81 -0
  795. package/ko/dictionary/enumeration.md +221 -0
  796. package/ko/dictionary/file.md +207 -0
  797. package/ko/dictionary/function_fetching.md +190 -0
  798. package/ko/dictionary/get_started.md +466 -0
  799. package/ko/dictionary/insertion.md +167 -0
  800. package/ko/dictionary/markdown.md +343 -0
  801. package/ko/dictionary/nesting.md +249 -0
  802. package/ko/dictionary/translation.md +287 -0
  803. package/ko/header.md +7 -0
  804. package/ko/how_works_intlayer.md +216 -0
  805. package/ko/index.md +125 -0
  806. package/ko/interest_of_intlayer.md +132 -0
  807. package/ko/intlayer_CMS.md +334 -0
  808. package/ko/intlayer_cli.md +274 -0
  809. package/ko/intlayer_visual_editor.md +210 -0
  810. package/ko/intlayer_with_angular.md +3 -0
  811. package/ko/intlayer_with_create_react_app.md +1186 -0
  812. package/ko/intlayer_with_express.md +267 -0
  813. package/ko/intlayer_with_lynx+react.md +482 -0
  814. package/ko/intlayer_with_nextjs_14.md +1267 -0
  815. package/ko/intlayer_with_nextjs_15.md +1319 -0
  816. package/ko/intlayer_with_nextjs_page_router.md +1097 -0
  817. package/ko/intlayer_with_react_native+expo.md +537 -0
  818. package/ko/intlayer_with_vite+preact.md +1682 -0
  819. package/ko/intlayer_with_vite+react.md +1582 -0
  820. package/ko/intlayer_with_vite+solid.md +3 -0
  821. package/ko/intlayer_with_vite+svelte.md +3 -0
  822. package/ko/intlayer_with_vite+vue.md +988 -0
  823. package/ko/introduction.md +186 -0
  824. package/ko/mcp_server.md +150 -0
  825. package/ko/packages/@intlayer/api/index.md +31 -0
  826. package/ko/packages/@intlayer/chokidar/index.md +31 -0
  827. package/ko/packages/@intlayer/cli/index.md +21 -0
  828. package/ko/packages/@intlayer/config/index.md +116 -0
  829. package/ko/packages/@intlayer/core/index.md +25 -0
  830. package/ko/packages/@intlayer/design-system/index.md +21 -0
  831. package/ko/packages/@intlayer/dictionary-entry/index.md +21 -0
  832. package/ko/packages/@intlayer/editor/index.md +21 -0
  833. package/ko/packages/@intlayer/editor-react/index.md +21 -0
  834. package/ko/packages/@intlayer/webpack/index.md +35 -0
  835. package/ko/packages/angular-intlayer/index.md +5 -0
  836. package/ko/packages/express-intlayer/index.md +229 -0
  837. package/ko/packages/express-intlayer/t.md +432 -0
  838. package/ko/packages/intlayer/getConfiguration.md +120 -0
  839. package/ko/packages/intlayer/getEnumeration.md +138 -0
  840. package/ko/packages/intlayer/getHTMLTextDir.md +97 -0
  841. package/ko/packages/intlayer/getLocaleLang.md +57 -0
  842. package/ko/packages/intlayer/getLocaleName.md +93 -0
  843. package/ko/packages/intlayer/getLocalizedUrl.md +221 -0
  844. package/ko/packages/intlayer/getMultilingualUrls.md +198 -0
  845. package/ko/packages/intlayer/getPathWithoutLocale.md +50 -0
  846. package/ko/packages/intlayer/getTranslation.md +166 -0
  847. package/ko/packages/intlayer/getTranslationContent.md +166 -0
  848. package/ko/packages/intlayer/index.md +480 -0
  849. package/ko/packages/intlayer-cli/index.md +41 -0
  850. package/ko/packages/intlayer-editor/index.md +113 -0
  851. package/ko/packages/lynx-intlayer/index.md +58 -0
  852. package/ko/packages/next-intlayer/index.md +267 -0
  853. package/ko/packages/next-intlayer/t.md +337 -0
  854. package/ko/packages/next-intlayer/useDictionary.md +242 -0
  855. package/ko/packages/next-intlayer/useIntlayer.md +237 -0
  856. package/ko/packages/next-intlayer/useIntlayerAsync.md +211 -0
  857. package/ko/packages/next-intlayer/useLocale.md +105 -0
  858. package/ko/packages/preact-intlayer/index.md +3 -0
  859. package/ko/packages/react-intlayer/index.md +260 -0
  860. package/ko/packages/react-intlayer/t.md +277 -0
  861. package/ko/packages/react-intlayer/useDictionary.md +268 -0
  862. package/ko/packages/react-intlayer/useIntlayer.md +225 -0
  863. package/ko/packages/react-intlayer/useIntlayerAsync.md +226 -0
  864. package/ko/packages/react-intlayer/useLocale.md +184 -0
  865. package/ko/packages/react-native-intlayer/index.md +57 -0
  866. package/ko/packages/react-scripts-intlayer/index.md +57 -0
  867. package/ko/packages/solid-intlayer/index.md +3 -0
  868. package/ko/packages/svelte-intlayer/index.md +3 -0
  869. package/ko/packages/vite-intlayer/index.md +53 -0
  870. package/ko/packages/vue-intlayer/index.md +3 -0
  871. package/ko/per_locale_file.md +300 -0
  872. package/ko/privacy_notice.md +61 -0
  873. package/ko/roadmap.md +206 -0
  874. package/ko/terms_of_service.md +33 -0
  875. package/ko/vs_code_extension.md +139 -0
  876. package/package.json +96 -0
  877. package/pt/CI_CD.md +149 -0
  878. package/pt/autoFill.md +157 -0
  879. package/pt/configuration.md +503 -0
  880. package/pt/dictionary/condition.md +213 -0
  881. package/pt/dictionary/content_extention_customization.md +81 -0
  882. package/pt/dictionary/enumeration.md +221 -0
  883. package/pt/dictionary/file.md +210 -0
  884. package/pt/dictionary/function_fetching.md +190 -0
  885. package/pt/dictionary/get_started.md +490 -0
  886. package/pt/dictionary/insertion.md +161 -0
  887. package/pt/dictionary/markdown.md +339 -0
  888. package/pt/dictionary/nesting.md +249 -0
  889. package/pt/dictionary/translation.md +322 -0
  890. package/pt/header.md +7 -0
  891. package/pt/how_works_intlayer.md +216 -0
  892. package/pt/index.md +125 -0
  893. package/pt/interest_of_intlayer.md +132 -0
  894. package/pt/intlayer_CMS.md +334 -0
  895. package/pt/intlayer_cli.md +274 -0
  896. package/pt/intlayer_visual_editor.md +210 -0
  897. package/pt/intlayer_with_angular.md +3 -0
  898. package/pt/intlayer_with_create_react_app.md +1204 -0
  899. package/pt/intlayer_with_express.md +270 -0
  900. package/pt/intlayer_with_lynx+react.md +467 -0
  901. package/pt/intlayer_with_nextjs_14.md +1269 -0
  902. package/pt/intlayer_with_nextjs_15.md +1319 -0
  903. package/pt/intlayer_with_nextjs_page_router.md +1109 -0
  904. package/pt/intlayer_with_react_native+expo.md +259 -0
  905. package/pt/intlayer_with_vite+preact.md +1663 -0
  906. package/pt/intlayer_with_vite+react.md +1621 -0
  907. package/pt/intlayer_with_vite+solid.md +3 -0
  908. package/pt/intlayer_with_vite+svelte.md +3 -0
  909. package/pt/intlayer_with_vite+vue.md +989 -0
  910. package/pt/introduction.md +193 -0
  911. package/pt/mcp_server.md +150 -0
  912. package/pt/packages/@intlayer/api/index.md +31 -0
  913. package/pt/packages/@intlayer/chokidar/index.md +31 -0
  914. package/pt/packages/@intlayer/cli/index.md +21 -0
  915. package/pt/packages/@intlayer/config/index.md +116 -0
  916. package/pt/packages/@intlayer/core/index.md +25 -0
  917. package/pt/packages/@intlayer/design-system/index.md +21 -0
  918. package/pt/packages/@intlayer/dictionary-entry/index.md +21 -0
  919. package/pt/packages/@intlayer/editor/index.md +21 -0
  920. package/pt/packages/@intlayer/editor-react/index.md +21 -0
  921. package/pt/packages/@intlayer/webpack/index.md +35 -0
  922. package/pt/packages/angular-intlayer/index.md +3 -0
  923. package/pt/packages/express-intlayer/index.md +232 -0
  924. package/pt/packages/express-intlayer/t.md +267 -0
  925. package/pt/packages/intlayer/getConfiguration.md +120 -0
  926. package/pt/packages/intlayer/getEnumeration.md +138 -0
  927. package/pt/packages/intlayer/getHTMLTextDir.md +97 -0
  928. package/pt/packages/intlayer/getLocaleLang.md +57 -0
  929. package/pt/packages/intlayer/getLocaleName.md +93 -0
  930. package/pt/packages/intlayer/getLocalizedUrl.md +221 -0
  931. package/pt/packages/intlayer/getMultilingualUrls.md +198 -0
  932. package/pt/packages/intlayer/getPathWithoutLocale.md +50 -0
  933. package/pt/packages/intlayer/getTranslation.md +175 -0
  934. package/pt/packages/intlayer/getTranslationContent.md +177 -0
  935. package/pt/packages/intlayer/index.md +484 -0
  936. package/pt/packages/intlayer-cli/index.md +41 -0
  937. package/pt/packages/intlayer-editor/index.md +113 -0
  938. package/pt/packages/lynx-intlayer/index.md +58 -0
  939. package/pt/packages/next-intlayer/index.md +270 -0
  940. package/pt/packages/next-intlayer/t.md +341 -0
  941. package/pt/packages/next-intlayer/useDictionary.md +248 -0
  942. package/pt/packages/next-intlayer/useIntlayer.md +237 -0
  943. package/pt/packages/next-intlayer/useIntlayerAsync.md +211 -0
  944. package/pt/packages/next-intlayer/useLocale.md +105 -0
  945. package/pt/packages/preact-intlayer/index.md +3 -0
  946. package/pt/packages/react-intlayer/index.md +261 -0
  947. package/pt/packages/react-intlayer/t.md +289 -0
  948. package/pt/packages/react-intlayer/useDictionary.md +268 -0
  949. package/pt/packages/react-intlayer/useIntlayer.md +225 -0
  950. package/pt/packages/react-intlayer/useIntlayerAsync.md +226 -0
  951. package/pt/packages/react-intlayer/useLocale.md +184 -0
  952. package/pt/packages/react-native-intlayer/index.md +57 -0
  953. package/pt/packages/react-scripts-intlayer/index.md +57 -0
  954. package/pt/packages/solid-intlayer/index.md +3 -0
  955. package/pt/packages/svelte-intlayer/index.md +3 -0
  956. package/pt/packages/vite-intlayer/index.md +53 -0
  957. package/pt/packages/vue-intlayer/index.md +3 -0
  958. package/pt/per_locale_file.md +298 -0
  959. package/pt/privacy_notice.md +61 -0
  960. package/pt/roadmap.md +206 -0
  961. package/pt/terms_of_service.md +33 -0
  962. package/pt/vs_code_extension.md +139 -0
  963. package/ru/CI_CD.md +149 -0
  964. package/ru/autoFill.md +157 -0
  965. package/ru/configuration.md +507 -0
  966. package/ru/dictionary/condition.md +213 -0
  967. package/ru/dictionary/content_extention_customization.md +81 -0
  968. package/ru/dictionary/enumeration.md +221 -0
  969. package/ru/dictionary/file.md +209 -0
  970. package/ru/dictionary/function_fetching.md +188 -0
  971. package/ru/dictionary/get_started.md +311 -0
  972. package/ru/dictionary/insertion.md +161 -0
  973. package/ru/dictionary/markdown.md +339 -0
  974. package/ru/dictionary/nesting.md +249 -0
  975. package/ru/dictionary/translation.md +322 -0
  976. package/ru/environment/angular.md +3 -0
  977. package/ru/header.md +7 -0
  978. package/ru/how_works_intlayer.md +217 -0
  979. package/ru/index.md +125 -0
  980. package/ru/interest_of_intlayer.md +132 -0
  981. package/ru/intlayer_CMS.md +334 -0
  982. package/ru/intlayer_cli.md +274 -0
  983. package/ru/intlayer_visual_editor.md +210 -0
  984. package/ru/intlayer_with_angular.md +3 -0
  985. package/ru/intlayer_with_create_react_app.md +1196 -0
  986. package/ru/intlayer_with_express.md +273 -0
  987. package/ru/intlayer_with_lynx+react.md +482 -0
  988. package/ru/intlayer_with_nextjs_14.md +1274 -0
  989. package/ru/intlayer_with_nextjs_15.md +1318 -0
  990. package/ru/intlayer_with_nextjs_page_router.md +1100 -0
  991. package/ru/intlayer_with_react_native+expo.md +537 -0
  992. package/ru/intlayer_with_vite+preact.md +1663 -0
  993. package/ru/intlayer_with_vite+react.md +1546 -0
  994. package/ru/intlayer_with_vite+solid.md +3 -0
  995. package/ru/intlayer_with_vite+svelte.md +3 -0
  996. package/ru/intlayer_with_vite+vue.md +987 -0
  997. package/ru/introduction.md +190 -0
  998. package/ru/mcp_server.md +152 -0
  999. package/ru/packages/@intlayer/api/index.md +31 -0
  1000. package/ru/packages/@intlayer/chokidar/index.md +31 -0
  1001. package/ru/packages/@intlayer/cli/index.md +23 -0
  1002. package/ru/packages/@intlayer/config/index.md +116 -0
  1003. package/ru/packages/@intlayer/core/index.md +25 -0
  1004. package/ru/packages/@intlayer/design-system/index.md +21 -0
  1005. package/ru/packages/@intlayer/dictionary-entry/index.md +21 -0
  1006. package/ru/packages/@intlayer/editor/index.md +21 -0
  1007. package/ru/packages/@intlayer/editor-react/index.md +21 -0
  1008. package/ru/packages/@intlayer/webpack/index.md +35 -0
  1009. package/ru/packages/angular-intlayer/index.md +3 -0
  1010. package/ru/packages/express-intlayer/index.md +235 -0
  1011. package/ru/packages/express-intlayer/t.md +445 -0
  1012. package/ru/packages/intlayer/getConfiguration.md +120 -0
  1013. package/ru/packages/intlayer/getEnumeration.md +140 -0
  1014. package/ru/packages/intlayer/getHTMLTextDir.md +97 -0
  1015. package/ru/packages/intlayer/getLocaleLang.md +59 -0
  1016. package/ru/packages/intlayer/getLocaleName.md +93 -0
  1017. package/ru/packages/intlayer/getLocalizedUrl.md +221 -0
  1018. package/ru/packages/intlayer/getMultilingualUrls.md +198 -0
  1019. package/ru/packages/intlayer/getPathWithoutLocale.md +50 -0
  1020. package/ru/packages/intlayer/getTranslation.md +177 -0
  1021. package/ru/packages/intlayer/getTranslationContent.md +175 -0
  1022. package/ru/packages/intlayer/index.md +275 -0
  1023. package/ru/packages/intlayer-cli/index.md +41 -0
  1024. package/ru/packages/intlayer-editor/index.md +115 -0
  1025. package/ru/packages/lynx-intlayer/index.md +58 -0
  1026. package/ru/packages/next-intlayer/index.md +267 -0
  1027. package/ru/packages/next-intlayer/t.md +340 -0
  1028. package/ru/packages/next-intlayer/useDictionary.md +248 -0
  1029. package/ru/packages/next-intlayer/useIntlayer.md +237 -0
  1030. package/ru/packages/next-intlayer/useIntlayerAsync.md +211 -0
  1031. package/ru/packages/next-intlayer/useLocale.md +105 -0
  1032. package/ru/packages/preact-intlayer/index.md +3 -0
  1033. package/ru/packages/react-intlayer/index.md +261 -0
  1034. package/ru/packages/react-intlayer/t.md +289 -0
  1035. package/ru/packages/react-intlayer/useDictionary.md +268 -0
  1036. package/ru/packages/react-intlayer/useIntlayer.md +225 -0
  1037. package/ru/packages/react-intlayer/useIntlayerAsync.md +226 -0
  1038. package/ru/packages/react-intlayer/useLocale.md +184 -0
  1039. package/ru/packages/react-native-intlayer/index.md +57 -0
  1040. package/ru/packages/react-scripts-intlayer/index.md +57 -0
  1041. package/ru/packages/solid-intlayer/index.md +3 -0
  1042. package/ru/packages/svelte-intlayer/index.md +3 -0
  1043. package/ru/packages/vite-intlayer/index.md +53 -0
  1044. package/ru/packages/vue-intlayer/index.md +3 -0
  1045. package/ru/per_locale_file.md +298 -0
  1046. package/ru/privacy_notice.md +61 -0
  1047. package/ru/roadmap.md +206 -0
  1048. package/ru/terms_of_service.md +33 -0
  1049. package/ru/vs_code_extension.md +139 -0
  1050. package/zh/CI_CD.md +149 -0
  1051. package/zh/autoFill.md +157 -0
  1052. package/zh/configuration.md +484 -0
  1053. package/zh/dictionary/condition.md +213 -0
  1054. package/zh/dictionary/content_extention_customization.md +81 -0
  1055. package/zh/dictionary/enumeration.md +221 -0
  1056. package/zh/dictionary/file.md +209 -0
  1057. package/zh/dictionary/function_fetching.md +188 -0
  1058. package/zh/dictionary/get_started.md +490 -0
  1059. package/zh/dictionary/insertion.md +161 -0
  1060. package/zh/dictionary/markdown.md +342 -0
  1061. package/zh/dictionary/nesting.md +249 -0
  1062. package/zh/dictionary/translation.md +287 -0
  1063. package/zh/header.md +7 -0
  1064. package/zh/how_works_intlayer.md +217 -0
  1065. package/zh/index.md +125 -0
  1066. package/zh/interest_of_intlayer.md +132 -0
  1067. package/zh/intlayer_CMS.md +334 -0
  1068. package/zh/intlayer_cli.md +274 -0
  1069. package/zh/intlayer_visual_editor.md +210 -0
  1070. package/zh/intlayer_with_angular.md +3 -0
  1071. package/zh/intlayer_with_create_react_app.md +1196 -0
  1072. package/zh/intlayer_with_express.md +267 -0
  1073. package/zh/intlayer_with_lynx+react.md +484 -0
  1074. package/zh/intlayer_with_nextjs_14.md +1286 -0
  1075. package/zh/intlayer_with_nextjs_15.md +1322 -0
  1076. package/zh/intlayer_with_nextjs_page_router.md +1097 -0
  1077. package/zh/intlayer_with_react_native+expo.md +539 -0
  1078. package/zh/intlayer_with_vite+preact.md +1681 -0
  1079. package/zh/intlayer_with_vite+react.md +1577 -0
  1080. package/zh/intlayer_with_vite+solid.md +3 -0
  1081. package/zh/intlayer_with_vite+svelte.md +3 -0
  1082. package/zh/intlayer_with_vite+vue.md +988 -0
  1083. package/zh/introduction.md +186 -0
  1084. package/zh/mcp_server.md +152 -0
  1085. package/zh/packages/@intlayer/api/index.md +31 -0
  1086. package/zh/packages/@intlayer/chokidar/index.md +31 -0
  1087. package/zh/packages/@intlayer/cli/index.md +21 -0
  1088. package/zh/packages/@intlayer/config/index.md +116 -0
  1089. package/zh/packages/@intlayer/core/index.md +25 -0
  1090. package/zh/packages/@intlayer/design-system/index.md +21 -0
  1091. package/zh/packages/@intlayer/dictionary-entry/index.md +21 -0
  1092. package/zh/packages/@intlayer/editor/index.md +21 -0
  1093. package/zh/packages/@intlayer/editor-react/index.md +21 -0
  1094. package/zh/packages/@intlayer/webpack/index.md +35 -0
  1095. package/zh/packages/angular-intlayer/index.md +3 -0
  1096. package/zh/packages/express-intlayer/index.md +229 -0
  1097. package/zh/packages/express-intlayer/t.md +432 -0
  1098. package/zh/packages/intlayer/getConfiguration.md +120 -0
  1099. package/zh/packages/intlayer/getEnumeration.md +140 -0
  1100. package/zh/packages/intlayer/getHTMLTextDir.md +97 -0
  1101. package/zh/packages/intlayer/getLocaleLang.md +57 -0
  1102. package/zh/packages/intlayer/getLocaleName.md +93 -0
  1103. package/zh/packages/intlayer/getLocalizedUrl.md +221 -0
  1104. package/zh/packages/intlayer/getMultilingualUrls.md +198 -0
  1105. package/zh/packages/intlayer/getPathWithoutLocale.md +50 -0
  1106. package/zh/packages/intlayer/getTranslation.md +166 -0
  1107. package/zh/packages/intlayer/getTranslationContent.md +166 -0
  1108. package/zh/packages/intlayer/index.md +360 -0
  1109. package/zh/packages/intlayer-cli/index.md +41 -0
  1110. package/zh/packages/intlayer-editor/index.md +113 -0
  1111. package/zh/packages/lynx-intlayer/index.md +60 -0
  1112. package/zh/packages/next-intlayer/index.md +267 -0
  1113. package/zh/packages/next-intlayer/t.md +338 -0
  1114. package/zh/packages/next-intlayer/useDictionary.md +242 -0
  1115. package/zh/packages/next-intlayer/useIntlayer.md +237 -0
  1116. package/zh/packages/next-intlayer/useIntlayerAsync.md +211 -0
  1117. package/zh/packages/next-intlayer/useLocale.md +105 -0
  1118. package/zh/packages/preact-intlayer/index.md +3 -0
  1119. package/zh/packages/react-intlayer/index.md +257 -0
  1120. package/zh/packages/react-intlayer/t.md +271 -0
  1121. package/zh/packages/react-intlayer/useDictionary.md +260 -0
  1122. package/zh/packages/react-intlayer/useIntlayer.md +225 -0
  1123. package/zh/packages/react-intlayer/useIntlayerAsync.md +226 -0
  1124. package/zh/packages/react-intlayer/useLocale.md +184 -0
  1125. package/zh/packages/react-native-intlayer/index.md +57 -0
  1126. package/zh/packages/react-scripts-intlayer/index.md +57 -0
  1127. package/zh/packages/solid-intlayer/index.md +3 -0
  1128. package/zh/packages/svelte-intlayer/index.md +3 -0
  1129. package/zh/packages/vite-intlayer/index.md +53 -0
  1130. package/zh/packages/vue-intlayer/index.md +3 -0
  1131. package/zh/per_locale_file.md +298 -0
  1132. package/zh/privacy_notice.md +61 -0
  1133. package/zh/roadmap.md +206 -0
  1134. package/zh/terms_of_service.md +33 -0
  1135. package/zh/vs_code_extension.md +139 -0
@@ -0,0 +1,1601 @@
1
+ # IntlayerとViteおよびPreactを使用した国際化(i18n)の開始
2
+
3
+ > このパッケージは開発中です。詳細については[この問題](https://github.com/aymericzip/intlayer/issues/118)をご覧ください。Preact向けのIntlayerに興味がある場合は、この問題に「いいね」をしてください。
4
+
5
+ GitHub上の[アプリケーションテンプレート](https://github.com/aymericzip/intlayer-vite-preact-template)をご覧ください。
6
+
7
+ ## Intlayerとは?
8
+
9
+ **Intlayer**は、モダンなウェブアプリケーションで多言語サポートを簡素化するために設計された革新的なオープンソースの国際化(i18n)ライブラリです。
10
+
11
+ Intlayerを使用すると、以下が可能です:
12
+
13
+ - **コンポーネントレベルで宣言的な辞書を使用して翻訳を簡単に管理**。
14
+ - **メタデータ、ルート、およびコンテンツを動的にローカライズ**。
15
+ - **自動生成された型でTypeScriptサポートを確保**し、オートコンプリートとエラー検出を向上。
16
+ - **動的なロケール検出と切り替え**などの高度な機能を活用。
17
+
18
+ ---
19
+
20
+ ## ViteとPreactアプリケーションでのIntlayerセットアップのステップバイステップガイド
21
+
22
+ ### ステップ1: 依存関係のインストール
23
+
24
+ npmを使用して必要なパッケージをインストールします:
25
+
26
+ ```bash packageManager="npm"
27
+ npm install intlayer preact-intlayer vite-intlayer
28
+ ```
29
+
30
+ ```bash packageManager="pnpm"
31
+ pnpm add intlayer preact-intlayer vite-intlayer
32
+ ```
33
+
34
+ ```bash packageManager="yarn"
35
+ yarn add intlayer preact-intlayer vite-intlayer
36
+ ```
37
+
38
+ - **intlayer**
39
+
40
+ 設定管理、翻訳、[コンテンツ宣言](https://github.com/aymericzip/intlayer/blob/main/docs/ja/dictionary/get_started.md)、トランスパイル、および[CLIコマンド](https://github.com/aymericzip/intlayer/blob/main/docs/ja/intlayer_cli.md)を提供するコアパッケージ。
41
+
42
+ - **preact-intlayer**
43
+ IntlayerをPreactアプリケーションに統合するパッケージ。Preactの国際化のためのコンテキストプロバイダーとフックを提供します。
44
+
45
+ - **vite-intlayer**
46
+ [Viteバンドラー](https://vite.dev/guide/why.html#why-bundle-for-production)とIntlayerを統合するためのViteプラグインを含み、ユーザーの優先ロケールを検出し、クッキーを管理し、URLリダイレクトを処理するミドルウェアを提供します。
47
+
48
+ ### ステップ2: プロジェクトの設定
49
+
50
+ アプリケーションの言語を設定するための設定ファイルを作成します:
51
+
52
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
53
+ import { Locales, type IntlayerConfig } from "intlayer";
54
+
55
+ const config: IntlayerConfig = {
56
+ internationalization: {
57
+ locales: [
58
+ Locales.ENGLISH,
59
+ Locales.FRENCH,
60
+ Locales.SPANISH,
61
+ // 他のロケール
62
+ ],
63
+ defaultLocale: Locales.ENGLISH,
64
+ },
65
+ };
66
+
67
+ export default config;
68
+ ```
69
+
70
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
71
+ import { Locales } from "intlayer";
72
+
73
+ /** @type {import('intlayer').IntlayerConfig} */
74
+ const config = {
75
+ internationalization: {
76
+ locales: [
77
+ Locales.ENGLISH,
78
+ Locales.FRENCH,
79
+ Locales.SPANISH,
80
+ // 他のロケール
81
+ ],
82
+ defaultLocale: Locales.ENGLISH,
83
+ },
84
+ };
85
+
86
+ export default config;
87
+ ```
88
+
89
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
90
+ const { Locales } = require("intlayer");
91
+
92
+ /** @type {import('intlayer').IntlayerConfig} */
93
+ const config = {
94
+ internationalization: {
95
+ locales: [
96
+ Locales.ENGLISH,
97
+ Locales.FRENCH,
98
+ Locales.SPANISH,
99
+ // 他のロケール
100
+ ],
101
+ defaultLocale: Locales.ENGLISH,
102
+ },
103
+ };
104
+
105
+ module.exports = config;
106
+ ```
107
+
108
+ > この設定ファイルを通じて、ローカライズされたURL、ミドルウェアリダイレクト、クッキー名、コンテンツ宣言の場所と拡張子、コンソールでのIntlayerログの無効化などを設定できます。利用可能なパラメータの完全なリストについては、[設定ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/ja/configuration.md)を参照してください。
109
+
110
+ ### ステップ3: Vite設定へのIntlayerの統合
111
+
112
+ 設定にintlayerプラグインを追加します。
113
+
114
+ ```typescript fileName="vite.config.ts" codeFormat="typescript"
115
+ import { defineConfig } from "vite";
116
+ import preact from "@preact/preset-vite";
117
+ import { intlayerPlugin } from "vite-intlayer";
118
+
119
+ // https://vitejs.dev/config/
120
+ export default defineConfig({
121
+ plugins: [preact(), intlayerPlugin()],
122
+ });
123
+ ```
124
+
125
+ ```javascript fileName="vite.config.mjs" codeFormat="esm"
126
+ import { defineConfig } from "vite";
127
+ import preact from "@preact/preset-vite";
128
+ import { intlayerPlugin } from "vite-intlayer";
129
+
130
+ // https://vitejs.dev/config/
131
+ export default defineConfig({
132
+ plugins: [preact(), intlayerPlugin()],
133
+ });
134
+ ```
135
+
136
+ ```javascript fileName="vite.config.cjs" codeFormat="commonjs"
137
+ const { defineConfig } = require("vite");
138
+ const preact = require("@preact/preset-vite");
139
+ const { intlayerPlugin } = require("vite-intlayer");
140
+
141
+ // https://vitejs.dev/config/
142
+ module.exports = defineConfig({
143
+ plugins: [preact(), intlayerPlugin()],
144
+ });
145
+ ```
146
+
147
+ > `intlayerPlugin()` Viteプラグインは、IntlayerをViteと統合するために使用されます。これにより、コンテンツ宣言ファイルのビルドが確保され、開発モードで監視されます。また、Viteアプリケーション内でIntlayer環境変数を定義し、パフォーマンスを最適化するエイリアスを提供します。
148
+
149
+ ### ステップ4: コンテンツの宣言
150
+
151
+ 翻訳を保存するためのコンテンツ宣言を作成および管理します:
152
+
153
+ ```tsx fileName="src/app.content.tsx" contentDeclarationFormat="typescript"
154
+ import { t, type Dictionary } from "intlayer";
155
+
156
+ const appContent = {
157
+ key: "app",
158
+ content: {
159
+ viteLogo: t({
160
+ ja: "Viteロゴ",
161
+ en: "Vite logo",
162
+ fr: "Logo Vite",
163
+ es: "Logo Vite",
164
+ }),
165
+ preactLogo: t({
166
+ ja: "Preactロゴ",
167
+ en: "Preact logo",
168
+ fr: "Logo Preact",
169
+ es: "Logo Preact",
170
+ }),
171
+
172
+ title: "Vite + Preact",
173
+
174
+ count: t({
175
+ ja: "カウントは ",
176
+ en: "count is ",
177
+ fr: "le compte est ",
178
+ es: "el recuento es ",
179
+ }),
180
+
181
+ edit: t({
182
+ ja: "<code>src/app.tsx</code>を編集して保存し、HMRをテストしてください",
183
+ en: "Edit src/app.tsx and save to test HMR",
184
+ fr: "Éditez src/app.tsx et enregistrez pour tester HMR",
185
+ es: "Edita src/app.tsx y guarda para probar HMR",
186
+ }),
187
+
188
+ readTheDocs: t({
189
+ ja: "ViteとPreactのロゴをクリックして詳細を確認してください",
190
+ en: "Click on the Vite and Preact logos to learn more",
191
+ fr: "Cliquez sur les logos Vite et Preact pour en savoir plus",
192
+ es: "Haga clic en los logotipos de Vite y Preact para obtener más información",
193
+ }),
194
+ },
195
+ } satisfies Dictionary;
196
+
197
+ export default appContent;
198
+ ```
199
+
200
+ ```javascript fileName="src/app.content.mjs" contentDeclarationFormat="esm"
201
+ import { t } from "intlayer";
202
+ // import { h } from 'preact'; // JSXを.mjsで直接使用する場合に必要
203
+
204
+ /** @type {import('intlayer').Dictionary} */
205
+ const appContent = {
206
+ key: "app",
207
+ content: {
208
+ viteLogo: t({
209
+ ja: "Viteロゴ",
210
+ en: "Vite logo",
211
+ fr: "Logo Vite",
212
+ es: "Logo Vite",
213
+ }),
214
+ preactLogo: t({
215
+ ja: "Preactロゴ",
216
+ en: "Preact logo",
217
+ fr: "Logo Preact",
218
+ es: "Logo Preact",
219
+ }),
220
+
221
+ title: "Vite + Preact",
222
+
223
+ count: t({
224
+ ja: "カウントは ",
225
+ en: "count is ",
226
+ fr: "le compte est ",
227
+ es: "el recuento es ",
228
+ }),
229
+
230
+ edit: t({
231
+ ja: "src/app.jsxを編集して保存し、HMRをテストしてください",
232
+ en: "Edit src/app.jsx and save to test HMR",
233
+ fr: "Éditez src/app.jsx et enregistrez pour tester HMR",
234
+ es: "Edita src/app.jsx y guarda para probar HMR",
235
+ }),
236
+
237
+ readTheDocs: t({
238
+ ja: "ViteとPreactのロゴをクリックして詳細を確認してください",
239
+ en: "Click on the Vite and Preact logos to learn more",
240
+ fr: "Cliquez sur les logos Vite et Preact pour en savoir plus",
241
+ es: "Haga clic en los logotipos de Vite y Preact para obtener más información",
242
+ }),
243
+ },
244
+ };
245
+
246
+ export default appContent;
247
+ ```
248
+
249
+ ```javascript fileName="src/app.content.cjs" contentDeclarationFormat="commonjs"
250
+ const { t } = require("intlayer");
251
+ // const { h } = require('preact'); // JSXを.cjsで直接使用する場合に必要
252
+
253
+ /** @type {import('intlayer').Dictionary} */
254
+ const appContent = {
255
+ key: "app",
256
+ content: {
257
+ viteLogo: t({
258
+ ja: "Viteロゴ",
259
+ en: "Vite logo",
260
+ fr: "Logo Vite",
261
+ es: "Logo Vite",
262
+ }),
263
+ preactLogo: t({
264
+ ja: "Preactロゴ",
265
+ en: "Preact logo",
266
+ fr: "Logo Preact",
267
+ es: "Logo Preact",
268
+ }),
269
+
270
+ title: "Vite + Preact",
271
+
272
+ count: t({
273
+ en: "count is ",
274
+ fr: "le compte est ",
275
+ es: "el recuento es ",
276
+ ja: "カウントは ",
277
+ }),
278
+
279
+ edit: t({
280
+ ja: "<code>src/app.tsx</code>を編集して保存し、HMRをテストしてください",
281
+ en: "Edit src/app.tsx and save to test HMR",
282
+ fr: "Éditez src/app.tsx et enregistrez pour tester HMR",
283
+ es: "Edita src/app.tsx y guarda para probar HMR",
284
+ }),
285
+
286
+ readTheDocs: t({
287
+ en: "Click on the Vite and Preact logos to learn more",
288
+ fr: "Cliquez sur les logos Vite et Preact pour en savoir plus",
289
+ es: "Haga clic en los logotipos de Vite y Preact para obtener más información",
290
+ ja: "ViteとPreactのロゴをクリックして詳細を確認してください",
291
+ }),
292
+ },
293
+ };
294
+
295
+ module.exports = appContent;
296
+ ```
297
+
298
+ ```json fileName="src/app.content.json" contentDeclarationFormat="json"
299
+ {
300
+ "$schema": "https://intlayer.org/schema.json",
301
+ "key": "app",
302
+ "content": {
303
+ "viteLogo": {
304
+ "nodeType": "translation",
305
+ "translation": {
306
+ "en": "Vite logo",
307
+ "fr": "Logo Vite",
308
+ "es": "Logo Vite",
309
+ "ja": "Viteロゴ"
310
+ }
311
+ },
312
+ "preactLogo": {
313
+ "nodeType": "translation",
314
+ "translation": {
315
+ "en": "Preact logo",
316
+ "fr": "Logo Preact",
317
+ "es": "Logo Preact",
318
+ "ja": "Preactロゴ"
319
+ }
320
+ },
321
+ "title": {
322
+ "nodeType": "translation",
323
+ "translation": {
324
+ "en": "Vite + Preact",
325
+ "fr": "Vite + Preact",
326
+ "es": "Vite + Preact",
327
+ "ja": "Vite + Preact"
328
+ }
329
+ },
330
+ "count": {
331
+ "nodeType": "translation",
332
+ "translation": {
333
+ "en": "count is ",
334
+ "fr": "le compte est ",
335
+ "es": "el recuento es ",
336
+ "ja": "カウントは "
337
+ }
338
+ },
339
+ "edit": {
340
+ "nodeType": "translation",
341
+ "translation": {
342
+ "en": "Edit src/app.tsx and save to test HMR",
343
+ "fr": "Éditez src/app.tsx et enregistrez pour tester HMR",
344
+ "es": "Edita src/app.tsx y guarda para probar HMR",
345
+ "ja": "src/app.tsxを編集して保存し、HMRをテストしてください"
346
+ }
347
+ },
348
+ "readTheDocs": {
349
+ "nodeType": "translation",
350
+ "translation": {
351
+ "en": "Click on the Vite and Preact logos to learn more",
352
+ "fr": "Cliquez sur les logos Vite et Preact pour en savoir plus",
353
+ "es": "Haga clic en los logotipos de Vite y Preact para obtener más información",
354
+ "ja": "ViteとPreactのロゴをクリックして詳細を確認してください"
355
+ }
356
+ }
357
+ }
358
+ }
359
+ ```
360
+
361
+ > コンテンツ宣言は、`contentDir`ディレクトリ(デフォルトでは`./src`)に含まれている限り、アプリケーション内のどこにでも定義できます。また、コンテンツ宣言ファイルの拡張子(デフォルトでは`.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`)と一致する必要があります。
362
+
363
+ > 詳細については、[コンテンツ宣言ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/ja/dictionary/get_started.md)を参照してください。
364
+
365
+ > コンテンツファイルにTSXコードが含まれている場合、`import { h } from "preact";`をインポートするか、JSXプラグマがPreact用に正しく設定されていることを確認する必要があります。
366
+
367
+ ### ステップ5: コード内でIntlayerを利用する
368
+
369
+ アプリケーション全体でコンテンツ辞書にアクセスします:
370
+
371
+ ```tsx {6,10} fileName="src/app.tsx" codeFormat="typescript"
372
+ import { useState } from "preact/hooks";
373
+ import type { FunctionalComponent } from "preact";
374
+ import preactLogo from "./assets/preact.svg"; // preact.svgを使用していると仮定
375
+ import viteLogo from "/vite.svg";
376
+ import "./app.css"; // CSSファイル名がapp.cssであると仮定
377
+ import { IntlayerProvider, useIntlayer } from "preact-intlayer";
378
+
379
+ const AppContent: FunctionalComponent = () => {
380
+ const [count, setCount] = useState(0);
381
+ const content = useIntlayer("app");
382
+
383
+ return (
384
+ <>
385
+ <div>
386
+ <a href="https://vitejs.dev" target="_blank">
387
+ <img src={viteLogo} class="logo" alt={content.viteLogo.value} />
388
+ </a>
389
+ <a href="https://preactjs.com" target="_blank">
390
+ <img
391
+ src={preactLogo}
392
+ class="logo preact"
393
+ alt={content.preactLogo.value}
394
+ />
395
+ </a>
396
+ </div>
397
+ <h1>{content.title}</h1>
398
+ <div class="card">
399
+ <button onClick={() => setCount((count) => count + 1)}>
400
+ {content.count}
401
+ {count}
402
+ </button>
403
+ <p>{content.edit}</p>
404
+ </div>
405
+ <p class="read-the-docs">{content.readTheDocs}</p>
406
+ </>
407
+ );
408
+ };
409
+
410
+ const App: FunctionalComponent = () => (
411
+ <IntlayerProvider>
412
+ <AppContent />
413
+ </IntlayerProvider>
414
+ );
415
+
416
+ export default App;
417
+ ```
418
+
419
+ ```jsx {5,9} fileName="src/app.jsx" codeFormat="esm"
420
+ import { useState } from "preact/hooks";
421
+ import preactLogo from "./assets/preact.svg";
422
+ import viteLogo from "/vite.svg";
423
+ import "./app.css";
424
+ import { IntlayerProvider, useIntlayer } from "preact-intlayer";
425
+
426
+ const AppContent = () => {
427
+ const [count, setCount] = useState(0);
428
+ const content = useIntlayer("app");
429
+
430
+ return (
431
+ <>
432
+ <div>
433
+ <a href="https://vitejs.dev" target="_blank">
434
+ <img src={viteLogo} class="logo" alt={content.viteLogo.value} />
435
+ </a>
436
+ <a href="https://preactjs.com" target="_blank">
437
+ <img
438
+ src={preactLogo}
439
+ class="logo preact"
440
+ alt={content.preactLogo.value}
441
+ />
442
+ </a>
443
+ </div>
444
+ <h1>{content.title}</h1>
445
+ <div class="card">
446
+ <button onClick={() => setCount((count) => count + 1)}>
447
+ {content.count}
448
+ {count}
449
+ </button>
450
+ <p>{content.edit}</p>
451
+ </div>
452
+ <p class="read-the-docs">{content.readTheDocs}</p>
453
+ </>
454
+ );
455
+ };
456
+
457
+ const App = () => (
458
+ <IntlayerProvider>
459
+ <AppContent />
460
+ </IntlayerProvider>
461
+ );
462
+
463
+ export default App;
464
+ ```
465
+
466
+ ```jsx {5,9} fileName="src/app.cjsx" codeFormat="commonjs"
467
+ const { useState } = require("preact/hooks");
468
+ const preactLogo = require("./assets/preact.svg");
469
+ const viteLogo = require("/vite.svg");
470
+ require("./app.css");
471
+ const { IntlayerProvider, useIntlayer } = require("preact-intlayer");
472
+
473
+ const AppContent = () => {
474
+ const [count, setCount] = useState(0);
475
+ const content = useIntlayer("app");
476
+
477
+ return (
478
+ <>
479
+ <div>
480
+ <a href="https://vitejs.dev" target="_blank">
481
+ <img src={viteLogo} class="logo" alt={content.viteLogo.value} />
482
+ </a>
483
+ <a href="https://preactjs.com" target="_blank">
484
+ <img
485
+ src={preactLogo}
486
+ class="logo preact"
487
+ alt={content.preactLogo.value}
488
+ />
489
+ </a>
490
+ </div>
491
+ <h1>{content.title}</h1>
492
+ <div class="card">
493
+ <button onClick={() => setCount((count) => count + 1)}>
494
+ {content.count}
495
+ {count}
496
+ </button>
497
+ <p>{content.edit}</p>
498
+ </div>
499
+ <p class="read-the-docs">{content.readTheDocs}</p>
500
+ </>
501
+ );
502
+ };
503
+
504
+ const App = () => (
505
+ <IntlayerProvider>
506
+ <AppContent />
507
+ </IntlayerProvider>
508
+ );
509
+
510
+ module.exports = App;
511
+ ```
512
+
513
+ > `alt`、`title`、`href`、`aria-label`などの`string`属性でコンテンツを使用する場合、関数の値を呼び出す必要があります:
514
+
515
+ > ```jsx
516
+ >
517
+ > ```
518
+
519
+ > <img src={content.image.src.value} alt={content.image.value} />
520
+
521
+ > ```
522
+ >
523
+ > ```
524
+
525
+ > 注: Preactでは、`className`は通常`class`として記述されます。
526
+
527
+ > `useIntlayer`フックの詳細については、[ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/ja/packages/react-intlayer/useIntlayer.md)を参照してください(`preact-intlayer`のAPIも同様です)。
528
+
529
+ ### (オプション)ステップ6: コンテンツの言語を変更する
530
+
531
+ コンテンツの言語を変更するには、`useLocale`フックが提供する`setLocale`関数を使用します。この関数を使用して、アプリケーションのロケールを設定し、コンテンツを更新できます。
532
+
533
+ ```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat="typescript"
534
+ import type { FunctionalComponent } from "preact";
535
+ import { Locales } from "intlayer";
536
+ import { useLocale } from "preact-intlayer";
537
+
538
+ const LocaleSwitcher: FunctionalComponent = () => {
539
+ const { setLocale } = useLocale();
540
+
541
+ return (
542
+ <button onClick={() => setLocale(Locales.ENGLISH)}>
543
+ 言語を英語に変更
544
+
545
+ import { Locales } from "intlayer";
546
+ import { useLocale } from "preact-intlayer";
547
+
548
+ const LocaleSwitcher = () => {
549
+ const { setLocale } = useLocale();
550
+
551
+ return (
552
+ <button onClick={() => setLocale(Locales.ENGLISH)}>
553
+ 言語を英語に変更
554
+ </button>
555
+ );
556
+ };
557
+
558
+ export default LocaleSwitcher;
559
+ ```
560
+
561
+ ```jsx fileName="src/components/LocaleSwitcher.cjsx" codeFormat="commonjs"
562
+ const { Locales } = require("intlayer");
563
+ const { useLocale } = require("preact-intlayer");
564
+
565
+ const LocaleSwitcher = () => {
566
+ const { setLocale } = useLocale();
567
+
568
+ return (
569
+ <button onClick={() => setLocale(Locales.ENGLISH)}>言語を英語に変更</button>
570
+ );
571
+ };
572
+
573
+ module.exports = LocaleSwitcher;
574
+ ```
575
+
576
+ > `useLocale` フックの詳細については、[ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/ja/packages/react-intlayer/useLocale.md) を参照してください(`preact-intlayer` の API は同様です)。
577
+
578
+ ### (オプション)ステップ7: アプリケーションにローカライズされたルーティングを追加する
579
+
580
+ このステップの目的は、各言語に固有のルートを作成することです。これはSEOやSEOフレンドリーなURLに役立ちます。
581
+ 例:
582
+
583
+ ```plaintext
584
+ - https://example.com/about
585
+ - https://example.com/es/about
586
+ - https://example.com/fr/about
587
+ ```
588
+
589
+ > デフォルトでは、デフォルトロケールのルートにはプレフィックスが付きません。デフォルトロケールにプレフィックスを付けたい場合は、設定で `middleware.prefixDefault` オプションを `true` に設定できます。詳細は[設定ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/ja/configuration.md)を参照してください。
590
+
591
+ アプリケーションにローカライズされたルーティングを追加するには、アプリケーションのルートをラップし、ロケールベースのルーティングを処理する `LocaleRouter` コンポーネントを作成できます。以下は [preact-iso](https://github.com/preactjs/preact-iso) を使用した例です。
592
+
593
+ まず、`preact-iso` をインストールします:
594
+
595
+ ```bash packageManager="npm"
596
+ npm install preact-iso
597
+ ```
598
+
599
+ ```bash packageManager="pnpm"
600
+ pnpm add preact-iso
601
+ ```
602
+
603
+ ```bash packageManager="yarn"
604
+ yarn add preact-iso
605
+ ```
606
+
607
+ ```tsx fileName="src/components/LocaleRouter.tsx" codeFormat="typescript"
608
+ import { type Locales, configuration, getPathWithoutLocale } from "intlayer";
609
+ import { ComponentChildren, FunctionalComponent } from "preact";
610
+ import { IntlayerProvider } from "preact-intlayer";
611
+ import { LocationProvider, useLocation } from "preact-iso";
612
+ import { useEffect } from "preact/hooks";
613
+
614
+ const { internationalization, middleware } = configuration;
615
+ const { locales, defaultLocale } = internationalization;
616
+
617
+ const Navigate: FunctionalComponent<{ to: string; replace?: boolean }> = ({
618
+ to,
619
+ replace,
620
+ }) => {
621
+ const { route } = useLocation();
622
+ useEffect(() => {
623
+ route(to, replace);
624
+ }, [to, replace, route]);
625
+ return null;
626
+ };
627
+
628
+ /**
629
+ * ローカリゼーションを処理し、適切なロケールコンテキストで子要素をラップするコンポーネント。
630
+ * URLベースのロケール検出と検証を管理します。
631
+ */
632
+ const AppLocalized: FunctionalComponent<{
633
+ children: ComponentChildren;
634
+ locale?: Locales;
635
+ }> = ({ children, locale }) => {
636
+ const { path: pathname, url } = useLocation();
637
+
638
+ if (!url) {
639
+ return null;
640
+ }
641
+
642
+ const search = url.substring(pathname.length);
643
+
644
+ // 現在のロケールを決定し、指定されていない場合はデフォルトにフォールバック
645
+ const currentLocale = locale ?? defaultLocale;
646
+
647
+ // ロケールプレフィックスを削除してベースパスを構築
648
+ const pathWithoutLocale = getPathWithoutLocale(
649
+ pathname // 現在のURLパス
650
+ );
651
+
652
+ /**
653
+ * middleware.prefixDefault が true の場合、デフォルトロケールには常にプレフィックスが付く必要があります。
654
+ */
655
+ if (middleware.prefixDefault) {
656
+ // ロケールを検証
657
+ if (!locale || !locales.includes(locale)) {
658
+ // 更新されたパスでデフォルトロケールにリダイレクト
659
+ return (
660
+ <Navigate
661
+ to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
662
+ replace // 現在の履歴エントリを新しいものに置き換え
663
+ />
664
+ );
665
+ }
666
+
667
+ // 子要素を IntlayerProvider でラップし、現在のロケールを設定
668
+ return (
669
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
670
+ );
671
+ } else {
672
+ /**
673
+ * middleware.prefixDefault が false の場合、デフォルトロケールにはプレフィックスが付きません。
674
+ * 現在のロケールが有効であり、デフォルトロケールではないことを確認します。
675
+ */
676
+ if (
677
+ currentLocale.toString() !== defaultLocale.toString() &&
678
+ !locales
679
+ .filter(
680
+ (loc) => loc.toString() !== defaultLocale.toString() // デフォルトロケールを除外
681
+ )
682
+ .includes(currentLocale) // 現在のロケールが有効なロケールリストに含まれているか確認
683
+ ) {
684
+ // ロケールプレフィックスなしのパスにリダイレクト
685
+ return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
686
+ }
687
+
688
+ // 子要素を IntlayerProvider でラップし、現在のロケールを設定
689
+ return (
690
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
691
+ );
692
+ }
693
+ };
694
+
695
+ const RouterContent: FunctionalComponent<{
696
+ children: ComponentChildren;
697
+ }> = ({ children }) => {
698
+ const { path } = useLocation();
699
+
700
+ if (!path) {
701
+ return null;
702
+ }
703
+
704
+ const pathLocale = path.split("/")[1] as Locales;
705
+
706
+ const isLocaleRoute = locales
707
+ .filter((locale) => middleware.prefixDefault || locale !== defaultLocale)
708
+ .some((locale) => locale.toString() === pathLocale);
709
+
710
+ if (isLocaleRoute) {
711
+ return <AppLocalized locale={pathLocale}>{children}</AppLocalized>;
712
+ }
713
+
714
+ return (
715
+ <AppLocalized
716
+ locale={!middleware.prefixDefault ? defaultLocale : undefined}
717
+ >
718
+ {children}
719
+ </AppLocalized>
720
+ );
721
+ };
722
+
723
+ /**
724
+ * ロケール固有のルートを設定するルーターコンポーネント。
725
+ * preact-iso を使用してナビゲーションを管理し、ローカライズされたコンポーネントをレンダリングします。
726
+ */
727
+ export const LocaleRouter: FunctionalComponent<{
728
+ children: ComponentChildren;
729
+ }> = ({ children }) => (
730
+ <LocationProvider>
731
+ <RouterContent>{children}</RouterContent>
732
+ </LocationProvider>
733
+ );
734
+ ```
735
+
736
+ ```jsx fileName="src/components/LocaleRouter.jsx" codeFormat="esm"
737
+ // 必要な依存関係と関数をインポート
738
+ import { configuration, getPathWithoutLocale } from "intlayer";
739
+ import { IntlayerProvider } from "preact-intlayer";
740
+ import { LocationProvider, useLocation } from "preact-iso";
741
+ import { useEffect } from "preact/hooks";
742
+ import { h } from "preact"; // JSX に必要
743
+
744
+ // Intlayer から設定をデストラクチャリング
745
+ const { internationalization, middleware } = configuration;
746
+ const { locales, defaultLocale } = internationalization;
747
+
748
+ const Navigate = ({ to, replace }) => {
749
+ const { route } = useLocation();
750
+ useEffect(() => {
751
+ route(to, replace);
752
+ }, [to, replace, route]);
753
+ return null;
754
+ };
755
+
756
+ /**
757
+ * ローカリゼーションを処理し、適切なロケールコンテキストで子要素をラップするコンポーネント。
758
+ * URLベースのロケール検出と検証を管理します。
759
+ */
760
+ const AppLocalized = ({ children, locale }) => {
761
+ const { path: pathname, url } = useLocation();
762
+
763
+ if (!url) {
764
+ return null;
765
+ }
766
+
767
+ const search = url.substring(pathname.length);
768
+
769
+ // 現在のロケールを決定し、指定されていない場合はデフォルトにフォールバック
770
+ const currentLocale = locale ?? defaultLocale;
771
+
772
+ // ロケールプレフィックスを削除してベースパスを構築
773
+ const pathWithoutLocale = getPathWithoutLocale(
774
+ pathname // 現在のURLパス
775
+ );
776
+
777
+ /**
778
+ * middleware.prefixDefault が true の場合、デフォルトロケールには常にプレフィックスが付く必要があります。
779
+ */
780
+ if (middleware.prefixDefault) {
781
+ // ロケールを検証
782
+ if (!locale || !locales.includes(locale)) {
783
+ // 更新されたパスでデフォルトロケールにリダイレクト
784
+ return (
785
+ <Navigate
786
+ to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
787
+ replace // 現在の履歴エントリを新しいものに置き換え
788
+ />
789
+ );
790
+ }
791
+
792
+ // 子要素を IntlayerProvider でラップし、現在のロケールを設定
793
+ return (
794
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
795
+ );
796
+ } else {
797
+ /**
798
+ ---
799
+
800
+ // 必要な依存関係と関数をインポート
801
+ const { configuration, getPathWithoutLocale } = require("intlayer");
802
+ const { IntlayerProvider } = require("preact-intlayer");
803
+ const { LocationProvider, useLocation } = require("preact-iso");
804
+ const { useEffect } = require("preact/hooks");
805
+ const { h } = require("preact"); // JSXのために必要
806
+
807
+ // Intlayerから設定を分解
808
+ const { internationalization, middleware } = configuration;
809
+ const { locales, defaultLocale } = internationalization;
810
+
811
+ const Navigate = ({ to, replace }) => {
812
+ const { route } = useLocation();
813
+ useEffect(() => {
814
+ route(to, replace);
815
+ }, [to, replace, route]);
816
+ return null;
817
+ };
818
+
819
+ /**
820
+ * ローカリゼーションを処理し、適切なロケールコンテキストで子要素をラップするコンポーネント。
821
+ * URLベースのロケール検出と検証を管理します。
822
+ */
823
+ const AppLocalized = ({ children, locale }) => {
824
+ const { path: pathname, url } = useLocation();
825
+
826
+ if (!url) {
827
+ return null;
828
+ }
829
+
830
+ const search = url.substring(pathname.length);
831
+
832
+ // 現在のロケールを決定し、指定されていない場合はデフォルトにフォールバック
833
+ const currentLocale = locale ?? defaultLocale;
834
+
835
+ // ロケールプレフィックスをパスから削除して基本パスを構築
836
+ const pathWithoutLocale = getPathWithoutLocale(
837
+ pathname // 現在のURLパス
838
+ );
839
+
840
+ /**
841
+ * middleware.prefixDefaultがtrueの場合、デフォルトロケールは常にプレフィックスされるべきです。
842
+ */
843
+ if (middleware.prefixDefault) {
844
+ // ロケールを検証
845
+ if (!locale || !locales.includes(locale)) {
846
+ // 更新されたパスでデフォルトロケールにリダイレクト
847
+ return (
848
+ <Navigate
849
+ to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
850
+ replace // 現在の履歴エントリを新しいものに置き換える
851
+ />
852
+ );
853
+ }
854
+
855
+ // 子要素をIntlayerProviderでラップし、現在のロケールを設定
856
+ return (
857
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
858
+ );
859
+ } else {
860
+ /**
861
+ * middleware.prefixDefaultがfalseの場合、デフォルトロケールはプレフィックスされません。
862
+ * 現在のロケールが有効であり、デフォルトロケールでないことを確認。
863
+ */
864
+ if (
865
+ currentLocale.toString() !== defaultLocale.toString() &&
866
+ !locales
867
+ .filter(
868
+ (loc) => loc.toString() !== defaultLocale.toString() // デフォルトロケールを除外
869
+ )
870
+ .includes(currentLocale) // 現在のロケールが有効なロケールリストに含まれているか確認
871
+ ) {
872
+ // ロケールプレフィックスなしのパスにリダイレクト
873
+ return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
874
+ }
875
+
876
+ // 子要素をIntlayerProviderでラップし、現在のロケールを設定
877
+ return (
878
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
879
+ );
880
+ }
881
+ };
882
+
883
+ const RouterContent = ({ children }) => {
884
+ const { path } = useLocation();
885
+
886
+ if (!path) {
887
+ return null;
888
+ }
889
+
890
+ const pathLocale = path.split("/")[1];
891
+
892
+ const isLocaleRoute = locales
893
+ .filter((locale) => middleware.prefixDefault || locale !== defaultLocale)
894
+ .some((locale) => locale.toString() === pathLocale);
895
+
896
+ if (isLocaleRoute) {
897
+ return <AppLocalized locale={pathLocale}>{children}</AppLocalized>;
898
+ }
899
+
900
+ return (
901
+ <AppLocalized
902
+ locale={!middleware.prefixDefault ? defaultLocale : undefined}
903
+ >
904
+ {children}
905
+ </AppLocalized>
906
+ );
907
+ };
908
+
909
+ /**
910
+ * ロケール固有のルートを設定するルーターコンポーネント。
911
+ * preact-isoを使用してナビゲーションを管理し、ローカライズされたコンポーネントをレンダリングします。
912
+ */
913
+ const LocaleRouter = ({ children }) => (
914
+ <LocationProvider>
915
+ <RouterContent>{children}</RouterContent>
916
+ </LocationProvider>
917
+ );
918
+
919
+ module.exports = { LocaleRouter };
920
+ ```
921
+
922
+ 次に、アプリケーションで`LocaleRouter`コンポーネントを使用します。
923
+
924
+ ```tsx fileName="src/app.tsx" codeFormat="typescript"
925
+ import { LocaleRouter } from "./components/LocaleRouter";
926
+ import type { FunctionalComponent } from "preact";
927
+ // ... AppContentコンポーネント (ステップ5で定義)
928
+
929
+ const App: FunctionalComponent = () => (
930
+ <LocaleRouter>
931
+ <AppContent />
932
+ </LocaleRouter>
933
+ );
934
+
935
+ export default App;
936
+ ```
937
+
938
+ ```jsx fileName="src/app.jsx" codeFormat="esm"
939
+ import { LocaleRouter } from "./components/LocaleRouter";
940
+ // ... AppContentコンポーネント (ステップ5で定義)
941
+
942
+ const App = () => (
943
+ <LocaleRouter>
944
+ <AppContent />
945
+ </LocaleRouter>
946
+ );
947
+
948
+ export default App;
949
+ ```
950
+
951
+ ```jsx fileName="src/app.cjsx" codeFormat="commonjs"
952
+ const { LocaleRouter } = require("./components/LocaleRouter");
953
+ // ... AppContentコンポーネント (ステップ5で定義)
954
+
955
+ const App = () => (
956
+ <LocaleRouter>
957
+ <AppContent />
958
+ </LocaleRouter>
959
+ );
960
+
961
+ module.exports = App;
962
+ ```
963
+
964
+ 並行して、`intLayerMiddlewarePlugin`を使用して、アプリケーションにサーバーサイドルーティングを追加することもできます。このプラグインは、URLに基づいて現在のロケールを自動的に検出し、適切なロケールクッキーを設定します。ロケールが指定されていない場合、プラグインはユーザーのブラウザ言語設定に基づいて最適なロケールを決定します。ロケールが検出されない場合、デフォルトロケールにリダイレクトします。
965
+
966
+ ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
967
+ import { defineConfig } from "vite";
968
+ import preact from "@preact/preset-vite";
969
+ import { intlayerPlugin, intLayerMiddlewarePlugin } from "vite-intlayer";
970
+
971
+ // https://vitejs.dev/config/
972
+ export default defineConfig({
973
+ plugins: [preact(), intlayerPlugin(), intLayerMiddlewarePlugin()],
974
+ });
975
+ ```
976
+
977
+ ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
978
+ import { defineConfig } from "vite";
979
+ import preact from "@preact/preset-vite";
980
+ import { intlayerPlugin, intLayerMiddlewarePlugin } from "vite-intlayer";
981
+
982
+ // https://vitejs.dev/config/
983
+ export default defineConfig({
984
+ plugins: [preact(), intlayerPlugin(), intLayerMiddlewarePlugin()],
985
+ });
986
+ ```
987
+
988
+ ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
989
+ const { defineConfig } = require("vite");
990
+ const preact = require("@preact/preset-vite");
991
+ const { intlayerPlugin, intLayerMiddlewarePlugin } = require("vite-intlayer");
992
+
993
+ // https://vitejs.dev/config/
994
+ module.exports = defineConfig({
995
+ plugins: [preact(), intlayerPlugin(), intLayerMiddlewarePlugin()],
996
+ });
997
+ ```
998
+
999
+ ### (オプション) ステップ8: ロケール変更時にURLを変更
1000
+
1001
+ ```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat="typescript"
1002
+ import { useLocation, route } from "preact-iso";
1003
+ import {
1004
+ Locales,
1005
+ getHTMLTextDir,
1006
+ getLocaleName,
1007
+ getLocalizedUrl,
1008
+ } from "intlayer";
1009
+ import { useLocale } from "preact-intlayer";
1010
+ import type { FunctionalComponent } from "preact";
1011
+
1012
+ const LocaleSwitcher: FunctionalComponent = () => {
1013
+ const location = useLocation();
1014
+ const { locale, availableLocales, setLocale } = useLocale({
1015
+ onLocaleChange: (newLocale) => {
1016
+ const currentFullPath = location.url; // preact-isoは完全なURLを提供します
1017
+ // 更新されたロケールでURLを構築します
1018
+ // 例: /es/about?foo=bar
1019
+ const pathWithLocale = getLocalizedUrl(currentFullPath, newLocale);
1020
+
1021
+ // URLパスを更新します
1022
+ route(pathWithLocale, true); // trueはreplaceを意味します
1023
+ },
1024
+ });
1025
+
1026
+ return (
1027
+ <div>
1028
+ <button popovertarget="localePopover">{getLocaleName(locale)}</button>
1029
+ <div id="localePopover" popover="auto">
1030
+ {availableLocales.map((localeItem) => (
1031
+ <a
1032
+ href={getLocalizedUrl(location.url, localeItem)}
1033
+ hreflang={localeItem}
1034
+ aria-current={locale === localeItem ? "page" : undefined}
1035
+ onClick={(e) => {
1036
+ e.preventDefault();
1037
+ setLocale(localeItem);
1038
+ // ロケール設定後のプログラム的なナビゲーションはonLocaleChangeで処理されます
1039
+ }}
1040
+ key={localeItem}
1041
+ >
1042
+ <span>
1043
+ {/* ロケール - 例: FR */}
1044
+ {localeItem}
1045
+ </span>
1046
+ <span>
1047
+ {/* 自身のロケールでの言語 - 例: Français */}
1048
+ {getLocaleName(localeItem, localeItem)}
1049
+ </span>
1050
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1051
+ {/* 現在のロケールでの言語 - 例: Francés (現在のロケールがLocales.SPANISHの場合) */}
1052
+ {getLocaleName(localeItem, locale)}
1053
+ </span>
1054
+ <span dir="ltr" lang={Locales.ENGLISH}>
1055
+ {/* 英語での言語 - 例: French */}
1056
+ {getLocaleName(localeItem, Locales.ENGLISH)}
1057
+ </span>
1058
+ </a>
1059
+ ))}
1060
+ </div>
1061
+ </div>
1062
+ );
1063
+ };
1064
+
1065
+ export default LocaleSwitcher;
1066
+ ```
1067
+
1068
+ ```jsx fileName="src/components/LocaleSwitcher.jsx" codeFormat="esm"
1069
+ import { useLocation, route } from "preact-iso";
1070
+ import {
1071
+ Locales,
1072
+ getHTMLTextDir,
1073
+ getLocaleName,
1074
+ getLocalizedUrl,
1075
+ } from "intlayer";
1076
+ import { useLocale } from "preact-intlayer";
1077
+ import { h } from "preact"; // JSX用
1078
+
1079
+ const LocaleSwitcher = () => {
1080
+ const location = useLocation();
1081
+ const { locale, availableLocales, setLocale } = useLocale({
1082
+ onLocaleChange: (newLocale) => {
1083
+ const currentFullPath = location.url;
1084
+ const pathWithLocale = getLocalizedUrl(currentFullPath, newLocale);
1085
+ route(pathWithLocale, true);
1086
+ },
1087
+ });
1088
+
1089
+ return (
1090
+ <div>
1091
+ <button popovertarget="localePopover">{getLocaleName(locale)}</button>
1092
+ <div id="localePopover" popover="auto">
1093
+ {availableLocales.map((localeItem) => (
1094
+ <a
1095
+ href={getLocalizedUrl(location.url, localeItem)}
1096
+ hreflang={localeItem}
1097
+ aria-current={locale === localeItem ? "page" : undefined}
1098
+ onClick={(e) => {
1099
+ e.preventDefault();
1100
+ setLocale(localeItem);
1101
+ }}
1102
+ key={localeItem}
1103
+ >
1104
+ <span>{localeItem}</span>
1105
+ <span>{getLocaleName(localeItem, localeItem)}</span>
1106
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1107
+ {getLocaleName(localeItem, locale)}
1108
+ </span>
1109
+ <span dir="ltr" lang={Locales.ENGLISH}>
1110
+ {getLocaleName(localeItem, Locales.ENGLISH)}
1111
+ </span>
1112
+ </a>
1113
+ ))}
1114
+ </div>
1115
+ </div>
1116
+ );
1117
+ };
1118
+
1119
+ export default LocaleSwitcher;
1120
+ ```
1121
+
1122
+ ```jsx fileName="src/components/LocaleSwitcher.cjsx" codeFormat="commonjs"
1123
+ const { useLocation, route } = require("preact-iso");
1124
+ const {
1125
+ Locales,
1126
+ getHTMLTextDir,
1127
+ getLocaleName,
1128
+ getLocalizedUrl,
1129
+ } = require("intlayer");
1130
+ const { useLocale } = require("preact-intlayer");
1131
+ const { h } = require("preact"); // JSX用
1132
+
1133
+ const LocaleSwitcher = () => {
1134
+ const location = useLocation();
1135
+ const { locale, availableLocales, setLocale } = useLocale({
1136
+ onLocaleChange: (newLocale) => {
1137
+ const currentFullPath = location.url;
1138
+ const pathWithLocale = getLocalizedUrl(currentFullPath, newLocale);
1139
+ route(pathWithLocale, true);
1140
+ },
1141
+ });
1142
+
1143
+ return (
1144
+ <div>
1145
+ <button popovertarget="localePopover">{getLocaleName(locale)}</button>
1146
+ <div id="localePopover" popover="auto">
1147
+ {availableLocales.map((localeItem) => (
1148
+ <a
1149
+ href={getLocalizedUrl(location.url, localeItem)}
1150
+ hreflang={localeItem}
1151
+ aria-current={locale === localeItem ? "page" : undefined}
1152
+ onClick={(e) => {
1153
+ e.preventDefault();
1154
+ setLocale(localeItem);
1155
+ }}
1156
+ key={localeItem}
1157
+ >
1158
+ <span>{localeItem}</span>
1159
+ <span>{getLocaleName(localeItem, localeItem)}</span>
1160
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1161
+ {getLocaleName(localeItem, locale)}
1162
+ </span>
1163
+ <span dir="ltr" lang={Locales.ENGLISH}>
1164
+ {getLocaleName(localeItem, Locales.ENGLISH)}
1165
+ </span>
1166
+ </a>
1167
+ ))}
1168
+ </div>
1169
+ </div>
1170
+ );
1171
+ };
1172
+
1173
+ module.exports = LocaleSwitcher;
1174
+ ```
1175
+
1176
+ > ドキュメント参照:
1177
+
1178
+ > - [`useLocale`フック](https://github.com/aymericzip/intlayer/blob/main/docs/ja/packages/react-intlayer/useLocale.md) (`preact-intlayer`のAPIも類似)
1179
+
1180
+ > - [`getLocaleName`フック](https://github.com/aymericzip/intlayer/blob/main/docs/ja/packages/intlayer/getLocaleName.md)
1181
+
1182
+ > - [`getLocalizedUrl`フック](https://github.com/aymericzip/intlayer/blob/main/docs/ja/packages/intlayer/getLocalizedUrl.md)
1183
+
1184
+ > - [`getHTMLTextDir`フック](https://github.com/aymericzip/intlayer/blob/main/docs/ja/packages/intlayer/getHTMLTextDir.md)
1185
+
1186
+ > - [`hreflang`属性](https://developers.google.com/search/docs/specialty/international/localized-versions?hl=ja)
1187
+
1188
+ > - [`lang`属性](https://developer.mozilla.org/ja/docs/Web/HTML/Global_attributes/lang)
1189
+
1190
+ > - [`dir`属性](https://developer.mozilla.org/ja/docs/Web/HTML/Global_attributes/dir)
1191
+
1192
+ > - [`aria-current`属性](https://developer.mozilla.org/ja/docs/Web/Accessibility/ARIA/Attributes/aria-current)
1193
+
1194
+ > - [Popover API](https://developer.mozilla.org/ja/docs/Web/API/Popover_API)
1195
+
1196
+ 以下は、説明を追加し、コード例を改良した**ステップ9**です:
1197
+
1198
+ ---
1199
+
1200
+ ### (オプション) ステップ9: HTMLの言語と方向属性を切り替える
1201
+
1202
+ アプリケーションが複数の言語をサポートする場合、現在のロケールに合わせて`<html>`タグの`lang`および`dir`属性を更新することが重要です。これにより、以下が保証されます:
1203
+
1204
+ - **アクセシビリティ**: スクリーンリーダーや支援技術は、正しい`lang`属性を使用してコンテンツを正確に発音および解釈します。
1205
+ - **テキストレンダリング**: `dir`(方向)属性は、テキストが適切な順序でレンダリングされることを保証します(例: 英語は左から右、アラビア語やヘブライ語は右から左)。
1206
+ - **SEO**: 検索エンジンは`lang`属性を使用してページの言語を判断し、検索結果で適切なローカライズされたコンテンツを提供します。
1207
+
1208
+ ロケール変更時にこれらの属性を動的に更新することで、すべてのサポート言語で一貫性があり、アクセシブルな体験をユーザーに提供できます。
1209
+
1210
+ #### フックの実装
1211
+
1212
+ カスタムフックを作成してHTML属性を管理します。このフックはロケールの変更を監視し、属性を適切に更新します:
1213
+
1214
+ import { useEffect } from "preact/hooks";
1215
+ import { useLocale } from "preact-intlayer";
1216
+ import { getHTMLTextDir } from "intlayer";
1217
+
1218
+ /\*\*
1219
+
1220
+ - 現在のロケールに基づいてHTML <html> 要素の `lang` と `dir` 属性を更新します。
1221
+ - - `lang`: ブラウザや検索エンジンにページの言語を通知します。
1222
+ - - `dir`: 正しい読み順を保証します(例: 英語の場合は 'ltr'、アラビア語の場合は 'rtl')。
1223
+ -
1224
+ - この動的な更新は、適切なテキストレンダリング、アクセシビリティ、SEOにとって重要です。
1225
+ \*/
1226
+ export const useI18nHTMLAttributes = () => {
1227
+ const { locale } = useLocale();
1228
+
1229
+ useEffect(() => {
1230
+ // 現在のロケールに言語属性を更新します。
1231
+ document.documentElement.lang = locale;
1232
+
1233
+ // 現在のロケールに基づいてテキスト方向を設定します。
1234
+ document.documentElement.dir = getHTMLTextDir(locale);
1235
+
1236
+ }, [locale]);
1237
+ };
1238
+
1239
+ ````
1240
+
1241
+ ```jsx fileName="src/hooks/useI18nHTMLAttributes.jsx" codeFormat="esm"
1242
+ import { useEffect } from "preact/hooks";
1243
+ import { useLocale } from "preact-intlayer";
1244
+ import { getHTMLTextDir } from "intlayer";
1245
+
1246
+ /**
1247
+ * 現在のロケールに基づいてHTML <html> 要素の `lang` と `dir` 属性を更新します。
1248
+ */
1249
+ export const useI18nHTMLAttributes = () => {
1250
+ const { locale } = useLocale();
1251
+
1252
+ useEffect(() => {
1253
+ document.documentElement.lang = locale;
1254
+ document.documentElement.dir = getHTMLTextDir(locale);
1255
+ }, [locale]);
1256
+ };
1257
+ ````
1258
+
1259
+ ```jsx fileName="src/hooks/useI18nHTMLAttributes.cjsx" codeFormat="commonjs"
1260
+ const { useEffect } = require("preact/hooks");
1261
+ const { useLocale } = require("preact-intlayer");
1262
+ const { getHTMLTextDir } = require("intlayer");
1263
+
1264
+ /**
1265
+ * 現在のロケールに基づいてHTML <html> 要素の `lang` と `dir` 属性を更新します。
1266
+ */
1267
+ const useI18nHTMLAttributes = () => {
1268
+ const { locale } = useLocale();
1269
+
1270
+ useEffect(() => {
1271
+ document.documentElement.lang = locale;
1272
+ document.documentElement.dir = getHTMLTextDir(locale);
1273
+ }, [locale]);
1274
+ };
1275
+
1276
+ module.exports = { useI18nHTMLAttributes };
1277
+ ```
1278
+
1279
+ #### アプリケーションでフックを使用する
1280
+
1281
+ ロケールが変更されるたびにHTML属性が更新されるように、フックをメインコンポーネントに統合します:
1282
+
1283
+ ```tsx fileName="src/app.tsx" codeFormat="typescript"
1284
+ import type { FunctionalComponent } from "preact";
1285
+ import { IntlayerProvider } from "preact-intlayer"; // AppContentが必要な場合、useIntlayerはすでにインポートされています
1286
+ import { useI18nHTMLAttributes } from "./hooks/useI18nHTMLAttributes";
1287
+ import "./app.css";
1288
+ // ステップ5のAppContent定義
1289
+
1290
+ const AppWithHooks: FunctionalComponent = () => {
1291
+ // ロケールに基づいて<html>タグのlangとdir属性を更新するフックを適用します。
1292
+ useI18nHTMLAttributes();
1293
+
1294
+ // AppContentはステップ5からのメインコンテンツ表示コンポーネントと仮定します
1295
+ return <AppContent />;
1296
+ };
1297
+
1298
+ const App: FunctionalComponent = () => (
1299
+ <IntlayerProvider>
1300
+ <AppWithHooks />
1301
+ </IntlayerProvider>
1302
+ );
1303
+
1304
+ export default App;
1305
+ ```
1306
+
1307
+ ```jsx fileName="src/app.jsx" codeFormat="esm"
1308
+ import { IntlayerProvider } from "preact-intlayer";
1309
+ import { useI18nHTMLAttributes } from "./hooks/useI18nHTMLAttributes";
1310
+ import "./app.css";
1311
+ // ステップ5のAppContent定義
1312
+
1313
+ const AppWithHooks = () => {
1314
+ useI18nHTMLAttributes();
1315
+ return <AppContent />;
1316
+ };
1317
+
1318
+ const App = () => (
1319
+ <IntlayerProvider>
1320
+ <AppWithHooks />
1321
+ </IntlayerProvider>
1322
+ );
1323
+
1324
+ export default App;
1325
+ ```
1326
+
1327
+ ```jsx fileName="src/app.cjsx" codeFormat="commonjs"
1328
+ const { IntlayerProvider } = require("preact-intlayer");
1329
+ const { useI18nHTMLAttributes } = require("./hooks/useI18nHTMLAttributes");
1330
+ require("./app.css");
1331
+ // ステップ5のAppContent定義
1332
+
1333
+ const AppWithHooks = () => {
1334
+ useI18nHTMLAttributes();
1335
+ return <AppContent />;
1336
+ };
1337
+
1338
+ const App = () => (
1339
+ <IntlayerProvider>
1340
+ <AppWithHooks />
1341
+ </IntlayerProvider>
1342
+ );
1343
+
1344
+ module.exports = App;
1345
+ ```
1346
+
1347
+ これらの変更を適用することで、アプリケーションは以下を実現します:
1348
+
1349
+ - **言語** (`lang`) 属性が現在のロケールを正しく反映し、SEOやブラウザの動作に重要な役割を果たします。
1350
+ - **テキスト方向** (`dir`) がロケールに応じて調整され、異なる読み順の言語に対して可読性と使いやすさを向上させます。
1351
+ - **アクセシビリティ** を向上させ、支援技術がこれらの属性に依存して最適に機能するようにします。
1352
+
1353
+ ### (オプション) ステップ10: ローカライズされたリンクコンポーネントの作成
1354
+
1355
+ アプリケーションのナビゲーションが現在のロケールを尊重するようにするために、カスタム `Link` コンポーネントを作成できます。このコンポーネントは内部URLに現在の言語を自動的にプレフィックスします。
1356
+
1357
+ この動作は以下の理由で有用です:
1358
+
1359
+ - **SEOとユーザーエクスペリエンス**: ローカライズされたURLは、検索エンジンが言語固有のページを正しくインデックス化し、ユーザーに好みの言語でコンテンツを提供するのに役立ちます。
1360
+ - **一貫性**: アプリケーション全体でローカライズされたリンクを使用することで、ナビゲーションが現在のロケール内に留まり、予期しない言語切り替えを防ぎます。
1361
+ - **保守性**: ローカリゼーションロジックを単一のコンポーネントに集中させることで、URLの管理が簡素化されます。
1362
+
1363
+ Preactで`preact-iso`を使用する場合、標準の`<a>`タグが通常ナビゲーションに使用され、`preact-iso`がルーティングを処理します。クリック時にプログラム的なナビゲーションが必要な場合(例: ナビゲーション前にアクションを実行する場合)、`useLocation`からの`route`関数を使用できます。以下は、URLをローカライズするカスタムアンカーコンポーネントの作成方法です:
1364
+
1365
+ ```tsx fileName="src/components/LocalizedLink.tsx" codeFormat="typescript"
1366
+ import { getLocalizedUrl } from "intlayer";
1367
+ import { useLocale, useLocation, route } from "preact-intlayer"; // useLocationとrouteはpreact-intlayer経由で再エクスポートされるか、直接インポート
1368
+ // 再エクスポートされない場合: import { useLocation, route } from "preact-iso";
1369
+ import type { JSX } from "preact"; // HTMLAttributes用
1370
+ import { forwardRef } from "preact/compat"; // refを転送するため
1371
+
1372
+ export interface LocalizedLinkProps
1373
+ extends JSX.HTMLAttributes<HTMLAnchorElement> {
1374
+ href: string;
1375
+ replace?: boolean; // オプション: 履歴状態を置き換える
1376
+ }
1377
+
1378
+ /**
1379
+ * 指定されたURLが外部リンクかどうかを確認するユーティリティ関数。
1380
+ * URLがhttp://またはhttps://で始まる場合、外部リンクと見なされます。
1381
+ */
1382
+ export const checkIsExternalLink = (href?: string): boolean =>
1383
+ /^https?:\/\//.test(href ?? "");
1384
+
1385
+ /**
1386
+ * 現在のロケールに基づいてhref属性を適応させるカスタムリンクコンポーネント。
1387
+ * 内部リンクの場合、`getLocalizedUrl`を使用してURLにロケールをプレフィックスします(例: /ja/about)。
1388
+ * これにより、ナビゲーションが同じロケールコンテキスト内に留まることを保証します。
1389
+ * 標準の<a>タグを使用しますが、preact-isoの`route`を使用してクライアントサイドナビゲーションをトリガーできます。
1390
+ */
1391
+ export const LocalizedLink = forwardRef<HTMLAnchorElement, LocalizedLinkProps>(
1392
+ ({ href, children, onClick, replace = false, ...props }, ref) => {
1393
+ const { locale } = useLocale();
1394
+ const location = useLocation(); // preact-isoから
1395
+ const isExternalLink = checkIsExternalLink(href);
1396
+
1397
+ const hrefI18n =
1398
+ href && !isExternalLink ? getLocalizedUrl(href, locale) : href;
1399
+
1400
+ const handleClick = (event: JSX.TargetedMouseEvent<HTMLAnchorElement>) => {
1401
+ if (onClick) {
1402
+ onClick(event);
1403
+ }
1404
+ if (
1405
+ !isExternalLink &&
1406
+ href && // hrefが定義されていることを確認
1407
+ event.button === 0 && // 左クリック
1408
+ !event.metaKey &&
1409
+ !event.ctrlKey &&
1410
+ !event.shiftKey &&
1411
+ !event.altKey && // 標準の修飾キーのチェック
1412
+ !props.target // 新しいタブ/ウィンドウをターゲットにしていない
1413
+ ) {
1414
+ event.preventDefault();
1415
+ if (location.url !== hrefI18n) {
1416
+ // URLが異なる場合のみナビゲート
1417
+ route(hrefI18n, replace); // preact-isoのrouteを使用
1418
+ }
1419
+ }
1420
+ };
1421
+
1422
+ return (
1423
+ <a href={hrefI18n} ref={ref} onClick={handleClick} {...props}>
1424
+ {children}
1425
+ </a>
1426
+ );
1427
+ }
1428
+ );
1429
+ ```
1430
+
1431
+ ```jsx fileName="src/components/LocalizedLink.jsx" codeFormat="esm"
1432
+ import { getLocalizedUrl } from "intlayer";
1433
+ import { useLocale } from "preact-intlayer";
1434
+
1435
+ import { useLocation, route } from "preact-iso"; // preact-isoからインポート
1436
+ import { forwardRef } from "preact/compat";
1437
+ import { h } from "preact"; // JSX用
1438
+
1439
+ export const checkIsExternalLink = (href) => /^https?:\/\//.test(href ?? "");
1440
+
1441
+ export const LocalizedLink = forwardRef(
1442
+ ({ href, children, onClick, replace = false, ...props }, ref) => {
1443
+ const { locale } = useLocale();
1444
+ const location = useLocation();
1445
+ const isExternalLink = checkIsExternalLink(href);
1446
+
1447
+ const hrefI18n =
1448
+ href && !isExternalLink ? getLocalizedUrl(href, locale) : href;
1449
+
1450
+ const handleClick = (event) => {
1451
+ if (onClick) {
1452
+ onClick(event);
1453
+ }
1454
+ if (
1455
+ !isExternalLink &&
1456
+ href &&
1457
+ event.button === 0 &&
1458
+ !event.metaKey &&
1459
+ !event.ctrlKey &&
1460
+ !event.shiftKey &&
1461
+ !event.altKey &&
1462
+ !props.target
1463
+ ) {
1464
+ event.preventDefault();
1465
+ if (location.url !== hrefI18n) {
1466
+ route(hrefI18n, replace);
1467
+ }
1468
+ }
1469
+ };
1470
+
1471
+ return (
1472
+ <a href={hrefI18n} ref={ref} onClick={handleClick} {...props}>
1473
+ {children}
1474
+ </a>
1475
+ );
1476
+ }
1477
+ );
1478
+ ```
1479
+
1480
+ ```jsx fileName="src/components/LocalizedLink.cjsx" codeFormat="commonjs"
1481
+ const { getLocalizedUrl } = require("intlayer");
1482
+ const { useLocale } = require("preact-intlayer");
1483
+ const { useLocation, route } = require("preact-iso"); // preact-isoからインポート
1484
+ const { forwardRef } = require("preact/compat");
1485
+ const { h } = require("preact"); // JSX用
1486
+
1487
+ const checkIsExternalLink = (href) => /^https?:\/\//.test(href ?? "");
1488
+
1489
+ const LocalizedLink = forwardRef(
1490
+ ({ href, children, onClick, replace = false, ...props }, ref) => {
1491
+ const { locale } = useLocale();
1492
+ const location = useLocation();
1493
+ const isExternalLink = checkIsExternalLink(href);
1494
+
1495
+ const hrefI18n =
1496
+ href && !isExternalLink ? getLocalizedUrl(href, locale) : href;
1497
+
1498
+ const handleClick = (event) => {
1499
+ if (onClick) {
1500
+ onClick(event);
1501
+ }
1502
+ if (
1503
+ !isExternalLink &&
1504
+ href &&
1505
+ event.button === 0 &&
1506
+ !event.metaKey &&
1507
+ !event.ctrlKey &&
1508
+ !event.shiftKey &&
1509
+ !event.altKey &&
1510
+ !props.target
1511
+ ) {
1512
+ event.preventDefault();
1513
+ if (location.url !== hrefI18n) {
1514
+ route(hrefI18n, replace);
1515
+ }
1516
+ }
1517
+ };
1518
+
1519
+ return (
1520
+ <a href={hrefI18n} ref={ref} onClick={handleClick} {...props}>
1521
+ {children}
1522
+ </a>
1523
+ );
1524
+ }
1525
+ );
1526
+
1527
+ module.exports = { LocalizedLink, checkIsExternalLink };
1528
+ ```
1529
+
1530
+ #### 動作の仕組み
1531
+
1532
+ - **外部リンクの検出**:
1533
+ ヘルパー関数 `checkIsExternalLink` は、URLが外部リンクかどうかを判定します。外部リンクは変更されません。
1534
+ - **現在のロケールの取得**:
1535
+ `useLocale` フックは現在のロケールを提供します。
1536
+ - **URLのローカライズ**:
1537
+ 内部リンクの場合、`getLocalizedUrl` がURLに現在のロケールを付加します。
1538
+ - **クライアントサイドナビゲーション**:
1539
+ `handleClick` 関数は、内部リンクで標準のナビゲーションを防ぐべきかどうかを確認します。必要であれば、`preact-iso` の `route` 関数(`useLocation` または直接インポートで取得)を使用してクライアントサイドナビゲーションを実行します。これにより、ページ全体のリロードなしでSPAのような動作が可能になります。
1540
+ - **リンクの返却**:
1541
+ コンポーネントはローカライズされたURLとカスタムクリックハンドラを持つ `<a>` 要素を返します。
1542
+
1543
+ ### TypeScriptの設定
1544
+
1545
+ Intlayerはモジュール拡張を使用して、TypeScriptの利点を活用し、コードベースを強化します。
1546
+
1547
+ ![alt text](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png)
1548
+
1549
+ ![alt text](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png)
1550
+
1551
+ 自動生成された型を含めるようにTypeScriptの設定を確認してください。
1552
+
1553
+ ```json5 fileName="tsconfig.json"
1554
+ {
1555
+ // ... 既存のTypeScript設定
1556
+ "compilerOptions": {
1557
+ // ...
1558
+ "jsx": "react-jsx",
1559
+ "jsxImportSource": "preact", // Preact 10+推奨
1560
+ // ...
1561
+ },
1562
+ "include": [
1563
+ // ... 既存のTypeScript設定
1564
+ ".intlayer/**/*.ts", // 自動生成された型を含める
1565
+ ],
1566
+ }
1567
+ ```
1568
+
1569
+ > 特に`jsx`と`jsxImportSource`、または古いPreactバージョンを使用している場合は`jsxFactory`/`jsxFragmentFactory`が`preset-vite`のデフォルトで設定されていることを確認してください。
1570
+
1571
+ ### Gitの設定
1572
+
1573
+ Intlayerによって生成されたファイルを無視することをお勧めします。これにより、それらをGitリポジトリにコミットすることを避けられます。
1574
+
1575
+ これを行うには、以下の指示を `.gitignore` ファイルに追加します:
1576
+
1577
+ ```plaintext
1578
+ # Intlayerによって生成されたファイルを無視
1579
+ .intlayer
1580
+ ```
1581
+
1582
+ ### VS Code拡張機能
1583
+
1584
+ Intlayerでの開発体験を向上させるために、公式の **Intlayer VS Code拡張機能** をインストールできます。
1585
+
1586
+ [VS Code Marketplaceからインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
1587
+
1588
+ この拡張機能は以下を提供します:
1589
+
1590
+ - 翻訳キーの**オートコンプリート**。
1591
+ - 翻訳漏れの**リアルタイムエラー検出**。
1592
+ - 翻訳コンテンツの**インラインプレビュー**。
1593
+ - 翻訳を簡単に作成および更新するための**クイックアクション**。
1594
+
1595
+ 拡張機能の使用方法の詳細については、[Intlayer VS Code Extensionドキュメント](https://intlayer.org/doc/vs-code-extension)を参照してください。
1596
+
1597
+ ---
1598
+
1599
+ ### さらに進む
1600
+
1601
+ ## さらに進めるには、[ビジュアルエディター](https://github.com/aymericzip/intlayer/blob/main/docs/ja/intlayer_visual_editor.md)を実装するか、[CMS](https://github.com/aymericzip/intlayer/blob/main/docs/ja/intlayer_CMS.md)を使用してコンテンツを外部化することができます。