@intlayer/docs 9.1.3 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. package/blog/ar/index.md +1 -1
  2. package/blog/ar/rag_powered_documentation_assistant.md +7 -0
  3. package/blog/de/index.md +1 -1
  4. package/blog/de/rag_powered_documentation_assistant.md +6 -0
  5. package/blog/en/index.md +1 -1
  6. package/blog/en-GB/index.md +1 -1
  7. package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
  8. package/blog/es/index.md +1 -1
  9. package/blog/es/rag_powered_documentation_assistant.md +7 -0
  10. package/blog/fr/i18n_meaning.md +7 -1
  11. package/blog/fr/index.md +1 -1
  12. package/blog/fr/list_i18n_technologies/frameworks/angular.md +5 -1
  13. package/blog/fr/rag_powered_documentation_assistant.md +6 -0
  14. package/blog/hi/index.md +1 -1
  15. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
  16. package/blog/hi/rag_powered_documentation_assistant.md +7 -0
  17. package/blog/id/index.md +1 -1
  18. package/blog/id/rag_powered_documentation_assistant.md +6 -0
  19. package/blog/it/index.md +1 -1
  20. package/blog/it/rag_powered_documentation_assistant.md +6 -0
  21. package/blog/ja/index.md +1 -1
  22. package/blog/ja/rag_powered_documentation_assistant.md +7 -0
  23. package/blog/ko/index.md +1 -1
  24. package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
  25. package/blog/ko/rag_powered_documentation_assistant.md +6 -0
  26. package/blog/pl/index.md +1 -1
  27. package/blog/pl/rag_powered_documentation_assistant.md +6 -0
  28. package/blog/pt/index.md +1 -1
  29. package/blog/pt/rag_powered_documentation_assistant.md +6 -0
  30. package/blog/ru/index.md +1 -1
  31. package/blog/ru/rag_powered_documentation_assistant.md +7 -0
  32. package/blog/tr/intlayer_with_react-intl.md +3 -1
  33. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +175 -42
  34. package/blog/tr/rag_powered_documentation_assistant.md +6 -0
  35. package/blog/uk/index.md +1 -1
  36. package/blog/uk/rag_powered_documentation_assistant.md +6 -0
  37. package/blog/vi/index.md +1 -1
  38. package/blog/vi/rag_powered_documentation_assistant.md +6 -0
  39. package/blog/zh/index.md +1 -1
  40. package/blog/zh/intlayer_with_i18next.md +87 -28
  41. package/blog/zh/intlayer_with_next-i18next.md +86 -29
  42. package/blog/zh/intlayer_with_next-intl.md +88 -28
  43. package/blog/zh/intlayer_with_react-i18next.md +87 -28
  44. package/blog/zh/intlayer_with_react-intl.md +88 -27
  45. package/blog/zh/intlayer_with_vue-i18n.md +117 -8
  46. package/blog/zh/rag_powered_documentation_assistant.md +6 -0
  47. package/dist/cjs/common.cjs +24 -1
  48. package/dist/cjs/common.cjs.map +1 -1
  49. package/dist/cjs/generated/blog.entry.cjs +58 -31
  50. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  51. package/dist/cjs/generated/docs.entry.cjs +265 -218
  52. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  53. package/dist/cjs/generated/frequentQuestions.entry.cjs +48 -21
  54. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  55. package/dist/cjs/generated/legal.entry.cjs +33 -6
  56. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  57. package/dist/esm/common.mjs +24 -1
  58. package/dist/esm/common.mjs.map +1 -1
  59. package/dist/esm/generated/blog.entry.mjs +58 -31
  60. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  61. package/dist/esm/generated/docs.entry.mjs +265 -218
  62. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  63. package/dist/esm/generated/frequentQuestions.entry.mjs +48 -21
  64. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  65. package/dist/esm/generated/legal.entry.mjs +33 -6
  66. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  67. package/dist/types/common.d.ts.map +1 -1
  68. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  69. package/dist/types/generated/docs.entry.d.ts +1 -0
  70. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  71. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  72. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  73. package/docs/ar/analytics.md +222 -0
  74. package/docs/ar/autoFill.md +28 -9
  75. package/docs/ar/bundle_optimization.md +58 -25
  76. package/docs/ar/configuration.md +25 -8
  77. package/docs/ar/dictionary/file.md +3 -1
  78. package/docs/ar/dictionary/nesting.md +47 -30
  79. package/docs/ar/formatters.md +148 -193
  80. package/docs/ar/intlayer_CMS.md +152 -0
  81. package/docs/ar/intlayer_with_angular_21.md +9 -9
  82. package/docs/ar/intlayer_with_nextjs_14.md +1 -28
  83. package/docs/ar/intlayer_with_nextjs_15.md +1 -33
  84. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +40 -83
  85. package/docs/ar/intlayer_with_solid_start.md +1078 -0
  86. package/docs/ar/intlayer_with_vite+vue.md +1 -3
  87. package/docs/ar/live-sync.md +4 -0
  88. package/docs/ar/packages/intlayer/getLocalizedUrl.md +26 -24
  89. package/docs/ar/packages/intlayer/getMultilingualUrls.md +4 -18
  90. package/docs/ar/packages/react-intlayer/useDictionary.md +4 -21
  91. package/docs/ar/packages/react-intlayer/useIntlayer.md +2 -2
  92. package/docs/ar/packages/vite-intlayer/exports.md +15 -0
  93. package/docs/ar/packages/vite-intlayer/intlayer.md +121 -6
  94. package/docs/ar/packages/vite-intlayer/intlayerPrune.md +70 -3
  95. package/docs/ar/releases/v9.md +0 -37
  96. package/docs/ar/self_hosting.md +46 -49
  97. package/docs/bn/bundle_optimization.md +58 -25
  98. package/docs/bn/configuration.md +25 -8
  99. package/docs/bn/intlayer_with_angular_21.md +9 -9
  100. package/docs/cs/bundle_optimization.md +58 -25
  101. package/docs/cs/configuration.md +25 -8
  102. package/docs/cs/intlayer_with_angular_21.md +9 -9
  103. package/docs/de/analytics.md +222 -0
  104. package/docs/de/autoFill.md +28 -9
  105. package/docs/de/bundle_optimization.md +58 -25
  106. package/docs/de/configuration.md +25 -8
  107. package/docs/de/dictionary/file.md +3 -1
  108. package/docs/de/dictionary/nesting.md +47 -31
  109. package/docs/de/formatters.md +208 -334
  110. package/docs/de/intlayer_CMS.md +66 -15
  111. package/docs/de/intlayer_with_angular_21.md +9 -9
  112. package/docs/de/intlayer_with_nestjs.md +11 -7
  113. package/docs/de/intlayer_with_nextjs_14.md +1 -28
  114. package/docs/de/intlayer_with_nextjs_15.md +1 -33
  115. package/docs/de/intlayer_with_solid_start.md +1078 -0
  116. package/docs/de/intlayer_with_vite+vue.md +1 -3
  117. package/docs/de/live-sync.md +4 -0
  118. package/docs/de/packages/intlayer/getLocalizedUrl.md +33 -25
  119. package/docs/de/packages/intlayer/getMultilingualUrls.md +4 -18
  120. package/docs/de/packages/react-intlayer/useDictionary.md +2 -5
  121. package/docs/de/packages/vite-intlayer/exports.md +15 -0
  122. package/docs/de/packages/vite-intlayer/intlayer.md +121 -6
  123. package/docs/de/packages/vite-intlayer/intlayerPrune.md +77 -4
  124. package/docs/de/releases/v9.md +0 -15
  125. package/docs/de/self_hosting.md +46 -50
  126. package/docs/en/bundle_optimization.md +51 -23
  127. package/docs/en/cli/doc-review.md +13 -2
  128. package/docs/en/configuration.md +24 -15
  129. package/docs/en/intlayer_with_angular_21.md +9 -9
  130. package/docs/en/intlayer_with_solid_start.md +1091 -0
  131. package/docs/en/intlayer_with_vite+solid.md +12 -0
  132. package/docs/en/live-sync.md +4 -0
  133. package/docs/en-GB/analytics.md +222 -0
  134. package/docs/en-GB/autoFill.md +26 -7
  135. package/docs/en-GB/bundle_optimization.md +58 -25
  136. package/docs/en-GB/configuration.md +25 -8
  137. package/docs/en-GB/dictionary/file.md +2 -0
  138. package/docs/en-GB/dictionary/nesting.md +64 -205
  139. package/docs/en-GB/formatters.md +146 -181
  140. package/docs/en-GB/intlayer_CMS.md +152 -0
  141. package/docs/en-GB/intlayer_with_angular_21.md +9 -9
  142. package/docs/en-GB/intlayer_with_nestjs.md +6 -2
  143. package/docs/en-GB/intlayer_with_nextjs_14.md +0 -27
  144. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -33
  145. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +40 -82
  146. package/docs/en-GB/intlayer_with_solid_start.md +1078 -0
  147. package/docs/en-GB/intlayer_with_vite+vue.md +1 -3
  148. package/docs/en-GB/live-sync.md +4 -0
  149. package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +30 -22
  150. package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +16 -48
  151. package/docs/en-GB/packages/vite-intlayer/exports.md +15 -0
  152. package/docs/en-GB/packages/vite-intlayer/intlayer.md +121 -6
  153. package/docs/en-GB/packages/vite-intlayer/intlayerPrune.md +77 -4
  154. package/docs/en-GB/self_hosting.md +60 -49
  155. package/docs/es/analytics.md +222 -0
  156. package/docs/es/autoFill.md +28 -9
  157. package/docs/es/bundle_optimization.md +58 -25
  158. package/docs/es/configuration.md +24 -7
  159. package/docs/es/dictionary/file.md +3 -1
  160. package/docs/es/dictionary/nesting.md +47 -30
  161. package/docs/es/formatters.md +114 -168
  162. package/docs/es/intlayer_CMS.md +35 -10
  163. package/docs/es/intlayer_with_angular_21.md +9 -9
  164. package/docs/es/intlayer_with_nextjs_14.md +1 -28
  165. package/docs/es/intlayer_with_nextjs_15.md +1 -33
  166. package/docs/es/intlayer_with_solid_start.md +1078 -0
  167. package/docs/es/live-sync.md +4 -0
  168. package/docs/es/packages/intlayer/getLocalizedUrl.md +31 -23
  169. package/docs/es/packages/intlayer/getMultilingualUrls.md +4 -18
  170. package/docs/es/packages/vite-intlayer/exports.md +15 -0
  171. package/docs/es/packages/vite-intlayer/intlayer.md +121 -6
  172. package/docs/es/packages/vite-intlayer/intlayerPrune.md +69 -2
  173. package/docs/es/releases/v9.md +0 -15
  174. package/docs/es/self_hosting.md +46 -49
  175. package/docs/fr/analytics.md +222 -0
  176. package/docs/fr/autoFill.md +27 -8
  177. package/docs/fr/bundle_optimization.md +58 -25
  178. package/docs/fr/configuration.md +25 -8
  179. package/docs/fr/dictionary/file.md +2 -0
  180. package/docs/fr/dictionary/nesting.md +37 -184
  181. package/docs/fr/formatters.md +95 -236
  182. package/docs/fr/intlayer_CMS.md +66 -15
  183. package/docs/fr/intlayer_with_angular_21.md +9 -9
  184. package/docs/fr/intlayer_with_nextjs_14.md +1 -28
  185. package/docs/fr/intlayer_with_nextjs_15.md +1 -33
  186. package/docs/fr/intlayer_with_solid_start.md +1078 -0
  187. package/docs/fr/live-sync.md +4 -0
  188. package/docs/fr/packages/intlayer/getLocalizedUrl.md +37 -27
  189. package/docs/fr/packages/intlayer/getMultilingualUrls.md +18 -20
  190. package/docs/fr/packages/vite-intlayer/exports.md +15 -0
  191. package/docs/fr/packages/vite-intlayer/intlayer.md +121 -6
  192. package/docs/fr/packages/vite-intlayer/intlayerPrune.md +77 -4
  193. package/docs/fr/releases/v9.md +0 -15
  194. package/docs/fr/self_hosting.md +46 -49
  195. package/docs/hi/analytics.md +222 -0
  196. package/docs/hi/autoFill.md +28 -9
  197. package/docs/hi/bundle_optimization.md +58 -25
  198. package/docs/hi/configuration.md +25 -8
  199. package/docs/hi/dictionary/file.md +3 -1
  200. package/docs/hi/dictionary/nesting.md +47 -30
  201. package/docs/hi/formatters.md +233 -334
  202. package/docs/hi/how_works_intlayer.md +3 -1
  203. package/docs/hi/intlayer_CMS.md +152 -0
  204. package/docs/hi/intlayer_with_angular_21.md +9 -9
  205. package/docs/hi/intlayer_with_nestjs.md +11 -7
  206. package/docs/hi/intlayer_with_nextjs_14.md +1 -28
  207. package/docs/hi/intlayer_with_nextjs_15.md +1 -33
  208. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +40 -83
  209. package/docs/hi/intlayer_with_solid_start.md +1077 -0
  210. package/docs/hi/intlayer_with_vite+preact.md +56 -49
  211. package/docs/hi/intlayer_with_vite+react.md +48 -41
  212. package/docs/hi/intlayer_with_vite+solid.md +32 -41
  213. package/docs/hi/intlayer_with_vite+vue.md +49 -44
  214. package/docs/hi/live-sync.md +4 -0
  215. package/docs/hi/packages/intlayer/getLocalizedUrl.md +26 -24
  216. package/docs/hi/packages/intlayer/getMultilingualUrls.md +4 -18
  217. package/docs/hi/packages/next-intlayer/t.md +33 -1
  218. package/docs/hi/packages/react-intlayer/useDictionary.md +4 -21
  219. package/docs/hi/packages/vite-intlayer/exports.md +15 -0
  220. package/docs/hi/packages/vite-intlayer/intlayer.md +121 -6
  221. package/docs/hi/packages/vite-intlayer/intlayerPrune.md +78 -5
  222. package/docs/hi/plugins/sync-json.md +9 -9
  223. package/docs/hi/releases/v9.md +0 -15
  224. package/docs/hi/self_hosting.md +38 -51
  225. package/docs/id/analytics.md +223 -0
  226. package/docs/id/bundle_optimization.md +58 -25
  227. package/docs/id/configuration.md +25 -8
  228. package/docs/id/dictionary/nesting.md +37 -184
  229. package/docs/id/formatters.md +208 -305
  230. package/docs/id/intlayer_CMS.md +164 -0
  231. package/docs/id/intlayer_with_angular_21.md +9 -9
  232. package/docs/id/intlayer_with_nextjs_14.md +1 -26
  233. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +70 -63
  234. package/docs/id/intlayer_with_solid_start.md +1078 -0
  235. package/docs/id/live-sync.md +4 -0
  236. package/docs/id/packages/intlayer/getMultilingualUrls.md +4 -18
  237. package/docs/id/packages/react-intlayer/useIntlayer.md +2 -2
  238. package/docs/id/packages/vite-intlayer/exports.md +15 -0
  239. package/docs/id/packages/vite-intlayer/intlayer.md +121 -6
  240. package/docs/id/packages/vite-intlayer/intlayerPrune.md +78 -5
  241. package/docs/id/releases/v9.md +12 -0
  242. package/docs/id/self_hosting.md +61 -50
  243. package/docs/it/analytics.md +222 -0
  244. package/docs/it/autoFill.md +27 -8
  245. package/docs/it/bundle_optimization.md +58 -25
  246. package/docs/it/configuration.md +25 -8
  247. package/docs/it/dictionary/file.md +3 -1
  248. package/docs/it/dictionary/nesting.md +47 -30
  249. package/docs/it/formatters.md +114 -168
  250. package/docs/it/intlayer_CMS.md +66 -15
  251. package/docs/it/intlayer_with_angular_21.md +9 -9
  252. package/docs/it/intlayer_with_nestjs.md +11 -7
  253. package/docs/it/intlayer_with_nextjs_14.md +1 -28
  254. package/docs/it/intlayer_with_nextjs_15.md +1 -33
  255. package/docs/it/intlayer_with_solid_start.md +1078 -0
  256. package/docs/it/intlayer_with_vite+vue.md +1 -3
  257. package/docs/it/live-sync.md +4 -0
  258. package/docs/it/packages/intlayer/getLocalizedUrl.md +34 -26
  259. package/docs/it/packages/intlayer/getMultilingualUrls.md +4 -18
  260. package/docs/it/packages/react-intlayer/useDictionary.md +4 -21
  261. package/docs/it/packages/vite-intlayer/exports.md +15 -0
  262. package/docs/it/packages/vite-intlayer/intlayer.md +121 -6
  263. package/docs/it/packages/vite-intlayer/intlayerPrune.md +77 -4
  264. package/docs/it/releases/v9.md +0 -15
  265. package/docs/it/self_hosting.md +60 -49
  266. package/docs/ja/analytics.md +222 -0
  267. package/docs/ja/autoFill.md +28 -9
  268. package/docs/ja/bundle_optimization.md +58 -25
  269. package/docs/ja/configuration.md +25 -8
  270. package/docs/ja/dictionary/content_file.md +15 -7
  271. package/docs/ja/dictionary/file.md +3 -1
  272. package/docs/ja/dictionary/nesting.md +47 -30
  273. package/docs/ja/formatters.md +133 -187
  274. package/docs/ja/intlayer_visual_editor.md +3 -1
  275. package/docs/ja/intlayer_with_angular_21.md +6 -6
  276. package/docs/ja/intlayer_with_nestjs.md +2 -12
  277. package/docs/ja/intlayer_with_nextjs_14.md +1 -28
  278. package/docs/ja/intlayer_with_nextjs_15.md +1 -33
  279. package/docs/ja/intlayer_with_react_router_v7.md +456 -20
  280. package/docs/ja/intlayer_with_solid_start.md +1078 -0
  281. package/docs/ja/intlayer_with_vite+preact.md +73 -41
  282. package/docs/ja/intlayer_with_vite+vue.md +1 -3
  283. package/docs/ja/live-sync.md +4 -0
  284. package/docs/ja/mcp_server.md +3 -9
  285. package/docs/ja/packages/intlayer/getLocalizedUrl.md +26 -24
  286. package/docs/ja/packages/intlayer/getMultilingualUrls.md +3 -17
  287. package/docs/ja/packages/vite-intlayer/exports.md +15 -0
  288. package/docs/ja/packages/vite-intlayer/intlayer.md +121 -6
  289. package/docs/ja/packages/vite-intlayer/intlayerPrune.md +79 -6
  290. package/docs/ja/releases/v9.md +12 -0
  291. package/docs/ja/self_hosting.md +46 -50
  292. package/docs/ko/analytics.md +222 -0
  293. package/docs/ko/autoFill.md +28 -9
  294. package/docs/ko/bundle_optimization.md +58 -25
  295. package/docs/ko/configuration.md +25 -8
  296. package/docs/ko/dictionary/file.md +3 -1
  297. package/docs/ko/dictionary/nesting.md +47 -30
  298. package/docs/ko/formatters.md +133 -187
  299. package/docs/ko/intlayer_with_angular_21.md +9 -9
  300. package/docs/ko/intlayer_with_lynx+react.md +133 -39
  301. package/docs/ko/intlayer_with_nextjs_14.md +1 -28
  302. package/docs/ko/intlayer_with_nextjs_15.md +1 -33
  303. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +40 -188
  304. package/docs/ko/intlayer_with_solid_start.md +1078 -0
  305. package/docs/ko/intlayer_with_vite+preact.md +57 -23
  306. package/docs/ko/intlayer_with_vite+vue.md +1 -3
  307. package/docs/ko/live-sync.md +4 -0
  308. package/docs/ko/packages/intlayer/getLocalizedUrl.md +26 -24
  309. package/docs/ko/packages/intlayer/getMultilingualUrls.md +4 -18
  310. package/docs/ko/packages/vite-intlayer/exports.md +15 -0
  311. package/docs/ko/packages/vite-intlayer/intlayer.md +121 -6
  312. package/docs/ko/packages/vite-intlayer/intlayerPrune.md +79 -6
  313. package/docs/ko/releases/v9.md +12 -0
  314. package/docs/ko/self_hosting.md +60 -49
  315. package/docs/nl/bundle_optimization.md +58 -25
  316. package/docs/nl/configuration.md +25 -8
  317. package/docs/nl/intlayer_with_angular_21.md +9 -9
  318. package/docs/pl/analytics.md +220 -0
  319. package/docs/pl/bundle_optimization.md +58 -25
  320. package/docs/pl/configuration.md +25 -8
  321. package/docs/pl/dictionary/nesting.md +47 -30
  322. package/docs/pl/formatters.md +208 -305
  323. package/docs/pl/intlayer_CMS.md +152 -0
  324. package/docs/pl/intlayer_with_angular_21.md +9 -9
  325. package/docs/pl/intlayer_with_nextjs_14.md +1 -26
  326. package/docs/pl/intlayer_with_solid_start.md +1078 -0
  327. package/docs/pl/live-sync.md +4 -0
  328. package/docs/pl/packages/intlayer/getMultilingualUrls.md +4 -18
  329. package/docs/pl/packages/react-intlayer/useDictionary.md +2 -19
  330. package/docs/pl/packages/vite-intlayer/exports.md +15 -0
  331. package/docs/pl/packages/vite-intlayer/intlayer.md +121 -6
  332. package/docs/pl/packages/vite-intlayer/intlayerPrune.md +77 -4
  333. package/docs/pl/releases/v9.md +0 -15
  334. package/docs/pl/self_hosting.md +60 -49
  335. package/docs/pt/analytics.md +222 -0
  336. package/docs/pt/bundle_optimization.md +58 -24
  337. package/docs/pt/configuration.md +25 -8
  338. package/docs/pt/dictionary/file.md +3 -1
  339. package/docs/pt/dictionary/nesting.md +47 -30
  340. package/docs/pt/formatters.md +112 -168
  341. package/docs/pt/intlayer_CMS.md +66 -15
  342. package/docs/pt/intlayer_with_angular_21.md +9 -9
  343. package/docs/pt/intlayer_with_astro_lit.md +26 -1
  344. package/docs/pt/intlayer_with_nextjs_14.md +1 -28
  345. package/docs/pt/intlayer_with_nextjs_15.md +1 -33
  346. package/docs/pt/intlayer_with_solid_start.md +1078 -0
  347. package/docs/pt/intlayer_with_vite+vue.md +1 -3
  348. package/docs/pt/live-sync.md +4 -0
  349. package/docs/pt/packages/intlayer/getLocalizedUrl.md +34 -26
  350. package/docs/pt/packages/intlayer/getMultilingualUrls.md +4 -18
  351. package/docs/pt/packages/vite-intlayer/exports.md +15 -0
  352. package/docs/pt/packages/vite-intlayer/intlayer.md +121 -6
  353. package/docs/pt/packages/vite-intlayer/intlayerPrune.md +78 -6
  354. package/docs/pt/releases/v9.md +0 -15
  355. package/docs/pt/self_hosting.md +60 -49
  356. package/docs/ru/analytics.md +222 -0
  357. package/docs/ru/autoFill.md +27 -8
  358. package/docs/ru/bundle_optimization.md +58 -25
  359. package/docs/ru/configuration.md +25 -8
  360. package/docs/ru/dictionary/file.md +3 -1
  361. package/docs/ru/dictionary/nesting.md +64 -205
  362. package/docs/ru/formatters.md +108 -128
  363. package/docs/ru/intlayer_with_angular_21.md +9 -9
  364. package/docs/ru/intlayer_with_nextjs_14.md +1 -28
  365. package/docs/ru/intlayer_with_nextjs_15.md +1 -33
  366. package/docs/ru/intlayer_with_solid_start.md +1078 -0
  367. package/docs/ru/intlayer_with_vite+vue.md +1 -3
  368. package/docs/ru/live-sync.md +4 -0
  369. package/docs/ru/packages/intlayer/getLocalizedUrl.md +34 -26
  370. package/docs/ru/packages/intlayer/getMultilingualUrls.md +4 -18
  371. package/docs/ru/packages/react-intlayer/useDictionary.md +4 -21
  372. package/docs/ru/packages/vite-intlayer/exports.md +15 -0
  373. package/docs/ru/packages/vite-intlayer/intlayer.md +121 -6
  374. package/docs/ru/packages/vite-intlayer/intlayerPrune.md +77 -4
  375. package/docs/ru/releases/v9.md +0 -15
  376. package/docs/ru/self_hosting.md +60 -49
  377. package/docs/tr/analytics.md +222 -0
  378. package/docs/tr/autoFill.md +28 -9
  379. package/docs/tr/bundle_optimization.md +58 -25
  380. package/docs/tr/configuration.md +25 -8
  381. package/docs/tr/dictionary/file.md +2 -0
  382. package/docs/tr/dictionary/nesting.md +47 -30
  383. package/docs/tr/formatters.md +144 -190
  384. package/docs/tr/intlayer_CMS.md +152 -0
  385. package/docs/tr/intlayer_with_angular_21.md +9 -9
  386. package/docs/tr/intlayer_with_nestjs.md +2 -12
  387. package/docs/tr/intlayer_with_nextjs_15.md +1 -33
  388. package/docs/tr/intlayer_with_solid_start.md +1078 -0
  389. package/docs/tr/intlayer_with_vite+vue.md +1 -3
  390. package/docs/tr/live-sync.md +4 -0
  391. package/docs/tr/packages/intlayer/getMultilingualUrls.md +4 -18
  392. package/docs/tr/packages/vite-intlayer/exports.md +15 -0
  393. package/docs/tr/packages/vite-intlayer/intlayer.md +121 -6
  394. package/docs/tr/packages/vite-intlayer/intlayerPrune.md +77 -4
  395. package/docs/tr/self_hosting.md +47 -50
  396. package/docs/uk/analytics.md +222 -0
  397. package/docs/uk/bundle_optimization.md +58 -25
  398. package/docs/uk/configuration.md +25 -8
  399. package/docs/uk/dictionary/nesting.md +47 -30
  400. package/docs/uk/formatters.md +128 -185
  401. package/docs/uk/intlayer_CMS.md +152 -0
  402. package/docs/uk/intlayer_with_angular_21.md +9 -9
  403. package/docs/uk/intlayer_with_nextjs_14.md +1 -26
  404. package/docs/uk/intlayer_with_solid_start.md +1078 -0
  405. package/docs/uk/live-sync.md +4 -0
  406. package/docs/uk/packages/react-intlayer/useDictionary.md +2 -19
  407. package/docs/uk/packages/vite-intlayer/exports.md +15 -0
  408. package/docs/uk/packages/vite-intlayer/intlayer.md +121 -6
  409. package/docs/uk/packages/vite-intlayer/intlayerPrune.md +77 -4
  410. package/docs/uk/releases/v9.md +0 -15
  411. package/docs/uk/self_hosting.md +60 -50
  412. package/docs/ur/bundle_optimization.md +58 -25
  413. package/docs/ur/configuration.md +25 -8
  414. package/docs/ur/intlayer_with_angular_21.md +9 -9
  415. package/docs/vi/analytics.md +222 -0
  416. package/docs/vi/bundle_optimization.md +58 -25
  417. package/docs/vi/configuration.md +24 -8
  418. package/docs/vi/dictionary/nesting.md +37 -184
  419. package/docs/vi/formatters.md +208 -309
  420. package/docs/vi/intlayer_CMS.md +164 -0
  421. package/docs/vi/intlayer_with_angular_21.md +9 -9
  422. package/docs/vi/intlayer_with_nextjs_14.md +0 -25
  423. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +70 -63
  424. package/docs/vi/intlayer_with_solid_start.md +1078 -0
  425. package/docs/vi/live-sync.md +4 -0
  426. package/docs/vi/packages/intlayer/getMultilingualUrls.md +4 -18
  427. package/docs/vi/packages/react-intlayer/useIntlayer.md +2 -2
  428. package/docs/vi/packages/vite-intlayer/exports.md +15 -0
  429. package/docs/vi/packages/vite-intlayer/intlayer.md +121 -6
  430. package/docs/vi/packages/vite-intlayer/intlayerPrune.md +77 -4
  431. package/docs/vi/plugins/sync-json.md +6 -6
  432. package/docs/vi/releases/v9.md +12 -0
  433. package/docs/vi/self_hosting.md +61 -50
  434. package/docs/zh/CI_CD.md +4 -0
  435. package/docs/zh/analytics.md +222 -0
  436. package/docs/zh/autoFill.md +28 -9
  437. package/docs/zh/bundle_optimization.md +58 -25
  438. package/docs/zh/configuration.md +24 -8
  439. package/docs/zh/dictionary/file.md +2 -0
  440. package/docs/zh/dictionary/nesting.md +47 -30
  441. package/docs/zh/formatters.md +140 -188
  442. package/docs/zh/intlayer_CMS.md +164 -0
  443. package/docs/zh/intlayer_with_analog.md +193 -3
  444. package/docs/zh/intlayer_with_angular_19.md +272 -3
  445. package/docs/zh/intlayer_with_angular_21.md +7 -7
  446. package/docs/zh/intlayer_with_create_react_app.md +348 -26
  447. package/docs/zh/intlayer_with_lynx+react.md +263 -4
  448. package/docs/zh/intlayer_with_nextjs_14.md +1 -28
  449. package/docs/zh/intlayer_with_nextjs_15.md +1 -33
  450. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +558 -1
  451. package/docs/zh/intlayer_with_nuxt.md +182 -7
  452. package/docs/zh/intlayer_with_react_router_v7.md +183 -25
  453. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +306 -42
  454. package/docs/zh/intlayer_with_solid_start.md +1077 -0
  455. package/docs/zh/intlayer_with_storybook.md +260 -3
  456. package/docs/zh/intlayer_with_svelte_kit.md +428 -48
  457. package/docs/zh/intlayer_with_tanstack+solid.md +713 -13
  458. package/docs/zh/intlayer_with_tanstack.md +731 -20
  459. package/docs/zh/intlayer_with_vanilla.md +314 -4
  460. package/docs/zh/intlayer_with_vite+lit.md +465 -4
  461. package/docs/zh/intlayer_with_vite+preact.md +422 -116
  462. package/docs/zh/intlayer_with_vite+react.md +324 -45
  463. package/docs/zh/intlayer_with_vite+react_compiler.md +228 -13
  464. package/docs/zh/intlayer_with_vite+solid.md +462 -32
  465. package/docs/zh/intlayer_with_vite+vanilla.md +497 -4
  466. package/docs/zh/live-sync.md +4 -0
  467. package/docs/zh/mcp_server.md +3 -9
  468. package/docs/zh/packages/intlayer/getLocalizedUrl.md +26 -24
  469. package/docs/zh/packages/intlayer/getMultilingualUrls.md +4 -18
  470. package/docs/zh/packages/vite-intlayer/exports.md +29 -0
  471. package/docs/zh/packages/vite-intlayer/intlayer.md +121 -6
  472. package/docs/zh/packages/vite-intlayer/intlayerPrune.md +79 -6
  473. package/docs/zh/releases/v9.md +12 -0
  474. package/docs/zh/self_hosting.md +60 -50
  475. package/docs/zh-TW/bundle_optimization.md +58 -25
  476. package/docs/zh-TW/intlayer_with_angular_21.md +7 -7
  477. package/package.json +7 -7
  478. package/src/common.ts +39 -2
  479. package/src/generated/blog.entry.ts +66 -34
  480. package/src/generated/docs.entry.ts +273 -221
  481. package/src/generated/frequentQuestions.entry.ts +56 -24
  482. package/src/generated/legal.entry.ts +41 -9
