@intlayer/docs 6.1.6-canary.0 → 6.1.6

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 (242) hide show
  1. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +71 -80
  2. package/dist/cjs/generated/docs.entry.cjs +16 -0
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/generated/docs.entry.mjs +16 -0
  5. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  6. package/dist/types/generated/docs.entry.d.ts +1 -0
  7. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  8. package/docs/ar/intlayer_with_angular.md +2 -2
  9. package/docs/ar/intlayer_with_astro.md +246 -0
  10. package/docs/ar/intlayer_with_create_react_app.md +3 -2
  11. package/docs/ar/intlayer_with_express.md +2 -2
  12. package/docs/ar/intlayer_with_nestjs.md +2 -2
  13. package/docs/ar/intlayer_with_nextjs_14.md +2 -2
  14. package/docs/ar/intlayer_with_nextjs_15.md +2 -2
  15. package/docs/ar/intlayer_with_nextjs_page_router.md +2 -2
  16. package/docs/ar/intlayer_with_nuxt.md +2 -2
  17. package/docs/ar/intlayer_with_react_native+expo.md +11 -20
  18. package/docs/ar/intlayer_with_react_router_v7.md +195 -241
  19. package/docs/ar/intlayer_with_tanstack.md +198 -272
  20. package/docs/ar/intlayer_with_vite+preact.md +9 -9
  21. package/docs/ar/intlayer_with_vite+react.md +7 -7
  22. package/docs/ar/intlayer_with_vite+vue.md +9 -9
  23. package/docs/de/intlayer_with_angular.md +2 -2
  24. package/docs/de/intlayer_with_astro.md +246 -0
  25. package/docs/de/intlayer_with_create_react_app.md +2 -2
  26. package/docs/de/intlayer_with_express.md +2 -2
  27. package/docs/de/intlayer_with_nestjs.md +2 -2
  28. package/docs/de/intlayer_with_nextjs_14.md +2 -2
  29. package/docs/de/intlayer_with_nextjs_15.md +2 -2
  30. package/docs/de/intlayer_with_nextjs_page_router.md +2 -2
  31. package/docs/de/intlayer_with_nuxt.md +2 -2
  32. package/docs/de/intlayer_with_react_native+expo.md +11 -20
  33. package/docs/de/intlayer_with_react_router_v7.md +193 -242
  34. package/docs/de/intlayer_with_tanstack.md +194 -266
  35. package/docs/de/intlayer_with_vite+preact.md +9 -9
  36. package/docs/de/intlayer_with_vite+react.md +9 -9
  37. package/docs/de/intlayer_with_vite+vue.md +11 -11
  38. package/docs/de/packages/vite-intlayer/index.md +3 -3
  39. package/docs/en/how_works_intlayer.md +1 -1
  40. package/docs/en/index.md +1 -1
  41. package/docs/en/intlayer_cli.md +1 -1
  42. package/docs/en/intlayer_with_angular.md +4 -4
  43. package/docs/en/intlayer_with_astro.md +246 -0
  44. package/docs/en/intlayer_with_create_react_app.md +4 -4
  45. package/docs/en/intlayer_with_express.md +3 -3
  46. package/docs/en/intlayer_with_lynx+react.md +1 -1
  47. package/docs/en/intlayer_with_nestjs.md +2 -2
  48. package/docs/en/intlayer_with_nextjs_14.md +13 -4
  49. package/docs/en/intlayer_with_nextjs_15.md +13 -4
  50. package/docs/en/intlayer_with_nextjs_page_router.md +5 -5
  51. package/docs/en/intlayer_with_nuxt.md +4 -4
  52. package/docs/en/intlayer_with_react_native+expo.md +46 -24
  53. package/docs/en/intlayer_with_react_router_v7.md +164 -211
  54. package/docs/en/intlayer_with_tanstack.md +166 -241
  55. package/docs/en/intlayer_with_vite+preact.md +12 -12
  56. package/docs/en/intlayer_with_vite+react.md +12 -12
  57. package/docs/en/intlayer_with_vite+solid.md +2 -2
  58. package/docs/en/intlayer_with_vite+svelte.md +2 -2
  59. package/docs/en/intlayer_with_vite+vue.md +12 -12
  60. package/docs/en/introduction.md +1 -1
  61. package/docs/en/packages/next-intlayer/useDictionary.md +1 -1
  62. package/docs/en/packages/next-intlayer/useIntlayer.md +1 -1
  63. package/docs/en/packages/react-intlayer/useDictionary.md +1 -1
  64. package/docs/en/packages/react-intlayer/useI18n.md +1 -1
  65. package/docs/en/packages/react-intlayer/useIntlayer.md +1 -1
  66. package/docs/en/releases/v6.md +1 -0
  67. package/docs/en/roadmap.md +1 -1
  68. package/docs/en-GB/intlayer_with_angular.md +3 -3
  69. package/docs/en-GB/intlayer_with_astro.md +246 -0
  70. package/docs/en-GB/intlayer_with_create_react_app.md +5 -4
  71. package/docs/en-GB/intlayer_with_express.md +2 -2
  72. package/docs/en-GB/intlayer_with_nestjs.md +2 -2
  73. package/docs/en-GB/intlayer_with_nextjs_14.md +4 -4
  74. package/docs/en-GB/intlayer_with_nextjs_15.md +2 -2
  75. package/docs/en-GB/intlayer_with_nextjs_page_router.md +2 -2
  76. package/docs/en-GB/intlayer_with_nuxt.md +2 -2
  77. package/docs/en-GB/intlayer_with_react_native+expo.md +11 -20
  78. package/docs/en-GB/intlayer_with_react_router_v7.md +171 -220
  79. package/docs/en-GB/intlayer_with_tanstack.md +174 -248
  80. package/docs/en-GB/intlayer_with_vite+preact.md +9 -9
  81. package/docs/en-GB/intlayer_with_vite+react.md +9 -9
  82. package/docs/en-GB/intlayer_with_vite+vue.md +11 -11
  83. package/docs/en-GB/packages/next-intlayer/useIntlayer.md +1 -1
  84. package/docs/en-GB/packages/react-intlayer/useIntlayer.md +1 -1
  85. package/docs/es/intlayer_with_angular.md +2 -2
  86. package/docs/es/intlayer_with_astro.md +246 -0
  87. package/docs/es/intlayer_with_create_react_app.md +3 -2
  88. package/docs/es/intlayer_with_express.md +2 -2
  89. package/docs/es/intlayer_with_nextjs_14.md +2 -2
  90. package/docs/es/intlayer_with_nextjs_15.md +2 -2
  91. package/docs/es/intlayer_with_react_native+expo.md +11 -20
  92. package/docs/es/intlayer_with_react_router_v7.md +188 -232
  93. package/docs/es/intlayer_with_tanstack.md +203 -273
  94. package/docs/es/intlayer_with_vite+preact.md +7 -7
  95. package/docs/es/intlayer_with_vite+react.md +7 -7
  96. package/docs/es/intlayer_with_vite+vue.md +9 -9
  97. package/docs/fr/intlayer_with_angular.md +2 -2
  98. package/docs/fr/intlayer_with_astro.md +246 -0
  99. package/docs/fr/intlayer_with_create_react_app.md +3 -2
  100. package/docs/fr/intlayer_with_express.md +2 -2
  101. package/docs/fr/intlayer_with_nestjs.md +2 -2
  102. package/docs/fr/intlayer_with_nextjs_14.md +2 -2
  103. package/docs/fr/intlayer_with_react_native+expo.md +11 -20
  104. package/docs/fr/intlayer_with_react_router_v7.md +188 -248
  105. package/docs/fr/intlayer_with_tanstack.md +192 -265
  106. package/docs/fr/intlayer_with_vite+preact.md +7 -7
  107. package/docs/fr/intlayer_with_vite+react.md +7 -7
  108. package/docs/fr/intlayer_with_vite+vue.md +9 -9
  109. package/docs/hi/intlayer_cli.md +1 -4
  110. package/docs/hi/intlayer_with_angular.md +2 -2
  111. package/docs/hi/intlayer_with_astro.md +246 -0
  112. package/docs/hi/intlayer_with_create_react_app.md +2 -2
  113. package/docs/hi/intlayer_with_express.md +2 -2
  114. package/docs/hi/intlayer_with_nestjs.md +2 -2
  115. package/docs/hi/intlayer_with_nextjs_14.md +2 -2
  116. package/docs/hi/intlayer_with_nextjs_15.md +2 -2
  117. package/docs/hi/intlayer_with_nextjs_page_router.md +2 -2
  118. package/docs/hi/intlayer_with_nuxt.md +2 -2
  119. package/docs/hi/intlayer_with_react_native+expo.md +11 -20
  120. package/docs/hi/intlayer_with_react_router_v7.md +199 -243
  121. package/docs/hi/intlayer_with_tanstack.md +210 -285
  122. package/docs/hi/intlayer_with_vite+preact.md +9 -9
  123. package/docs/hi/intlayer_with_vite+react.md +9 -9
  124. package/docs/hi/intlayer_with_vite+solid.md +1 -1
  125. package/docs/hi/intlayer_with_vite+vue.md +11 -11
  126. package/docs/it/intlayer_with_angular.md +2 -2
  127. package/docs/it/intlayer_with_astro.md +246 -0
  128. package/docs/it/intlayer_with_create_react_app.md +3 -2
  129. package/docs/it/intlayer_with_express.md +2 -2
  130. package/docs/it/intlayer_with_nestjs.md +2 -2
  131. package/docs/it/intlayer_with_nextjs_14.md +2 -2
  132. package/docs/it/intlayer_with_nextjs_15.md +2 -2
  133. package/docs/it/intlayer_with_nextjs_page_router.md +2 -2
  134. package/docs/it/intlayer_with_nuxt.md +2 -2
  135. package/docs/it/intlayer_with_react_native+expo.md +11 -21
  136. package/docs/it/intlayer_with_react_router_v7.md +195 -242
  137. package/docs/it/intlayer_with_tanstack.md +203 -267
  138. package/docs/it/intlayer_with_vite+preact.md +9 -9
  139. package/docs/it/intlayer_with_vite+react.md +13 -11
  140. package/docs/it/intlayer_with_vite+vue.md +11 -11
  141. package/docs/ja/intlayer_with_angular.md +2 -2
  142. package/docs/ja/intlayer_with_astro.md +246 -0
  143. package/docs/ja/intlayer_with_create_react_app.md +3 -2
  144. package/docs/ja/intlayer_with_express.md +2 -2
  145. package/docs/ja/intlayer_with_nestjs.md +2 -2
  146. package/docs/ja/intlayer_with_nextjs_14.md +2 -2
  147. package/docs/ja/intlayer_with_nextjs_15.md +2 -2
  148. package/docs/ja/intlayer_with_nextjs_page_router.md +2 -2
  149. package/docs/ja/intlayer_with_nuxt.md +2 -2
  150. package/docs/ja/intlayer_with_react_native+expo.md +18 -29
  151. package/docs/ja/intlayer_with_react_router_v7.md +204 -250
  152. package/docs/ja/intlayer_with_tanstack.md +218 -286
  153. package/docs/ja/intlayer_with_vite+preact.md +9 -9
  154. package/docs/ja/intlayer_with_vite+react.md +11 -11
  155. package/docs/ja/intlayer_with_vite+vue.md +11 -11
  156. package/docs/ko/intlayer_with_angular.md +2 -2
  157. package/docs/ko/intlayer_with_astro.md +246 -0
  158. package/docs/ko/intlayer_with_create_react_app.md +3 -2
  159. package/docs/ko/intlayer_with_express.md +2 -2
  160. package/docs/ko/intlayer_with_nestjs.md +2 -2
  161. package/docs/ko/intlayer_with_nextjs_14.md +2 -2
  162. package/docs/ko/intlayer_with_nextjs_15.md +2 -2
  163. package/docs/ko/intlayer_with_nextjs_page_router.md +2 -2
  164. package/docs/ko/intlayer_with_nuxt.md +2 -2
  165. package/docs/ko/intlayer_with_react_native+expo.md +19 -28
  166. package/docs/ko/intlayer_with_react_router_v7.md +190 -244
  167. package/docs/ko/intlayer_with_tanstack.md +200 -270
  168. package/docs/ko/intlayer_with_vite+preact.md +9 -9
  169. package/docs/ko/intlayer_with_vite+react.md +9 -9
  170. package/docs/ko/intlayer_with_vite+vue.md +11 -11
  171. package/docs/pt/intlayer_with_angular.md +2 -2
  172. package/docs/pt/intlayer_with_astro.md +246 -0
  173. package/docs/pt/intlayer_with_create_react_app.md +3 -2
  174. package/docs/pt/intlayer_with_express.md +2 -2
  175. package/docs/pt/intlayer_with_nestjs.md +2 -2
  176. package/docs/pt/intlayer_with_nextjs_14.md +2 -2
  177. package/docs/pt/intlayer_with_nextjs_15.md +2 -2
  178. package/docs/pt/intlayer_with_nextjs_page_router.md +2 -2
  179. package/docs/pt/intlayer_with_nuxt.md +2 -2
  180. package/docs/pt/intlayer_with_react_native+expo.md +11 -20
  181. package/docs/pt/intlayer_with_react_router_v7.md +7 -13
  182. package/docs/pt/intlayer_with_tanstack.md +183 -258
  183. package/docs/pt/intlayer_with_vite+preact.md +9 -9
  184. package/docs/pt/intlayer_with_vite+react.md +9 -9
  185. package/docs/pt/intlayer_with_vite+vue.md +9 -9
  186. package/docs/ru/intlayer_with_angular.md +2 -2
  187. package/docs/ru/intlayer_with_astro.md +246 -0
  188. package/docs/ru/intlayer_with_create_react_app.md +3 -2
  189. package/docs/ru/intlayer_with_express.md +2 -2
  190. package/docs/ru/intlayer_with_nestjs.md +2 -2
  191. package/docs/ru/intlayer_with_nextjs_14.md +2 -2
  192. package/docs/ru/intlayer_with_nextjs_15.md +2 -2
  193. package/docs/ru/intlayer_with_nextjs_page_router.md +2 -2
  194. package/docs/ru/intlayer_with_nuxt.md +2 -2
  195. package/docs/ru/intlayer_with_react_native+expo.md +11 -20
  196. package/docs/ru/intlayer_with_react_router_v7.md +192 -238
  197. package/docs/ru/intlayer_with_tanstack.md +197 -269
  198. package/docs/ru/intlayer_with_vite+preact.md +9 -9
  199. package/docs/ru/intlayer_with_vite+react.md +9 -9
  200. package/docs/ru/intlayer_with_vite+vue.md +11 -11
  201. package/docs/tr/how_works_intlayer.md +1 -1
  202. package/docs/tr/index.md +1 -1
  203. package/docs/tr/intlayer_cli.md +1 -1
  204. package/docs/tr/intlayer_with_angular.md +4 -4
  205. package/docs/tr/intlayer_with_astro.md +246 -0
  206. package/docs/tr/intlayer_with_create_react_app.md +4 -4
  207. package/docs/tr/intlayer_with_express.md +3 -3
  208. package/docs/tr/intlayer_with_lynx+react.md +1 -1
  209. package/docs/tr/intlayer_with_nestjs.md +2 -2
  210. package/docs/tr/intlayer_with_nextjs_14.md +2 -2
  211. package/docs/tr/intlayer_with_nextjs_15.md +4 -4
  212. package/docs/tr/intlayer_with_nextjs_page_router.md +5 -5
  213. package/docs/tr/intlayer_with_nuxt.md +4 -4
  214. package/docs/tr/intlayer_with_react_native+expo.md +12 -21
  215. package/docs/tr/intlayer_with_react_router_v7.md +222 -267
  216. package/docs/tr/intlayer_with_tanstack.md +400 -303
  217. package/docs/tr/intlayer_with_vite+preact.md +12 -12
  218. package/docs/tr/intlayer_with_vite+react.md +12 -12
  219. package/docs/tr/intlayer_with_vite+solid.md +2 -2
  220. package/docs/tr/intlayer_with_vite+svelte.md +2 -2
  221. package/docs/tr/intlayer_with_vite+vue.md +12 -12
  222. package/docs/tr/introduction.md +1 -1
  223. package/docs/tr/packages/react-intlayer/useDictionary.md +1 -1
  224. package/docs/tr/packages/react-intlayer/useI18n.md +1 -1
  225. package/docs/tr/roadmap.md +1 -1
  226. package/docs/zh/intlayer_with_angular.md +2 -2
  227. package/docs/zh/intlayer_with_astro.md +246 -0
  228. package/docs/zh/intlayer_with_create_react_app.md +3 -2
  229. package/docs/zh/intlayer_with_express.md +2 -2
  230. package/docs/zh/intlayer_with_nestjs.md +2 -2
  231. package/docs/zh/intlayer_with_nextjs_14.md +2 -2
  232. package/docs/zh/intlayer_with_nextjs_15.md +2 -2
  233. package/docs/zh/intlayer_with_nextjs_page_router.md +2 -2
  234. package/docs/zh/intlayer_with_nuxt.md +2 -2
  235. package/docs/zh/intlayer_with_react_native+expo.md +19 -28
  236. package/docs/zh/intlayer_with_react_router_v7.md +200 -248
  237. package/docs/zh/intlayer_with_tanstack.md +208 -283
  238. package/docs/zh/intlayer_with_vite+preact.md +9 -9
  239. package/docs/zh/intlayer_with_vite+react.md +9 -9
  240. package/docs/zh/intlayer_with_vite+vue.md +9 -9
  241. package/package.json +11 -11
  242. package/src/generated/docs.entry.ts +16 -0
