@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.
- package/blog/ar/index.md +1 -1
- package/blog/ar/rag_powered_documentation_assistant.md +7 -0
- package/blog/de/index.md +1 -1
- package/blog/de/rag_powered_documentation_assistant.md +6 -0
- package/blog/en/index.md +1 -1
- package/blog/en-GB/index.md +1 -1
- package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
- package/blog/es/index.md +1 -1
- package/blog/es/rag_powered_documentation_assistant.md +7 -0
- package/blog/fr/i18n_meaning.md +7 -1
- package/blog/fr/index.md +1 -1
- package/blog/fr/list_i18n_technologies/frameworks/angular.md +5 -1
- package/blog/fr/rag_powered_documentation_assistant.md +6 -0
- package/blog/hi/index.md +1 -1
- package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
- package/blog/hi/rag_powered_documentation_assistant.md +7 -0
- package/blog/id/index.md +1 -1
- package/blog/id/rag_powered_documentation_assistant.md +6 -0
- package/blog/it/index.md +1 -1
- package/blog/it/rag_powered_documentation_assistant.md +6 -0
- package/blog/ja/index.md +1 -1
- package/blog/ja/rag_powered_documentation_assistant.md +7 -0
- package/blog/ko/index.md +1 -1
- package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
- package/blog/ko/rag_powered_documentation_assistant.md +6 -0
- package/blog/pl/index.md +1 -1
- package/blog/pl/rag_powered_documentation_assistant.md +6 -0
- package/blog/pt/index.md +1 -1
- package/blog/pt/rag_powered_documentation_assistant.md +6 -0
- package/blog/ru/index.md +1 -1
- package/blog/ru/rag_powered_documentation_assistant.md +7 -0
- package/blog/tr/intlayer_with_react-intl.md +3 -1
- package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +175 -42
- package/blog/tr/rag_powered_documentation_assistant.md +6 -0
- package/blog/uk/index.md +1 -1
- package/blog/uk/rag_powered_documentation_assistant.md +6 -0
- package/blog/vi/index.md +1 -1
- package/blog/vi/rag_powered_documentation_assistant.md +6 -0
- package/blog/zh/index.md +1 -1
- package/blog/zh/intlayer_with_i18next.md +87 -28
- package/blog/zh/intlayer_with_next-i18next.md +86 -29
- package/blog/zh/intlayer_with_next-intl.md +88 -28
- package/blog/zh/intlayer_with_react-i18next.md +87 -28
- package/blog/zh/intlayer_with_react-intl.md +88 -27
- package/blog/zh/intlayer_with_vue-i18n.md +117 -8
- package/blog/zh/rag_powered_documentation_assistant.md +6 -0
- package/dist/cjs/common.cjs +24 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +58 -31
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +265 -218
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +48 -21
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +33 -6
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/common.mjs +24 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +58 -31
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +265 -218
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +48 -21
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +33 -6
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/docs/ar/analytics.md +222 -0
- package/docs/ar/autoFill.md +28 -9
- package/docs/ar/bundle_optimization.md +58 -25
- package/docs/ar/configuration.md +25 -8
- package/docs/ar/dictionary/file.md +3 -1
- package/docs/ar/dictionary/nesting.md +47 -30
- package/docs/ar/formatters.md +148 -193
- package/docs/ar/intlayer_CMS.md +152 -0
- package/docs/ar/intlayer_with_angular_21.md +9 -9
- package/docs/ar/intlayer_with_nextjs_14.md +1 -28
- package/docs/ar/intlayer_with_nextjs_15.md +1 -33
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +40 -83
- package/docs/ar/intlayer_with_solid_start.md +1078 -0
- package/docs/ar/intlayer_with_vite+vue.md +1 -3
- package/docs/ar/live-sync.md +4 -0
- package/docs/ar/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/ar/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/ar/packages/react-intlayer/useDictionary.md +4 -21
- package/docs/ar/packages/react-intlayer/useIntlayer.md +2 -2
- package/docs/ar/packages/vite-intlayer/exports.md +15 -0
- package/docs/ar/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/ar/packages/vite-intlayer/intlayerPrune.md +70 -3
- package/docs/ar/releases/v9.md +0 -37
- package/docs/ar/self_hosting.md +46 -49
- package/docs/bn/bundle_optimization.md +58 -25
- package/docs/bn/configuration.md +25 -8
- package/docs/bn/intlayer_with_angular_21.md +9 -9
- package/docs/cs/bundle_optimization.md +58 -25
- package/docs/cs/configuration.md +25 -8
- package/docs/cs/intlayer_with_angular_21.md +9 -9
- package/docs/de/analytics.md +222 -0
- package/docs/de/autoFill.md +28 -9
- package/docs/de/bundle_optimization.md +58 -25
- package/docs/de/configuration.md +25 -8
- package/docs/de/dictionary/file.md +3 -1
- package/docs/de/dictionary/nesting.md +47 -31
- package/docs/de/formatters.md +208 -334
- package/docs/de/intlayer_CMS.md +66 -15
- package/docs/de/intlayer_with_angular_21.md +9 -9
- package/docs/de/intlayer_with_nestjs.md +11 -7
- package/docs/de/intlayer_with_nextjs_14.md +1 -28
- package/docs/de/intlayer_with_nextjs_15.md +1 -33
- package/docs/de/intlayer_with_solid_start.md +1078 -0
- package/docs/de/intlayer_with_vite+vue.md +1 -3
- package/docs/de/live-sync.md +4 -0
- package/docs/de/packages/intlayer/getLocalizedUrl.md +33 -25
- package/docs/de/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/de/packages/react-intlayer/useDictionary.md +2 -5
- package/docs/de/packages/vite-intlayer/exports.md +15 -0
- package/docs/de/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/de/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/de/releases/v9.md +0 -15
- package/docs/de/self_hosting.md +46 -50
- package/docs/en/bundle_optimization.md +51 -23
- package/docs/en/cli/doc-review.md +13 -2
- package/docs/en/configuration.md +24 -15
- package/docs/en/intlayer_with_angular_21.md +9 -9
- package/docs/en/intlayer_with_solid_start.md +1091 -0
- package/docs/en/intlayer_with_vite+solid.md +12 -0
- package/docs/en/live-sync.md +4 -0
- package/docs/en-GB/analytics.md +222 -0
- package/docs/en-GB/autoFill.md +26 -7
- package/docs/en-GB/bundle_optimization.md +58 -25
- package/docs/en-GB/configuration.md +25 -8
- package/docs/en-GB/dictionary/file.md +2 -0
- package/docs/en-GB/dictionary/nesting.md +64 -205
- package/docs/en-GB/formatters.md +146 -181
- package/docs/en-GB/intlayer_CMS.md +152 -0
- package/docs/en-GB/intlayer_with_angular_21.md +9 -9
- package/docs/en-GB/intlayer_with_nestjs.md +6 -2
- package/docs/en-GB/intlayer_with_nextjs_14.md +0 -27
- package/docs/en-GB/intlayer_with_nextjs_15.md +1 -33
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +40 -82
- package/docs/en-GB/intlayer_with_solid_start.md +1078 -0
- package/docs/en-GB/intlayer_with_vite+vue.md +1 -3
- package/docs/en-GB/live-sync.md +4 -0
- package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +30 -22
- package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +16 -48
- package/docs/en-GB/packages/vite-intlayer/exports.md +15 -0
- package/docs/en-GB/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/en-GB/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/en-GB/self_hosting.md +60 -49
- package/docs/es/analytics.md +222 -0
- package/docs/es/autoFill.md +28 -9
- package/docs/es/bundle_optimization.md +58 -25
- package/docs/es/configuration.md +24 -7
- package/docs/es/dictionary/file.md +3 -1
- package/docs/es/dictionary/nesting.md +47 -30
- package/docs/es/formatters.md +114 -168
- package/docs/es/intlayer_CMS.md +35 -10
- package/docs/es/intlayer_with_angular_21.md +9 -9
- package/docs/es/intlayer_with_nextjs_14.md +1 -28
- package/docs/es/intlayer_with_nextjs_15.md +1 -33
- package/docs/es/intlayer_with_solid_start.md +1078 -0
- package/docs/es/live-sync.md +4 -0
- package/docs/es/packages/intlayer/getLocalizedUrl.md +31 -23
- package/docs/es/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/es/packages/vite-intlayer/exports.md +15 -0
- package/docs/es/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/es/packages/vite-intlayer/intlayerPrune.md +69 -2
- package/docs/es/releases/v9.md +0 -15
- package/docs/es/self_hosting.md +46 -49
- package/docs/fr/analytics.md +222 -0
- package/docs/fr/autoFill.md +27 -8
- package/docs/fr/bundle_optimization.md +58 -25
- package/docs/fr/configuration.md +25 -8
- package/docs/fr/dictionary/file.md +2 -0
- package/docs/fr/dictionary/nesting.md +37 -184
- package/docs/fr/formatters.md +95 -236
- package/docs/fr/intlayer_CMS.md +66 -15
- package/docs/fr/intlayer_with_angular_21.md +9 -9
- package/docs/fr/intlayer_with_nextjs_14.md +1 -28
- package/docs/fr/intlayer_with_nextjs_15.md +1 -33
- package/docs/fr/intlayer_with_solid_start.md +1078 -0
- package/docs/fr/live-sync.md +4 -0
- package/docs/fr/packages/intlayer/getLocalizedUrl.md +37 -27
- package/docs/fr/packages/intlayer/getMultilingualUrls.md +18 -20
- package/docs/fr/packages/vite-intlayer/exports.md +15 -0
- package/docs/fr/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/fr/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/fr/releases/v9.md +0 -15
- package/docs/fr/self_hosting.md +46 -49
- package/docs/hi/analytics.md +222 -0
- package/docs/hi/autoFill.md +28 -9
- package/docs/hi/bundle_optimization.md +58 -25
- package/docs/hi/configuration.md +25 -8
- package/docs/hi/dictionary/file.md +3 -1
- package/docs/hi/dictionary/nesting.md +47 -30
- package/docs/hi/formatters.md +233 -334
- package/docs/hi/how_works_intlayer.md +3 -1
- package/docs/hi/intlayer_CMS.md +152 -0
- package/docs/hi/intlayer_with_angular_21.md +9 -9
- package/docs/hi/intlayer_with_nestjs.md +11 -7
- package/docs/hi/intlayer_with_nextjs_14.md +1 -28
- package/docs/hi/intlayer_with_nextjs_15.md +1 -33
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +40 -83
- package/docs/hi/intlayer_with_solid_start.md +1077 -0
- package/docs/hi/intlayer_with_vite+preact.md +56 -49
- package/docs/hi/intlayer_with_vite+react.md +48 -41
- package/docs/hi/intlayer_with_vite+solid.md +32 -41
- package/docs/hi/intlayer_with_vite+vue.md +49 -44
- package/docs/hi/live-sync.md +4 -0
- package/docs/hi/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/hi/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/hi/packages/next-intlayer/t.md +33 -1
- package/docs/hi/packages/react-intlayer/useDictionary.md +4 -21
- package/docs/hi/packages/vite-intlayer/exports.md +15 -0
- package/docs/hi/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/hi/packages/vite-intlayer/intlayerPrune.md +78 -5
- package/docs/hi/plugins/sync-json.md +9 -9
- package/docs/hi/releases/v9.md +0 -15
- package/docs/hi/self_hosting.md +38 -51
- package/docs/id/analytics.md +223 -0
- package/docs/id/bundle_optimization.md +58 -25
- package/docs/id/configuration.md +25 -8
- package/docs/id/dictionary/nesting.md +37 -184
- package/docs/id/formatters.md +208 -305
- package/docs/id/intlayer_CMS.md +164 -0
- package/docs/id/intlayer_with_angular_21.md +9 -9
- package/docs/id/intlayer_with_nextjs_14.md +1 -26
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +70 -63
- package/docs/id/intlayer_with_solid_start.md +1078 -0
- package/docs/id/live-sync.md +4 -0
- package/docs/id/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/id/packages/react-intlayer/useIntlayer.md +2 -2
- package/docs/id/packages/vite-intlayer/exports.md +15 -0
- package/docs/id/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/id/packages/vite-intlayer/intlayerPrune.md +78 -5
- package/docs/id/releases/v9.md +12 -0
- package/docs/id/self_hosting.md +61 -50
- package/docs/it/analytics.md +222 -0
- package/docs/it/autoFill.md +27 -8
- package/docs/it/bundle_optimization.md +58 -25
- package/docs/it/configuration.md +25 -8
- package/docs/it/dictionary/file.md +3 -1
- package/docs/it/dictionary/nesting.md +47 -30
- package/docs/it/formatters.md +114 -168
- package/docs/it/intlayer_CMS.md +66 -15
- package/docs/it/intlayer_with_angular_21.md +9 -9
- package/docs/it/intlayer_with_nestjs.md +11 -7
- package/docs/it/intlayer_with_nextjs_14.md +1 -28
- package/docs/it/intlayer_with_nextjs_15.md +1 -33
- package/docs/it/intlayer_with_solid_start.md +1078 -0
- package/docs/it/intlayer_with_vite+vue.md +1 -3
- package/docs/it/live-sync.md +4 -0
- package/docs/it/packages/intlayer/getLocalizedUrl.md +34 -26
- package/docs/it/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/it/packages/react-intlayer/useDictionary.md +4 -21
- package/docs/it/packages/vite-intlayer/exports.md +15 -0
- package/docs/it/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/it/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/it/releases/v9.md +0 -15
- package/docs/it/self_hosting.md +60 -49
- package/docs/ja/analytics.md +222 -0
- package/docs/ja/autoFill.md +28 -9
- package/docs/ja/bundle_optimization.md +58 -25
- package/docs/ja/configuration.md +25 -8
- package/docs/ja/dictionary/content_file.md +15 -7
- package/docs/ja/dictionary/file.md +3 -1
- package/docs/ja/dictionary/nesting.md +47 -30
- package/docs/ja/formatters.md +133 -187
- package/docs/ja/intlayer_visual_editor.md +3 -1
- package/docs/ja/intlayer_with_angular_21.md +6 -6
- package/docs/ja/intlayer_with_nestjs.md +2 -12
- package/docs/ja/intlayer_with_nextjs_14.md +1 -28
- package/docs/ja/intlayer_with_nextjs_15.md +1 -33
- package/docs/ja/intlayer_with_react_router_v7.md +456 -20
- package/docs/ja/intlayer_with_solid_start.md +1078 -0
- package/docs/ja/intlayer_with_vite+preact.md +73 -41
- package/docs/ja/intlayer_with_vite+vue.md +1 -3
- package/docs/ja/live-sync.md +4 -0
- package/docs/ja/mcp_server.md +3 -9
- package/docs/ja/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/ja/packages/intlayer/getMultilingualUrls.md +3 -17
- package/docs/ja/packages/vite-intlayer/exports.md +15 -0
- package/docs/ja/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/ja/packages/vite-intlayer/intlayerPrune.md +79 -6
- package/docs/ja/releases/v9.md +12 -0
- package/docs/ja/self_hosting.md +46 -50
- package/docs/ko/analytics.md +222 -0
- package/docs/ko/autoFill.md +28 -9
- package/docs/ko/bundle_optimization.md +58 -25
- package/docs/ko/configuration.md +25 -8
- package/docs/ko/dictionary/file.md +3 -1
- package/docs/ko/dictionary/nesting.md +47 -30
- package/docs/ko/formatters.md +133 -187
- package/docs/ko/intlayer_with_angular_21.md +9 -9
- package/docs/ko/intlayer_with_lynx+react.md +133 -39
- package/docs/ko/intlayer_with_nextjs_14.md +1 -28
- package/docs/ko/intlayer_with_nextjs_15.md +1 -33
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +40 -188
- package/docs/ko/intlayer_with_solid_start.md +1078 -0
- package/docs/ko/intlayer_with_vite+preact.md +57 -23
- package/docs/ko/intlayer_with_vite+vue.md +1 -3
- package/docs/ko/live-sync.md +4 -0
- package/docs/ko/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/ko/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/ko/packages/vite-intlayer/exports.md +15 -0
- package/docs/ko/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/ko/packages/vite-intlayer/intlayerPrune.md +79 -6
- package/docs/ko/releases/v9.md +12 -0
- package/docs/ko/self_hosting.md +60 -49
- package/docs/nl/bundle_optimization.md +58 -25
- package/docs/nl/configuration.md +25 -8
- package/docs/nl/intlayer_with_angular_21.md +9 -9
- package/docs/pl/analytics.md +220 -0
- package/docs/pl/bundle_optimization.md +58 -25
- package/docs/pl/configuration.md +25 -8
- package/docs/pl/dictionary/nesting.md +47 -30
- package/docs/pl/formatters.md +208 -305
- package/docs/pl/intlayer_CMS.md +152 -0
- package/docs/pl/intlayer_with_angular_21.md +9 -9
- package/docs/pl/intlayer_with_nextjs_14.md +1 -26
- package/docs/pl/intlayer_with_solid_start.md +1078 -0
- package/docs/pl/live-sync.md +4 -0
- package/docs/pl/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/pl/packages/react-intlayer/useDictionary.md +2 -19
- package/docs/pl/packages/vite-intlayer/exports.md +15 -0
- package/docs/pl/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/pl/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/pl/releases/v9.md +0 -15
- package/docs/pl/self_hosting.md +60 -49
- package/docs/pt/analytics.md +222 -0
- package/docs/pt/bundle_optimization.md +58 -24
- package/docs/pt/configuration.md +25 -8
- package/docs/pt/dictionary/file.md +3 -1
- package/docs/pt/dictionary/nesting.md +47 -30
- package/docs/pt/formatters.md +112 -168
- package/docs/pt/intlayer_CMS.md +66 -15
- package/docs/pt/intlayer_with_angular_21.md +9 -9
- package/docs/pt/intlayer_with_astro_lit.md +26 -1
- package/docs/pt/intlayer_with_nextjs_14.md +1 -28
- package/docs/pt/intlayer_with_nextjs_15.md +1 -33
- package/docs/pt/intlayer_with_solid_start.md +1078 -0
- package/docs/pt/intlayer_with_vite+vue.md +1 -3
- package/docs/pt/live-sync.md +4 -0
- package/docs/pt/packages/intlayer/getLocalizedUrl.md +34 -26
- package/docs/pt/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/pt/packages/vite-intlayer/exports.md +15 -0
- package/docs/pt/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/pt/packages/vite-intlayer/intlayerPrune.md +78 -6
- package/docs/pt/releases/v9.md +0 -15
- package/docs/pt/self_hosting.md +60 -49
- package/docs/ru/analytics.md +222 -0
- package/docs/ru/autoFill.md +27 -8
- package/docs/ru/bundle_optimization.md +58 -25
- package/docs/ru/configuration.md +25 -8
- package/docs/ru/dictionary/file.md +3 -1
- package/docs/ru/dictionary/nesting.md +64 -205
- package/docs/ru/formatters.md +108 -128
- package/docs/ru/intlayer_with_angular_21.md +9 -9
- package/docs/ru/intlayer_with_nextjs_14.md +1 -28
- package/docs/ru/intlayer_with_nextjs_15.md +1 -33
- package/docs/ru/intlayer_with_solid_start.md +1078 -0
- package/docs/ru/intlayer_with_vite+vue.md +1 -3
- package/docs/ru/live-sync.md +4 -0
- package/docs/ru/packages/intlayer/getLocalizedUrl.md +34 -26
- package/docs/ru/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/ru/packages/react-intlayer/useDictionary.md +4 -21
- package/docs/ru/packages/vite-intlayer/exports.md +15 -0
- package/docs/ru/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/ru/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/ru/releases/v9.md +0 -15
- package/docs/ru/self_hosting.md +60 -49
- package/docs/tr/analytics.md +222 -0
- package/docs/tr/autoFill.md +28 -9
- package/docs/tr/bundle_optimization.md +58 -25
- package/docs/tr/configuration.md +25 -8
- package/docs/tr/dictionary/file.md +2 -0
- package/docs/tr/dictionary/nesting.md +47 -30
- package/docs/tr/formatters.md +144 -190
- package/docs/tr/intlayer_CMS.md +152 -0
- package/docs/tr/intlayer_with_angular_21.md +9 -9
- package/docs/tr/intlayer_with_nestjs.md +2 -12
- package/docs/tr/intlayer_with_nextjs_15.md +1 -33
- package/docs/tr/intlayer_with_solid_start.md +1078 -0
- package/docs/tr/intlayer_with_vite+vue.md +1 -3
- package/docs/tr/live-sync.md +4 -0
- package/docs/tr/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/tr/packages/vite-intlayer/exports.md +15 -0
- package/docs/tr/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/tr/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/tr/self_hosting.md +47 -50
- package/docs/uk/analytics.md +222 -0
- package/docs/uk/bundle_optimization.md +58 -25
- package/docs/uk/configuration.md +25 -8
- package/docs/uk/dictionary/nesting.md +47 -30
- package/docs/uk/formatters.md +128 -185
- package/docs/uk/intlayer_CMS.md +152 -0
- package/docs/uk/intlayer_with_angular_21.md +9 -9
- package/docs/uk/intlayer_with_nextjs_14.md +1 -26
- package/docs/uk/intlayer_with_solid_start.md +1078 -0
- package/docs/uk/live-sync.md +4 -0
- package/docs/uk/packages/react-intlayer/useDictionary.md +2 -19
- package/docs/uk/packages/vite-intlayer/exports.md +15 -0
- package/docs/uk/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/uk/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/uk/releases/v9.md +0 -15
- package/docs/uk/self_hosting.md +60 -50
- package/docs/ur/bundle_optimization.md +58 -25
- package/docs/ur/configuration.md +25 -8
- package/docs/ur/intlayer_with_angular_21.md +9 -9
- package/docs/vi/analytics.md +222 -0
- package/docs/vi/bundle_optimization.md +58 -25
- package/docs/vi/configuration.md +24 -8
- package/docs/vi/dictionary/nesting.md +37 -184
- package/docs/vi/formatters.md +208 -309
- package/docs/vi/intlayer_CMS.md +164 -0
- package/docs/vi/intlayer_with_angular_21.md +9 -9
- package/docs/vi/intlayer_with_nextjs_14.md +0 -25
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +70 -63
- package/docs/vi/intlayer_with_solid_start.md +1078 -0
- package/docs/vi/live-sync.md +4 -0
- package/docs/vi/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/vi/packages/react-intlayer/useIntlayer.md +2 -2
- package/docs/vi/packages/vite-intlayer/exports.md +15 -0
- package/docs/vi/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/vi/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/vi/plugins/sync-json.md +6 -6
- package/docs/vi/releases/v9.md +12 -0
- package/docs/vi/self_hosting.md +61 -50
- package/docs/zh/CI_CD.md +4 -0
- package/docs/zh/analytics.md +222 -0
- package/docs/zh/autoFill.md +28 -9
- package/docs/zh/bundle_optimization.md +58 -25
- package/docs/zh/configuration.md +24 -8
- package/docs/zh/dictionary/file.md +2 -0
- package/docs/zh/dictionary/nesting.md +47 -30
- package/docs/zh/formatters.md +140 -188
- package/docs/zh/intlayer_CMS.md +164 -0
- package/docs/zh/intlayer_with_analog.md +193 -3
- package/docs/zh/intlayer_with_angular_19.md +272 -3
- package/docs/zh/intlayer_with_angular_21.md +7 -7
- package/docs/zh/intlayer_with_create_react_app.md +348 -26
- package/docs/zh/intlayer_with_lynx+react.md +263 -4
- package/docs/zh/intlayer_with_nextjs_14.md +1 -28
- package/docs/zh/intlayer_with_nextjs_15.md +1 -33
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +558 -1
- package/docs/zh/intlayer_with_nuxt.md +182 -7
- package/docs/zh/intlayer_with_react_router_v7.md +183 -25
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +306 -42
- package/docs/zh/intlayer_with_solid_start.md +1077 -0
- package/docs/zh/intlayer_with_storybook.md +260 -3
- package/docs/zh/intlayer_with_svelte_kit.md +428 -48
- package/docs/zh/intlayer_with_tanstack+solid.md +713 -13
- package/docs/zh/intlayer_with_tanstack.md +731 -20
- package/docs/zh/intlayer_with_vanilla.md +314 -4
- package/docs/zh/intlayer_with_vite+lit.md +465 -4
- package/docs/zh/intlayer_with_vite+preact.md +422 -116
- package/docs/zh/intlayer_with_vite+react.md +324 -45
- package/docs/zh/intlayer_with_vite+react_compiler.md +228 -13
- package/docs/zh/intlayer_with_vite+solid.md +462 -32
- package/docs/zh/intlayer_with_vite+vanilla.md +497 -4
- package/docs/zh/live-sync.md +4 -0
- package/docs/zh/mcp_server.md +3 -9
- package/docs/zh/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/zh/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/zh/packages/vite-intlayer/exports.md +29 -0
- package/docs/zh/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/zh/packages/vite-intlayer/intlayerPrune.md +79 -6
- package/docs/zh/releases/v9.md +12 -0
- package/docs/zh/self_hosting.md +60 -50
- package/docs/zh-TW/bundle_optimization.md +58 -25
- package/docs/zh-TW/intlayer_with_angular_21.md +7 -7
- package/package.json +7 -7
- package/src/common.ts +39 -2
- package/src/generated/blog.entry.ts +66 -34
- package/src/generated/docs.entry.ts +273 -221
- package/src/generated/frequentQuestions.entry.ts +56 -24
- package/src/generated/legal.entry.ts +41 -9
|
@@ -54,11 +54,62 @@ author: aymericzip
|
|
|
54
54
|
|
|
55
55
|
---
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
## 使用 next-i18next 设置 Intlayer 的分步指南
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
<Steps>
|
|
60
|
+
|
|
61
|
+
<Step number={1} title="安装依赖项">
|
|
62
|
+
|
|
63
|
+
使用您首选的包管理器安装必要的包:
|
|
64
|
+
|
|
65
|
+
```bash packageManager="npm"
|
|
66
|
+
npx intlayer init --interactive
|
|
67
|
+
```
|
|
60
68
|
|
|
61
|
-
|
|
69
|
+
```bash packageManager="pnpm"
|
|
70
|
+
pnpm dlx intlayer@canary init --interactive
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```bash packageManager="yarn"
|
|
74
|
+
yarn dlx intlayer@canary init --interactive
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
```bash packageManager="bun"
|
|
78
|
+
bunx intlayer@canary init --interactive
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
> `--interactive` 标志是可选的。如果您是 AI 代理,请使用 `intlayer-cli init`。
|
|
82
|
+
|
|
83
|
+
> 此命令将检测您的环境并安装所需的包。例如:
|
|
84
|
+
|
|
85
|
+
```bash packageManager="npm"
|
|
86
|
+
npm install intlayer @intlayer/sync-json-plugin --save-dev
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
```bash packageManager="pnpm"
|
|
90
|
+
pnpm add intlayer @intlayer/sync-json-plugin --save-dev
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
```bash packageManager="yarn"
|
|
94
|
+
yarn add intlayer @intlayer/sync-json-plugin --dev
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
```bash packageManager="bun"
|
|
98
|
+
bun add intlayer @intlayer/sync-json-plugin --dev
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**包说明:**
|
|
102
|
+
|
|
103
|
+
- **intlayer**:用于内容声明和管理的核心库
|
|
104
|
+
- **@intlayer/sync-json-plugin**:将 Intlayer 内容声明同步到 i18next JSON 格式的插件
|
|
105
|
+
|
|
106
|
+
</Step>
|
|
107
|
+
|
|
108
|
+
<Step number={2} title="实现 Intlayer 插件以包装 JSON">
|
|
109
|
+
|
|
110
|
+
创建一个 Intlayer 配置文件来定义您支持的语言环境:
|
|
111
|
+
|
|
112
|
+
**如果您也想为 i18next 导出 JSON 字典**,请添加 `syncJSON` 插件:
|
|
62
113
|
|
|
63
114
|
```typescript fileName="intlayer.config.ts"
|
|
64
115
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -79,26 +130,32 @@ const config: IntlayerConfig = {
|
|
|
79
130
|
export default config;
|
|
80
131
|
```
|
|
81
132
|
|
|
82
|
-
`syncJSON`
|
|
133
|
+
`syncJSON` 插件将自动包装 JSON。它将读写 JSON 文件而不改变内容架构。
|
|
83
134
|
|
|
84
|
-
|
|
135
|
+
如果您想让 JSON 与 intlayer 内容声明文件(`.content` 文件)共存,Intlayer 将按以下方式处理:
|
|
85
136
|
|
|
86
|
-
|
|
87
|
-
|
|
137
|
+
1. 加载 JSON 和内容声明文件,并将它们转换为 intlayer 字典。
|
|
138
|
+
2. 如果 JSON 和内容声明文件之间存在冲突,Intlayer 将合并所有字典。根据插件的优先级和内容声明文件的优先级(都可配置)。
|
|
88
139
|
|
|
89
|
-
如果使用 CLI
|
|
140
|
+
如果使用 CLI 或 CMS 对 JSON 进行更改以翻译,Intlayer 将用新翻译更新 JSON 文件。
|
|
90
141
|
|
|
91
|
-
|
|
142
|
+
有关 `syncJSON` 插件的更多详细信息,请参阅 [syncJSON 插件文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-json.md)。
|
|
92
143
|
|
|
93
|
-
|
|
144
|
+
</Step>
|
|
94
145
|
|
|
95
|
-
<
|
|
146
|
+
<Step number={3} title="设置 AI 提供者">
|
|
96
147
|
|
|
97
|
-
|
|
148
|
+
Intlayer 为您的 i18next 工作流解锁了一套高级自动化和开发者友好的功能。
|
|
98
149
|
|
|
99
|
-
|
|
150
|
+
- **自动检测和填充缺失的翻译**:Intlayer 扫描您的 JSON 字典,找到未翻译或缺失的键,并仅翻译那些,所以您的 JSON 的 99% 保持不变。
|
|
151
|
+
- **大型 JSON 文件的分块翻译**:当您的翻译文件非常大时,Intlayer 会自动将处理分成可管理的块,独立翻译它们以避免 API 限制和内存问题。
|
|
152
|
+
- **命名空间并行化**:如果您有数百个命名空间(或文件),Intlayer 会并行化翻译任务,有效地加快您的 CI/CD 或批量翻译操作。
|
|
153
|
+
- **灵活的 AI 提供者支持**:只需配置凭据,即可选择您首选的 AI 提供者(例如 OpenAI、Claude、Gemini)。使用您自己的 API 密钥,并根据需要切换提供者。
|
|
154
|
+
- **强大的 AI 响应处理**:Intlayer 可以处理您的 AI 提供者以字符串或对象形式返回文本的边界情况,甚至在格式不一致时自动重试。
|
|
155
|
+
- **CLI 和 CI/CD 就绪**:直接在您的测试或管道中运行 Intlayer 的检查和自动填充,使您的本地化流程健壮且自动化。
|
|
156
|
+
- **集成在您现有的设置之上**:您不需要改变您的 i18next 或 Next.js 基础。Intlayer 作为您当前设置的附加插件工作,以最少的迁移为您提供所有这些好处。
|
|
100
157
|
|
|
101
|
-
|
|
158
|
+
以下是如何设置 AI 提供者的示例:
|
|
102
159
|
|
|
103
160
|
```ts fileName="intlayer.config.ts"
|
|
104
161
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -109,23 +166,14 @@ const config: IntlayerConfig = {
|
|
|
109
166
|
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
110
167
|
defaultLocale: Locales.ENGLISH,
|
|
111
168
|
},
|
|
112
|
-
|
|
113
|
-
|
|
169
|
+
ai: {
|
|
170
|
+
provider: "openai",
|
|
171
|
+
model: "gpt-5-mini",
|
|
172
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
173
|
+
},
|
|
114
174
|
plugins: [
|
|
115
|
-
/**
|
|
116
|
-
* 将加载 src 中所有匹配模式 {key}.i18n.json 的 JSON 文件
|
|
117
|
-
*/
|
|
118
|
-
loadJSON({
|
|
119
|
-
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
120
|
-
locale: Locales.ENGLISH,
|
|
121
|
-
priority: 1, // 确保这些 JSON 文件优先于 `./public/locales/en/${key}.json` 中的文件
|
|
122
|
-
}),
|
|
123
|
-
/**
|
|
124
|
-
* 将输出和翻译写回到 locales 目录中的 JSON 文件
|
|
125
|
-
*/
|
|
126
175
|
syncJSON({
|
|
127
176
|
source: ({ key, locale }) => `./public/locales/${locale}/${key}.json`,
|
|
128
|
-
priority: 0,
|
|
129
177
|
}),
|
|
130
178
|
],
|
|
131
179
|
};
|
|
@@ -133,7 +181,16 @@ const config: IntlayerConfig = {
|
|
|
133
181
|
export default config;
|
|
134
182
|
```
|
|
135
183
|
|
|
136
|
-
|
|
184
|
+
然后您可以执行以下命令来填充您的翻译:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npx intlayer fill
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
这将使用您配置的 AI 提供者填充您的翻译。
|
|
191
|
+
|
|
192
|
+
> 在 [Intlayer AI 配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md#ai-configuration) 中查看所有可用的 AI 提供者。
|
|
193
|
+
> 在 [Intlayer CLI 文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/index.md) 中查看所有可用的命令。
|
|
137
194
|
|
|
138
195
|
---
|
|
139
196
|
|
|
@@ -55,11 +55,62 @@ author: aymericzip
|
|
|
55
55
|
|
|
56
56
|
<TOC/>
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
## 使用 next-intl 设置 Intlayer 的分步指南
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
<Steps>
|
|
61
|
+
|
|
62
|
+
<Step number={1} title="安装依赖">
|
|
63
|
+
|
|
64
|
+
安装必要的包:
|
|
65
|
+
|
|
66
|
+
```bash packageManager="npm"
|
|
67
|
+
npx intlayer init --interactive
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
```bash packageManager="pnpm"
|
|
71
|
+
pnpm dlx intlayer@canary init --interactive
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
```bash packageManager="yarn"
|
|
75
|
+
yarn dlx intlayer@canary init --interactive
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
```bash packageManager="bun"
|
|
79
|
+
bunx intlayer@canary init --interactive
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
> `--interactive` 标志是可选的。如果你是 AI agent,请使用 `intlayer-cli init`。
|
|
83
|
+
|
|
84
|
+
> 此命令将检测你的环境并安装所需的包。例如:
|
|
85
|
+
|
|
86
|
+
```bash packageManager="npm"
|
|
87
|
+
npm install intlayer @intlayer/sync-json-plugin --save-dev
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
```bash packageManager="pnpm"
|
|
91
|
+
pnpm add intlayer @intlayer/sync-json-plugin --save-dev
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```bash packageManager="yarn"
|
|
95
|
+
yarn add intlayer @intlayer/sync-json-plugin --dev
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
```bash packageManager="bun"
|
|
99
|
+
bun add intlayer @intlayer/sync-json-plugin --dev
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**包描述:**
|
|
103
|
+
|
|
104
|
+
- **intlayer**:国际化管理、内容声明和构建的核心库
|
|
105
|
+
- **@intlayer/sync-json-plugin**:将 Intlayer 内容声明导出为 next-intl 兼容 JSON 格式的插件
|
|
106
|
+
|
|
107
|
+
</Step>
|
|
61
108
|
|
|
62
|
-
|
|
109
|
+
<Step number={2} title="实现 Intlayer 插件以包装 JSON">
|
|
110
|
+
|
|
111
|
+
创建一个 Intlayer 配置文件来定义你支持的语言:
|
|
112
|
+
|
|
113
|
+
**如果你还想为 next-intl 导出 JSON 字典**,添加 `syncJSON` 插件:
|
|
63
114
|
|
|
64
115
|
```typescript fileName="intlayer.config.ts"
|
|
65
116
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -81,25 +132,32 @@ const config: IntlayerConfig = {
|
|
|
81
132
|
export default config;
|
|
82
133
|
```
|
|
83
134
|
|
|
84
|
-
`syncJSON`
|
|
85
|
-
|
|
86
|
-
如果你想让 JSON 与 intlayer 内容声明文件(`.content` 文件)共存,Intlayer 会按以下方式处理:
|
|
135
|
+
`syncJSON` 插件将自动包装 JSON。它将读取和写入 JSON 文件,而不改变内容架构。
|
|
87
136
|
|
|
88
|
-
|
|
137
|
+
如果你想让 JSON 与 intlayer 内容声明文件(`.content` 文件)并存,Intlayer 将按以下方式处理:
|
|
89
138
|
|
|
90
|
-
|
|
139
|
+
1. 加载 JSON 和内容声明文件,并将其转换为 intlayer 字典。
|
|
140
|
+
2. 如果 JSON 和内容声明文件之间存在冲突,Intlayer 将合并所有字典。这取决于插件的优先级和内容声明文件的优先级(都是可配置的)。
|
|
91
141
|
|
|
92
|
-
|
|
142
|
+
如果使用 CLI 或 CMS 更改了 JSON 的翻译,Intlayer 将使用新翻译更新 JSON 文件。
|
|
93
143
|
|
|
94
144
|
有关 `syncJSON` 插件的更多详细信息,请参阅 [syncJSON 插件文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-json.md)。
|
|
95
145
|
|
|
96
|
-
|
|
146
|
+
</Step>
|
|
97
147
|
|
|
98
|
-
<Step number={
|
|
148
|
+
<Step number={3} title="设置 AI 提供商">
|
|
99
149
|
|
|
100
|
-
|
|
150
|
+
Intlayer 为你的 i18next 工作流解锁了一系列高级自动化和开发者友好的功能。
|
|
101
151
|
|
|
102
|
-
|
|
152
|
+
- **自动检测和填充缺失的翻译**:Intlayer 扫描你的 JSON 字典,查找未翻译或缺失的键,仅翻译那些,所以你的 JSON 的 99% 保持不变。
|
|
153
|
+
- **大 JSON 文件的分块翻译**:当你的翻译文件非常大时,Intlayer 自动将处理分成可管理的块,独立地翻译它们以避免 API 限制和内存问题。
|
|
154
|
+
- **命名空间并行化**:如果你有数百个命名空间(或文件),Intlayer 并行化翻译任务,有效加快你的 CI/CD 或批量翻译操作。
|
|
155
|
+
- **灵活的 AI 提供商支持**:选择你首选的 AI 提供商(例如 OpenAI、Claude、Gemini),只需配置凭证。使用你自己的 API 密钥,并根据需要切换提供商。
|
|
156
|
+
- **弹性的 AI 响应处理**:Intlayer 可以处理你的 AI 提供商将文本作为字符串或对象返回的边界情况,甚至在格式不一致时自动重试。
|
|
157
|
+
- **CLI 和 CI/CD 就绪**:直接在你的测试或管道中运行 Intlayer 的检查和自动填充,使你的本地化流程强大和自动化。
|
|
158
|
+
- **集成在你现有的设置之上**:你无需更改你的 i18next 或 Next.js 基础。Intlayer 作为你当前设置的插件,为你提供所有这些好处,同时需要最小的迁移。
|
|
159
|
+
|
|
160
|
+
以下是如何设置 AI 提供商的示例:
|
|
103
161
|
|
|
104
162
|
```ts fileName="intlayer.config.ts"
|
|
105
163
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -110,24 +168,15 @@ const config: IntlayerConfig = {
|
|
|
110
168
|
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
111
169
|
defaultLocale: Locales.ENGLISH,
|
|
112
170
|
},
|
|
113
|
-
|
|
114
|
-
|
|
171
|
+
ai: {
|
|
172
|
+
provider: "openai",
|
|
173
|
+
model: "gpt-5-mini",
|
|
174
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
175
|
+
},
|
|
115
176
|
plugins: [
|
|
116
|
-
/**
|
|
117
|
-
* 将加载 src 目录中所有匹配模式 {key}.i18n.json 的 JSON 文件
|
|
118
|
-
*/
|
|
119
|
-
loadJSON({
|
|
120
|
-
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
121
|
-
locale: Locales.ENGLISH,
|
|
122
|
-
priority: 1, // 确保这些 JSON 文件优先于 `./locales/en/${key}.json` 中的文件
|
|
123
|
-
}),
|
|
124
|
-
/**
|
|
125
|
-
* 将加载并将输出和翻译写回到 locales 目录中的 JSON 文件
|
|
126
|
-
*/
|
|
127
177
|
syncJSON({
|
|
128
178
|
format: "icu",
|
|
129
179
|
source: ({ key, locale }) => `./messages/${locale}/${key}.json`,
|
|
130
|
-
priority: 0,
|
|
131
180
|
}),
|
|
132
181
|
],
|
|
133
182
|
};
|
|
@@ -135,7 +184,18 @@ const config: IntlayerConfig = {
|
|
|
135
184
|
export default config;
|
|
136
185
|
```
|
|
137
186
|
|
|
138
|
-
|
|
187
|
+
然后你可以执行以下命令来填充你的翻译:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
npx intlayer fill
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
这将用你配置的 AI 提供商填充你的翻译。
|
|
194
|
+
|
|
195
|
+
> 在 [Intlayer AI 配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md#ai-configuration) 中查看所有可用的 AI 提供商。
|
|
196
|
+
> 在 [Intlayer CLI 文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/index.md) 中查看所有可用的命令。
|
|
197
|
+
|
|
198
|
+
---
|
|
139
199
|
|
|
140
200
|
</Step>
|
|
141
201
|
|
|
@@ -55,11 +55,62 @@ author: aymericzip
|
|
|
55
55
|
|
|
56
56
|
<TOC/>
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
## 使用 react-i18next 设置 Intlayer 的分步指南
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
<Steps>
|
|
61
|
+
|
|
62
|
+
<Step number={1} title="安装依赖项">
|
|
63
|
+
|
|
64
|
+
安装必要的包:
|
|
65
|
+
|
|
66
|
+
```bash packageManager="npm"
|
|
67
|
+
npx intlayer init --interactive
|
|
68
|
+
```
|
|
61
69
|
|
|
62
|
-
|
|
70
|
+
```bash packageManager="pnpm"
|
|
71
|
+
pnpm dlx intlayer@canary init --interactive
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
```bash packageManager="yarn"
|
|
75
|
+
yarn dlx intlayer@canary init --interactive
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
```bash packageManager="bun"
|
|
79
|
+
bunx intlayer@canary init --interactive
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
> `--interactive` 标志是可选的。如果您是 AI 代理,请使用 `intlayer-cli init`。
|
|
83
|
+
|
|
84
|
+
> 此命令将检测您的环境并安装所需的包。例如:
|
|
85
|
+
|
|
86
|
+
```bash packageManager="npm"
|
|
87
|
+
npm install intlayer @intlayer/sync-json-plugin --save-dev
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
```bash packageManager="pnpm"
|
|
91
|
+
pnpm add intlayer @intlayer/sync-json-plugin --save-dev
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```bash packageManager="yarn"
|
|
95
|
+
yarn add intlayer @intlayer/sync-json-plugin --dev
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
```bash packageManager="bun"
|
|
99
|
+
bun add intlayer @intlayer/sync-json-plugin --dev
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**包描述:**
|
|
103
|
+
|
|
104
|
+
- **intlayer**:国际化管理、内容声明和构建的核心库
|
|
105
|
+
- **@intlayer/sync-json-plugin**:将 Intlayer 内容声明导出为 react-i18next 兼容 JSON 格式的插件
|
|
106
|
+
|
|
107
|
+
</Step>
|
|
108
|
+
|
|
109
|
+
<Step number={2} title="实现 Intlayer 插件以包装 JSON">
|
|
110
|
+
|
|
111
|
+
创建 Intlayer 配置文件以定义您支持的语言:
|
|
112
|
+
|
|
113
|
+
**如果您还想为 react-i18next 导出 JSON 字典**,请添加 `syncJSON` 插件:
|
|
63
114
|
|
|
64
115
|
```typescript fileName="intlayer.config.ts"
|
|
65
116
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -80,24 +131,32 @@ const config: IntlayerConfig = {
|
|
|
80
131
|
export default config;
|
|
81
132
|
```
|
|
82
133
|
|
|
83
|
-
`syncJSON`
|
|
134
|
+
`syncJSON` 插件将自动包装 JSON。它将读写 JSON 文件,而不改变内容架构。
|
|
84
135
|
|
|
85
|
-
|
|
136
|
+
如果您想让该 JSON 与 Intlayer 内容声明文件(`.content` 文件)共存,Intlayer 将按以下方式处理:
|
|
86
137
|
|
|
87
|
-
1. 加载 JSON 和内容声明文件,并将它们转换为
|
|
88
|
-
2. 如果 JSON 和内容声明文件之间存在冲突,Intlayer
|
|
138
|
+
1. 加载 JSON 和内容声明文件,并将它们转换为 Intlayer 字典。
|
|
139
|
+
2. 如果 JSON 和内容声明文件之间存在冲突,Intlayer 将合并所有字典。根据插件的优先级和内容声明文件的优先级(都可配置)。
|
|
89
140
|
|
|
90
|
-
|
|
141
|
+
如果使用 CLI 或 CMS 对 JSON 进行更改以进行翻译,Intlayer 将用新翻译更新 JSON 文件。
|
|
91
142
|
|
|
92
|
-
|
|
143
|
+
有关 `syncJSON` 插件的更多详情,请参考 [syncJSON 插件文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-json.md)。
|
|
93
144
|
|
|
94
|
-
|
|
145
|
+
</Step>
|
|
146
|
+
|
|
147
|
+
<Step number={3} title="设置 AI 提供商">
|
|
95
148
|
|
|
96
|
-
|
|
149
|
+
Intlayer 为您的 i18next 工作流解锁了一组高级自动化和开发者友好的功能。
|
|
97
150
|
|
|
98
|
-
|
|
151
|
+
- **自动检测和填充缺失的翻译**:Intlayer 扫描您的 JSON 字典,查找未翻译或缺失的键,仅翻译这些,以便 99% 的 JSON 保持不变。
|
|
152
|
+
- **大型 JSON 文件的分块翻译**:当您的翻译文件非常大时,Intlayer 会自动将处理分成可管理的块,独立翻译它们以避免 API 限制和内存问题。
|
|
153
|
+
- **命名空间并行化**:如果您有数百个命名空间(或文件),Intlayer 会并行化翻译任务,有效加快您的 CI/CD 或批量翻译操作。
|
|
154
|
+
- **灵活的 AI 提供商支持**:选择您首选的 AI 提供商(例如 OpenAI、Claude、Gemini),只需配置凭证即可。使用您自己的 API 密钥,并根据需要切换提供商。
|
|
155
|
+
- **弹性 AI 响应处理**:Intlayer 可以处理 AI 提供商以字符串或对象形式返回文本的边界情况,甚至在格式不一致时自动重试。
|
|
156
|
+
- **CLI 和 CI/CD 就绪**:直接在您的测试或管道中运行 Intlayer 的检查和自动填充,使您的本地化过程健壮和自动化。
|
|
157
|
+
- **集成到现有设置之上**:您无需改变 i18next 或 Next.js 基础。Intlayer 作为插件添加到您当前的设置中,以最小的迁移工作量为您提供所有这些好处。
|
|
99
158
|
|
|
100
|
-
|
|
159
|
+
以下是如何设置 AI 提供商的示例:
|
|
101
160
|
|
|
102
161
|
```ts fileName="intlayer.config.ts"
|
|
103
162
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -108,23 +167,14 @@ const config: IntlayerConfig = {
|
|
|
108
167
|
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
109
168
|
defaultLocale: Locales.ENGLISH,
|
|
110
169
|
},
|
|
111
|
-
|
|
112
|
-
|
|
170
|
+
ai: {
|
|
171
|
+
provider: "openai",
|
|
172
|
+
model: "gpt-5-mini",
|
|
173
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
174
|
+
},
|
|
113
175
|
plugins: [
|
|
114
|
-
/**
|
|
115
|
-
* 将加载 src 目录中所有匹配模式 {key}.i18n.json 的 JSON 文件
|
|
116
|
-
*/
|
|
117
|
-
loadJSON({
|
|
118
|
-
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
119
|
-
locale: Locales.ENGLISH,
|
|
120
|
-
priority: 1, // 确保这些 JSON 文件优先于 `./locales/en/${key}.json` 中的文件
|
|
121
|
-
}),
|
|
122
|
-
/**
|
|
123
|
-
* 将加载并将输出和翻译写回到 locales 目录中的 JSON 文件
|
|
124
|
-
*/
|
|
125
176
|
syncJSON({
|
|
126
177
|
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
127
|
-
priority: 0,
|
|
128
178
|
}),
|
|
129
179
|
],
|
|
130
180
|
};
|
|
@@ -132,7 +182,16 @@ const config: IntlayerConfig = {
|
|
|
132
182
|
export default config;
|
|
133
183
|
```
|
|
134
184
|
|
|
135
|
-
|
|
185
|
+
然后您可以执行以下命令来填充您的翻译:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
npx intlayer fill
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
这将使用您配置的 AI 提供商填充您的翻译。
|
|
192
|
+
|
|
193
|
+
> 在 [Intlayer AI 配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md#ai-configuration) 中查看所有可用的 AI 提供商。
|
|
194
|
+
> 在 [Intlayer CLI 文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/index.md) 中查看所有可用的命令。
|
|
136
195
|
|
|
137
196
|
</Step>
|
|
138
197
|
|
|
@@ -53,11 +53,62 @@ author: aymericzip
|
|
|
53
53
|
|
|
54
54
|
本指南将向您展示如何利用 Intlayer 优越的内容声明系统,同时保持与 react-intl 的兼容性。
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
## 使用 react-intl 设置 Intlayer 的分步指南
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
<Steps>
|
|
59
|
+
|
|
60
|
+
<Step number={1} title="安装依赖">
|
|
61
|
+
|
|
62
|
+
安装必要的包:
|
|
63
|
+
|
|
64
|
+
```bash packageManager="npm"
|
|
65
|
+
npx intlayer init --interactive
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
```bash packageManager="pnpm"
|
|
69
|
+
pnpm dlx intlayer@canary init --interactive
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```bash packageManager="yarn"
|
|
73
|
+
yarn dlx intlayer@canary init --interactive
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```bash packageManager="bun"
|
|
77
|
+
bunx intlayer@canary init --interactive
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
> `--interactive` 标志是可选的。如果您是 AI agent,请使用 `intlayer-cli init`。
|
|
81
|
+
|
|
82
|
+
> 此命令将检测您的环境并安装所需的包。例如:
|
|
83
|
+
|
|
84
|
+
```bash packageManager="npm"
|
|
85
|
+
npm install intlayer @intlayer/sync-json-plugin --save-dev
|
|
86
|
+
```
|
|
59
87
|
|
|
60
|
-
|
|
88
|
+
```bash packageManager="pnpm"
|
|
89
|
+
pnpm add intlayer @intlayer/sync-json-plugin --save-dev
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
```bash packageManager="yarn"
|
|
93
|
+
yarn add intlayer @intlayer/sync-json-plugin --dev
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
```bash packageManager="bun"
|
|
97
|
+
bun add intlayer @intlayer/sync-json-plugin --dev
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**包描述:**
|
|
101
|
+
|
|
102
|
+
- **intlayer**:国际化管理、内容声明和构建的核心库
|
|
103
|
+
- **@intlayer/sync-json-plugin**:将 Intlayer 内容声明导出为 react-intl 兼容 JSON 格式的插件
|
|
104
|
+
|
|
105
|
+
</Step>
|
|
106
|
+
|
|
107
|
+
<Step number={2} title="实现 Intlayer 插件来包装 JSON">
|
|
108
|
+
|
|
109
|
+
创建一个 Intlayer 配置文件来定义您支持的区域设置:
|
|
110
|
+
|
|
111
|
+
**如果您还想为 react-intl 导出 JSON 字典**,请添加 `syncJSON` 插件:
|
|
61
112
|
|
|
62
113
|
```typescript fileName="intlayer.config.ts"
|
|
63
114
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -79,24 +130,32 @@ const config: IntlayerConfig = {
|
|
|
79
130
|
export default config;
|
|
80
131
|
```
|
|
81
132
|
|
|
82
|
-
`syncJSON`
|
|
133
|
+
`syncJSON` 插件将自动包装 JSON。它将读取和写入 JSON 文件而不更改内容架构。
|
|
83
134
|
|
|
84
|
-
|
|
135
|
+
如果您想让 JSON 与 intlayer 内容声明文件(`.content` 文件)共存,Intlayer 将按以下方式处理:
|
|
85
136
|
|
|
86
137
|
1. 加载 JSON 和内容声明文件,并将它们转换为 intlayer 字典。
|
|
87
|
-
2. 如果 JSON 和内容声明文件之间存在冲突,Intlayer
|
|
138
|
+
2. 如果 JSON 和内容声明文件之间存在冲突,Intlayer 将处理所有字典的合并。这取决于插件的优先级和内容声明文件的优先级(所有都是可配置的)。
|
|
88
139
|
|
|
89
|
-
|
|
140
|
+
如果使用 CLI 或 CMS 进行更改以翻译 JSON,Intlayer 将使用新的翻译更新 JSON 文件。
|
|
90
141
|
|
|
91
|
-
|
|
142
|
+
有关 `syncJSON` 插件的更多详细信息,请参考 [syncJSON 插件文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-json.md)。
|
|
92
143
|
|
|
93
|
-
|
|
144
|
+
</Step>
|
|
145
|
+
|
|
146
|
+
<Step number={3} title="设置 AI provider">
|
|
94
147
|
|
|
95
|
-
|
|
148
|
+
Intlayer 为您的 i18next 工作流解锁了一套高级自动化和开发者友好的功能。
|
|
96
149
|
|
|
97
|
-
|
|
150
|
+
- **自动检测和填充缺失的翻译**:Intlayer 扫描您的 JSON 字典,找到未翻译或缺失的键,只翻译那些,所以您的 JSON 的 99% 保持不变。
|
|
151
|
+
- **大型 JSON 文件的分块翻译**:当您的翻译文件非常大时,Intlayer 自动将处理分成可管理的块,独立翻译它们以避免 API 限制和内存问题。
|
|
152
|
+
- **命名空间并行化**:如果您有数百个命名空间(或文件),Intlayer 会并行化翻译任务,有效地加快您的 CI/CD 或批量翻译操作。
|
|
153
|
+
- **灵活的 AI provider 支持**:选择您首选的 AI provider(例如 OpenAI、Claude、Gemini),只需配置凭证。使用您自己的 API 密钥,并根据需要切换 provider。
|
|
154
|
+
- **弹性 AI 响应处理**:Intlayer 可以处理您的 AI provider 将文本作为字符串或对象返回的边界情况,甚至在格式不一致时自动重试。
|
|
155
|
+
- **CLI 和 CI/CD 就绪**:直接在您的测试或管道中运行 Intlayer 的检查和自动填充,使您的本地化流程健壮且自动化。
|
|
156
|
+
- **集成在您现有的设置之上**:您无需更改您的 i18next 或 Next.js 基础。Intlayer 作为插件工作在您当前的设置之上,为您提供所有这些优点且迁移最少。
|
|
98
157
|
|
|
99
|
-
|
|
158
|
+
下面是如何设置 AI provider 的示例:
|
|
100
159
|
|
|
101
160
|
```ts fileName="intlayer.config.ts"
|
|
102
161
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -107,24 +166,15 @@ const config: IntlayerConfig = {
|
|
|
107
166
|
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
108
167
|
defaultLocale: Locales.ENGLISH,
|
|
109
168
|
},
|
|
110
|
-
|
|
111
|
-
|
|
169
|
+
ai: {
|
|
170
|
+
provider: "openai",
|
|
171
|
+
model: "gpt-5-mini",
|
|
172
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
173
|
+
},
|
|
112
174
|
plugins: [
|
|
113
|
-
/**
|
|
114
|
-
* 将加载 src 目录中所有匹配模式 {key}.i18n.json 的 JSON 文件
|
|
115
|
-
*/
|
|
116
|
-
loadJSON({
|
|
117
|
-
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
118
|
-
locale: Locales.ENGLISH,
|
|
119
|
-
priority: 1, // 确保这些 JSON 文件优先于 `./locales/en/${key}.json` 中的文件
|
|
120
|
-
}),
|
|
121
|
-
/**
|
|
122
|
-
* 将加载并将输出和翻译写回 locales 目录中的 JSON 文件
|
|
123
|
-
*/
|
|
124
175
|
syncJSON({
|
|
125
176
|
format: "icu",
|
|
126
177
|
source: ({ key, locale }) => `./messages/${locale}/${key}.json`,
|
|
127
|
-
priority: 0,
|
|
128
178
|
}),
|
|
129
179
|
],
|
|
130
180
|
};
|
|
@@ -132,7 +182,18 @@ const config: IntlayerConfig = {
|
|
|
132
182
|
export default config;
|
|
133
183
|
```
|
|
134
184
|
|
|
135
|
-
|
|
185
|
+
然后您可以执行以下命令来填充您的翻译:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
npx intlayer fill
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
这将使用您配置的 AI provider 填充您的翻译。
|
|
192
|
+
|
|
193
|
+
> 在 [Intlayer AI 配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md#ai-configuration) 中查看所有可用的 AI provider。
|
|
194
|
+
> 在 [Intlayer CLI 文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/index.md) 中查看所有可用的命令。
|
|
195
|
+
|
|
196
|
+
---
|
|
136
197
|
|
|
137
198
|
</Step>
|
|
138
199
|
|