@@ -0,0 +1,222 @@
1
+ ---
2
+ createdAt: 2026-07-08
3
+ updatedAt: 2026-07-08
4
+ title: Intlayer Analytics | コンテンツ露出の追跡とA/Bテストの実行
5
+ description: "@intlayer/analyticsがページ/ロケールビューとコンテンツ露出をどのように追跡するか、そしてそれを活用してIntlayerコンテンツでA/Bテストを実行する方法について説明します。"
6
+ keywords:
7
+ - Analytics (アナリティクス)
8
+ - A/B Testing (A/Bテスト)
9
+ - Audience (オーディエンス)
10
+ - Internationalization (国際化)
11
+ - Documentation (ドキュメント)
12
+ - Intlayer
13
+ - Next.js
14
+ - JavaScript
15
+ - React
16
+ slugs:
17
+ - doc
18
+ - concept
19
+ - analytics
20
+ history:
21
+ - version: 9.0.0
22
+ date: 2026-07-08
23
+ changes: "Init doc — @intlayer/analytics パッケージ、プロバイダ/ノードレベルのトラッキング、A/Bテスト、ダッシュボード"
24
+ author: aymericzip
25
+ ---
26
+
27
+ # Intlayer Analytics ドキュメント
28
+
29
+ `@intlayer/analytics`はオプションのコンパニオンパッケージであり、**実際にどのコンテンツが訪問者に表示されたか**(どのページで、どのロケールで、翻訳されたコンテンツのどの特定の部分か)を把握できるようにします。これにより、オーディエンスを理解し、**コンテンツ上でA/Bテスト**を実行することができます。
30
+
31
+ ## 目次
32
+
33
+ <TOC/>
34
+
35
+ ---
36
+
37
+ ## トラッキング対象
38
+
39
+ `@intlayer/analytics`は、3種類の匿名イベントをバッチ処理します:
40
+
41
+ | イベント | どこでキャプチャされるか | 何がわかるか |
42
+ | ------------------ | ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
43
+ | `page_view` | プロバイダレベル (`IntlayerProvider`) | 初回ロード、ルート変更、またはロケール切り替え時に、セッションがどのページとロケールを表示したか。 |
44
+ | `content_exposure` | ノードレベル (`useIntlayer` / インタープリタプラグイン) | どの辞書キー(dictionary key)/ キーパスが実際に解決されて表示されたか。実験の一部である場合は、どの**バリアント**か。 |
45
+ | `conversion` | `useConversion()`を呼び出す場所 | 達成された目標(サインアップ、クリック、購入など)が、セッションに表示されたA/Bバリアントに紐付けられます。 |
46
+
47
+ イベントはメモリに収集され、**約20秒に1回のバッチリクエスト**として送信されます。キー入力やレンダリングごとに送信されることはないため、アナリティクスが初回レンダリング時間に影響を与えたり、インタラクションごとにリクエストを追加したりすることはありません。
48
+
49
+ ## コンテンツA/Bテストをどのように強化するか
50
+
51
+ Intlayerでは、すでにコンテンツの[バリアント (Variants)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dynamic_dictionaries/index.md)を宣言できます(例:`control`と`black_friday`バリアントを持つ`hero-banner`辞書など)。`@intlayer/analytics`は、そのサイクルを完結させます:
52
+
53
+ 1. `getVariant(experimentKey, variants)`は、各匿名セッションを決定論的にバリアントに割り当てます。これはセッションIDと実験キーの純粋関数であるため、割り当ては**セッション全体で安定**しており、初回レンダリング前の**サーバーラウンドトリップを必要としません**(ちらつきやレイアウトのずれが発生しません)。
54
+ 2. すべての`content_exposure`イベントには、表示された`variant`が含まれます。
55
+ 3. `useConversion()`を使用すると、そのバリアントに目標(例:`"cta_click"`)を紐付けることができます。
56
+ 4. ダッシュボードの実験結果エンドポイントでは、統計的有意性(Z検定)を含むバリアントごとのコンバージョン率を比較します。
57
+
58
+ ## インストール
59
+
60
+ `@intlayer/analytics`は**ピア(peer)、オプション**の依存関係です。フレームワークパッケージによって自動的にインストールされることはありません。`intlayer`と一緒に追加してください:
61
+
62
+ ```bash packageManager="npm"
63
+ npm install @intlayer/analytics
64
+ ```
65
+
66
+ ```bash packageManager="yarn"
67
+ yarn add @intlayer/analytics
68
+ ```
69
+
70
+ ```bash packageManager="pnpm"
71
+ pnpm add @intlayer/analytics
72
+ ```
73
+
74
+ ```bash packageManager="bun"
75
+ bun add @intlayer/analytics
76
+ ```
77
+
78
+ インストールしない場合、すべての統合ポイントはNo-Op(何もしない処理)として解決されます — 以下の[未インストール時のゼロコスト](#未インストール時のゼロコスト)を参照してください。
79
+
80
+ ## 設定
81
+
82
+ Analyticsは**既存の`editor`設定ブロックを再利用**します。入力する個別の`analytics`設定スキーマはありません:
83
+
84
+ ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
85
+ import type { IntlayerConfig } from "intlayer";
86
+
87
+ const config: IntlayerConfig = {
88
+ editor: {
89
+ backendURL: "https://back.intlayer.org", // アナリティクスデータ収集エンドポイントとしても使用されます
90
+ clientId: "your-client-id", // アナリティクスプロジェクトキーとしても使用されます
91
+ clientSecret: "your-client-secret",
92
+ },
93
+ };
94
+
95
+ export default config;
96
+ ```
97
+
98
+ - `editor.backendURL` — アナリティクスイベントが送信されるベースURL(`POST {backendURL}/api/analytics/events`)。
99
+ - `editor.clientId` — 収集されたすべてのイベントに紐付けられる公開プロジェクトキー。これは**有効化スイッチ**としても機能します:`clientId`が設定されるまで、アナリティクスは完全に無効化されます(後述のようにツリーシェイキングで削除されます)。
100
+
101
+ Intlayerをセルフホスト(self-host)している場合、`editor.backendURL`を共有しているため、アナリティクスは自動的にご自身のインスタンスを指します。
102
+
103
+ ## フレームワークのサポート
104
+
105
+ Analyticsは`react-intlayer`からの共有`IntlayerProvider`に組み込まれているため、そのプロバイダが使用されている場所であればどこでも今日から利用できます:
106
+
107
+ | フレームワーク | ステータス |
108
+ | -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
109
+ | React | ✅ 利用可能 |
110
+ | Next.js (`next-intlayer`) | ✅ 利用可能 (`react-intlayer` 経由) |
111
+ | React Native / Expo (`react-native-intlayer`) | ✅ 利用可能 (`react-intlayer` 経由) |
112
+ | Vue, Svelte, Angular, Solid, Preact, Lit, Astro, Vanilla | 🚧 計画中 — 同一クライアント、`@intlayer/editor`の展開パターンに従うプロバイダレベルのバインディング |
113
+
114
+ ## 使用方法
115
+
116
+ ### 自動プロバイダレベルのトラッキング
117
+
118
+ コードの変更は必要ありません。`@intlayer/analytics`がインストールされ、`editor.clientId`が設定されると、`IntlayerProvider`は自動的に以下を実行します:
119
+
120
+ - マウント時にアナリティクスクライアントを初期化します。
121
+ - 初回ロード時に`page_view`を記録します。
122
+ - ロケールが変更されるたびに`page_view`を記録します。
123
+ - 約20秒間のフラッシュ(送信)ループを開始し、アンマウント時またはタブを閉じた時に残りのイベントを送信します(`navigator.sendBeacon`経由、`fetch(..., { keepalive: true })`にフォールバック)。
124
+
125
+ ### 自動ノードレベルのトラッキング
126
+
127
+ `useIntlayer`が表示用のコンテンツを解決するたびに、インタープリタは正確な`dictionaryKey` + キーパス + ロケールに対して`content_exposure`イベントを報告します。これについてもコードの変更は必要ありません。送信ウィンドウ内で同じノードが繰り返し表示された場合は、`count`付きの単一のイベントとしてまとめられるため、50回再レンダリングされるリストが50のイベントを送信することはありません。
128
+
129
+ ### A/Bテストのコンバージョントラッキング
130
+
131
+ `useConversion()`を使用して、セッションが表示されたバリアントに目標を紐付けます:
132
+
133
+ ```tsx fileName="CTAButton.tsx" codeFormat="tsx"
134
+ import { useConversion } from "react-intlayer";
135
+
136
+ const CTAButton = () => {
137
+ const trackConversion = useConversion();
138
+
139
+ return (
140
+ <button
141
+ onClick={() =>
142
+ trackConversion({
143
+ experimentKey: "homepage-hero",
144
+ variant: "black_friday",
145
+ goal: "cta_click",
146
+ })
147
+ }
148
+ >
149
+ はじめる
150
+ </button>
151
+ );
152
+ };
153
+ ```
154
+
155
+ ### クライアント側でのバリアント解決
156
+
157
+ ```tsx fileName="useHeroVariant.ts" codeFormat="tsx"
158
+ import { getGlobalAnalyticsClient } from "@intlayer/analytics/client";
159
+
160
+ const client = getGlobalAnalyticsClient();
161
+ const variant = client?.getVariant("homepage-hero", [
162
+ "control",
163
+ "black_friday",
164
+ ]);
165
+ ```
166
+
167
+ ## プライバシーとパフォーマンス
168
+
169
+ - **設計上の匿名性**: セッションは回転するIDによって識別されます。バックエンドはそのIDの**SHA-256ハッシュ**のみを保存し、生のIDやIPアドレスは決して保存しません。
170
+ - **大まかな位置情報**: CDNのジオロケーションヘッダー(`cf-ipcountry`、`x-vercel-ip-country`など)から派生した国コードのみであり、IPが読み取られたり保存されたりすることはありません。
171
+ - **デフォルトで検索パラメータを除外するURL**: そのため、クエリ文字列(query strings)がキャプチャされることはありません。
172
+ - **サンプリング**: `sampleRate`を使用すると、トラフィックの多いアプリでコンテンツ露出イベントの一部のみを保持できます。
173
+ - **バッチ処理**: 約20秒ごと(`flushInterval`)、またはバッファがいっぱいになった場合(`maxBufferSize`)はそれより早く、1回のリクエストを送信します。イベントごとにリクエストを送信することはありません。
174
+
175
+ ### 未インストール時のゼロコスト
176
+
177
+ `@intlayer/analytics`は、`@intlayer/editor`とまったく同じオプション依存関係パターンに従っています:
178
+
179
+ - 各統合ポイントは、**`try/catch`でラップされた動的`import()`**を介してパッケージをロードします。`@intlayer/analytics`をインストールしないアプリでは、バンドルサイズやランタイムコストが発生することはなく、エラーが表示されることもありません。
180
+ - コンパイル時の環境変数(`INTLAYER_ANALYTICS_ENABLED`)は、`editor.clientId`が設定されていない場合に`@intlayer/config`によって自動的に`'false'`に設定されます。これにより、バンドラーが統合全体を**デッドコードとして削除(dead-code-eliminate)**できるようになります。
181
+ - Intlayerエディタ/CMSプレビューのiframe内ではアナリティクスが無効になっているため、エディタセッションが実際のトラフィックとしてカウントされることはありません。
182
+
183
+ ## ダッシュボード:アナリティクスページ
184
+
185
+ プロジェクトがイベントを収集すると、[Intlayerダッシュボード](https://app.intlayer.org/analytics)の**Analytics**ページ(プロジェクトを選択するとサイドバーに表示されます)に以下が表示されます:
186
+
187
+ - **アクティブユーザー** — 選択したローリングウィンドウ(7日 / 30日 / 90日)内のユニーク訪問者数。
188
+ - **今日のユーザー** および **過去7日間のユーザー**。
189
+ - 選択したウィンドウ内の**ページビュー**。
190
+ - 日次ユニーク訪問者の**推移グラフ**。
191
+ - オーディエンスをロケールおよび国別にランク付けする**ロケール**および**ロケーション**の詳細タブ。
192
+
193
+ ## バックエンドAPIリファレンス
194
+
195
+ すべての読み取りエンドポイントには認証が必要です。データの取り込み(ingestion)は公開されており、ボディの`clientId`によって属性付けされます。
196
+
197
+ | メソッド | エンドポイント | 説明 |
198
+ | -------- | ------------------------------------------- | ------------------------------------------------------------------------ |
199
+ | `POST` | `/api/analytics/events` | イベントのバッチを取り込む(公開、ボディの`clientId`に紐付けられる)。 |
200
+ | `GET` | `/api/analytics/overview` | 認証されたプロジェクトのページ/ロケールの合計。 |
201
+ | `GET` | `/api/analytics/audience?days=30` | ユニーク訪問者、ページビュー、日次系列、ロケール + 国の詳細。 |
202
+ | `GET` | `/api/analytics/content-stats` | コンテンツごとの露出合計(辞書キー / キーパス / ロケールでグループ化)。 |
203
+ | `GET` | `/api/analytics/experiments/:experimentKey` | A/B実験のバリアントごとのコンバージョン率と統計的有意性。 |
204
+
205
+ [CMS SDK](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_CMS.md)を使用して、これらをプログラムで呼び出すこともできます:
206
+
207
+ ```ts fileName="analytics.ts"
208
+ import { createIntlayerCMS } from "@intlayer/api";
209
+ import { analyticsEndpoint } from "@intlayer/api/analytics";
210
+
211
+ const cms = createIntlayerCMS();
212
+
213
+ const { data: audience } = await analyticsEndpoint(cms).getAudience(30);
214
+ ```
215
+
216
+ ## 便利なリンク
217
+
218
+ - [ダイナミック辞書 - コレクションとバリアント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dynamic_dictionaries/index.md)
219
+ - [Intlayer CMS - CMS SDK](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_CMS.md)
220
+ - [Intlayer ビジュアルエディタ](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_visual_editor.md)
221
+ - [設定リファレンス](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/configuration.md)
222
+ - [セルフホスティングガイド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/self_hosting.md)
@@ -75,11 +75,30 @@ v7 では、`fill` コマンドの動作が更新されました:
75
75
 
76
76
  別のファイルに書き込むためのパスオプションを使用する場合、埋め込みメカニズムはコンテンツ宣言ファイル間の _マスター・スレーブ_ 関係を通じて機能します。メインファイル(マスター)が情報源として機能し、更新されると、Intlayer はパスで指定されたスレーブの宣言ファイルに変更を自動的に適用します。
77
77
 
78
- # 自動入力コンテンツ宣言ファイルの翻訳
78
+ ### ロケールごとのカスタマイズ
79
79
 
80
- **自動入力コンテンツ宣言ファイル**は、開発ワークフローを高速化する方法です。
80
+ オブジェクトを使用して、各ロケールの動作をカスタマイズすることもできます:
81
81
 
82
- 自動入力メカニズムは、コンテンツ宣言ファイル間の _マスター・スレーブ_ 関係を通じて機能します。メイン(マスター)ファイルが更新されると、Intlayerはその変更を派生(自動入力された)宣言ファイルに自動的に適用します。
82
+ ```ts fileName="intlayer.config.ts"
83
+ const config: IntlayerConfig = {
84
+ content: {
85
+ internationalization: {
86
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.POLISH],
87
+ defaultLocale: Locales.ENGLISH,
88
+ requiredLocales: [Locales.ENGLISH], // Property 'pl' is missing in type '{ en: string; xxx } on your t function if を回避することをお勧めします
89
+ },
90
+ },
91
+ dictionary: {
92
+ fill: {
93
+ en: true, // 英語の現在のファイルを埋める・編集する
94
+ fr: "./translations/fr.json", // フランス語用に別ファイルを作成
95
+ es: false, // スペイン語の埋めを無効にする
96
+ },
97
+ },
98
+ };
99
+ ```
100
+
101
+ これにより、同じプロジェクト内の異なるロケールに対して異なるfill動作を設定できます。
83
102
 
84
103
  ```ts fileName="src/components/example/example.content.ts"