@@ -2,7 +2,7 @@
2
2
  createdAt: 2025-09-09
3
3
  updatedAt: 2025-09-09
4
4
  title: Tanstack StartでのIntlayerによる国際化(i18n)入門
5
- description: Intlayerを使用してTanstack Startアプリケーションに国際化(i18n)を追加する方法を学びます。ロケール対応ルーティングで多言語対応アプリを作成するための包括的なガイドです。
5
+ description: Intlayerを使ってTanstack Startアプリケーションに国際化(i18n)を追加する方法を学びます。ロケール対応ルーティングで多言語対応アプリを作成するための包括的なガイドです。
6
6
  keywords:
7
7
  - 国際化
8
8
  - ドキュメント
@@ -15,15 +15,13 @@ keywords:
15
15
  slugs:
16
16
  - doc
17
17
  - environment
18
- - vite-and-react
19
18
  - tanstack-start
20
- applicationTemplate: https://github.com/AydinTheFirst/tanstack-start-intlayer
21
- author: AydinTheFirst
19
+ applicationTemplate: https://github.com/aymericzip/intlayer-tanstack-start-template
22
20
  ---
23
21
 
24
- # IntlayerとTanstack Startによる国際化(i18n)入門
22
+ # IntlayerとTanstack Startで始める国際化(i18n
25
23
 
