@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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-11-25
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-09
|
|
4
4
|
title: i18n বান্ডেল সাইজ ও পারফরম্যান্স অপ্টিমাইজেশন
|
|
5
5
|
description: আপনার অ্যাপ্লিকেশনের বান্ডেল সাইজ কমান আন্তর্জাতিকীকরণ (i18n) কন্টেন্ট অপ্টিমাইজ করে। Intlayer-এর মাধ্যমে ডিকশনারির জন্য ট্রি শেকিং (tree shaking) এবং লেজি লোডিং (lazy loading) কীভাবে ব্যবহার করবেন তা জানুন।
|
|
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 ফাইল এবং সোর্স কোড—উভয় জায়গাতেই **কন্টেন্ট ফিল্ডের কী (keys) গুলোকে** ছোট অক্ষরের ছদ্মনামে (alias) রূপান্তর করে (যেমন `title` → `a`) |
|
|
207
|
+
| `intlayerOptimizeBabelPlugin` | `useIntlayer('key')` কে `useDictionary(hash)`-এ রূপান্তর করে এবং সঠিক ডিকশনারির `import` যোগ করে |
|
|
200
208
|
|
|
201
209
|
> **প্লাগিনের ক্রম অত্যন্ত গুরুত্বপূর্ণ।** আপনার `babel.config.js` ফাইলে purge এবং minify প্লাগিনগুলো অবশ্যই optimize প্লাগিনের **আগে** রাখতে হবে। 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` ফ্ল্যাগের ভিত্তিতেই সম্পূর্ণ পাইপলাইন চালায় — purge, minify এবং import পুনর্লিখন।
|
|
234
|
+
|
|
235
|
+
কাজটি দুই ভাগে বিভক্ত, কারণ একটি SWC Wasm প্লাগইন একবারে একটি ফাইল রূপান্তর করে এবং ফাইল সিস্টেমে তার প্রবেশাধিকার নেই:
|
|
236
|
+
|
|
237
|
+
| ধাপ | কোথায় চলে | কী করে |
|
|
238
|
+
| :--------------------------------------- | :------------------------------ | :---------------------------------------------------------------------------------------------------- |
|
|
239
|
+
| ব্যবহার বিশ্লেষণ + JSON purge/minify | Node, `withIntlayer()`-এর ভিতরে | প্রতিটি কম্পোনেন্ট সোর্স ফাইল পড়ে, `.intlayer/**/*.json` পুনর্লিখন করে এবং পুনঃনামকরণ টেবিল তৈরি করে |
|
|
240
|
+
| সোর্স পুনর্লিখন (`content.title` → `.a`) | `@intlayer/swc` (Wasm) | পুনঃনামকরণ টেবিলগুলি আপনার কোডের সংশ্লিষ্ট প্রপার্টি অ্যাক্সেসে প্রয়োগ করে |
|
|
241
|
+
| Import পুনর্লিখন (`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-এর
|
|
252
|
+
Next.js-এর জন্য `@intlayer/swc` প্লাগইন প্রয়োজন, কারণ Next.js বিল্ডের জন্য SWC ব্যবহার করে। **v9.2.1** থেকে এই একটি প্যাকেজই পুরো পাইপলাইন সামলায় — অপ্টিমাইজ (import পুনর্লিখন), purge এবং minify।
|
|
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
|
-
**
|
|
292
|
+
**Purge ও minify** ধাপগুলির (ফিল্ড অপসারণ ও ফিল্ড পুনঃনামকরণ) জন্য কোনো অতিরিক্ত প্যাকেজ বা `babel.config.js` লাগে না। আপনার কনফিগ `withIntlayer` দিয়ে মুড়ে দিন এবং `intlayer.config.ts`-এ ফ্ল্যাগগুলি চালু করুন:
|
|
269
293
|
|
|
270
|
-
```
|
|
271
|
-
|
|
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
|
-
```
|
|
275
|
-
|
|
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
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
//
|
|
286
|
-
|
|
287
|
-
// Minify: JSON + সোর্স কোডে কন্টেন্ট ফিল্ডের কী-গুলোর নাম পরিবর্তন করে
|
|
288
|
-
[intlayerMinifyBabelPlugin, getMinifyPluginOptions()],
|
|
289
|
-
// দ্রষ্টব্য: intlayerOptimizeBabelPlugin এখানে প্রয়োজন নেই কারণ
|
|
290
|
-
// @intlayer/swc নিজে থেকেই useIntlayer → useDictionary রূপান্তরটি হ্যান্ডেল করে।
|
|
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` ব্যবহার করুন। সিঙ্ক্রোনাস সংস্করণটি বিশ্লেষণ পাইপলাইন চালায় না, তাই এর সঙ্গে purge ও minify কোনো প্রভাব ফেলে না।
|
|
319
|
+
|
|
320
|
+
> Purge ও minify কেবল `next build`-এ চলে — অপ্টিমাইজ পাইপলাইন `next dev` চলাকালীন বন্ধ থাকে।
|
|
321
|
+
|
|
322
|
+
> কম্প্যাট-অ্যাডাপ্টার কলার কনফিগার করা থাকলেও এগুলি নিষ্ক্রিয় হয়ে যায় (`swcExtraCallers`, যা `@intlayer/next-intl` বা `@intlayer/react-i18next`-এর মতো কম্প্যাট প্যাকেজগুলি সেট করে): সেই কল সাইটগুলি ব্যবহার বিশ্লেষকের কাছে অদৃশ্য, তাই purge এমন ফিল্ড মুছে ফেলত যা কোড এখনও পড়ে। Import পুনর্লিখন সক্রিয় থাকে।
|
|
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) minification-ও এড়িয়ে যাওয়া হয়। সোর্সের অ্যাক্সেসগুলি পুনর্লিখন করে এই প্লাগইনই, তাই এটি ছাড়া অভিধান পুনঃনামকরণ করলে আপনার কোড এমন ফিল্ড নাম পড়তে থাকবে যা আর নেই।
|
|
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` থাকে তখন Purge বাদ দেওয়া হয়।
|
|
511
|
+
> যখন `optimize` `false` থাকে বা `editor.enabled` `true` থাকে তখন Purge বাদ দেওয়া হয়। Next.js-এ `@intlayer/swc` অনুপলব্ধ হলে এবং কম্প্যাট-অ্যাডাপ্টার কলার কনফিগার করা থাকলে এটি অতিরিক্তভাবে এড়িয়ে যাওয়া হয়।
|
|
479
512
|
|
|
480
513
|
> যদি কোনো সোর্স ফাইল পার্স (parse) করা না যায়, অথবা `useIntlayer`-এর রেজাল্ট কোনো ভেরিয়েবলে অ্যাসাইন করে এমনভাবে পাস করা হয় যা স্ট্যাটিক অ্যানালাইজার ট্র্যাক করতে পারে না (যেমন, কোনো অবজেক্টের মধ্যে স্প্রেড করা, অথবা ডিস্ট্রাকচার না করেই প্রপ হিসেবে পাস করা), সেক্ষেত্রে সুরক্ষার খাতিরে Purge প্রক্রিয়াটি এড়িয়ে যাওয়া হয়। এই ধরনের ক্ষেত্রে সম্পূর্ণ ডিকশনারিটি অক্ষত রাখা হয়।
|
|
481
514
|
|
package/docs/bn/configuration.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
|
-
updatedAt: 2026-
|
|
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 সার্ভার কুকি এবং হেডারে সংরক্ষিত লোকেল উপেক্ষা করে
|
|
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' অথবা এগুলোর অ্যারে।
|
|
@@ -706,13 +722,14 @@ Intlayer অ্যানালিটিক্স সম্পর্কিত স
|
|
|
706
722
|
|
|
707
723
|
URL কাঠামো, লোকাল স্টোরেজ এবং মিডলওয়্যার ম্যানেজমেন্ট সহ রাউটিং আচরণ নিয়ন্ত্রণকারী সেটিংস।
|
|
708
724
|
|
|
709
|
-
| ফিল্ড
|
|
710
|
-
|
|
|
711
|
-
| `mode`
|
|
712
|
-
| `
|
|
713
|
-
| `
|
|
714
|
-
| `
|
|
715
|
-
| `
|
|
725
|
+
| ফিল্ড | বর্ণনা | টাইপ | ডিফল্ট | উদাহরণ | মন্তব্য |
|
|
726
|
+
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
727
|
+
| `mode` | লোকাল ম্যানেজমেন্টের জন্য URL রাউটিং মোড। | `'prefix-no-default'` | <br/> `'prefix-all'` | <br/> `'no-prefix'` | <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` | এটি কুকি ম্যানেজমেন্ট বা লোকাল স্টোরেজকে প্রভাবিত করে না। |
|
|
728
|
+
| `enableProxy` | Intlayer লোকেল-রাউটিং প্রক্সি (মিডলওয়্যার) সক্রিয় করে। | `boolean` | <br/> `undefined` | `undefined` (auto) | `true` | • আনসেট (auto): dev ও preview সার্ভার কুকি/হেডারে সংরক্ষিত লোকেলকে রিডাইরেক্টের উৎস হিসেবে উপেক্ষা করে; প্রিফিক্স, সংরক্ষণ ও `Accept-Language` শনাক্তকরণ এখনও প্রযোজ্য। প্রোডাকশনে `true`-এর মতো।<br/>• `true`: সর্বত্র সম্পূর্ণ আচরণ।<br/>• `false`: কোনো লোকেল রাউটিং নেই। Next.js-এ `intlayerProxy` মিডলওয়্যার পাস-থ্রু হয়ে যায়। |
|
|
729
|
+
| `storage` | ক্লায়েন্টে লোকাল স্টোরেজের কনফিগারেশন। | `false` | <br/> `'cookie'` | <br/> `'localStorage'` | <br/> `'sessionStorage'` | <br/> `'header'` | <br/> `CookiesAttributes` | <br/> `StorageAttributes` | <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | নিচে স্টোরেজ প্যারামিটার টেবিল দেখুন। |
|
|
730
|
+
| `basePath` | অ্যাপ্লিকেশন URL-এর জন্য বেস পাথ। | `string` | `''` | `'/my-app'` | যদি অ্যাপ্লিকেশনটি `https://example.com/my-app` ঠিকানায় চলে, তবে basePath হলো `'/my-app'` এবং URL গুলো হয় `https://example.com/my-app/en` । |
|
|
731
|
+
| `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) দেখুন। |
|
|
732
|
+
| `domains` | ডোমেইন-ভিত্তিক রাউটিং এর জন্য লোকালগুলিকে ডোমেইন হোস্টনামের সাথে ম্যাপ করে। সেট করা হলে, সেই লোকালের জন্য URL গুলি এই ডোমেইনটিকে বেস (পরম URL) হিসেবে ব্যবহার করে এবং পাথে কোনো লোকাল প্রিফিক্স যোগ করা হয় না। | `Partial<Record<Locale, string>>` | `undefined` | `{ zh: 'intlayer.zh', fr: 'intlayer.org' }` | • হোস্টনামে অন্তর্ভুক্ত না থাকলে ডিফল্ট প্রোটোকল হলো `https://` ।<br/>• ডোমেইন নিজেই লোকালকে শনাক্ত করে, তাই `/zh/` প্রিফিক্স যোগ করা হয় না।<br/>• `getLocalizedUrl('/', 'zh')` রিটার্ন করে `https://intlayer.zh/` । |
|
|
716
733
|
|
|
717
734
|
**`rewrite` উদাহরণ**:
|
|
718
735
|
|
|
@@ -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 সালে Angular
|
|
4
|
+
title: "Angular 22 i18n - আপনার অ্যাপ অনুবাদের সম্পূর্ণ গাইড"
|
|
5
|
+
description: "আর i18next নয়। 2026 সালে Angular 22 অ্যাপ কে বহুভাষিক (i18n) করার গাইড। 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
|
|
@@ -31,7 +31,7 @@ history:
|
|
|
31
31
|
author: aymericzip
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
# Intlayer ব্যবহার করে আপনার Angular
|
|
34
|
+
# Intlayer ব্যবহার করে আপনার Angular 22 (Vite) ওয়েবসাইট অনুবাদ করুন | আন্তর্জাতিকীকরণ (i18n)
|
|
35
35
|
|
|
36
36
|
## সূচিপত্র
|
|
37
37
|
|
|
@@ -56,7 +56,7 @@ Intlayer এর মাধ্যমে আপনি যা করতে পার
|
|
|
56
56
|
<Tab label="কোড" value="code">
|
|
57
57
|
|
|
58
58
|
<iframe
|
|
59
|
-
src="https://ide.intlayer.org/aymericzip/intlayer-angular-
|
|
59
|
+
src="https://ide.intlayer.org/aymericzip/intlayer-angular-22-template?file=intlayer.config.ts"
|
|
60
60
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
61
61
|
title="Demo CodeSandbox - Intlayer ব্যবহার করে কীভাবে আপনার অ্যাপ্লিকেশনের আন্তর্জাতিকীকরণ করবেন"
|
|
62
62
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
@@ -67,7 +67,7 @@ Intlayer এর মাধ্যমে আপনি যা করতে পার
|
|
|
67
67
|
<Tab label="ডেমো" value="demo">
|
|
68
68
|
|
|
69
69
|
<iframe
|
|
70
|
-
src="https://intlayer-angular-
|
|
70
|
+
src="https://intlayer-angular-22-template.vercel.app/"
|
|
71
71
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
72
72
|
title="Demo - intlayer-angular-template"
|
|
73
73
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
@@ -77,7 +77,7 @@ Intlayer এর মাধ্যমে আপনি যা করতে পার
|
|
|
77
77
|
</Tab>
|
|
78
78
|
</Tabs>
|
|
79
79
|
|
|
80
|
-
GitHub এ [অ্যাপ্লিকেশন টেমপ্লেট](https://github.com/aymericzip/intlayer-angular-
|
|
80
|
+
GitHub এ [অ্যাপ্লিকেশন টেমপ্লেট](https://github.com/aymericzip/intlayer-angular-22-template) দেখুন।
|
|
81
81
|
|
|
82
82
|
### ধাপ ১: ডিপেন্ডেন্সি ইন্সটল করুন
|
|
83
83
|
|
|
@@ -159,7 +159,7 @@ export default config;
|
|
|
159
159
|
|
|
160
160
|
### ধাপ ৩: আপনার Angular কনফিগারেশনে Intlayer একত্রিত করুন
|
|
161
161
|
|
|
162
|
-
Intlayer কে Angular CLI এর সাথে একত্রিত করতে আপনাকে একটি কাস্টম বিল্ডার ব্যবহার করতে হবে। এই গাইডটি ধরে নেয় যে আপনি Vite/esbuild ব্যবহার করছেন (Angular
|
|
162
|
+
Intlayer কে Angular CLI এর সাথে একত্রিত করতে আপনাকে একটি কাস্টম বিল্ডার ব্যবহার করতে হবে। এই গাইডটি ধরে নেয় যে আপনি Vite/esbuild ব্যবহার করছেন (Angular 22 প্রজেক্টের জন্য ডিফল্ট)।
|
|
163
163
|
|
|
164
164
|
প্রথমে আপনার `angular.json` পরিবর্তন করে কাস্টম esbuild বিল্ডার ব্যবহার করুন। `build` এবং `serve` কনফিগারেশন আপডেট করুন:
|
|
165
165
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-11-25
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-09
|
|
4
4
|
title: Optimalizace Velikosti Bundle & Výkonu i18n
|
|
5
5
|
description: Zmenšete velikost svého aplikačního bundlu optimalizací obsahu pro internacionalizaci (i18n). Zjistěte, jak v Intlayer využít tree shaking a líné načítání (lazy loading) pro slovníky.
|
|
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` a `minify` nyní fungují v Next.js prostřednictvím `@intlayer/swc` — žádný `babel.config.js` není potřeba"
|
|
22
|
+
- version: 8.12.0
|
|
23
|
+
date: 2026-06-24
|
|
24
|
+
changes: "Uvedení Babel pluginů v požadovaném pořadí pipeline (extract → purge → minify → optimize) v referenčních tabulkách"
|
|
19
25
|
- version: 8.12.0
|
|
20
26
|
date: 2026-06-07
|
|
21
27
|
changes: "Přidány `intlayerPurgeBabelPlugin` a `intlayerMinifyBabelPlugin` pro Babel/Webpack; vyjasnění fungování pipeline pluginů"
|
|
@@ -191,12 +197,14 @@ Optimalizace sestavení pomocí Intlayer je rozdělena do několika samostatnýc
|
|
|
191
197
|
|
|
192
198
|
Tyto pluginy se používají přímo v `babel.config.js` pro sestavení založená na Webpacku (Next.js s Babelem, CRA, vlastní Webpack atd.).
|
|
193
199
|
|
|
200
|
+
Následující tabulka je uvádí v požadovaném pořadí pipeline (ve stejném pořadí, v jakém musí být uvedeny v `babel.config.js`):
|
|
201
|
+
|
|
194
202
|
| Plugin | K čemu slouží |
|
|
195
203
|
| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------- |
|
|
196
204
|
| `intlayerExtractBabelPlugin` | Prohledá soubory `.content.ts` a zapíše zkompilované slovníky do složky `.intlayer/` |
|
|
197
|
-
| `intlayerOptimizeBabelPlugin` | Přepíše `useIntlayer('key')` na `useDictionary(hash)` a vloží odpovídající `import` slovníku |
|
|
198
205
|
| `intlayerPurgeBabelPlugin` | Prohledá všechny zdrojové soubory a odstraní **nepoužívaná pole obsahu** z kompilovaných slovníků `.intlayer/**/*.json` |
|
|
199
206
|
| `intlayerMinifyBabelPlugin` | **Přejmenuje klíče polí obsahu** na krátké abecední aliasy (např. `title` → `a`) jak v JSON souborech, tak ve zdrojovém kódu |
|
|
207
|
+
| `intlayerOptimizeBabelPlugin` | Přepíše `useIntlayer('key')` na `useDictionary(hash)` a vloží odpovídající `import` slovníku |
|
|
200
208
|
|
|
201
209
|
> **Záleží na pořadí pluginů.** Ve vašem `babel.config.js` musí pluginy pro purge a minify následovat **před** optimalizačním (optimize) pluginem. Krok optimalizace totiž nahrazuje volání `useIntlayer('key')` neprůhledným `useDictionary(hash)`, což odstraní informaci o klíči slovníku. Tuto informaci potřebují pluginy purge a minify k identifikaci použitých polí.
|
|
202
210
|
|
|
@@ -205,9 +213,9 @@ Každý Babel plugin má odpovídajícího pomocníka (options helper), který p
|
|
|
205
213
|
| Pomocník pro volby | Používá se s |
|
|
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 pluginy (`vite-intlayer`)
|
|
213
221
|
|
|
@@ -220,6 +228,20 @@ Uživatelé Vite **tyto pluginy nikdy nenastavují přímo**. Propojí se automa
|
|
|
220
228
|
| Dictionary minify | Stejné jako zápis JSON pro `intlayerMinifyBabelPlugin` |
|
|
221
229
|
| Babel transform | Stejné jako přejmenování zdrojového kódu v `intlayerMinifyBabelPlugin` + `intlayerOptimizeBabelPlugin` |
|
|
222
230
|
|
|
231
|
+
### SWC plugin (`@intlayer/swc`)
|
|
232
|
+
|
|
233
|
+
Ani uživatelé Next.js **tyto nikdy nekonfigurují přímo**. Od verze **9.2.1** spouští `withIntlayer()` v `next.config.ts` celou pipeline — purge, minifikaci i přepis importů — pouze na základě příznaků `build.purge` a `build.minify`.
|
|
234
|
+
|
|
235
|
+
Práce je rozdělena na dvě části, protože SWC Wasm plugin transformuje vždy jen jeden soubor a nemá přístup k souborovému systému:
|
|
236
|
+
|
|
237
|
+
| Průchod | Kde běží | Co dělá |
|
|
238
|
+
| :---------------------------------------------- | :---------------------------- | :---------------------------------------------------------------------------------------------------- |
|
|
239
|
+
| Analýza použití + purge/minifikace JSON | Node, uvnitř `withIntlayer()` | Přečte každý zdrojový soubor komponenty, přepíše `.intlayer/**/*.json` a vytvoří přejmenovací tabulky |
|
|
240
|
+
| Přepis zdrojového kódu (`content.title` → `.a`) | `@intlayer/swc` (Wasm) | Aplikuje přejmenovací tabulky na odpovídající přístupy k vlastnostem ve vašem kódu |
|
|
241
|
+
| Přepis importů (`useIntlayer` → dict) | `@intlayer/swc` (Wasm) | Stejné jako `intlayerOptimizeBabelPlugin` |
|
|
242
|
+
|
|
243
|
+
Rozhodnout, _která_ pole jsou nepoužitá a _jaký_ alias každé z nich dostane, vyžaduje stav napříč soubory a souborové I/O, takže tato polovina běží v Node; SWC plugin dostává pouze výsledné tabulky.
|
|
244
|
+
|
|
223
245
|
## Nastavení podle platforem
|
|
224
246
|
|
|
225
247
|
<Tabs>
|
|
@@ -227,10 +249,12 @@ Uživatelé Vite **tyto pluginy nikdy nenastavují přímo**. Propojí se automa
|
|
|
227
249
|
|
|
228
250
|
### Next.js
|
|
229
251
|
|
|
230
|
-
Next.js
|
|
252
|
+
Next.js vyžaduje plugin `@intlayer/swc`, protože Next.js používá pro sestavení SWC. Od verze **9.2.1** pokrývá tento jediný balíček celou pipeline — optimalizaci (přepis importů), purge i minifikaci.
|
|
231
253
|
|
|
232
254
|
> Tento plugin se neinstaluje ve výchozím nastavení, jelikož SWC pluginy jsou pro Next.js zatím experimentální. V budoucnu se to může změnit.
|
|
233
255
|
|
|
256
|
+
> **Next.js 16.1.0 je minimální verze.** Je to první vydání postavené na dopředně kompatibilním ABI Wasm pluginů SWC; starší vydání plugin odmítají. `withIntlayer` přečte vaši verzi Next.js a pod 16.1.0 plugin jednoduše nezaregistruje — takové buildy stále projdou, jen běží bez optimalizace bundlu.
|
|
257
|
+
|
|
234
258
|
<Tabs>
|
|
235
259
|
<Tab value="npm">
|
|
236
260
|
|
|
@@ -265,33 +289,40 @@ intlayer-swc-plugin = "*"
|
|
|
265
289
|
|
|
266
290
|
Po instalaci plugin Intlayer automaticky rozpozná a použije.
|
|
267
291
|
|
|
268
|
-
|
|
292
|
+
Průchody **purge a minifikace** (odstranění a přejmenování polí) nevyžadují žádný další balíček ani `babel.config.js`. Obalte svou konfiguraci pomocí `withIntlayer` a zapněte příznaky v `intlayer.config.ts`:
|
|
269
293
|
|
|
270
|
-
```
|
|
271
|
-
|
|
294
|
+
```typescript fileName="next.config.ts"
|
|
295
|
+
import { withIntlayer } from "next-intlayer/server";
|
|
296
|
+
import type { NextConfig } from "next";
|
|
297
|
+
|
|
298
|
+
const nextConfig: NextConfig = {/* vaše konfigurace */};
|
|
299
|
+
|
|
300
|
+
export default withIntlayer(nextConfig);
|
|
272
301
|
```
|
|
273
302
|
|
|
274
|
-
```
|
|
275
|
-
|
|
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
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
//
|
|
286
|
-
|
|
287
|
-
// Minify: přejmenuje klíče polí v JSON + ve zdrojovém kódu
|
|
288
|
-
[intlayerMinifyBabelPlugin, getMinifyPluginOptions()],
|
|
289
|
-
// Poznámka: intlayerOptimizeBabelPlugin zde NENÍ POTŘEBA, jelikož
|
|
290
|
-
// přepis useIntlayer → useDictionary řeší balíček @intlayer/swc.
|
|
291
|
-
],
|
|
306
|
+
const config: IntlayerConfig = {
|
|
307
|
+
build: {
|
|
308
|
+
purge: true, // odstraní nepoužitá obsahová pole ze zabaleného JSON
|
|
309
|
+
minify: true, // přejmenuje klíče obsahových polí na krátké aliasy
|
|
310
|
+
},
|
|
292
311
|
};
|
|
312
|
+
|
|
313
|
+
export default config;
|
|
293
314
|
```
|
|
294
315
|
|
|
316
|
+
Během `next build` `withIntlayer` analyzuje vaše zdroje, přepíše zkompilované slovníky a předá výsledné přejmenovací tabulky pluginu `@intlayer/swc`, který aktualizuje odpovídající přístupy k vlastnostem ve vašem kódu.
|
|
317
|
+
|
|
318
|
+
> Použijte asynchronní `withIntlayer`, ne `withIntlayerSync`. Synchronní varianta analytickou pipeline nespouští, takže purge a minifikace s ní nemají žádný efekt.
|
|
319
|
+
|
|
320
|
+
> Purge a minifikace běží pouze při `next build` — optimalizační pipeline je během `next dev` vypnutá.
|
|
321
|
+
|
|
322
|
+
> Jsou také vypnuty, pokud jsou nakonfigurovaní volající kompatibilních adaptérů (`swcExtraCallers`, nastavované kompatibilními balíčky jako `@intlayer/next-intl` nebo `@intlayer/react-i18next`): tato místa volání jsou pro analyzátor použití neviditelná, takže purge by odstranil pole, která kód stále čte. Přepis importů zůstává aktivní.
|
|
323
|
+
|
|
324
|
+
**Starší verze (před 9.2.1)** vyžadovaly `@intlayer/babel` a soubor `babel.config.js` deklarující `intlayerPurgeBabelPlugin` a `intlayerMinifyBabelPlugin`. Tento soubor již není potřeba a lze jej smazat.
|
|
325
|
+
|
|
295
326
|
</Tab>
|
|
296
327
|
<Tab value="vite">
|
|
297
328
|
|
|
@@ -447,6 +478,8 @@ export default config;
|
|
|
447
478
|
|
|
448
479
|
> K minifikaci nedojde, pokud je `optimize` nastaveno na `false` nebo pokud `editor.enabled` odpovídá hodnotě `true` (vizuální editor totiž potřebuje znát původní názvy polí, aby umožnil jejich editaci).
|
|
449
480
|
|
|
481
|
+
> V Next.js se minifikace přeskočí také tehdy, když `@intlayer/swc` není nainstalovaný nebo jej nelze načíst (Next.js nižší než 16.1.0). Plugin je ta polovina, která přepisuje přístupy ve zdrojovém kódu, takže přejmenování slovníků bez něj by ponechalo váš kód číst názvy polí, které již neexistují.
|
|
482
|
+
|
|
450
483
|
> Stejně tak se minifikace ignoruje u slovníků načítaných přes `importMode: 'fetch'`, protože takové JSON soubory pocházejí z externího API pod svými původními názvy polí — přejmenování klíčů na straně klienta by rozbilo vazbu server-klient.
|
|
451
484
|
|
|
452
485
|
### Purge (odstranění nepoužitých polí)
|
|
@@ -475,7 +508,7 @@ export default config;
|
|
|
475
508
|
{ "title": "…", "subtitle": "…" }
|
|
476
509
|
```
|
|
477
510
|
|
|
478
|
-
> K purge nedojde, jestliže je `optimize` nastaveno na `false` nebo jestliže je `editor.enabled` `true`.
|
|
511
|
+
> K purge nedojde, jestliže je `optimize` nastaveno na `false` nebo jestliže je `editor.enabled` `true`. V Next.js se navíc přeskočí, když `@intlayer/swc` není dostupný a když jsou nakonfigurovaní volající kompatibilních adaptérů.
|
|
479
512
|
|
|
480
513
|
> Z bezpečnostních důvodů k purge nedojde ani tehdy, pokud nelze správně rozebrat (parse) nějaký zdrojový soubor. Dále se vynechá v situaci, kdy je výsledek z volání `useIntlayer` uložen do proměnné a předán dál způsobem, který statický analyzátor neumí sledovat (např. spread operátorem do objektu, nebo předáním přes properties (props) bez použití destrukce). V těchto případech zůstává celý slovník zachován.
|
|
481
514
|
|
package/docs/cs/configuration.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-06
|
|
4
4
|
title: Konfigurace (Configuration)
|
|
5
5
|
description: Naučte se, jak nakonfigurovat Intlayer pro vaši aplikaci. Porozumějte různým nastavením a možnostem dostupným pro přizpůsobení Intlayer vašim potřebám.
|
|
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: "Změna `routing.enableProxy` na tři stavy: nenastaveno (auto), `true`, `false`"
|
|
17
20
|
- version: 9.0.0
|
|
18
21
|
date: 2026-07-11
|
|
19
22
|
changes: "Přidána konfigurace `analytics`"
|
|
@@ -235,6 +238,19 @@ const config: IntlayerConfig = {
|
|
|
235
238
|
*/
|
|
236
239
|
mode: "prefix-no-default",
|
|
237
240
|
|
|
241
|
+
/**
|
|
242
|
+
* Zapíná proxy pro směrování locale v Intlayeru (middleware).
|
|
243
|
+
* Řeší detekci locale, přesměrování a přepisy URL ve dev, preview a SSR.
|
|
244
|
+
* - nenastaveno (auto): dev a preview servery drží směrování řízené URL a ignorují
|
|
245
|
+
* locale uloženou v cookies a hlavičkách. Prefixy se stále vyhodnocují, locale
|
|
246
|
+
* se stále ukládá a detekce Accept-Language stále platí.
|
|
247
|
+
* V produkci se chová jako `true`.
|
|
248
|
+
* - true: plné chování ve všech prostředích.
|
|
249
|
+
* - false: žádné směrování locale.
|
|
250
|
+
* Výchozí: undefined (auto)
|
|
251
|
+
*/
|
|
252
|
+
enableProxy: undefined,
|
|
253
|
+
|
|
238
254
|
/**
|
|
239
255
|
* Kde ukládat uživatelem zvolenou lokalitu.
|
|
240
256
|
* Možnosti: 'cookie', 'localStorage', 'sessionStorage', 'header' nebo jejich pole.
|
|
@@ -713,13 +729,14 @@ Analytika je striktně opt-in: nic se neshromažďuje, pokud není `analytics.en
|
|
|
713
729
|
|
|
714
730
|
Nastavení ovládající chování routování, včetně struktury URL, ukládání lokalit a správy middleware.
|
|
715
731
|
|
|
716
|
-
| Pole
|
|
717
|
-
|
|
|
718
|
-
| `mode`
|
|
719
|
-
| `
|
|
720
|
-
| `
|
|
721
|
-
| `
|
|
722
|
-
| `
|
|
732
|
+
| Pole | Popis | Typ | Výchozí | Příklad | Poznámka |
|
|
733
|
+
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
734
|
+
| `mode` | Režim routování URL pro správu lokalit. | `'prefix-no-default'` | <br/> `'prefix-all'` | <br/> `'no-prefix'` | <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) nebo `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: lokalita spravována jinými způsoby. `'search-params'`: `/dashboard?locale=fr` | Neovlivňuje správu cookies nebo úložiště lokalit. |
|
|
735
|
+
| `enableProxy` | Zapíná proxy pro směrování locale v Intlayeru (middleware). | `boolean` | <br/> `undefined` | `undefined` (auto) | `true` | • Nenastaveno (auto): dev a preview servery ignorují locale uloženou v cookies/hlavičkách jako zdroj přesměrování; prefixy, ukládání locale a detekce `Accept-Language` stále platí. V produkci se chová jako `true`.<br/>• `true`: plné chování všude.<br/>• `false`: žádné směrování locale. V Next.js se middleware `intlayerProxy` stane průchozím. |
|
|
736
|
+
| `storage` | Konfigurace ukládání lokality na klientovi. | `false` | <br/> `'cookie'` | <br/> `'localStorage'` | <br/> `'sessionStorage'` | <br/> `'header'` | <br/> `CookiesAttributes` | <br/> `StorageAttributes` | <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | Viz tabulka parametrů úložiště níže. |
|
|
737
|
+
| `basePath` | Základní cesta pro URL aplikace. | `string` | `''` | `'/my-app'` | Pokud aplikace běží na adrese `https://example.com/my-app`, basePath je `'/my-app'` a URL se stanou `https://example.com/my-app/en`. |
|
|
738
|
+
| `rewrite` | Vlastní pravidla přepisu URL, která přebíjejí výchozí režim routování pro konkrétní cesty. Podporuje dynamické parametry `[param]`. | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | Viz příklad níže | • Pravidla přepisu mají prioritu před `mode`.<br/>• Funguje s Next.js a Vite.<br/>• `getLocalizedUrl()` automaticky aplikuje odpovídající pravidla.<br/>• Viz [Vlastní přepisy URL](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/custom_url_rewrites.md). |
|
|
739
|
+
| `domains` | Mapuje lokality na doménová jména hostitelů pro směrování založené na doménách. Pokud je nastaveno, URL pro danou lokalitu používají tuto doménu jako základ (absolutní URL) a do cesty není přidán žádný prefix lokality. | `Partial<Record<Locale, string>>` | `undefined` | `{ zh: 'intlayer.zh', fr: 'intlayer.org' }` | • Výchozí protokol je `https://`, pokud není součástí hostitele.<br/>• Doména sama identifikuje lokalitu, takže prefix `/zh/` není přidán.<br/>• `getLocalizedUrl('/', 'zh')` vrací `https://intlayer.zh/`. |
|
|
723
740
|
|
|
724
741
|
**Příklad `rewrite`**:
|
|
725
742
|
|