85
104
  import { Locales, type Dictionary } from "intlayer";
@@ -87,18 +106,18 @@ import { Locales, type Dictionary } from "intlayer";
87
106
  const exampleContent = {
88
107
  key: "example",
89
108
  locale: Locales.ENGLISH,
90
- autoFill: "./example.content.json",
109
+ fill: "./example.content.json",
91
110
  content: {
92
- contentExample: "これはコンテンツの例です", // コンテンツの例
111
+ contentExample: "This is an example of content",
93
112
  },
94
113
  } satisfies Dictionary;
95
114
 
96
115
  export default exampleContent;
97
116
  ```
98
117
 
99
- こちらは `autoFill` 指示を使用した[ロケール別コンテンツ宣言ファイル](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/per_locale_file.md)です。
118
+ ここに `fill` 命令を使用した[ロケール単位のコンテンツ宣言ファイル](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/per_locale_file.md)があります。
100
119
 
101
- 次に、以下のコマンドを実行すると:
120
+ 次に、以下のコマンドを実行します:
102
121
 
103
122
  ```bash packageManager="npm"
104
123
  npx intlayer fill --file 'src/components/example/example.content.ts'
@@ -116,7 +135,7 @@ pnpm intlayer fill --file 'src/components/example/example.content.ts'
116
135
  bun x intlayer fill --file 'src/components/example/example.content.ts'