26
- このガイドでは、Tanstack Startプロジェクトにおいて、ロケール対応ルーティング、TypeScriptサポート、最新の開発手法を活用しながら、**Intlayer**を統合してシームレスな国際化を実現する方法を示します。
24
+ このガイドでは、Tanstack Startプロジェクトにおいて、ロケール対応ルーティング、TypeScriptサポート、最新の開発手法を活用しながら、**Intlayer**を使ったシームレスな国際化(i18n)の統合方法を示します。
27
25
 
28
26
  ## Intlayerとは?
29
27
 
@@ -33,8 +31,8 @@ Intlayerを使うことで、以下が可能になります:
33
31
 
34
32
  - **コンポーネントレベルで宣言的な辞書を使い、翻訳を簡単に管理**できます。
35
33
  - **メタデータ、ルート、コンテンツを動的にローカライズ**できます。
36
- - **自動生成される型によりTypeScriptサポートを確保し、オートコンプリートやエラー検出を向上**させます。
37
- - **動的なロケール検出や切り替えなどの高度な機能**を活用できます。
34
+ - **自動生成された型によりTypeScriptサポートを保証し、オートコンプリートやエラー検出を向上**させます。
35
+ - **動的なロケール検出や切り替えなどの高度な機能を活用**できます。
38
36
  - **Tanstack Startのファイルベースのルーティングシステムを使ってロケール対応ルーティングを有効化**します。
