@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
package/docs/pt/formatters.md
CHANGED
|
@@ -46,34 +46,6 @@ author: aymericzip
|
|
|
46
46
|
|
|
47
47
|
O Intlayer fornece um conjunto de helpers leves construídos sobre as APIs nativas `Intl`, além de um wrapper `Intl` em cache para evitar a construção repetida de formatadores pesados. Esses utilitários são totalmente sensíveis à localidade e podem ser usados a partir do pacote principal `intlayer`.
|
|
48
48
|
|
|
49
|
-
### Importação
|
|
50
|
-
|
|
51
|
-
```ts
|
|
52
|
-
import {
|
|
53
|
-
Intl,
|
|
54
|
-
number,
|
|
55
|
-
percentage,
|
|
56
|
-
currency,
|
|
57
|
-
date,
|
|
58
|
-
relativeTime,
|
|
59
|
-
units,
|
|
60
|
-
compact,
|
|
61
|
-
list,
|
|
62
|
-
getLocaleName,
|
|
63
|
-
getLocaleLang,
|
|
64
|
-
getLocaleFromPath,
|
|
65
|
-
getPathWithoutLocale,
|
|
66
|
-
getLocalizedUrl,
|
|
67
|
-
getHTMLTextDir,
|
|
68
|
-
getContent,
|
|
69
|
-
getTranslation,
|
|
70
|
-
getIntlayer,
|
|
71
|
-
getIntlayerAsync,
|
|
72
|
-
} from "intlayer";
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
Se estiver a usar React, os hooks também estão disponíveis; veja `react-intlayer/format`.
|
|
76
|
-
|
|
77
49
|
## Intl em Cache
|
|
78
50
|
|
|
79
51
|
O `Intl` exportado é um wrapper leve e em cache em torno do `Intl` global. Ele memoiza instâncias de `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, `ListFormat`, `DisplayNames`, `Collator` e `PluralRules`, o que evita reconstruir o mesmo formatador repetidamente.
|
|
@@ -110,9 +82,7 @@ pluralRules.select(1); // "one"
|
|
|
110
82
|
pluralRules.select(2); // "other"
|
|
111
83
|
```
|
|
112
84
|
|
|
113
|
-
##
|
|
114
|
-
|
|
115
|
-
Além dos auxiliares de formatadores, você também pode usar diretamente o wrapper Intl em cache para outros recursos do Intl:
|
|
85
|
+
## React Formatters
|
|
116
86
|
|
|
117
87
|
### `Intl.DisplayNames`
|
|
118
88
|
|
|
@@ -128,6 +98,22 @@ const regionNames = new Intl.DisplayNames("fr", { type: "region" });
|
|
|
128
98
|
regionNames.of("US"); // "États-Unis"
|
|
129
99
|
```
|
|
130
100
|
|
|
101
|
+
### Hooks Disponíveis
|
|
102
|
+
|
|
103
|
+
Todos os hooks usam automaticamente a locale de `IntlayerProvider` ou `IntlayerServerProvider`.
|
|
104
|
+
|
|
105
|
+
| Hook | Description | Example Output |
|
|
106
|
+
| ------------------- | -------------------------------------- | ----------------------------- |
|
|
107
|
+
| `useNumber()` | Formatar números com agrupamento | `"123,456.789"` |
|
|
108
|
+
| `useCurrency()` | Formatar valores de moeda | `"€1,234.50"` |
|
|
109
|
+
| `usePercentage()` | Formatar percentagens | `"25%"` |
|
|
110
|
+
| `useDate()` | Formatar datas e horas | `"Aug 2, 2025"` |
|
|
111
|
+
| `useRelativeTime()` | Formatar tempo relativo | `"in 3 days"` |
|
|
112
|
+
| `useUnit()` | Formatar valores com unidades | `"5 kilometers"` |
|
|
113
|
+
| `useCompact()` | Formatar números em notação compacta | `"1.2K"` |
|
|
114
|
+
| `useList()` | Formatar arrays como listas | `"apple, banana, and orange"` |
|
|
115
|
+
| `useIntl()` | Obter objeto `Intl` vinculado à locale | Acesso completo à API `Intl` |
|
|
116
|
+
|
|
131
117
|
### `Intl.Collator`
|
|
132
118
|
|
|
133
119
|
Para comparação e ordenação de strings sensíveis ao local:
|
|
@@ -267,166 +253,146 @@ getLocaleFromPath("https://example.com/es/about"); // "es"
|
|
|
267
253
|
|
|
268
254
|
### Funções de Formatter
|
|
269
255
|
|
|
270
|
-
|
|
256
|
+
#### `number(value, options?)`
|
|
271
257
|
|
|
272
|
-
|
|
258
|
+
Formata um valor numérico usando agrupamento e decimais compatíveis com a localidade.
|
|
273
259
|
|
|
274
|
-
|
|
275
|
-
|
|
260
|
+
- **value**: `number | string`
|
|
261
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
276
262
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
263
|
+
```ts
|
|
264
|
+
number(123456.789); // "123,456.789" (em en-US)
|
|
265
|
+
number("1000000", { locale: "fr" }); // "1 000 000"
|
|
266
|
+
number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
|
|
280
267
|
```
|
|
281
268
|
|
|
282
|
-
|
|
283
|
-
- **locales**: Array opcional de locales suportados (padrão para os locales configurados)
|
|
284
|
-
- **returns**: A URL sem o segmento de locale
|
|
269
|
+
#### `percentage(value, options?)`
|
|
285
270
|
|
|
286
|
-
|
|
271
|
+
Formata um número como uma string de percentual. Valores maiores que 1 são normalizados (ex: `25` → `25%`, `0.25` → `25%`).
|
|
287
272
|
|
|
288
|
-
|
|
273
|
+
- **value**: `number | string`
|
|
274
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
289
275
|
|
|
290
276
|
```ts
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
getLocalizedUrl("/about", "en", ["en", "fr"], "en", false); // "/about"
|
|
295
|
-
getLocalizedUrl("https://example.com/about", "fr", ["en", "fr"], "en", true); // "https://example.com/fr/about"
|
|
277
|
+
percentage(0.25); // "25%"
|
|
278
|
+
percentage(25); // "25%"
|
|
279
|
+
percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
|
|
296
280
|
```
|
|
297
281
|
|
|
298
|
-
|
|
299
|
-
- **currentLocale**: O locale atual
|
|
300
|
-
- **locales**: Array opcional de locales suportados (padrão para os locales configurados)
|
|
301
|
-
- **defaultLocale**: Locale padrão opcional (padrão para o locale padrão configurado)
|
|
302
|
-
- **prefixDefault**: Se deve prefixar o locale padrão (padrão para o valor configurado)
|
|
282
|
+
#### `currency(value, options?)`
|
|
303
283
|
|
|
304
|
-
|
|
284
|
+
Formata um valor como moeda localizada. Padrão é `USD`.
|
|
305
285
|
|
|
306
|
-
|
|
286
|
+
- **value**: `number | string`
|
|
287
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
288
|
+
- Comuns: `currency`, `currencyDisplay` (`"symbol" | "code" | "name"`)
|
|
307
289
|
|
|
308
290
|
```ts
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
getHTMLTextDir("en-US"); // "ltr"
|
|
312
|
-
getHTMLTextDir("ar"); // "rtl"
|
|
313
|
-
getHTMLTextDir("he"); // "rtl"
|
|
291
|
+
currency(1234.5, { currency: "EUR" }); // "€1,234.50"
|
|
292
|
+
currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
|
|
314
293
|
```
|
|
315
294
|
|
|
316
|
-
|
|
317
|
-
|
|
295
|
+
#### `date(date, optionsOrPreset?)`
|
|
296
|
+
|
|
297
|
+
Formata um valor de data/hora.
|
|
298
|
+
|
|
299
|
+
- **date**: `Date | string | number`
|
|
300
|
+
- **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` or preset: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
|
|
301
|
+
|
|
302
|
+
```ts
|
|
303
|
+
date(new Date(), "short"); // e.g., "08/02/25, 14:30"
|
|
304
|
+
date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
|
|
305
|
+
```
|
|
318
306
|
|
|
319
|
-
|
|
307
|
+
#### `relativeTime(from, to?, options?)`
|
|
320
308
|
|
|
321
|
-
|
|
309
|
+
Formata tempo relativo entre dois instantes.
|
|
322
310
|
|
|
323
|
-
|
|
311
|
+
- **from**: `Date | string | number`
|
|
312
|
+
- **to**: `Date | string | number` (padrão para `new Date()`)
|
|
313
|
+
- **options**: `{ locale?, unit?, numeric?, style? }`
|
|
324
314
|
|
|
325
315
|
```ts
|
|
326
|
-
|
|
316
|
+
const now = new Date();
|
|
317
|
+
const in3Days = new Date(now.getTime() + 3 * 864e5);
|
|
318
|
+
relativeTime(now, in3Days, { unit: "day" }); // "em 3 dias"
|
|
327
319
|
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
{ dictionaryKey: "common", dictionaryPath: "/path/to/dict" },
|
|
331
|
-
"fr"
|
|
332
|
-
);
|
|
320
|
+
const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
|
|
321
|
+
relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "há 2 horas"
|
|
333
322
|
```
|
|
334
323
|
|
|
335
|
-
|
|
336
|
-
- **nodeProps**: Propriedades para o contexto da transformação
|
|
337
|
-
- **locale**: Locale opcional (padrão para o locale padrão configurado)
|
|
324
|
+
#### `units(value, options?)`
|
|
338
325
|
|
|
339
|
-
|
|
326
|
+
Formata um valor numérico com uma unidade.
|
|
340
327
|
|
|
341
|
-
|
|
328
|
+
- **value**: `number | string`
|
|
329
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
330
|
+
- Common: `unit` (e.g., `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
|
|
342
331
|
|
|
343
332
|
```ts
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
const content = getTranslation(
|
|
347
|
-
{
|
|
348
|
-
en: "Hello",
|
|
349
|
-
fr: "Bonjour",
|
|
350
|
-
de: "Hallo",
|
|
351
|
-
},
|
|
352
|
-
"fr",
|
|
353
|
-
true
|
|
354
|
-
); // "Bonjour"
|
|
333
|
+
units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
|
|
334
|
+
units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B"
|
|
355
335
|
```
|
|
356
336
|
|
|
357
|
-
|
|
358
|
-
- **locale**: Locale alvo (padrão para o locale padrão configurado)
|
|
359
|
-
- **fallback**: Se deve retornar ao locale padrão (padrão é true)
|
|
337
|
+
#### `compact(value, options?)`
|
|
360
338
|
|
|
361
|
-
|
|
339
|
+
Formata um número usando notação compacta.
|
|
362
340
|
|
|
363
|
-
|
|
341
|
+
- **value**: `number | string`
|
|
342
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
364
343
|
|
|
365
344
|
```ts
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
const content = getIntlayer("common", "fr");
|
|
369
|
-
const nestedContent = getIntlayer("common", "fr", customPlugins);
|
|
345
|
+
compact(1200); // "1.2K"
|
|
346
|
+
compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
|
|
370
347
|
```
|
|
371
348
|
|
|
372
|
-
|
|
373
|
-
- **locale**: Locale opcional (padrão para o locale padrão configurado)
|
|
374
|
-
- **plugins**: Array opcional de plugins de transformação personalizados
|
|
349
|
+
#### `list(values, options?)`
|
|
375
350
|
|
|
376
|
-
|
|
351
|
+
Formata um array em uma string de lista localizada.
|
|
377
352
|
|
|
378
|
-
|
|
353
|
+
- **values**: `(string | number)[]`
|
|
354
|
+
- **options**: `Intl.ListFormatOptions & { locale?: LocalesValues }`
|
|
355
|
+
- Common: `type` (`"conjunction" | "disjunction" | "unit"`), `style` (`"long" | "short" | "narrow"`)
|
|
379
356
|
|
|
380
357
|
```ts
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
const content = await getIntlayerAsync("common", "fr");
|
|
358
|
+
list(["apple", "banana", "orange"]); // "apple, banana, and orange"
|
|
359
|
+
list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge, vert ou bleu"
|
|
384
360
|
```
|
|
385
361
|
|
|
386
|
-
- **dictionaryKey**: A chave do dicionário a ser recuperada
|
|
387
|
-
- **locale**: Locale opcional (padrão para o locale padrão configurado)
|
|
388
|
-
- **plugins**: Array opcional de plugins de transformação personalizados
|
|
389
|
-
|
|
390
362
|
## Formatadores
|
|
391
363
|
|
|
392
364
|
Todos os helpers abaixo são exportados de `intlayer`.
|
|
393
365
|
|
|
394
366
|
### Funcionalidades Intl Adicionais
|
|
395
367
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
Formata um valor numérico usando agrupamento e decimais sensíveis ao locale.
|
|
399
|
-
|
|
400
|
-
- **value**: `number | string`
|
|
401
|
-
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
368
|
+
#### `Intl.DisplayNames`
|
|
402
369
|
|
|
403
|
-
|
|
370
|
+
Para nomes localizados de idiomas, regiões, moedas e scripts:
|
|
404
371
|
|
|
405
372
|
```ts
|
|
406
|
-
import {
|
|
407
|
-
|
|
408
|
-
number(123456.789); // "123,456.789" (em en-US)
|
|
409
|
-
number("1000000", { locale: "fr" }); // "1 000 000"
|
|
410
|
-
number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
|
|
411
|
-
```
|
|
373
|
+
import { Intl } from "intlayer";
|
|
412
374
|
|
|
413
|
-
|
|
375
|
+
const languageNames = new Intl.DisplayNames("en", { type: "language" });
|
|
376
|
+
languageNames.of("fr"); // "French"
|
|
414
377
|
|
|
415
|
-
|
|
378
|
+
const regionNames = new Intl.DisplayNames("fr", { type: "region" });
|
|
379
|
+
regionNames.of("US"); // "États-Unis"
|
|
380
|
+
```
|
|
416
381
|
|
|
417
|
-
|
|
382
|
+
#### `Intl.Collator`
|
|
418
383
|
|
|
419
|
-
|
|
420
|
-
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
421
|
-
|
|
422
|
-
Exemplos:
|
|
384
|
+
Para comparação e classificação de strings com reconhecimento de locale:
|
|
423
385
|
|
|
424
386
|
```ts
|
|
425
|
-
import {
|
|
387
|
+
import { Intl } from "intlayer";
|
|
426
388
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
389
|
+
const collator = new Intl.Collator("de", {
|
|
390
|
+
sensitivity: "base",
|
|
391
|
+
numeric: true,
|
|
392
|
+
});
|
|
393
|
+
|
|
394
|
+
const words = ["äpfel", "zebra", "100", "20"];
|
|
395
|
+
words.sort(collator.compare); // ["20", "100", "äpfel", "zebra"]
|
|
430
396
|
```
|
|
431
397
|
|
|
432
398
|
#### `Intl.PluralRules`
|
|
@@ -537,6 +503,20 @@ compact(1200); // "1.2K"
|
|
|
537
503
|
compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 milhão"
|
|
538
504
|
```
|
|
539
505
|
|
|
506
|
+
### `getHTMLTextDir(locale?)`
|
|
507
|
+
|
|
508
|
+
Retorna a direção do texto para uma localidade:
|
|
509
|
+
|
|
510
|
+
```ts
|
|
511
|
+
import { getHTMLTextDir } from "intlayer";
|
|
512
|
+
|
|
513
|
+
getHTMLTextDir("en-US"); // "ltr"
|
|
514
|
+
getHTMLTextDir("ar"); // "rtl"
|
|
515
|
+
getHTMLTextDir("he"); // "rtl"
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
## Utilitários de Tratamento de Conteúdo
|
|
519
|
+
|
|
540
520
|
### `list(values, options?)`
|
|
541
521
|
|
|
542
522
|
Formata um array de valores em uma string de lista localizada usando `Intl.ListFormat`.
|
|
@@ -556,42 +536,6 @@ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge
|
|
|
556
536
|
list([1, 2, 3], { type: "unit" }); // "1, 2, 3"
|
|
557
537
|
```
|
|
558
538
|
|
|
559
|
-
## Notas
|
|
560
|
-
|
|
561
|
-
- Todos os helpers aceitam entradas do tipo `string`; elas são internamente convertidas para números ou datas.
|
|
562
|
-
- O locale padrão é o configurado em `internationalization.defaultLocale`, caso não seja fornecido.
|
|
563
|
-
- Essas utilidades são wrappers simples; para formatações avançadas, utilize diretamente as opções padrão do `Intl`.
|
|
564
|
-
|
|
565
|
-
## Pontos de entrada e re-exportações (`@index.ts`)
|
|
566
|
-
|
|
567
|
-
Os formatadores estão no pacote core e são re-exportados por pacotes de nível superior para manter as importações ergonômicas em diferentes runtimes:
|
|
568
|
-
|
|
569
|
-
Exemplos:
|
|
570
|
-
|
|
571
|
-
```ts
|
|
572
|
-
// Código da aplicação (recomendado)
|
|
573
|
-
import {
|
|
574
|
-
number,
|
|
575
|
-
currency,
|
|
576
|
-
date,
|
|
577
|
-
relativeTime,
|
|
578
|
-
units,
|
|
579
|
-
compact,
|
|
580
|
-
list,
|
|
581
|
-
Intl,
|
|
582
|
-
getLocaleName,
|
|
583
|
-
getLocaleLang,
|
|
584
|
-
getLocaleFromPath,
|
|
585
|
-
getPathWithoutLocale,
|
|
586
|
-
getLocalizedUrl,
|
|
587
|
-
getHTMLTextDir,
|
|
588
|
-
getContent,
|
|
589
|
-
getTranslation,
|
|
590
|
-
getIntlayer,
|
|
591
|
-
getIntlayerAsync,
|
|
592
|
-
} from "intlayer";
|
|
593
|
-
```
|
|
594
|
-
|
|
595
539
|
### React
|
|
596
540
|
|
|
597
541
|
Componentes cliente:
|
package/docs/pt/intlayer_CMS.md
CHANGED
|
@@ -253,28 +253,61 @@ A Sincronização ao Vivo permite que a sua aplicação reflita as alterações
|
|
|
253
253
|
|
|
254
254
|
Para o guia de configuração completo (ativação, início do servidor Live Sync, fluxo de trabalho de desenvolvimento local e restrições), consulte a [documentação do Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/live-sync.md).
|
|
255
255
|
|
|
256
|
-
|
|
256
|
+
### Instalação
|
|
257
257
|
|
|
258
|
-
|
|
258
|
+
```bash packageManager="npm"
|
|
259
|
+
npm install @intlayer/api
|
|
260
|
+
```
|
|
259
261
|
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
+
```bash packageManager="yarn"
|
|
263
|
+
yarn add @intlayer/api
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
```bash packageManager="pnpm"
|
|
267
|
+
pnpm add @intlayer/api
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
```bash packageManager="bun"
|
|
271
|
+
bun add @intlayer/api
|
|
262
272
|
```
|
|
263
273
|
|
|
264
|
-
|
|
274
|
+
### Como funciona: autenticador + endpoints
|
|
275
|
+
|
|
276
|
+
O SDK é dividido em **duas importações separadas** propositalmente, para manter seu bundle pequeno:
|
|
277
|
+
|
|
278
|
+
1. `createIntlayerCMS` — cria um **autenticador** leve. Ele apenas contém as credenciais e o token de acesso gerenciado; não sabe nada sobre nenhum domínio específico.
|
|
279
|
+
2. `dictionaryEndpoint`, `projectEndpoint`, … — **vinculadores de endpoint** por domínio, cada um importado de seu próprio subcaminho (`@intlayer/api/dictionary`, `@intlayer/api/project`, …). Você passa o autenticador para o endpoint que precisa.
|
|
265
280
|
|
|
266
|
-
|
|
281
|
+
Como cada endpoint é importado separadamente, seu bundle inclui apenas os domínios que você realmente usa — importar `dictionaryEndpoint` nunca puxa o cliente de projeto, IA ou qualquer outro domínio.
|
|
267
282
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
| **app** (dashboard) | `3000` | Interface CMS TanStack Start |
|
|
271
|
-
| **backend** (API) | `3100` | API REST Fastify |
|
|
272
|
-
| **MongoDB 7** | interno | Banco de dados principal (replica set de nó único) |
|
|
273
|
-
| **Redis 7** | interno | Filas de tarefas e cache |
|
|
274
|
-
| **MinIO** | `9000` (S3), `9001` (console) | Armazenamento de objetos compatível com S3 |
|
|
275
|
-
| **Mailpit** | `1025` (SMTP), `8025` (interface web) | Sumidouro local de e-mail transacional |
|
|
283
|
+
```typescript fileName="cms.ts" codeFormat="typescript"
|
|
284
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
276
285
|
|
|
277
|
-
|
|
286
|
+
// A configuração é opcional: quando omitida, as credenciais são lidas de
|
|
287
|
+
// `@intlayer/config/built`, que resolve as variáveis de ambiente
|
|
288
|
+
// INTLAYER_CLIENT_ID e INTLAYER_CLIENT_SECRET.
|
|
289
|
+
export const cmsAuthenticator = createIntlayerCMS();
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
> [!WARNING]
|
|
293
|
+
> As credenciais do CMS (`clientId` / `clientSecret`) concedem **acesso de escrita** ao seu conteúdo. Sempre crie o autenticador apenas no **lado do servidor** (server actions, route handlers, scripts, CI). Nunca importe para código do lado do cliente ou exponha suas credenciais ao navegador.
|
|
294
|
+
|
|
295
|
+
Se preferir não depender da configuração em tempo de build, passe as credenciais explicitamente:
|
|
296
|
+
|
|
297
|
+
```typescript fileName="cms.ts" codeFormat="typescript"
|
|
298
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
299
|
+
|
|
300
|
+
export const cmsAuthenticator = createIntlayerCMS({
|
|
301
|
+
editor: {
|
|
302
|
+
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
303
|
+
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
304
|
+
// Opcional, para backends auto-hospedados:
|
|
305
|
+
// backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
306
|
+
},
|
|
307
|
+
});
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
> Obtenha suas credenciais criando uma nova chave de acesso no [Intlayer Dashboard - Projects](https://app.intlayer.org/projects).
|
|
278
311
|
|
|
279
312
|
### Conectando seu projeto a uma instância auto-hospedada
|
|
280
313
|
|
|
@@ -366,6 +399,24 @@ Para uma referência completa de todas as variáveis de ambiente disponíveis e
|
|
|
366
399
|
|
|
367
400
|
---
|
|
368
401
|
|
|
402
|
+
## Live Sync
|
|
403
|
+
|
|
404
|
+
O Live Sync permite que seu aplicativo reflita as alterações de conteúdo do CMS em tempo de execução — sem necessidade de reconstrução ou reimplantação. Quando habilitado, as atualizações são transmitidas para um servidor Live Sync que atualiza os dicionários que seu aplicativo lê.
|
|
405
|
+
|
|
406
|
+
Para o guia de configuração completo (configuração, iniciando o servidor Live Sync, fluxo de trabalho de desenvolvimento local e restrições), consulte a [documentação do Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/live-sync.md).
|
|
407
|
+
|
|
408
|
+
## Auto-hospedagem
|
|
409
|
+
|
|
410
|
+
O Intlayer pode ser executado inteiramente em sua própria infraestrutura. Um comando único inicializa a pilha completa (dashboard, API, banco de dados, armazenamento de objetos e email) com Docker Compose:
|
|
411
|
+
|
|
412
|
+
```sh
|
|
413
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
Para o guia de configuração completo, referência de variáveis de ambiente, instruções de atualização e procedimentos de backup/restauração, consulte o [Guia de Auto-hospedagem](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/self_hosting.md).
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
369
420
|
## Depuração
|
|
370
421
|
|
|
371
422
|
Se encontrar problemas com o CMS, verifique o seguinte:
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-04-18
|
|
3
3
|
updatedAt: 2026-05-31
|
|
4
|
-
title: "Angular
|
|
5
|
-
description: "Sem mais i18next. O guia 2026 para criar uma aplicação Angular
|
|
4
|
+
title: "Angular 22 i18n - Guia completo para traduzir seu aplicativo"
|
|
5
|
+
description: "Sem mais i18next. O guia 2026 para criar uma aplicação Angular 22 multilíngue (i18n). Traduza com agentes de IA e otimize o tamanho do bundle, SEO e desempenho."
|
|
6
6
|
keywords:
|
|
7
7
|
- Internacionalização
|
|
8
8
|
- Documentação
|
|
@@ -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
|
-
# Traduza seu site Angular
|
|
34
|
+
# Traduza seu site Angular 22 (Vite) usando Intlayer | Internacionalização (i18n)
|
|
35
35
|
|
|
36
36
|
## Índice
|
|
37
37
|
|
|
@@ -94,7 +94,7 @@ Mais do que apenas uma solução i18n, o Intlayer fornece um **[editor visual] a
|
|
|
94
94
|
<Tab label="Código" value="code">
|
|
95
95
|
|
|
96
96
|
<iframe
|
|
97
|
-
src="https://ide.intlayer.org/aymericzip/intlayer-angular-
|
|
97
|
+
src="https://ide.intlayer.org/aymericzip/intlayer-angular-22-template?file=intlayer.config.ts"
|
|
98
98
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
99
99
|
title="Demo CodeSandbox - Como internacionalizar sua aplicação usando Intlayer"
|
|
100
100
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
@@ -105,7 +105,7 @@ Mais do que apenas uma solução i18n, o Intlayer fornece um **[editor visual] a
|
|
|
105
105
|
<Tab label="Demonstração" value="demo">
|
|
106
106
|
|
|
107
107
|
<iframe
|
|
108
|
-
src="https://intlayer-angular-
|
|
108
|
+
src="https://intlayer-angular-22-template.vercel.app/"
|
|
109
109
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
110
110
|
title="Demo - intlayer-angular-template"
|
|
111
111
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
@@ -115,7 +115,7 @@ Mais do que apenas uma solução i18n, o Intlayer fornece um **[editor visual] a
|
|
|
115
115
|
</Tab>
|
|
116
116
|
</Tabs>
|
|
117
117
|
|
|
118
|
-
Veja o [Modelo de Aplicação](https://github.com/aymericzip/intlayer-angular-
|
|
118
|
+
Veja o [Modelo de Aplicação](https://github.com/aymericzip/intlayer-angular-22-template) no GitHub.
|
|
119
119
|
|
|
120
120
|
<Steps>
|
|
121
121
|
|
|
@@ -203,7 +203,7 @@ export default config;
|
|
|
203
203
|
|
|
204
204
|
<Step number={3} title="Integrar o Intlayer na sua Configuração Angular">
|
|
205
205
|
|
|
206
|
-
Para integrar o Intlayer com o Angular CLI, você precisa usar um builder personalizado. Este guia assume que você está usando Vite/esbuild (padrão para projetos Angular
|
|
206
|
+
Para integrar o Intlayer com o Angular CLI, você precisa usar um builder personalizado. Este guia assume que você está usando Vite/esbuild (padrão para projetos Angular 22).
|
|
207
207
|
|
|
208
208
|
Primeiro, modifique seu `angular.json` para usar o construtor esbuild personalizado. Atualize as configurações `build` e `serve`:
|
|
209
209
|
|
|
@@ -28,7 +28,32 @@ history:
|
|
|
28
28
|
author: aymericzip
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
-
# Traduza
|
|
31
|
+
# Traduza seu website Astro + Lit usando Intlayer | Internacionalização (i18n)
|
|
32
|
+
|
|
33
|
+
<Tabs defaultTab="code">
|
|
34
|
+
<Tab label="Code" value="code">
|
|
35
|
+
|
|
36
|
+
<iframe
|
|
37
|
+
src="https://ide.intlayer.org/aymericzip/intlayer-astro-template?file=intlayer.config.ts"
|
|
38
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
39
|
+
title="Demo CodeSandbox - Como internacionalizar sua aplicação usando Intlayer"
|
|
40
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
41
|
+
loading="lazy"
|
|
42
|
+
/>
|
|
43
|
+
|
|
44
|
+
</Tab>
|
|
45
|
+
<Tab label="Demo" value="demo">
|
|
46
|
+
|
|
47
|
+
<iframe
|
|
48
|
+
src="https://intlayer-astro-template.vercel.app"
|
|
49
|
+
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
50
|
+
title="Demo - intlayer-astro-template"
|
|
51
|
+
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
52
|
+
loading="lazy"
|
|
53
|
+
/>
|
|
54
|
+
|
|
55
|
+
</Tab>
|
|
56
|
+
</Tabs>
|
|
32
57
|
|
|
33
58
|
## Índice
|
|
34
59
|
|
|
@@ -24,34 +24,7 @@ history:
|
|
|
24
24
|
author: aymericzip
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
#
|
|
28
|
-
|
|
29
|
-
<Tabs defaultTab="code">
|
|
30
|
-
<Tab label="Código" value="code">
|
|
31
|
-
|
|
32
|
-
<iframe
|
|
33
|
-
src="https://ide.intlayer.org/aymericzip/intlayer-next-14-template?file=intlayer.config.ts"
|
|
34
|
-
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
35
|
-
title="Demo CodeSandbox - Intlayer"
|
|
36
|
-
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
37
|
-
loading="lazy"
|
|
38
|
-
/>
|
|
39
|
-
|
|
40
|
-
</Tab>
|
|
41
|
-
<Tab label="Demo" value="demo">
|
|
42
|
-
|
|
43
|
-
<iframe
|
|
44
|
-
src="https://intlayer-next-14-template.vercel.app"
|
|
45
|
-
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
46
|
-
title="Demo - intlayer-next-14-template"
|
|
47
|
-
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
48
|
-
loading="lazy"
|
|
49
|
-
/>
|
|
50
|
-
|
|
51
|
-
</Tab>
|
|
52
|
-
</Tabs>
|
|
53
|
-
|
|
54
|
-
Veja [Application Template](https://github.com/aymericzip/intlayer-next-14-template) no GitHub.
|
|
27
|
+
# Traduzir seu website Next.js 14 e App Router usando Intlayer | Internacionalização (i18n)
|
|
55
28
|
|
|
56
29
|
## Índice
|
|
57
30
|
|
|
@@ -31,39 +31,7 @@ history:
|
|
|
31
31
|
author: aymericzip
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
# Traduza seu Next.js 15
|
|
35
|
-
|
|
36
|
-
<Tabs defaultTab="video">
|
|
37
|
-
<Tab label="Vídeo" value="video">
|
|
38
|
-
|
|
39
|
-
<iframe title="Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&origin=https://intlayer.org&controls=0&rel=1"/>
|
|
40
|
-
|
|
41
|
-
</Tab>
|
|
42
|
-
<Tab label="Código" value="code">
|
|
43
|
-
|
|
44
|
-
<iframe
|
|
45
|
-
src="https://ide.intlayer.org/aymericzip/intlayer-next-15-template?file=intlayer.config.ts"
|
|
46
|
-
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
47
|
-
title="Demo CodeSandbox - Intlayer"
|
|
48
|
-
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
49
|
-
loading="lazy"
|
|
50
|
-
/>
|
|
51
|
-
|
|
52
|
-
</Tab>
|
|
53
|
-
<Tab label="Demo" value="demo">
|
|
54
|
-
|
|
55
|
-
<iframe
|
|
56
|
-
src="https://next-15-intlayer-template-xt83.vercel.app"
|
|
57
|
-
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
58
|
-
title="Demo - intlayer-next-15-template"
|
|
59
|
-
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
60
|
-
loading="lazy"
|
|
61
|
-
/>
|
|
62
|
-
|
|
63
|
-
</Tab>
|
|
64
|
-
</Tabs>
|
|
65
|
-
|
|
66
|
-
Veja o [Modelo de Aplicação](https://github.com/aymericzip/intlayer-next-15-template) no GitHub.
|
|
34
|
+
# Traduza seu site Next.js 15 usando Intlayer | Internacionalização (i18n)
|
|
67
35
|
|
|
68
36
|
## Tabela de Conteúdos
|
|
69
37
|
|