117
136
  ```
118
137
 
119
- Intlayer は、メインファイルにまだ宣言されていないすべてのロケールを埋めて、派生した宣言ファイルを `src/components/example/example.content.json` に自動生成します。
138
+ Intlayer `src/components/example/example.content.json` に派生宣言ファイルを自動生成し、メインファイルでまだ宣言されていないすべてのロケールを埋めます。
120
139
 
121
140
  ```json5 fileName="src/components/example/example.content.json"
122
141
  {
@@ -133,7 +152,7 @@ Intlayer は、メインファイルにまだ宣言されていないすべて
133
152
  }
134
153
  ```
135
154
 
136
- その後、両方の宣言ファイルは単一の辞書にマージされ、標準の `useIntlayer("example")` フック(React)/ コンポーザブル(Vue)を使ってアクセス可能になります。
155
+ その後、両方の宣言ファイルが単一の辞書にマージされ、標準の `useIntlayer("example")` hook(react)/composable(vue)を使用してアクセスできます。
137
156
 
138
157
  ## グローバル設定
139
158
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-11-25
3
- updatedAt: 2026-06-07
3
+ updatedAt: 2026-08-09
4
4
  title: i18nバンドルサイズとパフォーマンスの最適化
5
5
  description: 国際化(i18n)コンテンツを最適化し、アプリケーションのバンドルサイズを削減します。Intlayerを使用して辞書のツリーシェイキングと遅延読み込みを活用する方法を学びます。
6
6
  keywords:
@@ -16,6 +16,12 @@ slugs:
16
16
  - concept
17
17
  - bundle-optimization
18
18
  history:
19
+ - version: 9.2.1
20
+ date: 2026-08-09
21
+ changes: "`purge` と `minify` が `@intlayer/swc` を通じて Next.js で動作するようになりました — `babel.config.js` は不要です"
22
+ - version: 8.12.0
23
+ date: 2026-06-24
24
+ changes: "リファレンス表で Babel プラグインを必要なパイプライン順(extract → purge → minify → optimize)で列挙"
19
25
  - version: 8.12.0
20
26
  date: 2026-06-07
21
27
  changes: "Babel/Webpack用の `intlayerPurgeBabelPlugin` と `intlayerMinifyBabelPlugin` を追加、プラグインのパイプラインを明確化"
@@ -191,12 +197,14 @@ Intlayerのビルド最適化は、それぞれ単一の責任を持つ複数の
191
197
 
192
198
  これらは、Webpackベースのセットアップ(Babelを使用したNext.js、CRA、カスタムWebpackなど)の `babel.config.js` で直接使用されます。
193
199
 
200
+ 以下の表は、必要なパイプライン順(`babel.config.js` に記述しなければならない順序と同じ)で列挙しています:
201
+
194
202
  | プラグイン | 役割 |
195
203
  | :---------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |
196
204
  | `intlayerExtractBabelPlugin` | `.content.ts` ファイルをスキャンし、コンパイルされた辞書を `.intlayer/` に書き込みます |
197
- | `intlayerOptimizeBabelPlugin` | `useIntlayer('key')` を `useDictionary(hash)` に書き換え、一致する辞書の `import` を注入します |
198
205
  | `intlayerPurgeBabelPlugin` | すべてのソースファイルをスキャンし、コンパイルされた `.intlayer/**/*.json` から**未使用のフィールド**を削除します |
199
206
  | `intlayerMinifyBabelPlugin` | JSONファイルとソースコードの両方で、**コンテンツフィールドキーを短いアルファベットのエイリアス**(例:`title` → `a`)に**名前変更**します |
207
+ | `intlayerOptimizeBabelPlugin` | `useIntlayer('key')` を `useDictionary(hash)` に書き換え、一致する辞書の `import` を注入します |
200
208
 
201
209
  > **プラグインの順序は重要です。** `babel.config.js` では、purgeとminifyのプラグインは、optimizeのプラグインの**前**に記述する必要があります。最適化パスは `useIntlayer('key')` を不透明な `useDictionary(hash)` 呼び出しに置き換えるため、purgeパスとminifyパスが使用されているフィールドを識別するために必要な辞書キー情報が消去されてしまいます。
202
210
 
@@ -205,9 +213,9 @@ Intlayerのビルド最適化は、それぞれ単一の責任を持つ複数の
205
213
  | オプションヘルパー | 一緒に使用するプラグイン |
206
214
  | :--------------------------- | :---------------------------- |
207
215
  | `getExtractPluginOptions()` | `intlayerExtractBabelPlugin` |
208
- | `getOptimizePluginOptions()` | `intlayerOptimizeBabelPlugin` |
209
216
  | `getPurgePluginOptions()` | `intlayerPurgeBabelPlugin` |
210
217
  | `getMinifyPluginOptions()` | `intlayerMinifyBabelPlugin` |
218
+ | `getOptimizePluginOptions()` | `intlayerOptimizeBabelPlugin` |
211
219
 
212
220
  ### Vite プラグイン (`vite-intlayer`)
213
221
 
@@ -220,6 +228,20 @@ Viteユーザーは**これらを直接設定することはありません**。
220
228
  | Dictionary minify | `intlayerMinifyBabelPlugin` のJSON書き込みパスと同じ |
221
229
  | Babel transform | `intlayerMinifyBabelPlugin` のソースコード名変更 + `intlayerOptimizeBabelPlugin` と同じ |
222
230
 
231
+ ### SWC プラグイン (`@intlayer/swc`)
232
+
233
+ Next.js ユーザーも**これらを直接設定することはありません**。**v9.2.1** 以降、`next.config.ts` の `withIntlayer()` が `build.purge` と `build.minify` フラグだけを元に、パージ・ミニファイ・インポート書き換えというパイプライン全体を実行します。
234
+
235
+ SWC の Wasm プラグインは一度に 1 ファイルしか変換できず、ファイルシステムにアクセスできないため、処理は 2 つに分かれています:
236
+
237
+ | パス | 実行場所 | 処理内容 |
238
+ | :------------------------------------------ | :---------------------------- | :--------------------------------------------------------------------------------------------------------------- |
239
+ | 使用状況の解析 + JSON のパージ/ミニファイ | Node、`withIntlayer()` の内部 | すべてのコンポーネントのソースファイルを読み取り、`.intlayer/**/*.json` を書き換え、リネームテーブルを生成します |
240
+ | ソースの書き換え (`content.title` → `.a`) | `@intlayer/swc` (Wasm) | リネームテーブルをコード内の該当するプロパティアクセスに適用します |
241
+ | インポートの書き換え (`useIntlayer` → dict) | `@intlayer/swc` (Wasm) | `intlayerOptimizeBabelPlugin` と同じ |
242
+
243
+ _どの_ フィールドが未使用か、そして各フィールドが _どの_ エイリアスを受け取るかを決定するには、ファイル横断の状態とファイル I/O が必要です。そのためこの半分は Node 上で実行され、SWC プラグインは生成されたテーブルだけを受け取ります。
244
+
223
245
  ## プラットフォーム別の設定
224
246
 
225
247
  <Tabs>
@@ -227,10 +249,12 @@ Viteユーザーは**これらを直接設定することはありません**。
227
249
 
228
250
  ### Next.js
229
251
 
230
- Next.jsはビルドにSWCを使用するため、最適化(インポートの書き換え)パスには `@intlayer/swc` プラグインが必要です。
252
+ Next.js はビルドに SWC を使用するため、`@intlayer/swc` プラグインが必要です。**v9.2.1** 以降、このパッケージ 1 つでパイプライン全体 — 最適化(インポート書き換え)、パージ、ミニファイ — をカバーします。
231
253
 
232
254
  > SWCプラグインはNext.jsではまだ実験的であるため、このプラグインはデフォルトではインストールされません。将来的に変更される可能性があります。
233
255
 
256
+ > **Next.js 16.1.0 が最小バージョンです。** SWC の前方互換な Wasm プラグイン ABI 上に構築された最初のリリースであり、それ以前のリリースはプラグインを拒否します。`withIntlayer` はプロジェクトの Next.js バージョンを読み取り、16.1.0 未満ではプラグインを登録しません — それらのビルドは引き続き成功し、単にバンドル最適化なしで実行されます。
257
+
234
258
  <Tabs>
235
259
  <Tab value="npm">
236
260
 
@@ -265,33 +289,40 @@ intlayer-swc-plugin = "*"
265
289
 
266
290
  インストールされると、Intlayerはプラグインを自動的に検出して使用します。
267
291
 
268
- **purgeおよびminify**パス(フィールドの削除とフィールドの名前変更)については、一緒に `@intlayer/babel` をインストールし、Babelプラグインを追加します。Next.jsは変換にSWCを使用しますが、プラグイン設定のために `babel.config.js` を評価するため、BabelプラグインはSWCの前の事前パスとして実行されます。
292
+ **パージとミニファイ**のパス(フィールドの削除とリネーム)には、追加パッケージも `babel.config.js` も不要です。設定を `withIntlayer` でラップし、`intlayer.config.ts` でフラグを有効にしてください:
269
293
 
270
- ```bash packageManager="npm"
271
- npm install -D @intlayer/babel
294
+ ```typescript fileName="next.config.ts"
295
+ import { withIntlayer } from "next-intlayer/server";
296
+ import type { NextConfig } from "next";
297
+
298
+ const nextConfig: NextConfig = {/* あなたの設定 */};
299
+
300
+ export default withIntlayer(nextConfig);
272
301
  ```
