@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
|
@@ -91,9 +91,195 @@ Intlayer 不仅仅是一个 i18n 解决方案,还提供了一个**自托管的
|
|
|
91
91
|
|
|
92
92
|
---
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
## 在 Analog 应用中设置 Intlayer 的分步指南
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
请参阅 GitHub 上的 [Application Template](https://github.com/aymericzip/intlayer-analog-template)。
|
|
97
|
+
|
|
98
|
+
<Steps>
|
|
99
|
+
|
|
100
|
+
<Step number={1} title="安装依赖项">
|
|
101
|
+
|
|
102
|
+
使用 npm 安装必要的包:
|
|
103
|
+
|
|
104
|
+
```bash packageManager="npm"
|
|
105
|
+
npx intlayer init --interactive
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
```bash packageManager="pnpm"
|
|
109
|
+
pnpm dlx intlayer@canary init --interactive
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
```bash packageManager="yarn"
|
|
113
|
+
yarn dlx intlayer@canary init --interactive
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
```bash packageManager="bun"
|
|
117
|
+
bunx intlayer@canary init --interactive
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
> `--interactive` 标志是可选的。如果你是 AI 代理,请使用 `intlayer-cli init`。
|
|
121
|
+
|
|
122
|
+
> 此命令将检测你的环境并安装所需的包。例如:
|
|
123
|
+
|
|
124
|
+
```bash packageManager="npm"
|
|
125
|
+
npm install intlayer angular-intlayer vite-intlayer
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
```bash packageManager="pnpm"
|
|
129
|
+
pnpm add intlayer angular-intlayer vite-intlayer
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
```bash packageManager="yarn"
|
|
133
|
+
yarn add intlayer angular-intlayer vite-intlayer
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
```bash packageManager="bun"
|
|
137
|
+
bun add intlayer angular-intlayer vite-intlayer
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
- **intlayer**
|
|
141
|
+
|
|
142
|
+
核心包,提供国际化工具,用于配置管理、翻译、[内容声明](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/content_file.md)、转译和 [CLI 命令](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/index.md)。
|
|
143
|
+
|
|
144
|
+
- **angular-intlayer**
|
|
145
|
+
将 Intlayer 与 Angular 应用集成的包。它为 Angular 国际化提供上下文提供者和钩子。
|
|
146
|
+
|
|
147
|
+
- **vite-intlayer**
|
|
148
|
+
将 Intlayer 与 Vite 集成的包。它提供了一个插件来处理内容声明文件,并为最佳性能设置别名。
|
|
149
|
+
|
|
150
|
+
</Step>
|
|
151
|
+
|
|
152
|
+
<Step number={2} title="配置你的项目">
|
|
153
|
+
|
|
154
|
+
创建一个配置文件来配置应用的语言:
|
|
155
|
+
|
|
156
|
+
```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
157
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
158
|
+
|
|
159
|
+
const config: IntlayerConfig = {
|
|
160
|
+
internationalization: {
|
|
161
|
+
locales: [
|
|
162
|
+
Locales.ENGLISH,
|
|
163
|
+
Locales.FRENCH,
|
|
164
|
+
Locales.SPANISH,
|
|
165
|
+
// 你的其他语言
|
|
166
|
+
],
|
|
167
|
+
defaultLocale: Locales.ENGLISH,
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
export default config;
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
> 通过此配置文件,你可以设置本地化 URL、中间件重定向、cookie 名称、内容声明的位置和扩展名、禁用控制台中的 Intlayer 日志等。有关可用参数的完整列表,请参阅 [配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
|
|
175
|
+
|
|
176
|
+
</Step>
|
|
177
|
+
|
|
178
|
+
<Step number={3} title="在你的 Vite 配置中集成 Intlayer">
|
|
179
|
+
|
|
180
|
+
要将 Intlayer 与 Analog 集成,你需要使用 `vite-intlayer` 插件。
|
|
181
|
+
|
|
182
|
+
修改你的 `vite.config.ts` 文件:
|
|
183
|
+
|
|
184
|
+
```typescript fileName="vite.config.ts"
|
|
185
|
+
import { defineConfig } from "vite";
|
|
186
|
+
import { intlayer } from "vite-intlayer";
|
|
187
|
+
import analog from "@analogjs/platform";
|
|
188
|
+
|
|
189
|
+
// https://vitejs.dev/config/
|
|
190
|
+
export default defineConfig(() => ({
|
|
191
|
+
plugins: [
|
|
192
|
+
analog(),
|
|
193
|
+
intlayer({
|
|
194
|
+
proxy: {
|
|
195
|
+
ignore: (req) => req.url?.startsWith("/api"),
|
|
196
|
+
},
|
|
197
|
+
}),
|
|
198
|
+
],
|
|
199
|
+
}));
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
> `intlayer()` 插件使用 Intlayer 配置 Vite。它处理内容声明文件并为最佳性能设置别名。
|
|
203
|
+
|
|
204
|
+
</Step>
|
|
205
|
+
|
|
206
|
+
<Step number={4} title="声明你的内容">
|
|
207
|
+
|
|
208
|
+
创建和管理内容声明以存储翻译:
|
|
209
|
+
|
|
210
|
+
```tsx fileName="src/app/app.content.ts" contentDeclarationFormat=["typescript", "esm", "cjs"]
|
|
211
|
+
import { t, type Dictionary } from "intlayer";
|
|
212
|
+
|
|
213
|
+
const appContent = {
|
|
214
|
+
key: "app",
|
|
215
|
+
content: {
|
|
216
|
+
title: t({
|
|
217
|
+
zh: "你好",
|
|
218
|
+
en: "Hello",
|
|
219
|
+
fr: "Bonjour",
|
|
220
|
+
es: "Hola",
|
|
221
|
+
}),
|
|
222
|
+
congratulations: t({
|
|
223
|
+
zh: "恭喜!你的应用正在运行。🎉",
|
|
224
|
+
en: "Congratulations! Your app is running. 🎉",
|
|
225
|
+
fr: "Félicitations! Votre application est en cours d'exécution. 🎉",
|
|
226
|
+
es: "¡Felicidades! Tu aplicación está en ejecución. 🎉",
|
|
227
|
+
}),
|
|
228
|
+
},
|
|
229
|
+
} satisfies Dictionary;
|
|
230
|
+
|
|
231
|
+
export default appContent;
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
> 你的内容声明可以在应用的任何地方定义,只要它们包含在 `contentDir` 目录中(默认为 `./src`)。并且匹配内容声明文件扩展名(默认为 `.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}`)。
|
|
235
|
+
|
|
236
|
+
> 有关更多详情,请参阅 [内容声明文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/content_file.md)。
|
|
237
|
+
|
|
238
|
+
</Step>
|
|
239
|
+
|
|
240
|
+
<Step number={5} title="在你的代码中使用 Intlayer">
|
|
241
|
+
|
|
242
|
+
要在整个 Analog 应用中使用 Intlayer 的国际化功能,你需要在应用配置中提供 Intlayer。
|
|
243
|
+
|
|
244
|
+
```typescript fileName="src/app/app.config.ts"
|
|
245
|
+
import { ApplicationConfig } from "@angular/core";
|
|
246
|
+
import { provideIntlayer } from "angular-intlayer";
|
|
247
|
+
|
|
248
|
+
export const appConfig: ApplicationConfig = {
|
|
249
|
+
providers: [
|
|
250
|
+
provideIntlayer(), // 在这里添加 Intlayer 提供者
|
|
251
|
+
],
|
|
252
|
+
};
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
然后,你可以在任何组件中使用 `useIntlayer` 函数。
|
|
256
|
+
|
|
257
|
+
```typescript fileName="src/app/pages/index.page.ts"
|
|
258
|
+
import { Component } from "@angular/core";
|
|
259
|
+
import { useIntlayer } from "angular-intlayer";
|
|
260
|
+
|
|
261
|
+
@Component({
|
|
262
|
+
selector: "app-home",
|
|
263
|
+
standalone: true,
|
|
264
|
+
template: `
|
|
265
|
+
<div class="content">
|
|
266
|
+
<h1>{{ content().title }}</h1>
|
|
267
|
+
<p>{{ content().congratulations }}</p>
|
|
268
|
+
</div>
|
|
269
|
+
`,
|
|
270
|
+
})
|
|
271
|
+
export default class HomeComponent {
|
|
272
|
+
content = useIntlayer("app");
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Intlayer 内容作为 `Signal` 返回,所以你通过调用信号来访问值:`content().title`。
|
|
277
|
+
|
|
278
|
+
</Step>
|
|
279
|
+
|
|
280
|
+
<Step number={6} title="更改你的内容的语言" isOptional={true}>
|
|
281
|
+
|
|
282
|
+
要更改内容的语言,你可以使用由 `useLocale` 函数提供的 `setLocale` 函数。这允许你设置应用的语言环境并相应地更新内容。
|
|
97
283
|
|
|
98
284
|
创建一个用于切换语言的组件:
|
|
99
285
|
|
|
@@ -128,7 +314,7 @@ export class LocaleSwitcherComponent {
|
|
|
128
314
|
}
|
|
129
315
|
```
|
|
130
316
|
|
|
131
|
-
|
|
317
|
+
然后,在你的页面中使用此组件:
|
|
132
318
|
|
|
133
319
|
```typescript fileName="src/app/pages/index.page.ts"
|
|
134
320
|
import { Component } from "@angular/core";
|
|
@@ -152,6 +338,10 @@ export default class HomeComponent {
|
|
|
152
338
|
}
|
|
153
339
|
```
|
|
154
340
|
|
|
341
|
+
</Step>
|
|
342
|
+
|
|
343
|
+
</Steps>
|
|
344
|
+
|
|
155
345
|
### 配置 TypeScript
|
|
156
346
|
|
|
157
347
|
Intlayer 使用模块扩充 (module augmentation) 来利用 TypeScript 的优势并使您的代码库更强大。
|
|
@@ -69,11 +69,276 @@ Intlayer 不仅仅是一个 i18n 解决方案,还提供了一个**自托管的
|
|
|
69
69
|
|
|
70
70
|
---
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
## 在 Angular 应用中设置 Intlayer 的分步指南
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
<Tabs defaultTab="code">
|
|
75
|
+
<Tab label="代码" value="code">
|
|
75
76
|
|
|
76
|
-
|
|
77
|
+
<iframe
|
|
78
|
+
src="https://ide.intlayer.org/aymericzip/intlayer-angular-19-template?file=intlayer.config.ts"
|
|
79
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
80
|
+
title="Demo CodeSandbox - How to Internationalize your application using Intlayer"
|
|
81
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
82
|
+
loading="lazy"
|
|
83
|
+
/>
|
|
84
|
+
|
|
85
|
+
</Tab>
|
|
86
|
+
<Tab label="演示" value="demo">
|
|
87
|
+
|
|
88
|
+
<iframe
|
|
89
|
+
src="https://intlayer-angular-19-template.vercel.app"
|
|
90
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
91
|
+
title="Demo - intlayer-angular-template"
|
|
92
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
93
|
+
loading="lazy"
|
|
94
|
+
/>
|
|
95
|
+
|
|
96
|
+
</Tab>
|
|
97
|
+
</Tabs>
|
|
98
|
+
|
|
99
|
+
查看 GitHub 上的[应用模板](https://github.com/aymericzip/intlayer-angular-19-template)。
|
|
100
|
+
|
|
101
|
+
<Steps>
|
|
102
|
+
|
|
103
|
+
<Step number={1} title="安装依赖">
|
|
104
|
+
|
|
105
|
+
使用 npm 安装必要的包:
|
|
106
|
+
|
|
107
|
+
```bash packageManager="npm"
|
|
108
|
+
npx intlayer init --interactive
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
```bash packageManager="pnpm"
|
|
112
|
+
pnpm dlx intlayer@canary init --interactive
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
```bash packageManager="yarn"
|
|
116
|
+
yarn dlx intlayer@canary init --interactive
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
```bash packageManager="bun"
|
|
120
|
+
bunx intlayer@canary init --interactive
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
> `--interactive` 标志是可选的。如果你是 AI 代理,请使用 `intlayer-cli init`。
|
|
124
|
+
|
|
125
|
+
> 此命令将检测你的环境并安装所需的包。例如:
|
|
126
|
+
|
|
127
|
+
```bash packageManager="npm"
|
|
128
|
+
npm install intlayer angular-intlayer
|
|
129
|
+
npm install @angular-builders/custom-webpack --save-dev
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
```bash packageManager="pnpm"
|
|
133
|
+
pnpm add intlayer angular-intlayer
|
|
134
|
+
pnpm add @angular-builders/custom-webpack --save-dev
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
```bash packageManager="yarn"
|
|
138
|
+
yarn add intlayer angular-intlayer
|
|
139
|
+
yarn add @angular-builders/custom-webpack --save-dev
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
```bash packageManager="bun"
|
|
143
|
+
bun add intlayer angular-intlayer
|
|
144
|
+
bun add @angular-builders/custom-webpack --dev
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
- **intlayer**
|
|
148
|
+
|
|
149
|
+
核心包,为配置管理、翻译、[内容声明](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/content_file.md)、转译和 [CLI 命令](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/index.md)提供国际化工具。
|
|
150
|
+
|
|
151
|
+
- **angular-intlayer**
|
|
152
|
+
将 Intlayer 与 Angular 应用集成的包。它为 Angular 国际化提供上下文提供者和钩子。
|
|
153
|
+
|
|
154
|
+
- **@angular-builders/custom-webpack**
|
|
155
|
+
自定义 Angular CLI 的 Webpack 配置所需。
|
|
156
|
+
|
|
157
|
+
</Step>
|
|
158
|
+
|
|
159
|
+
<Step number={2} title="配置你的项目">
|
|
160
|
+
|
|
161
|
+
创建一个配置文件来配置应用的语言:
|
|
162
|
+
|
|
163
|
+
```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
164
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
165
|
+
|
|
166
|
+
const config: IntlayerConfig = {
|
|
167
|
+
internationalization: {
|
|
168
|
+
locales: [
|
|
169
|
+
Locales.ENGLISH,
|
|
170
|
+
Locales.FRENCH,
|
|
171
|
+
Locales.SPANISH,
|
|
172
|
+
// 你的其他语言
|
|
173
|
+
],
|
|
174
|
+
defaultLocale: Locales.ENGLISH,
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
export default config;
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
> 通过此配置文件,你可以设置本地化 URL、中间件重定向、cookie 名称、内容声明的位置和扩展名、禁用 Intlayer 在控制台中的日志等等。有关可用参数的完整列表,请参阅[配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
|
|
182
|
+
|
|
183
|
+
</Step>
|
|
184
|
+
|
|
185
|
+
<Step number={3} title="在你的 Angular 配置中集成 Intlayer">
|
|
186
|
+
|
|
187
|
+
要将 Intlayer 与 Angular CLI 集成,你需要使用自定义构建器。本指南假设你使用 Webpack(许多 Angular 项目的默认设置)。
|
|
188
|
+
|
|
189
|
+
首先,修改你的 `angular.json` 以使用自定义 Webpack 构建器。更新 `build` 和 `serve` 配置:
|
|
190
|
+
|
|
191
|
+
```json5 fileName="angular.json"
|
|
192
|
+
{
|
|
193
|
+
"projects": {
|
|
194
|
+
"your-app-name": {
|
|
195
|
+
"architect": {
|
|
196
|
+
"build": {
|
|
197
|
+
"builder": "@angular-builders/custom-webpack:browser", // 替换 "@angular-devkit/build-angular:application"
|
|
198
|
+
"options": {
|
|
199
|
+
"customWebpackConfig": {
|
|
200
|
+
"path": "./webpack.config.ts",
|
|
201
|
+
"mergeStrategies": { "module.rules": "prepend" },
|
|
202
|
+
},
|
|
203
|
+
"main": "src/main.ts", // 替换 "browser": "src/main.ts"
|
|
204
|
+
// ...
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
"serve": {
|
|
208
|
+
"builder": "@angular-builders/custom-webpack:dev-server", // 替换 "@angular-devkit/build-angular:dev-server"
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
> 确保在 `angular.json` 中用你项目的实际名称替换 `your-app-name`。
|
|
217
|
+
|
|
218
|
+
接下来,在项目的根目录创建一个 `webpack.config.ts` 文件:
|
|
219
|
+
|
|
220
|
+
```typescript fileName="webpack.config.ts"
|
|
221
|
+
import { mergeConfig } from "angular-intlayer/webpack";
|
|
222
|
+
|
|
223
|
+
export default mergeConfig({});
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
> `mergeConfig` 函数使用 Intlayer 配置 Webpack。它注入 `IntlayerPlugin`(处理内容声明文件)并设置别名以获得最佳性能。
|
|
227
|
+
|
|
228
|
+
</Step>
|
|
229
|
+
|
|
230
|
+
<Step number={4} title="声明你的内容">
|
|
231
|
+
|
|
232
|
+
创建并管理你的内容声明以存储翻译:
|
|
233
|
+
|
|
234
|
+
```tsx fileName="src/app/app.content.ts" contentDeclarationFormat=["typescript", "esm", "cjs"]
|
|
235
|
+
import { t, type Dictionary } from "intlayer";
|
|
236
|
+
|
|
237
|
+
const appContent = {
|
|
238
|
+
key: "app",
|
|
239
|
+
content: {
|
|
240
|
+
title: t({
|
|
241
|
+
zh: "你好",
|
|
242
|
+
en: "Hello",
|
|
243
|
+
fr: "Bonjour",
|
|
244
|
+
es: "Hola",
|
|
245
|
+
}),
|
|
246
|
+
congratulations: t({
|
|
247
|
+
zh: "恭喜!你的应用正在运行。🎉",
|
|
248
|
+
en: "Congratulations! Your app is running. 🎉",
|
|
249
|
+
fr: "Félicitations! Votre application est en cours d'exécution. 🎉",
|
|
250
|
+
es: "¡Felicidades! Tu aplicación está en ejecución. 🎉",
|
|
251
|
+
}),
|
|
252
|
+
exploreDocs: t({
|
|
253
|
+
zh: "浏览文档",
|
|
254
|
+
en: "Explore the Docs",
|
|
255
|
+
fr: "Explorer les Docs",
|
|
256
|
+
es: "Explorar los Docs",
|
|
257
|
+
}),
|
|
258
|
+
learnWithTutorials: t({
|
|
259
|
+
zh: "通过教程学习",
|
|
260
|
+
en: "Learn with Tutorials",
|
|
261
|
+
fr: "Apprendre avec les Tutoriels",
|
|
262
|
+
es: "Aprender con los Tutorios",
|
|
263
|
+
}),
|
|
264
|
+
cliDocs: "CLI Docs",
|
|
265
|
+
angularLanguageService: t({
|
|
266
|
+
zh: "Angular 语言服务",
|
|
267
|
+
en: "Angular Language Service",
|
|
268
|
+
fr: "Service de Langage Angular",
|
|
269
|
+
es: "Servicio de Lenguaje Angular",
|
|
270
|
+
}),
|
|
271
|
+
angularDevTools: "Angular DevTools",
|
|
272
|
+
github: "Github",
|
|
273
|
+
twitter: "Twitter",
|
|
274
|
+
youtube: "Youtube",
|
|
275
|
+
},
|
|
276
|
+
} satisfies Dictionary;
|
|
277
|
+
|
|
278
|
+
export default appContent;
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
> 你的内容声明可以定义在应用的任何地方,只要它们包含在 `contentDir` 目录中(默认为 `./src`)。并且匹配内容声明文件扩展名(默认为 `.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}`)。
|
|
282
|
+
|
|
283
|
+
> 有关更多详情,请参阅[内容声明文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/content_file.md)。
|
|
284
|
+
|
|
285
|
+
</Step>
|
|
286
|
+
|
|
287
|
+
<Step number={5} title="在你的代码中使用 Intlayer">
|
|
288
|
+
|
|
289
|
+
要在整个 Angular 应用中使用 Intlayer 的国际化功能,你需要在应用配置中提供 Intlayer。
|
|
290
|
+
|
|
291
|
+
```typescript fileName="src/app/app.config.ts"
|
|
292
|
+
import { ApplicationConfig } from "@angular/core";
|
|
293
|
+
import { provideRouter } from "@angular/router";
|
|
294
|
+
import { provideIntlayer } from "angular-intlayer";
|
|
295
|
+
import { routes } from "./app.routes";
|
|
296
|
+
|
|
297
|
+
export const appConfig: ApplicationConfig = {
|
|
298
|
+
providers: [
|
|
299
|
+
provideRouter(routes),
|
|
300
|
+
provideIntlayer(), // 在此处添加 Intlayer 提供者
|
|
301
|
+
],
|
|
302
|
+
};
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
然后,你可以在任何组件中使用 `useIntlayer` 函数。
|
|
306
|
+
|
|
307
|
+
```typescript fileName="src/app/app.component.ts"
|
|
308
|
+
import { Component } from "@angular/core";
|
|
309
|
+
import { RouterOutlet } from "@angular/router";
|
|
310
|
+
import { useIntlayer } from "angular-intlayer";
|
|
311
|
+
|
|
312
|
+
@Component({
|
|
313
|
+
selector: "app-root",
|
|
314
|
+
standalone: true,
|
|
315
|
+
imports: [RouterOutlet],
|
|
316
|
+
templateUrl: "./app.component.html",
|
|
317
|
+
styleUrl: "./app.component.css",
|
|
318
|
+
})
|
|
319
|
+
export class AppComponent {
|
|
320
|
+
content = useIntlayer("app");
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
在你的模板中:
|
|
325
|
+
|
|
326
|
+
```html fileName="src/app/app.component.html"
|
|
327
|
+
<div class="content">
|
|
328
|
+
<h1>{{ content().title }}</h1>
|
|
329
|
+
<p>{{ content().congratulations }}</p>
|
|
330
|
+
</div>
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
Intlayer 内容作为 `Signal` 返回,所以你通过调用 signal 来访问值:`content().title`。
|
|
334
|
+
|
|
335
|
+
</Step>
|
|
336
|
+
|
|
337
|
+
<Step number={6} title="更改内容的语言" isOptional={true}>
|
|
338
|
+
|
|
339
|
+
要更改内容的语言,你可以使用 `useLocale` 函数提供的 `setLocale` 函数。这允许你设置应用的语言环境并相应地更新内容。
|
|
340
|
+
|
|
341
|
+
创建一个组件来在语言之间切换:
|
|
77
342
|
|
|
78
343
|
```typescript fileName="src/app/locale-switcher.component.ts"
|
|
79
344
|
import { Component } from "@angular/core";
|
|
@@ -126,6 +391,10 @@ export class AppComponent {
|
|
|
126
391
|
}
|
|
127
392
|
```
|
|
128
393
|
|
|
394
|
+
</Step>
|
|
395
|
+
|
|
396
|
+
</Steps>
|
|
397
|
+
|
|
129
398
|
### 配置 TypeScript
|
|
130
399
|
|
|
131
400
|
Intlayer 使用模块扩充来发挥 TypeScript 的优势并使你的代码库更强大。
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-04-18
|
|
3
3
|
updatedAt: 2026-05-31
|
|
4
|
-
title: "Angular
|
|
5
|
-
description: "告别 i18next。2026 年构建多语言 (i18n) Angular
|
|
4
|
+
title: "Angular 22 i18n - 翻译你的应用的完整指南"
|
|
5
|
+
description: "告别 i18next。2026 年构建多语言 (i18n) Angular 22 应用的完整指南。使用 AI 代理翻译并优化包体积、SEO 和性能。"
|
|
6
6
|
keywords:
|
|
7
7
|
- 国际化
|
|
8
8
|
- 文档
|
|
@@ -13,8 +13,8 @@ slugs:
|
|
|
13
13
|
- doc
|
|
14
14
|
- environment
|
|
15
15
|
- angular
|
|
16
|
-
applicationTemplate: https://github.com/aymericzip/intlayer-angular-
|
|
17
|
-
applicationShowcase: https://intlayer-angular-
|
|
16
|
+
applicationTemplate: https://github.com/aymericzip/intlayer-angular-22-template
|
|
17
|
+
applicationShowcase: https://intlayer-angular-22-template.vercel.app/
|
|
18
18
|
history:
|
|
19
19
|
- version: 8.9.0
|
|
20
20
|
date: 2026-05-04
|
|
@@ -77,7 +77,7 @@ Intlayer 不仅仅是一个 i18n 解决方案,还提供了一个**自托管的
|
|
|
77
77
|
<Tab label="代码" value="code">
|
|
78
78
|
|
|
79
79
|
<iframe
|
|
80
|
-
src="https://ide.intlayer.org/aymericzip/intlayer-angular-
|
|
80
|
+
src="https://ide.intlayer.org/aymericzip/intlayer-angular-22-template?file=intlayer.config.ts"
|
|
81
81
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
82
82
|
title="Demo CodeSandbox - 如何使用Intlayer进行应用程序国际化"
|
|
83
83
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
@@ -88,7 +88,7 @@ Intlayer 不仅仅是一个 i18n 解决方案,还提供了一个**自托管的
|
|
|
88
88
|
<Tab label="演示" value="demo">
|
|
89
89
|
|
|
90
90
|
<iframe
|
|
91
|
-
src="https://intlayer-angular-
|
|
91
|
+
src="https://intlayer-angular-22-template.vercel.app/"
|
|
92
92
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
93
93
|
title="Demo - intlayer-angular-template"
|
|
94
94
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
@@ -98,7 +98,7 @@ Intlayer 不仅仅是一个 i18n 解决方案,还提供了一个**自托管的
|
|
|
98
98
|
</Tab>
|
|
99
99
|
</Tabs>
|
|
100
100
|
|
|
101
|
-
在GitHub上查看 [应用程序模板](https://github.com/aymericzip/intlayer-angular-
|
|
101
|
+
在GitHub上查看 [应用程序模板](https://github.com/aymericzip/intlayer-angular-22-template)。
|
|
102
102
|
|
|
103
103
|
<Steps>
|
|
104
104
|
|