@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
|
@@ -64,199 +64,52 @@ export default firstDictionary;
|
|
|
64
64
|
}
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
### Référencement avec Nest
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
<Tab label="React" value="react">
|
|
69
|
+
Maintenant, créez un autre module de contenu qui utilise la fonction `nest` pour référencer le contenu ci-dessus. Vous pouvez référencer l'intégralité du contenu ou une valeur imbriquée spécifique :
|
|
71
70
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
|
|
75
|
-
import type { FC } from "react";
|
|
76
|
-
import { useIntlayer } from "react-intlayer";
|
|
77
|
-
|
|
78
|
-
const NestComponent: FC = () => {
|
|
79
|
-
const { fullNestedContent, partialNestedContent } = useIntlayer(
|
|
80
|
-
"key_of_my_second_dictionary"
|
|
81
|
-
);
|
|
71
|
+
```typescript fileName="secondDictionary.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
72
|
+
import { nest, type Dictionary } from "intlayer";
|
|
82
73
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
<Tab label="Next.js" value="nextjs">
|
|
96
|
-
|
|
97
|
-
To use nested content in Next.js Client Components, retrieve it via the `useIntlayer` hook. Here's an example:
|
|
98
|
-
|
|
99
|
-
```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
|
|
100
|
-
"use client";
|
|
101
|
-
|
|
102
|
-
import type { FC } from "react";
|
|
103
|
-
import { useIntlayer } from "next-intlayer";
|
|
104
|
-
|
|
105
|
-
const NestComponent: FC = () => {
|
|
106
|
-
const { fullNestedContent, partialNestedContent } = useIntlayer(
|
|
107
|
-
"key_of_my_second_dictionary"
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
return (
|
|
111
|
-
<div>
|
|
112
|
-
<p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
|
|
113
|
-
<p>Partial Nested Value: {partialNestedContent}</p>
|
|
114
|
-
</div>
|
|
115
|
-
);
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
export default NestComponent;
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
</Tab>
|
|
122
|
-
<Tab label="Vue" value="vue">
|
|
123
|
-
|
|
124
|
-
To use nested content in Vue components, retrieve it via the `useIntlayer` hook. Here's an example:
|
|
125
|
-
|
|
126
|
-
```vue fileName="**/*.vue"
|
|
127
|
-
<script setup lang="ts">
|
|
128
|
-
import { useIntlayer } from "vue-intlayer";
|
|
129
|
-
|
|
130
|
-
const { fullNestedContent, partialNestedContent } = useIntlayer(
|
|
131
|
-
"key_of_my_second_dictionary"
|
|
132
|
-
);
|
|
133
|
-
</script>
|
|
134
|
-
|
|
135
|
-
<template>
|
|
136
|
-
<div>
|
|
137
|
-
<p>Full Nested Content: {{ JSON.stringify(fullNestedContent) }}</p>
|
|
138
|
-
<p>Partial Nested Value: {{ partialNestedContent }}</p>
|
|
139
|
-
</div>
|
|
140
|
-
</template>
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
</Tab>
|
|
144
|
-
<Tab label="Svelte" value="svelte">
|
|
145
|
-
|
|
146
|
-
To use nested content in Svelte components, retrieve it via the `useIntlayer` hook. The store is accessed with `$`. Here's an example:
|
|
147
|
-
|
|
148
|
-
```svelte fileName="**/*.svelte"
|
|
149
|
-
<script lang="ts">
|
|
150
|
-
import { useIntlayer } from "svelte-intlayer";
|
|
151
|
-
|
|
152
|
-
const content = useIntlayer("key_of_my_second_dictionary");
|
|
153
|
-
</script>
|
|
154
|
-
|
|
155
|
-
<div>
|
|
156
|
-
<p>Full Nested Content: {JSON.stringify($content.fullNestedContent)}</p>
|
|
157
|
-
<p>Partial Nested Value: {$content.partialNestedContent}</p>
|
|
158
|
-
</div>
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
</Tab>
|
|
162
|
-
<Tab label="Preact" value="preact">
|
|
163
|
-
|
|
164
|
-
To use nested content in Preact components, retrieve it via the `useIntlayer` hook. Here's an example:
|
|
165
|
-
|
|
166
|
-
```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
|
|
167
|
-
import type { FC } from "preact";
|
|
168
|
-
import { useIntlayer } from "preact-intlayer";
|
|
169
|
-
|
|
170
|
-
const NestComponent: FC = () => {
|
|
171
|
-
const { fullNestedContent, partialNestedContent } = useIntlayer(
|
|
172
|
-
"key_of_my_second_dictionary"
|
|
173
|
-
);
|
|
174
|
-
|
|
175
|
-
return (
|
|
176
|
-
<div>
|
|
177
|
-
<p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
|
|
178
|
-
<p>Partial Nested Value: {partialNestedContent}</p>
|
|
179
|
-
</div>
|
|
180
|
-
);
|
|
181
|
-
};
|
|
182
|
-
|
|
183
|
-
export default NestComponent;
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
</Tab>
|
|
187
|
-
<Tab label="Solid" value="solid">
|
|
188
|
-
|
|
189
|
-
To use nested content in SolidJS components, retrieve it via the `useIntlayer` hook. Here's an example:
|
|
190
|
-
|
|
191
|
-
```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
|
|
192
|
-
import type { Component } from "solid-js";
|
|
193
|
-
import { useIntlayer } from "solid-intlayer";
|
|
194
|
-
|
|
195
|
-
const NestComponent: Component = () => {
|
|
196
|
-
const { fullNestedContent, partialNestedContent } = useIntlayer(
|
|
197
|
-
"key_of_my_second_dictionary"
|
|
198
|
-
);
|
|
199
|
-
|
|
200
|
-
return (
|
|
201
|
-
<div>
|
|
202
|
-
<p>Full Nested Content: {JSON.stringify(fullNestedContent)}</p>
|
|
203
|
-
<p>Partial Nested Value: {partialNestedContent}</p>
|
|
204
|
-
</div>
|
|
205
|
-
);
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
export default NestComponent;
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
</Tab>
|
|
212
|
-
<Tab label="Angular" value="angular">
|
|
213
|
-
|
|
214
|
-
To use nested content in Angular components, retrieve it via the `useIntlayer` hook. Here's an example:
|
|
215
|
-
|
|
216
|
-
```typescript fileName="app.component.ts" codeFormat="typescript"
|
|
217
|
-
import { Component } from "@angular/core";
|
|
218
|
-
import { useIntlayer } from "angular-intlayer";
|
|
74
|
+
const myNestingContent = {
|
|
75
|
+
key: "key_of_my_second_dictionary",
|
|
76
|
+
content: {
|
|
77
|
+
// Référence l'intégralité du dictionnaire :
|
|
78
|
+
fullNestedContent: nest("key_of_my_first_dictionary"),
|
|
79
|
+
// Référence une valeur imbriquée spécifique :
|
|
80
|
+
partialNestedContent: nest(
|
|
81
|
+
"key_of_my_first_dictionary",
|
|
82
|
+
"subContent.contentNumber"
|
|
83
|
+
),
|
|
84
|
+
},
|
|
85
|
+
} satisfies Dictionary;
|
|
219
86
|
|
|
220
|
-
|
|
221
|
-
selector: "app-nest",
|
|
222
|
-
template: `
|
|
223
|
-
<div>
|
|
224
|
-
<p>
|
|
225
|
-
Full Nested Content: {{ JSON.stringify(content().fullNestedContent) }}
|
|
226
|
-
</p>
|
|
227
|
-
<p>Partial Nested Value: {{ content().partialNestedContent }}</p>
|
|
228
|
-
</div>
|
|
229
|
-
`,
|
|
230
|
-
})
|
|
231
|
-
export class NestComponent {
|
|
232
|
-
content = useIntlayer("key_of_my_second_dictionary");
|
|
233
|
-
JSON = JSON;
|
|
234
|
-
}
|
|
87
|
+
export default myNestingContent;
|
|
235
88
|
```
|
|
236
89
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
90
|
+
```json fileName="secondDictionary.content.json" contentDeclarationFormat="json"
|
|
91
|
+
{
|
|
92
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
93
|
+
"key": "key_of_my_second_dictionary",
|
|
94
|
+
"content": {
|
|
95
|
+
"fullNestedContent": {
|
|
96
|
+
"nodeType": "nested",
|
|
97
|
+
"nested": {
|
|
98
|
+
"dictionaryKey": "key_of_my_first_dictionary"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"partialNestedContent": {
|
|
102
|
+
"nodeType": "nested",
|
|
103
|
+
"nested": {
|
|
104
|
+
"dictionaryKey": "key_of_my_first_dictionary",
|
|
105
|
+
"path": "subContent.contentNumber"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
251
108
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
// Initial render
|
|
255
|
-
document.getElementById("nested")!.textContent = content.partialNestedContent;
|
|
109
|
+
}
|
|
256
110
|
```
|
|
257
111
|
|
|
258
|
-
|
|
259
|
-
</Tabs>
|
|
112
|
+
En tant que deuxième paramètre, vous pouvez spécifier un chemin vers une valeur imbriquée dans ce contenu. Lorsqu'aucun chemin n'est fourni, l'intégralité du contenu du dictionnaire référencé est retournée.
|
|
260
113
|
|
|
261
114
|
## Utilisation de l'imbrication avec React Intlayer
|
|
262
115
|
|
package/docs/fr/formatters.md
CHANGED
|
@@ -52,34 +52,6 @@ author: aymericzip
|
|
|
52
52
|
|
|
53
53
|
Intlayer fournit un ensemble d'aides légères construites sur les API natives `Intl`, ainsi qu'un wrapper `Intl` mis en cache pour éviter de reconstruire à plusieurs reprises des formatteurs lourds. Ces utilitaires sont entièrement sensibles à la locale et peuvent être utilisés depuis le package principal `intlayer`.
|
|
54
54
|
|
|
55
|
-
### Importation
|
|
56
|
-
|
|
57
|
-
```ts
|
|
58
|
-
import {
|
|
59
|
-
Intl,
|
|
60
|
-
number,
|
|
61
|
-
percentage,
|
|
62
|
-
currency,
|
|
63
|
-
date,
|
|
64
|
-
relativeTime,
|
|
65
|
-
units,
|
|
66
|
-
compact,
|
|
67
|
-
list,
|
|
68
|
-
getLocaleName,
|
|
69
|
-
getLocaleLang,
|
|
70
|
-
getLocaleFromPath,
|
|
71
|
-
getPathWithoutLocale,
|
|
72
|
-
getLocalizedUrl,
|
|
73
|
-
getHTMLTextDir,
|
|
74
|
-
getContent,
|
|
75
|
-
getTranslation,
|
|
76
|
-
getIntlayer,
|
|
77
|
-
getIntlayerAsync,
|
|
78
|
-
} from "intlayer";
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Si vous utilisez React, des hooks sont également disponibles ; voir `react-intlayer/format`.
|
|
82
|
-
|
|
83
55
|
## Intl mis en cache
|
|
84
56
|
|
|
85
57
|
L'`Intl` exporté est un wrapper léger et mis en cache autour de l'`Intl` global. Il mémorise les instances de `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, `ListFormat`, `DisplayNames`, `Collator` et `PluralRules`, ce qui évite de reconstruire plusieurs fois le même formateur.
|
|
@@ -116,55 +88,6 @@ pluralRules.select(1); // "one"
|
|
|
116
88
|
pluralRules.select(2); // "other"
|
|
117
89
|
```
|
|
118
90
|
|
|
119
|
-
## Utilitaires Intl supplémentaires
|
|
120
|
-
|
|
121
|
-
Au-delà des helpers de formatage, vous pouvez également utiliser directement le wrapper Intl mis en cache pour d'autres fonctionnalités Intl :
|
|
122
|
-
|
|
123
|
-
### `Intl.DisplayNames`
|
|
124
|
-
|
|
125
|
-
Pour les noms localisés des langues, régions, devises et scripts :
|
|
126
|
-
|
|
127
|
-
```ts
|
|
128
|
-
import { Intl } from "intlayer";
|
|
129
|
-
|
|
130
|
-
const languageNames = new Intl.DisplayNames("en", { type: "language" });
|
|
131
|
-
languageNames.of("fr"); // "French"
|
|
132
|
-
|
|
133
|
-
const regionNames = new Intl.DisplayNames("fr", { type: "region" });
|
|
134
|
-
regionNames.of("US"); // "États-Unis"
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
### `Intl.Collator`
|
|
138
|
-
|
|
139
|
-
Pour la comparaison et le tri de chaînes sensibles à la locale :
|
|
140
|
-
|
|
141
|
-
```ts
|
|
142
|
-
import { Intl } from "intlayer";
|
|
143
|
-
|
|
144
|
-
const collator = new Intl.Collator("de", {
|
|
145
|
-
sensitivity: "base",
|
|
146
|
-
numeric: true,
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
const words = ["äpfel", "zebra", "100", "20"];
|
|
150
|
-
words.sort(collator.compare); // ["20", "100", "äpfel", "zebra"]
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### `Intl.PluralRules`
|
|
154
|
-
|
|
155
|
-
Pour déterminer les formes plurielles dans différentes locales :
|
|
156
|
-
|
|
157
|
-
```ts
|
|
158
|
-
import { Intl } from "intlayer";
|
|
159
|
-
|
|
160
|
-
const pluralRules = new Intl.PluralRules("ar");
|
|
161
|
-
pluralRules.select(0); // "zero"
|
|
162
|
-
pluralRules.select(1); // "one"
|
|
163
|
-
pluralRules.select(2); // "two"
|
|
164
|
-
pluralRules.select(3); // "few"
|
|
165
|
-
pluralRules.select(11); // "many"
|
|
166
|
-
```
|
|
167
|
-
|
|
168
91
|
## Utilitaires de locale
|
|
169
92
|
|
|
170
93
|
### `getLocaleName(displayLocale, targetLocale?)`
|
|
@@ -182,20 +105,6 @@ getLocaleName("de", "es"); // "alemán"
|
|
|
182
105
|
- **displayLocale** : La locale pour laquelle obtenir le nom
|
|
183
106
|
- **targetLocale** : La locale dans laquelle afficher le nom (par défaut displayLocale)
|
|
184
107
|
|
|
185
|
-
### `getLocaleLang(locale?)`
|
|
186
|
-
|
|
187
|
-
Extrait le code langue d'une chaîne locale :
|
|
188
|
-
|
|
189
|
-
```ts
|
|
190
|
-
import { getLocaleLang } from "intlayer";
|
|
191
|
-
|
|
192
|
-
getLocaleLang("en-US"); // "en"
|
|
193
|
-
getLocaleLang("fr-CA"); // "fr"
|
|
194
|
-
getLocaleLang("de"); // "de"
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
- **locale** : La locale dont extraire la langue (par défaut la locale courante)
|
|
198
|
-
|
|
199
108
|
### `getLocaleFromPath(inputUrl)`
|
|
200
109
|
|
|
201
110
|
Extrait le segment de locale d'une URL ou d'un chemin :
|
|
@@ -212,22 +121,6 @@ getLocaleFromPath("https://example.com/es/about"); // "es"
|
|
|
212
121
|
- **inputUrl** : La chaîne complète de l'URL ou le chemin à traiter
|
|
213
122
|
- **returns** : La locale détectée ou la locale par défaut si aucune locale n'est trouvée
|
|
214
123
|
|
|
215
|
-
### `getPathWithoutLocale(inputUrl, locales?)`
|
|
216
|
-
|
|
217
|
-
Supprime le segment de locale d'une URL ou d'un chemin :
|
|
218
|
-
|
|
219
|
-
```ts
|
|
220
|
-
import { getPathWithoutLocale } from "intlayer";
|
|
221
|
-
|
|
222
|
-
getPathWithoutLocale("/en/dashboard"); // "/dashboard"
|
|
223
|
-
getPathWithoutLocale("/fr/dashboard"); // "/dashboard"
|
|
224
|
-
getPathWithoutLocale("https://example.com/en/about"); // "https://example.com/about"
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
- **inputUrl** : La chaîne complète de l'URL ou le chemin à traiter
|
|
228
|
-
- **locales** : Tableau optionnel des locales supportées (par défaut les locales configurées)
|
|
229
|
-
- **returns** : L’URL sans le segment de locale
|
|
230
|
-
|
|
231
124
|
### `getLocalizedUrl(url, currentLocale, locales?, defaultLocale?, prefixDefault?)`
|
|
232
125
|
|
|
233
126
|
Génère une URL localisée pour la locale courante :
|
|
@@ -282,25 +175,6 @@ number("1000000", { locale: "fr" }); // "1 000 000"
|
|
|
282
175
|
number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
|
|
283
176
|
```
|
|
284
177
|
|
|
285
|
-
### `percentage(value, options?)`
|
|
286
|
-
|
|
287
|
-
Formate un nombre en chaîne de pourcentage.
|
|
288
|
-
|
|
289
|
-
Comportement : les valeurs supérieures à 1 sont interprétées comme des pourcentages entiers et normalisées (par exemple, `25` → `25%`, `0.25` → `25%`).
|
|
290
|
-
|
|
291
|
-
- **value** : `number | string`
|
|
292
|
-
- **options** : `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
293
|
-
|
|
294
|
-
Exemples :
|
|
295
|
-
|
|
296
|
-
```ts
|
|
297
|
-
import { percentage } from "intlayer";
|
|
298
|
-
|
|
299
|
-
percentage(0.25); // "25%"
|
|
300
|
-
percentage(25); // "25%"
|
|
301
|
-
percentage(0.237, { minimumFractionDigits: 1 }); // "23,7%"
|
|
302
|
-
```
|
|
303
|
-
|
|
304
178
|
### `currency(value, options?)`
|
|
305
179
|
|
|
306
180
|
Formate une valeur en devise localisée. Par défaut en `USD` avec deux chiffres fractionnaires.
|
|
@@ -358,6 +232,10 @@ const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
|
|
|
358
232
|
relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "il y a 2 heures"
|
|
359
233
|
```
|
|
360
234
|
|
|
235
|
+
## Vanilla JS / Node.js Formatters
|
|
236
|
+
|
|
237
|
+
Pour les contextes sans framework, importez les formatters directement depuis `intlayer`. Notez que vous devez passer la locale manuellement.
|
|
238
|
+
|
|
361
239
|
### `units(value, options?)`
|
|
362
240
|
|
|
363
241
|
Formate une valeur numérique en chaîne localisée avec une unité en utilisant `Intl.NumberFormat` avec `style: 'unit'`.
|
|
@@ -376,6 +254,89 @@ units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kil
|
|
|
376
254
|
units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B" (dépendant de la locale)
|
|
377
255
|
```
|
|
378
256
|
|
|
257
|
+
### Fonctions de formatage
|
|
258
|
+
|
|
259
|
+
#### `number(value, options?)`
|
|
260
|
+
|
|
261
|
+
Formate une valeur numérique en utilisant le groupement et les décimales tenant compte de la locale.
|
|
262
|
+
|
|
263
|
+
- **value**: `number | string`
|
|
264
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
265
|
+
|
|
266
|
+
```ts
|
|
267
|
+
number(123456.789); // "123,456.789" (en en-US)
|
|
268
|
+
number("1000000", { locale: "fr" }); // "1 000 000"
|
|
269
|
+
number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
#### `percentage(value, options?)`
|
|
273
|
+
|
|
274
|
+
Formate un nombre en tant que chaîne de caractères de pourcentage. Les valeurs supérieures à 1 sont normalisées (par exemple, `25` → `25%`, `0.25` → `25%`).
|
|
275
|
+
|
|
276
|
+
- **value**: `number | string`
|
|
277
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
278
|
+
|
|
279
|
+
```ts
|
|
280
|
+
percentage(0.25); // "25%"
|
|
281
|
+
percentage(25); // "25%"
|
|
282
|
+
percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
#### `currency(value, options?)`
|
|
286
|
+
|
|
287
|
+
Formate une valeur en devise localisée. Par défaut `USD`.
|
|
288
|
+
|
|
289
|
+
- **value**: `number | string`
|
|
290
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
291
|
+
- Courant: `currency`, `currencyDisplay` (`"symbol" | "code" | "name"`)
|
|
292
|
+
|
|
293
|
+
```ts
|
|
294
|
+
currency(1234.5, { currency: "EUR" }); // "€1,234.50"
|
|
295
|
+
currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
#### `date(date, optionsOrPreset?)`
|
|
299
|
+
|
|
300
|
+
Formate une valeur de date/heure.
|
|
301
|
+
|
|
302
|
+
- **date**: `Date | string | number`
|
|
303
|
+
- **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` ou preset: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
|
|
304
|
+
|
|
305
|
+
```ts
|
|
306
|
+
date(new Date(), "short"); // par exemple, "08/02/25, 14:30"
|
|
307
|
+
date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
#### `relativeTime(from, to?, options?)`
|
|
311
|
+
|
|
312
|
+
Formate le temps relatif entre deux instants.
|
|
313
|
+
|
|
314
|
+
- **from**: `Date | string | number`
|
|
315
|
+
- **to**: `Date | string | number` (par défaut `new Date()`)
|
|
316
|
+
- **options**: `{ locale?, unit?, numeric?, style? }`
|
|
317
|
+
|
|
318
|
+
```ts
|
|
319
|
+
const now = new Date();
|
|
320
|
+
const in3Days = new Date(now.getTime() + 3 * 864e5);
|
|
321
|
+
relativeTime(now, in3Days, { unit: "day" }); // "in 3 days"
|
|
322
|
+
|
|
323
|
+
const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
|
|
324
|
+
relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2 hours ago"
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
#### `units(value, options?)`
|
|
328
|
+
|
|
329
|
+
Formate une valeur numérique avec une unité.
|
|
330
|
+
|
|
331
|
+
- **value**: `number | string`
|
|
332
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
333
|
+
- Common: `unit` (par exemple, `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
|
|
334
|
+
|
|
335
|
+
```ts
|
|
336
|
+
units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
|
|
337
|
+
units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B"
|
|
338
|
+
```
|
|
339
|
+
|
|
379
340
|
#### `compact(value, options?)`
|
|
380
341
|
|
|
381
342
|
Formate un nombre en utilisant la notation compacte.
|
|
@@ -547,6 +508,8 @@ getHTMLTextDir("ar"); // "rtl"
|
|
|
547
508
|
getHTMLTextDir("he"); // "rtl"
|
|
548
509
|
```
|
|
549
510
|
|
|
511
|
+
## Utilitaires de gestion du contenu
|
|
512
|
+
|
|
550
513
|
### `compact(value, options?)`
|
|
551
514
|
|
|
552
515
|
Formate un nombre en utilisant la notation compacte (par exemple, `1.2K`, `1M`).
|
|
@@ -582,116 +545,6 @@ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge
|
|
|
582
545
|
list([1, 2, 3], { type: "unit" }); // "1, 2, 3"
|
|
583
546
|
```
|
|
584
547
|
|
|
585
|
-
## Points d'entrée et réexportations (`@index.ts`)
|
|
586
|
-
|
|
587
|
-
Les formateurs résident dans le package core et sont réexportés depuis des packages de niveau supérieur pour garder des imports ergonomiques à travers les environnements d'exécution :
|
|
588
|
-
|
|
589
|
-
Exemples :
|
|
590
|
-
|
|
591
|
-
```ts
|
|
592
|
-
// Code de l'application (recommandé)
|
|
593
|
-
import {
|
|
594
|
-
number,
|
|
595
|
-
currency,
|
|
596
|
-
date,
|
|
597
|
-
relativeTime,
|
|
598
|
-
units,
|
|
599
|
-
compact,
|
|
600
|
-
list,
|
|
601
|
-
Intl,
|
|
602
|
-
getLocaleName,
|
|
603
|
-
getLocaleLang,
|
|
604
|
-
getLocaleFromPath,
|
|
605
|
-
getPathWithoutLocale,
|
|
606
|
-
getLocalizedUrl,
|
|
607
|
-
getHTMLTextDir,
|
|
608
|
-
getContent,
|
|
609
|
-
getTranslation,
|
|
610
|
-
getIntlayer,
|
|
611
|
-
getIntlayerAsync,
|
|
612
|
-
} from "intlayer";
|
|
613
|
-
```
|
|
614
|
-
|
|
615
|
-
### React
|
|
616
|
-
|
|
617
|
-
Composants client :
|
|
618
|
-
|
|
619
|
-
```tsx
|
|
620
|
-
import {
|
|
621
|
-
useNumber,
|
|
622
|
-
useCurrency,
|
|
623
|
-
useDate,
|
|
624
|
-
usePercentage,
|
|
625
|
-
useCompact,
|
|
626
|
-
useList,
|
|
627
|
-
useRelativeTime,
|
|
628
|
-
useUnit,
|
|
629
|
-
} from "react-intlayer/format";
|
|
630
|
-
// ou dans les applications Next.js
|
|
631
|
-
import {
|
|
632
|
-
useNumber,
|
|
633
|
-
useCurrency,
|
|
634
|
-
useDate,
|
|
635
|
-
usePercentage,
|
|
636
|
-
useCompact,
|
|
637
|
-
useList,
|
|
638
|
-
useRelativeTime,
|
|
639
|
-
useUnit,
|
|
640
|
-
} from "next-intlayer/client/format";
|
|
641
|
-
|
|
642
|
-
const MyComponent = () => {
|
|
643
|
-
const number = useNumber();
|
|
644
|
-
const currency = useCurrency();
|
|
645
|
-
const date = useDate();
|
|
646
|
-
const percentage = usePercentage();
|
|
647
|
-
const compact = useCompact();
|
|
648
|
-
const list = useList();
|
|
649
|
-
const relativeTime = useRelativeTime();
|
|
650
|
-
const unit = useUnit();
|
|
651
|
-
|
|
652
|
-
return (
|
|
653
|
-
<div>
|
|
654
|
-
<p>{number(123456.789)}</p>
|
|
655
|
-
<p>{currency(1234.5, { currency: "EUR" })}</p>
|
|
656
|
-
<p>{date(new Date(), "short")}</p>
|
|
657
|
-
<p>{percentage(0.25)}</p>
|
|
658
|
-
<p>{compact(1200)}</p>
|
|
659
|
-
<p>{list(["apple", "banana", "orange"])}</p>
|
|
660
|
-
<p>{relativeTime(new Date(), new Date() + 1000)}</p>
|
|
661
|
-
<p>{unit(123456.789, { unit: "kilometer" })}</p>
|
|
662
|
-
</div>
|
|
663
|
-
);
|
|
664
|
-
};
|
|
665
|
-
```
|
|
666
|
-
|
|
667
|
-
Composants serveur (ou runtime React Server) :
|
|
668
|
-
|
|
669
|
-
```ts
|
|
670
|
-
import {
|
|
671
|
-
useNumber,
|
|
672
|
-
useCurrency,
|
|
673
|
-
useDate,
|
|
674
|
-
usePercentage,
|
|
675
|
-
useCompact,
|
|
676
|
-
useList,
|
|
677
|
-
useRelativeTime,
|
|
678
|
-
useUnit,
|
|
679
|
-
} from "react-intlayer/server/format";
|
|
680
|
-
// ou dans les applications Next.js
|
|
681
|
-
import {
|
|
682
|
-
useNumber,
|
|
683
|
-
useCurrency,
|
|
684
|
-
useDate,
|
|
685
|
-
usePercentage,
|
|
686
|
-
useCompact,
|
|
687
|
-
useList,
|
|
688
|
-
useRelativeTime,
|
|
689
|
-
useUnit,
|
|
690
|
-
} from "next-intlayer/server/format";
|
|
691
|
-
```
|
|
692
|
-
|
|
693
|
-
> Ces hooks prendront en compte la locale depuis le `IntlayerProvider` ou `IntlayerServerProvider`
|
|
694
|
-
|
|
695
548
|
### Vue
|
|
696
549
|
|
|
697
550
|
Composants client :
|
|
@@ -710,3 +563,9 @@ import {
|
|
|
710
563
|
```
|
|
711
564
|
|
|
712
565
|
> Ces composables prendront en compte la locale depuis le `IntlayerProvider` injecté
|
|
566
|
+
|
|
567
|
+
## Notes
|
|
568
|
+
|
|
569
|
+
- Tous les helpers acceptent des entrées `string` ; elles sont converties en nombres ou dates en interne.
|
|
570
|
+
- La locale par défaut est votre `internationalization.defaultLocale` configurée si elle n'est pas fournie.
|
|
571
|
+
- Ces utilitaires sont des wrappers minimalistes ; pour un formatage avancé, transmettez les options `Intl` standard.
|