273
302
 
274
- ```javascript fileName="babel.config.js"
275
- const {
276
- intlayerPurgeBabelPlugin,
277
- intlayerMinifyBabelPlugin,
278
- getPurgePluginOptions,
279
- getMinifyPluginOptions,
280
- } = require("@intlayer/babel");
303
+ ```typescript fileName="intlayer.config.ts"
304
+ import type { IntlayerConfig } from "intlayer";
281
305
 
282
- module.exports = {
283
- presets: ["next/babel"],
284
- plugins: [
285
- // Purge: .intlayer/**/*.json から未使用のコンテンツフィールドを削除します
286
- [intlayerPurgeBabelPlugin, getPurgePluginOptions()],
287
- // Minify: JSON + ソースコード内のコンテンツフィールドキーの名前を変更します
288
- [intlayerMinifyBabelPlugin, getMinifyPluginOptions()],
289
- // 注意: @intlayer/swc が useIntlayer → useDictionary の書き換えを処理するため、
290
- // intlayerOptimizeBabelPluginはここでは不要です。
291
- ],
306
+ const config: IntlayerConfig = {
307
+ build: {
308
+ purge: true, // バンドルされた JSON から未使用のコンテンツフィールドを削除します
309
+ minify: true, // コンテンツフィールドのキーを短いエイリアスにリネームします
310
+ },
292
311
  };
312
+
313
+ export default config;
293
314
  ```
294
315
 
316
+ `next build` の実行中、`withIntlayer` はソースを解析し、コンパイル済み辞書を書き換え、生成されたフィールドのリネームテーブルを `@intlayer/swc` に渡します。プラグインはコード内の該当するプロパティアクセスを更新します。
317
+
318
+ > `withIntlayerSync` ではなく、非同期の `withIntlayer` を使用してください。同期版は解析パイプラインを実行しないため、パージとミニファイは効果がありません。
319
+
320
+ > パージとミニファイは `next build` 時にのみ実行されます — 最適化パイプラインは `next dev` 中は無効です。
321
+
322
+ > 互換アダプターの呼び出し元が設定されている場合(`swcExtraCallers`。`@intlayer/next-intl` や `@intlayer/react-i18next` などの互換パッケージが設定します)も無効になります。これらの呼び出し箇所は使用状況アナライザーから見えないため、パージするとコードがまだ読んでいるフィールドを削除してしまいます。インポートの書き換えは有効なままです。
323
+
324
+ **それ以前のバージョン(9.2.1 より前)** では `@intlayer/babel` と、`intlayerPurgeBabelPlugin` および `intlayerMinifyBabelPlugin` を宣言する `babel.config.js` が必要でした。このファイルはもう不要で、削除できます。
325
+
295
326
  </Tab>
296
327
  <Tab value="vite">
297
328
 
@@ -447,6 +478,8 @@ export default config;
447
478
 
448
479
  > `optimize` が `false` の場合、または `editor.enabled` が `true` の場合(ビジュアルエディタでは編集を可能にするために元のフィールド名が必要なため)、最小化はスキップされます。
449
480
 
481
+ > Next.js では、`@intlayer/swc` がインストールされていない、または読み込めない場合(16.1.0 未満の Next.js)にもミニファイはスキップされます。ソース側のアクセスを書き換えるのはこのプラグインなので、これなしで辞書をリネームすると、コードが存在しないフィールド名を読むことになります。
482
+
450
483
  > `importMode: 'fetch'` 経由で読み込まれた辞書の場合も最小化はスキップされます。これは、そのJSONが元のフィールド名を使用してリモートAPIから提供されるためであり、クライアント側のキーの名前を変更するとサーバー/クライアントの規約が壊れるためです。
451
484
 
452
485
  ### パージ(Purging - 未使用フィールドの削除)
@@ -475,7 +508,7 @@ export default config;
475
508
  { "title": "…", "subtitle": "…" }
476
509
  ```
477
510
 
478
- > `optimize` が `false` の場合、または `editor.enabled` が `true` の場合、パージはスキップされます。
511
+ > `optimize` が `false` の場合、または `editor.enabled` が `true` の場合、パージはスキップされます。 Next.js では、さらに `@intlayer/swc` が利用できない場合、および互換アダプターの呼び出し元が設定されている場合にもスキップされます。
479
512
 
480
513
  > ソースファイルが解析できない場合、または `useIntlayer` の結果が変数に割り当てられ、静的アナライザーが追跡できない方法(例:オブジェクトへのスプレッド、分割代入せずにプロップとして渡すなど)で渡された場合も、パージは保守的にスキップされます。このような場合は、完全な辞書が保持されます。
481
514
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-13
3
- updatedAt: 2026-07-11
3
+ updatedAt: 2026-08-06
4
4
  title: 設定 (Configuration)
5
5
  description: アプリケーションにIntlayerを設定する方法について説明します。ニーズに合わせてIntlayerをカスタマイズするためのさまざまな設定とオプションを理解してください。
6
6
  keywords:
@@ -14,6 +14,9 @@ slugs:
14
14
  - concept
15
15
  - configuration
16
16
  history:
17
+ - version: 9.1.3
18
+ date: 2026-08-06
19
+ changes: "`routing.enableProxy` を三状態化: 未設定 (auto)、`true`、`false`"
17
20
  - version: 9.0.0
18
21
  date: 2026-07-11
19
22
  changes: "`analytics` 設定を追加"
@@ -235,6 +238,19 @@ const config: IntlayerConfig = {
235
238
  */
236
239
  mode: "prefix-no-default",
237
240
 
241
+ /**
242
+ * Intlayer のロケールルーティングプロキシ(ミドルウェア)を有効にします。
243
+ * dev、preview、SSR でのロケール検出・リダイレクト・リライトを担います。
244
+ * - 未設定 (auto): dev および preview サーバーは Cookie やヘッダーに保存された
245
+ * ロケールを無視し、ルーティングを URL 駆動に保ちます。プレフィックスの解決、
246
+ * ロケールの永続化、Accept-Language 検出は引き続き動作します。
247
+ * 本番環境では `true` と同じ挙動になります。
248
+ * - true: すべての環境で完全な挙動。
249
+ * - false: ロケールルーティングを行いません。
250
+ * デフォルト: undefined (auto)
251
+ */
252
+ enableProxy: undefined,
253
+
238
254
  /**
239
255
  * ユーザーが選択したロケールを保存する場所。
240
256
  * オプション: 'cookie', 'localStorage', 'sessionStorage', 'header', またはそれらの配列。
@@ -713,13 +729,14 @@ Intlayerアナリティクスに関する設定を定義します。ユーザー
713
729
 
714
730
  URL 構造、ロケール保存、ミドルウェア管理など、ルーティングの動作を制御する設定。
715
731
 
716
- | フィールド | 説明 | 型 | デフォルト | 例 | 備考 |
717
- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
718
- | `mode` | ロケール管理のための URL ルーティングモード。 | `'prefix-no-default'` &#124; <br/> `'prefix-all'` &#124; <br/> `'no-prefix'` &#124; <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) または `/fr/dashboard` (fr)。 `'prefix-all'`: `/en/dashboard`。 `'no-prefix'`: ロケールは他の手段で管理されます。 `'search-params'`: `/dashboard?locale=fr` | Cookie やロケール保存の管理には影響しません。 |
719
- | `storage` | クライアントでのロケール保存の設定。 | `false` &#124; <br/> `'cookie'` &#124; <br/> `'localStorage'` &#124; <br/> `'sessionStorage'` &#124; <br/> `'header'` &#124; <br/> `CookiesAttributes` &#124; <br/> `StorageAttributes` &#124; <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | 下記の「保存オプション」の表を参照してください。 |
720
- | `basePath` | アプリケーション URL のベースパス。 | `string` | `''` | `'/my-app'` | アプリが `https://example.com/my-app` にある場合、basePath `'/my-app'` となり、URL `https://example.com/my-app/en` のようになります。 |
721
- | `rewrite` | 特定のパスに対してデフォルトのルーティングモードを上書きするカスタム URL リライトルール。動的パラメータ `[param]` をサポートします。 | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | 下記の例を参照してください | • リライトルールは `mode` よりも優先されます。<br/>• Next.js および Vite で動作します。<br/>• `getLocalizedUrl()` は一致するルールを自動的に適用します。<br/>• [カスタム URL リライト](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/custom_url_rewrites.md)を参照してください。 |
722
- | `domains` | ドメインベースのルーティングのために、ロケールをドメインのホスト名にマップします。設定されている場合、そのロケールのURLはパスのベースとしてそのドメインを使用し(絶対URL)、パスにロケールプレフィックスは追加されません。 | `Partial<Record<Locale, string>>` | `undefined` | `{ zh: 'intlayer.zh', fr: 'intlayer.org' }` | • ホスト名に含まれていない場合、デフォルトのプロトコルは `https://` です。<br/>• ドメイン自体がロケールを識別するため、`/zh/` プレフィックスは追加されません。<br/>• `getLocalizedUrl('/', 'zh')` `https://intlayer.zh/` を返します。 |
732
+ | フィールド | 説明 | 型 | デフォルト | 例 | 備考 |
733
+ | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
734
+ | `mode` | ロケール管理のための URL ルーティングモード。 | `'prefix-no-default'` &#124; <br/> `'prefix-all'` &#124; <br/> `'no-prefix'` &#124; <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) または `/fr/dashboard` (fr)。 `'prefix-all'`: `/en/dashboard`。 `'no-prefix'`: ロケールは他の手段で管理されます。 `'search-params'`: `/dashboard?locale=fr` | Cookie やロケール保存の管理には影響しません。 |
735
+ | `enableProxy` | Intlayer のロケールルーティングプロキシ(ミドルウェア)を有効にします。 | `boolean` &#124; <br/> `undefined` | `undefined` (auto) | `true` | 未設定 (auto): dev / preview サーバーは Cookie・ヘッダーに保存されたロケールをリダイレクト元として無視します。プレフィックス、永続化、`Accept-Language` 検出は引き続き動作します。本番環境では `true` と同じ挙動です。<br/>• `true`: どこでも完全な挙動。<br/>• `false`: ロケールルーティングなし。Next.js では `intlayerProxy` ミドルウェアがパススルーになります。 |
736
+ | `storage` | クライアントでのロケール保存の設定。 | `false` &#124; <br/> `'cookie'` &#124; <br/> `'localStorage'` &#124; <br/> `'sessionStorage'` &#124; <br/> `'header'` &#124; <br/> `CookiesAttributes` &#124; <br/> `StorageAttributes` &#124; <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | 下記の「保存オプション」の表を参照してください。 |
737
+ | `basePath` | アプリケーション URL のベースパス。 | `string` | `''` | `'/my-app'` | アプリが `https://example.com/my-app` にある場合、basePath `'/my-app'` となり、URL `https://example.com/my-app/en` のようになります。 |
738
+ | `rewrite` | 特定のパスに対してデフォルトのルーティングモードを上書きするカスタム URL リライトルール。動的パラメータ `[param]` をサポートします。 | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | 下記の例を参照してください | • リライトルールは `mode` よりも優先されます。<br/>• Next.js および Vite で動作します。<br/>• `getLocalizedUrl()` は一致するルールを自動的に適用します。<br/>• [カスタム URL リライト](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/custom_url_rewrites.md)を参照してください。 |
739
+ | `domains` | ドメインベースのルーティングのために、ロケールをドメインのホスト名にマップします。設定されている場合、そのロケールのURLはパスのベースとしてそのドメインを使用し(絶対URL)、パスにロケールプレフィックスは追加されません。 | `Partial<Record<Locale, string>>` | `undefined` | `{ zh: 'intlayer.zh', fr: 'intlayer.org' }` | • ホスト名に含まれていない場合、デフォルトのプロトコルは `https://` です。<br/>• ドメイン自体がロケールを識別するため、`/zh/` プレフィックスは追加されません。<br/>• `getLocalizedUrl('/', 'zh')` は `https://intlayer.zh/` を返します。 |
723
740
 
724
741
  **`rewrite` の例**:
725
742
 
@@ -607,13 +607,6 @@ export default aboutPageMetaContent;
607
607
 
608
608
  辞書が外部ソースから自動的に補完されたかどうかを示します。競合が発生した場合、ベース辞書が自動補完された辞書より優先されます。
609
609
 
610
- ##### `location` ('distant' | 'locale')
611
-
612
- 辞書の場所を示します:
613
-
614
- - `'locale'`: ローカル辞書(コンテンツファイルから)
615
- - `'distant'`: リモート辞書(外部ソースから)
616
-
617
610
  ## コンテンツノードタイプ
618
611
 
619
612
  Intlayerは、基本的なプリミティブ値を拡張するいくつかの専門的なコンテンツノードタイプを提供します。
@@ -650,6 +643,21 @@ conditionalContent: cond({
650
643
 
651
644
  > 詳細については、 [条件コンテンツ (`cond`) ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/condition.md) を参照してください。
652
645
 
646
+ ### 複数形コンテンツ (`plural`)
647
+
648
+ 複数形ルールに基づいて変わるコンテンツ:
649
+
650
+ ```typescript
651
+ import { plural } from "intlayer";
652
+
653
+ pluralContent: plural({
654
+ one: "One car",
655
+ other: "{{count}} cars",
656
+ });
657
+ ```
658
+
659
+ > 詳細については、[Plural Doc](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/plural.md) を参照してください。
660
+
653
661
  ### 列挙コンテンツ (`enu`)
654
662
 
655
663
  列挙された値に基づいて変化するコンテンツ:
@@ -23,7 +23,9 @@ history:
23
23
  author: aymericzip
24
24
  ---
25
25
 
26
- # ファイルコンテンツ / Intlayerでのファイル埋め込み
26
+ # Intlayerでのファイルコンテンツ / ファイルの埋め込み
27
+
28
+ Intlayerでは、`file`関数により外部ファイルのコンテンツを辞書に埋め込むことができます。このアプローチにより、Intlayerがソースファイルを認識し、Intlayer Visual EditorおよびCMSとのシームレスな統合が可能になります。
27
29
 
28
30
  ## ファイル埋め込みの仕組み
29
31