39
37
 
40
38
  ---
@@ -43,7 +41,7 @@ Intlayerを使うことで、以下が可能になります:
43
41
 
44
42
  ### ステップ1:プロジェクトの作成
45
43
 
46
- TanStack Startの公式サイトにある[新しいプロジェクトの開始](https://tanstack.com/start/latest/docs/framework/react/quick-start)ガイドに従って、新しいTanStack Startプロジェクトを作成します。
44
+ TanStack Startの公式サイトにある[新規プロジェクトの開始](https://tanstack.com/start/latest/docs/framework/react/quick-start)ガイドに従って、新しいTanStack Startプロジェクトを作成します。
47
45
 
48
46
  ### ステップ2:Intlayerパッケージのインストール
49
47
 
@@ -61,110 +59,64 @@ pnpm add vite-intlayer --save-dev
61
59
 
62
60
  - **intlayer**
63
61
 
64
- コアパッケージであり、設定管理、翻訳、[コンテンツ宣言](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/get_started.md)、トランスパイル、および[CLIコマンド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_cli.md)のための国際化ツールを提供します。
62
+ - **intlayer**
63
+
64
+ 設定管理、翻訳、[コンテンツ宣言](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/get_started.md)、トランスパイル、および[CLIコマンド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_cli.md)のための国際化ツールを提供するコアパッケージ。
65
+
66
+ - **react-intlayer**
67
+
68
+ IntlayerをReactアプリケーションに統合するパッケージです。Reactの国際化のためのコンテキストプロバイダーとフックを提供します。
65
69
 
66
- - **react-intlayer**
67
- IntlayerをReactアプリケーションと統合するパッケージです。Reactの国際化のためのコンテキストプロバイダーやフックを提供します。
70
+ - **vite-intlayer**
68
71
 
69
- - **vite-intlayer**
70
- Intlayerを[Viteバンドラー](https://vite.dev/guide/why.html#why-bundle-for-production)と統合するためのViteプラグインを含み、ユーザーの優先ロケール検出、クッキー管理、URLリダイレクト処理のためのミドルウェアも提供します。
72
+ Intlayerを[Viteバンドラー](https://vite.dev/guide/why.html#why-bundle-for-production)と統合するためのViteプラグイン、およびユーザーの優先ロケールの検出、クッキー管理、URLリダイレクト処理のためのミドルウェアを含みます。
71
73
 
72
74
  ### ステップ3: プロジェクトの設定
73
75
 
74
76
  アプリケーションの言語を設定するための設定ファイルを作成します:
75
77
 
76
- ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
78
+ ```typescript fileName="intlayer.config.ts"
77
79
  import type { IntlayerConfig } from "intlayer";
78
80
 
79
81
  import { Locales } from "intlayer";
80
82
 
81
83
  const config: IntlayerConfig = {
82
- internationalization: {
83
- defaultLocale: Locales.ENGLISH, // デフォルトのロケール
84
- locales: [
85
- Locales.ENGLISH, // 英語
86
- Locales.FRENCH, // フランス語
87
- Locales.SPANISH, // スペイン語
88
- // 他のロケールを追加
89
- ],
90
- },
91
- };
92
-
93
- export default config;
94
- ```
95
-
96
- ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
97
- import { Locales } from "intlayer";
98
-
99
- /** @type {import('intlayer').IntlayerConfig} */
100
- const config = {
101
- internationalization: {
102
- defaultLocale: Locales.ENGLISH, // デフォルトのロケール
103
- locales: [
104
- Locales.ENGLISH, // 英語
105
- Locales.FRENCH, // フランス語
106
- Locales.SPANISH, // スペイン語
107
- // 他のロケール
108
- ],
109
- },
110
- };
111
-
112
- export default config;
113
- ```
114
-
115
- ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
116
- const { Locales } = require("intlayer");
117
-
118
- /** @type {import('intlayer').IntlayerConfig} */
119
- const config = {
120
84
  internationalization: {
121
85
  defaultLocale: Locales.ENGLISH,
122
- locales: [
123
- Locales.ENGLISH,
124
- Locales.FRENCH,
125
- Locales.SPANISH,
126
- // 他のロケール
127
- ],
86
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
128
87
  },
129
88
  };
130
89
 
131
- module.exports = config;
90
+ export default config;
132
91
  ```
133
92
 
134
93
  > この設定ファイルを通じて、ローカライズされたURL、ミドルウェアのリダイレクション、クッキー名、コンテンツ宣言の場所と拡張子、コンソールでのIntlayerログの無効化などを設定できます。利用可能なパラメータの完全なリストについては、[設定ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/configuration.md)を参照してください。
135
94
 
136
95
  ### ステップ4: Vite設定にIntlayerを統合する
137
96
 
138
- 設定にintlayerプラグインを追加します:
97
+ 設定にintlayerプラグインを追加します:
139
98
 
140
- ```typescript fileName="vite.config.ts" codeFormat="typescript"
99
+ ```typescript fileName="vite.config.ts"
141
100
  import { reactRouter } from "@react-router/dev/vite";
142
101
  import { defineConfig } from "vite";
143
- import { intlayerMiddlewarePlugin, intlayer } from "vite-intlayer";
102
+ import { intlayer } from "vite-intlayer";
144
103
  import tsconfigPaths from "vite-tsconfig-paths";
145
104
 
146
105
  export default defineConfig({
147
- plugins: [
148
- reactRouter(),
149
- tsconfigPaths(),
150
- intlayer(),
151
- intlayerMiddlewarePlugin(),
152
- ],
106
+ plugins: [reactRouter(), tsconfigPaths(), intlayer()],
153
107
  });
154
108
  ```
155
109
 
156
- > `intlayer()` Viteプラグインは、IntlayerをViteに統合するために使用されます。これにより、コンテンツ宣言ファイルのビルドが保証され、開発モードでの監視が行われます。また、Viteアプリケーション内でIntlayerの環境変数を定義します。さらに、パフォーマンス最適化のためのエイリアスも提供します。
110
+ > `intlayer()` Viteプラグインは、IntlayerをViteと統合するために使用されます。これにより、コンテンツ宣言ファイルのビルドが保証され、開発モードで監視されます。また、Viteアプリケーション内でIntlayerの環境変数を定義します。さらに、パフォーマンス最適化のためのエイリアスも提供します。
157
111
 
158
- ### ステップ5: レイアウトコンポーネントの作成
112
+ ### ステップ 5: レイアウトコンポーネントを作成する
159
113
 
160
- ルートレイアウトとロケール固有のレイアウトを設定します。
114
+ ルートレイアウトとロケール固有のレイアウトを設定します:
161
115
 
162
116
  #### ルートレイアウト
163
117
 
164
- ```tsx fileName="src/routes/{-$locale}/route.tsx" codeFormat="typescript"
165
- // src/routes/{-$locale}/route.tsx
118
+ ```tsx fileName="src/routes/{-$locale}/route.tsx"
166
119
  import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
167
- import { configuration } from "intlayer";
168
120
  import { IntlayerProvider, useLocale } from "react-intlayer";
169
121
 
170
122
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes";
@@ -174,21 +126,22 @@ export const Route = createFileRoute("/{-$locale}")({
174
126
  });
175
127
 
176
128
  function LayoutComponent() {
129
+ const { defaultLocale } = useLocale();
177
130
  const { locale } = Route.useParams();
178
131
 
179
132
  return (
180
- <IntlayerProvider locale={locale}>
133
+ <IntlayerProvider locale={defaultLocale}>
181
134
  <Outlet />
182
135
  </IntlayerProvider>
183
136
  );
184
137
  }
185
138
  ```
186
139
 
187
- ### ステップ6: コンテンツを宣言する
140
+ ### ステップ 6: コンテンツを宣言する
188
141
 
189
- 翻訳を保存するためのコンテンツ宣言を作成および管理します:
142
+ 翻訳を保存するためのコンテンツ宣言を作成および管理します:
190
143
 
191
- ```tsx fileName="src/contents/page.content.ts" contentDeclarationFormat="typescript"
144
+ ```tsx fileName="src/contents/page.content.ts"
192
145
  import type { Dictionary } from "intlayer";
193
146
 
194
147
  import { t } from "intlayer";
@@ -197,25 +150,29 @@ const appContent = {
197
150
  content: {
198
151
  links: {
199
152
  about: t({
153
+ ja: "約",
200
154
  en: "About",
201
155
  es: "Acerca de",
202
156
  fr: "À propos",
203
157
  }),
204
158
  home: t({
205
- en: "ホーム",
159
+ ja: "ホーム",
160
+ en: "Home",
206
161
  es: "Inicio",
207
162
  fr: "Accueil",
208
163
  }),
209
164
  },
210
165
  meta: {
211
166
  description: t({
212
- en: "これは IntlayerTanStack Router を使用した例です",
167
+ ja: "これはIntlayerTanStack Routerと一緒に使う例です",
168
+ en: "This is an example of using Intlayer with TanStack Router",
213
169
  es: "Este es un ejemplo de uso de Intlayer con TanStack Router",
214
170
  fr: "Ceci est un exemple d'utilisation d'Intlayer avec TanStack Router",
215
171
  }),
216
172
  },
217
173
  title: t({
218
- en: "Intlayer + TanStack Router へようこそ",
174
+ ja: "Intlayer + TanStack Routerへようこそ",
175
+ en: "Welcome to Intlayer + TanStack Router",
219
176
  es: "Bienvenido a Intlayer + TanStack Router",
220
177
  fr: "Bienvenue à Intlayer + TanStack Router",
221
178
  }),
@@ -226,67 +183,107 @@ const appContent = {
226
183
  export default appContent;
227
184
  ```
228
185
 
229
- > コンテンツ宣言は、アプリケーション内のどこにでも定義できますが、`contentDir` ディレクトリ(デフォルトは `./app`)に含まれている必要があります。また、コンテンツ宣言ファイルの拡張子(デフォルトは `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`)に一致している必要があります。
186
+ > コンテンツ宣言は、`contentDir` ディレクトリ(デフォルトは `./app`)に含まれている限り、アプリケーションのどこにでも定義できます。また、コンテンツ宣言ファイルの拡張子(デフォルトは `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`)に一致する必要があります。
230
187
 
231
188
  > 詳細については、[コンテンツ宣言のドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/get_started.md)を参照してください。
232
189
 
233
- ### ステップ7: ロケール対応コンポーネントとフックを作成する
190
+ ### ステップ7: ロケール対応コンポーネントとフックの作成
234
191
 
235
192
  ロケール対応のナビゲーション用に `LocalizedLink` コンポーネントを作成します:
236
193
 
237
- ```tsx fileName="src/components/localized-link.tsx" codeFormat="typescript"
238
- // src/components/localized-link.tsx
239
- // eslint-disable-next-line no-restricted-imports
240
- import { Link, type LinkProps } from "@tanstack/react-router";
241
- import { getLocalizedUrl } from "intlayer";
194
+ ```tsx fileName="src/components/localized-link.tsx"
195
+ import type { FC } from "react";
196
+
197
+ import { Link, type LinkComponentProps } from "@tanstack/react-router";
242
198
  import { useLocale } from "react-intlayer";
243
199
 
200
+ export const LOCALE_ROUTE = "{-$locale}" as const;
201
+
202
+ // メインユーティリティ
203
+ export type RemoveLocaleParam<T> = T extends string
204
+ ? RemoveLocaleFromString<T>
205
+ : T;
206
+
207
+ export type To = RemoveLocaleParam<LinkComponentProps["to"]>;
208
+
209
+ type CollapseDoubleSlashes<S extends string> =
210
+ S extends `${infer H}//${infer T}` ? CollapseDoubleSlashes<`${H}/${T}`> : S;
211
+
244
212
  type LocalizedLinkProps = {
245
- to: string;
246
- } & Omit<LinkProps, "to">;
213
+ to?: To;
214
+ } & Omit<LinkComponentProps, "to">;
247
215
 
248
- export function LocalizedLink(props: LocalizedLinkProps) {
249
- const { locale } = useLocale();
216
+ // ヘルパー
217
+ type RemoveAll<
218
+ S extends string,
219
+ Sub extends string,
220
+ > = S extends `${infer H}${Sub}${infer T}` ? RemoveAll<`${H}${T}`, Sub> : S;
250
221
 
251
- const isExternal = (to: string) => {
252
- return /^(https?:)?\/\//.test(to);
253
- };
222
+ type RemoveLocaleFromString<S extends string> = CollapseDoubleSlashes<
223
+ RemoveAll<S, typeof LOCALE_ROUTE>
224
+ >;
254
225
 
255
- const to = isExternal(props.to)
256
- ? props.to
257
- : getLocalizedUrl(props.to, locale);
226
+ export const LocalizedLink: FC<LocalizedLinkProps> = (props) => {
227
+ const { locale } = useLocale();
258
228
 
259
- return <Link {...props} to={to as LinkProps["to"]} />;
260
- }
229
+ return (
230
+ <Link
231
+ {...props}
232
+ params={{
233
+ locale,
234
+ ...(typeof props?.params === "object" ? props?.params : {}),
235
+ }}
236
+ to={`/${LOCALE_ROUTE}${props.to}` as LinkComponentProps["to"]}
237
+ />
238
+ );
239
+ };
261
240
  ```
262
241
 
263
- プログラム的なナビゲーションのために `useLocalizedNavigate` フックを作成します:
242
+ このコンポーネントには2つの目的があります:
264
243
 
265
- ```tsx fileName="src/hooks/useLocalizedNavigate.tsx" codeFormat="typescript"
266
- // src/hooks/useLocalizedNavigate.tsx
267
- // eslint-disable-next-line no-restricted-imports
268
- import { NavigateOptions, useNavigate } from "@tanstack/react-router";
269
- import { getLocalizedUrl } from "intlayer";
270
- import { useLocale } from "react-intlayer";
244
+ - URLから不要な `{-$locale}` プレフィックスを削除すること。
245
+ - ロケールパラメータをURLに注入し、ユーザーが直接ローカライズされたルートにリダイレクトされるようにすること。
246
+
247
+ 次に、プログラム的なナビゲーションのために `useLocalizedNavigate` フックを作成できます:
271
248
 
272
- type LocalizedNavigateOptions = {
273
- to: string;
274
- } & Omit<NavigateOptions, "to">;
249
+ ```tsx fileName="src/hooks/useLocalizedNavigate.tsx"
250
+ import { useLocale } from "react.intlayer";
251
+ import { useNavigate } from "@tanstack/react-router";
252
+ import { LOCALE_ROUTE } from "@/components/localized-link";
253
+ import type { FileRouteTypes } from "@/routeTree.gen";
275
254
 
276
255
  export const useLocalizedNavigate = () => {
277
256
  const navigate = useNavigate();
257
+
278
258
  const { locale } = useLocale();
279
259
 
280
- const isExternal = (to: string) => {
281
- return /^(https?:)?\/\//.test(to);
282
- };
260
+ type StripLocalePrefix<T extends string> = T extends
261
+ | `/${typeof LOCALE_ROUTE}`
262
+ | `/${typeof LOCALE_ROUTE}/`
263
+ ? "/" // ロケールプレフィックスのみの場合はルートに置き換え
264
+ : T extends `/${typeof LOCALE_ROUTE}/${infer Rest}`
265
+ ? `/${Rest}` // ロケールプレフィックスを除去したパス
266
+ : never;
267
+
268
+ type LocalizedTo = StripLocalePrefix<FileRouteTypes["to"]>;
269
+
270
+ interface LocalizedNavigate {
271
+ (to: LocalizedTo): ReturnType<typeof navigate>;
272
+ (
273
+ opts: { to: LocalizedTo } & Record<string, unknown>
274
+ ): ReturnType<typeof navigate>;
275
+ }
276
+
277
+ const localizedNavigate: LocalizedNavigate = (args: any) => {
278
+ if (typeof args === "string") {
279
+ return navigate({ to: `/${LOCALE_ROUTE}${args}`, params: { locale } });
280
+ }
281
+
282
+ const { to, ...rest } = args;
283
283
 
284
- const localizedNavigate = (options: LocalizedNavigateOptions) => {
285
- const to = isExternal(options.to)
286
- ? options.to
287
- : getLocalizedUrl(options.to, locale);
284
+ const localedTo = `/${LOCALE_ROUTE}${to}` as any;
288
285
 
289
- navigate({ ...options, to: to as NavigateOptions["to"] });
286
+ return navigate({ to: localedTo, params: { locale, ...rest } as any });
290
287
  };
291
288
 
292
289
  return localizedNavigate;
@@ -295,25 +292,11 @@ export const useLocalizedNavigate = () => {
295
292
 
296
293
  ### ステップ8: ページでIntlayerを活用する
297
294
 
298
- アプリケーション全体でコンテンツ辞書にアクセスします:
299
-
300
- #### ルートリダイレクトページ
301
-
302
- ```tsx fileName="src/routes/page.tsx" codeFormat="typescript"
303
- // src/routes/page.tsx
304
- import { useLocale } from "react-intlayer";
305
- import { Navigate } from "react-router";
306
-
307
- export default function Page() {
308
- const { locale } = useLocale();
309
-
310
- return <Navigate replace to={locale} />;
311
- }
312
- ```
295
+ アプリケーション全体でコンテンツ辞書にアクセスします:
313
296
 
314
297
  #### ローカライズされたホームページ
315
298
 
316
- ```tsx fileName="src/routes/{-$locale}/index.tsx" codeFormat="typescript"
299
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
317
300
  import { createFileRoute } from "@tanstack/react-router";
318
301
  import { getIntlayer } from "intlayer";
319
302
  import { useIntlayer } from "react-intlayer";
@@ -342,16 +325,15 @@ function RouteComponent() {
342
325
  const navigate = useLocalizedNavigate();
343
326
 
344
327
  return (
345
- <div className="grid place-items-center h-screen">
346
- <div className="flex flex-col gap-4 items-center text-center">
328
+ <div>
329
+ <div>
347
330
  {content.title}
348
331
  <LocaleSwitcher />
349
- <div className="flex gap-4">
350
- <a href="/">インデックス</a>
332
+ <div>
351
333
  <LocalizedLink to="/">{content.links.home}</LocalizedLink>
352
334
  <LocalizedLink to="/about">{content.links.about}</LocalizedLink>
353
335
  </div>
354
- <div className="flex gap-4">
336
+ <div>
355
337
  <button onClick={() => navigate({ to: "/" })}>
356
338
  {content.links.home}
357
339
  </button>
@@ -369,59 +351,67 @@ function RouteComponent() {
369
351
 
370
352
  ### ステップ9: ロケールスイッチャーコンポーネントの作成
371
353
 
372
- ユーザーが言語を切り替えられるコンポーネントを作成します:
354
+ ユーザーが言語を切り替えられるコンポーネントを作成します:
355
+
356
+ ```tsx fileName="src/components/locale-switcher.tsx"
357
+ import type { FC } from "react";
373
358
 
374
- ```tsx fileName="src/components/locale-switcher.tsx" codeFormat="typescript"
375
359
  import { useLocation } from "@tanstack/react-router";
376
- import {
377
- getHTMLTextDir,
378
- getLocaleName,
379
- getLocalizedUrl,
380
- Locales,
381
- } from "intlayer";
382
- import { useIntlayer, useLocale } from "react-intlayer";
383
-
384
- export default function LocaleSwitcher() {
385
- const { pathname, searchStr } = useLocation();
386
- const content = useIntlayer("locale-switcher");
387
-
388
- const { availableLocales, locale, setLocale } = useLocale({
389
- onLocaleChange: (newLocale) => {
390
- const pathWithLocale = getLocalizedUrl(pathname + searchStr, newLocale);
391
- location.replace(pathWithLocale);
392
- },
393
- });
360
+ import { getHTMLTextDir, getLocaleName, getPathWithoutLocale } from "intlayer";
361
+ import { setLocaleCookie, useIntlayer, useLocale } from "react-intlayer";
362
+
363
+ import { LocalizedLink, To } from "./localized-link";
364
+
365
+ export const LocaleSwitcher: FC = () => {
366
+ const { localeSwitcherLabel } = useIntlayer("locale-switcher");
367
+ const { pathname } = useLocation();
368
+
369
+ const { availableLocales, locale } = useLocale();
370
+
371
+ const pathWithoutLocale = getPathWithoutLocale(pathname);
394
372
 
395
373
  return (
396
- <select
397
- aria-label={content.label.toString()}
398
- onChange={(e) => setLocale(e.target.value)}
399
- value={locale}
400
- >
401
- {availableLocales.map((localeItem) => (
402
- <option
403
- dir={getHTMLTextDir(localeItem)}
404
- key={localeItem}
405
- lang={localeItem}
406
- value={localeItem}
407
- >
408
- {/* 例: Français (フランス語) */}
409
- {getLocaleName(localeItem, locale)} (
410
- {getLocaleName(localeItem, Locales.ENGLISH)})
411
- </option>
374
+ <ol>
375
+ {availableLocales.map((localeEl) => (
376
+ <li key={localeEl}>
377
+ <LocalizedLink
378
+ aria-current={localeEl === locale ? "page" : undefined}
379
+ aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
380
+ onClick={() => setLocaleCookie(localeEl)}
381
+ params={{ locale: localeEl }}
382
+ to={pathWithoutLocale as To}
383
+ >
384
+ <span>
385
+ {/* ロケール - 例: FR */}
386
+ {localeItem}
387
+ </span>
388
+ <span>
389
+ {/* 自身のロケールでの言語名 - 例: Français */}
390
+ {getLocaleName(localeItem, locale)}
391
+ </span>
392
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
393
+ {/* 現在のロケールでの言語名 - 例: Locales.SPANISHに設定された場合のFrancés */}
394
+ {getLocaleName(localeItem)}
395
+ </span>
396
+ <span dir="ltr" lang={Locales.ENGLISH}>
397
+ {/* 英語での言語名 - 例: French */}
398
+ {getLocaleName(localeItem, Locales.ENGLISH)}
399
+ </span>
400
+ </LocalizedLink>
401
+ </li>
412
402
  ))}
413
- </select>
403
+ </ol>
414
404
  );
415
- }
405
+ };
416
406
  ```
417
407
 
418
408
  > `useLocale` フックの詳細については、[ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/packages/react-intlayer/useLocale.md)を参照してください。
419
409
 
420
410
  ### ステップ10: HTML属性の管理を追加(オプション)
421
411
 
422
- HTMLのlangおよびdir属性を管理するフックを作成します:
412
+ HTMLの `lang` と `dir` 属性を管理するフックを作成します:
423
413
 
424
- ```tsx fileName="src/hooks/useI18nHTMLAttributes.tsx" codeFormat="typescript"
414
+ ```tsx fileName="src/hooks/useI18nHTMLAttributes.tsx"
425
415
  // src/hooks/useI18nHTMLAttributes.tsx
426
416
  import { getHTMLTextDir } from "intlayer";
427
417
  import { useEffect } from "react";
@@ -431,17 +421,16 @@ export const useI18nHTMLAttributes = () => {
431
421
  const { locale } = useLocale();
432
422
 
433
423
  useEffect(() => {
434
- document.documentElement.lang = locale; // HTMLのlang属性を設定
435
- document.documentElement.dir = getHTMLTextDir(locale); // HTMLのdir属性を設定
424
+ document.documentElement.lang = locale;
425
+ document.documentElement.dir = getHTMLTextDir(locale);
436
426
  }, [locale]);
437
427
  };
438
428
  ```
439
429
 
440
430
  次に、ルートコンポーネントでこれを使用します:
441
431
 
442
- ```tsx fileName="src/routes/{-$locale}/index.tsx" codeFormat="typescript"
432
+ ```tsx fileName="src/routes/{-$locale}/index.tsx"
443
433
  import { createFileRoute, Navigate, Outlet } from "@tanstack/react-router";
444
- import { configuration } from "intlayer";
445
434
  import { IntlayerProvider, useLocale } from "react-intlayer";
446
435
 
447
436
  import { useI18nHTMLAttributes } from "@/hooks/useI18nHTMLAttributes"; // フックをインポート
@@ -453,153 +442,96 @@ export const Route = createFileRoute("/{-$locale}")({
453
442
  function LayoutComponent() {
454
443
  useI18nHTMLAttributes(); // この行を追加
455
444
 
445
+ const { defaultLocale } = useLocale();
456
446
  const { locale } = Route.useParams();
457
447
 
458
448
  return (
459
- <IntlayerProvider locale={locale}>
449
+ <IntlayerProvider locale={locale ?? defaultLocale}>
460
450
  <Outlet />
461
451
  </IntlayerProvider>
462
452
  );
463
453
  }
464
454
  ```
465
455
 
466
- ### ステップ11: アプリケーションのビルドと実行
456
+ ---
467
457
 
468
- コンテンツ辞書をビルドし、アプリケーションを実行します:
458
+ ### ステップ11: ミドルウェアを追加(オプション)
469
459
 
470
- ```bash packageManager="npm"
471
- # Intlayerの辞書をビルド
472
- npm run intlayer:build
460
+ `intlayerMiddleware` を使用して、アプリケーションにサーバーサイドルーティングを追加することもできます。このプラグインは、URL に基づいて現在のロケールを自動的に検出し、適切なロケールクッキーを設定します。ロケールが指定されていない場合、プラグインはユーザーのブラウザの言語設定に基づいて最も適切なロケールを判断します。ロケールが検出されない場合は、デフォルトのロケールにリダイレクトされます。
473
461
 
474
- # 開発サーバーを起動
475
- npm run dev
476
- ```
462
+ > `intlayerMiddleware` を本番環境で使用するには、`vite-intlayer` パッケージを `devDependencies` から `dependencies` に切り替える必要があることに注意してください。
477
463
 
478
- ```bash packageManager="pnpm"
479
- # Intlayerの辞書をビルド
480
- pnpm intlayer:build
464
+ ```typescript {3,7} fileName="vite.config.ts"
465
+ import { reactRouter } from "@react-router/dev/vite";
466
+ import tailwindcss from "@tailwindcss/vite";
467
+ import { defineConfig } from "vite";
468
+ import { intlayer, intlayerMiddleware } from "vite-intlayer";
469
+ import tsconfigPaths from "vite-tsconfig-paths";
481
470
 
482
- # 開発サーバーを起動
483
- pnpm dev
471
+ export default defineConfig({
472
+ plugins: [
473
+ tailwindcss(),
474
+ reactRouter(),
475
+ tsconfigPaths(),
476
+ intlayer(),
477
+ intlayerMiddleware(),
478
+ ],
479
+ });
484
480
  ```
485
481
 
486
- ```bash packageManager="yarn"
487
- # Intlayerの辞書をビルド
488
- yarn intlayer:build
489
-
490
- # 開発サーバーを起動
491
- yarn dev
492
- ```
482
+ ---
493
483
 
494
484
  ### ステップ12: TypeScriptの設定(任意)
495
485
 
496
- Intlayerはモジュール拡張を使用してTypeScriptの利点を活かし、コードベースをより強固にします。
486
+ Intlayerはモジュール拡張を使用して、TypeScriptの利点を活かし、コードベースを強化します。
497
487
 
498
488
  TypeScriptの設定に自動生成された型が含まれていることを確認してください:
499
489
 
500
490
  ```json5 fileName="tsconfig.json"
501
491
  {
502
- compilerOptions: {
503
- // ... 既存のTypeScript設定
504
- },
492
+ // ... 既存の設定
505
493
  include: [
506
- // ... 既存のインクルード
494
+ // ... 既存のinclude
507
495
  ".intlayer/**/*.ts", // 自動生成された型を含める
508
496
  ],
509
497
  }
510
498
  ```
511
499
 
512
- ### Git設定
500
+ ---
501
+
502
+ ### Gitの設定
513
503
 
514
- Intlayerによって生成されたファイルは無視することを推奨します。これにより、Gitリポジトリへのコミットを避けることができます。
504
+ Intlayerによって生成されたファイルはGitリポジトリにコミットしないように、無視することを推奨します。
515
505
 
516
- これを行うには、`.gitignore`ファイルに以下の指示を追加してください:
506
+ これを行うには、`.gitignore` ファイルに以下の指示を追加できます。
517
507
 
518
508
  ```plaintext fileName=".gitignore"
519
- # Intlayerによって生成されたファイルを無視する
509
+ # Intlayer によって生成されたファイルを無視する
520
510
  .intlayer
521
511
  ```
522
512
 
523
513
  ---
524
514
 
525
- ### ステップ13: リダイレクトの作成(オプション)
526
-
527
- ```typescript fileName="src/routes/{-$locale}/rotue.tsx" codeFormat="typescript"
528
- function LayoutComponent() {
529
- useI18nHTMLAttributes();
530
-
531
- const { locale } = Route.useParams();
532
- const { locale: selectedLocale } = useLocale();
533
- const { defaultLocale } = configuration.internationalization;
534
- const { prefixDefault } = configuration.middleware;
535
-
536
- // prefixDefault が true の場合、URL にロケールが存在しないときはデフォルトロケールへリダイレクトする
537
- if (selectedLocale === defaultLocale && !locale && prefixDefault) {
538
- return <Navigate replace to={defaultLocale} />;
539
- }
540
-
541
- // URL のロケールが選択されたロケールと一致しない場合は選択されたロケールへリダイレクトする
542
- if (selectedLocale !== defaultLocale && !locale) {
543
- return <Navigate replace to={selectedLocale} />;
544
- }
545
-
546
- return (
547
- <IntlayerProvider locale={locale}>
548
- <Outlet />
549
- </IntlayerProvider>
550
- );
551
- }
552
- ```
553
-
554
- ## 本番環境へのデプロイ
555
-
556
- アプリケーションをデプロイする際は、以下の手順を行ってください:
557
-
558
- 1. **アプリケーションをビルドする:**
559
-
560
- ```bash
561
- npm run build
562
- ```
563
-
564
- 2. **Intlayerの辞書をビルドする:**
565
-
566
- ```bash
567
- npm run intlayer:build
568
- ```
569
-
570
- 3. **本番環境でミドルウェアを使用する場合は、`vite-intlayer`を依存関係に移動する:**
571
- ```bash
572
- npm install vite-intlayer --save
573
- ```
574
-
575
- これでアプリケーションは以下をサポートします:
576
-
577
- - **URL構造**: `/en`, `/en/about`, `/tr`, `/tr/about`
578
- - **ブラウザの設定に基づく自動ロケール検出**
579
- - **Tanstack Startによるロケール対応ルーティング**
580
- - **自動生成された型定義によるTypeScriptサポート**
581
- - **適切なロケール処理を行うサーバーサイドレンダリング**
582
-
583
- ## VS Code拡張機能
515
+ ## VS Code 拡張機能
584
516
 
585
- Intlayerでの開発体験を向上させるために、公式の**Intlayer VS Code拡張機能**をインストールできます。
517
+ Intlayer での開発体験を向上させるために、公式の **Intlayer VS Code 拡張機能** をインストールできます。
586
518
 
587
- [VS Codeマーケットプレイスからインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
519
+ [VS Code Marketplace からインストール](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
588
520
 
589
521
  この拡張機能は以下を提供します:
590
522
 
591
- - 翻訳キーの**オートコンプリート**。
592
- - 翻訳が不足している場合の**リアルタイムエラー検出**。
593
- - 翻訳されたコンテンツの**インラインプレビュー**。
594
- - 翻訳の作成や更新を簡単に行うための**クイックアクション**。
523
+ - 翻訳キーの **オートコンプリート**。
524
+ - 翻訳が欠落している場合の **リアルタイムエラー検出**。
525
+ - 翻訳されたコンテンツの **インラインプレビュー**。
526
+ - 翻訳を簡単に作成・更新できる **クイックアクション**。
595
527
 
596
- 拡張機能の使い方の詳細については、[Intlayer VS Code拡張機能のドキュメント](https://intlayer.org/doc/vs-code-extension)を参照してください。
528
+ 拡張機能の使用方法の詳細については、[Intlayer VS Code 拡張機能のドキュメント](https://intlayer.org/doc/vs-code-extension)を参照してください。
597
529
 
598
530
  ---
599
531
 
600
- ## さらに進む
532
+ ## さらに進むために
601
533
 
602
- さらに進めるには、[ビジュアルエディター](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_visual_editor.md)を実装するか、[CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_CMS.md)を使用してコンテンツを外部化することができます。
534
+ さらに進みたい場合は、[ビジュアルエディター](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_visual_editor.md)を実装するか、[CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_CMS.md)を使用してコンテンツを外部化することができます。
603
535
 
604
536
  ---
605
537
 
@@ -612,10 +544,10 @@ Intlayerでの開発体験を向上させるために、公式の**Intlayer VS C
612
544
  - [コンテンツ宣言](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/get_started.md)
613
545
  - [設定](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/configuration.md)
614
546
 
615
- この包括的なガイドは、IntlayerをTanstack Startと統合し、ロケール対応のルーティングとTypeScriptサポートを備えた完全な国際化アプリケーションを構築するために必要なすべてを提供します。
547
+ この包括的なガイドは、Intlayer Tanstack Start と統合し、ロケール対応のルーティングと TypeScript サポートを備えた完全な国際化アプリケーションを構築するために必要なすべてを提供します。
616
548
 
617
549
  ## ドキュメント履歴
618
550
 
619
- | バージョン | 日付 | 変更内容 |
620
- | ---------- | ---------- | ------------------------ |
621
- | 5.8.1 | 2025-09-09 | Tanstack Start向けに追加 |
551
+ | バージョン | 日付 | 変更内容 |
552
+ | ---------- | ---------- | ----------------------- |
553
+ | 5.8.1 | 2025-09-09 | Tanstack Start 用に追加 |