@intlayer/docs 9.1.3 → 9.2.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/rag_powered_documentation_assistant.md +7 -0
- package/blog/de/rag_powered_documentation_assistant.md +6 -0
- package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
- package/blog/es/rag_powered_documentation_assistant.md +7 -0
- package/blog/fr/i18n_meaning.md +7 -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/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
- package/blog/hi/rag_powered_documentation_assistant.md +7 -0
- package/blog/id/rag_powered_documentation_assistant.md +6 -0
- package/blog/it/rag_powered_documentation_assistant.md +6 -0
- package/blog/ja/rag_powered_documentation_assistant.md +7 -0
- package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
- package/blog/ko/rag_powered_documentation_assistant.md +6 -0
- package/blog/pl/rag_powered_documentation_assistant.md +6 -0
- package/blog/pt/rag_powered_documentation_assistant.md +6 -0
- 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/rag_powered_documentation_assistant.md +6 -0
- package/blog/vi/rag_powered_documentation_assistant.md +6 -0
- 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/generated/blog.entry.cjs +27 -27
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +234 -214
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +17 -17
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +2 -2
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +27 -27
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +234 -214
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +17 -17
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +2 -2
- package/dist/esm/generated/legal.entry.mjs.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/docs/ar/analytics.md +222 -0
- package/docs/ar/autoFill.md +28 -9
- 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/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/configuration.md +25 -8
- package/docs/bn/intlayer_with_angular_21.md +9 -9
- 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/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/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/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-GB/analytics.md +222 -0
- package/docs/en-GB/autoFill.md +26 -7
- 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/configuration.md +25 -8
- package/docs/nl/intlayer_with_angular_21.md +9 -9
- package/docs/pl/analytics.md +220 -0
- 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/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/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/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/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/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/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/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/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/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/configuration.md +25 -8
- package/docs/ur/intlayer_with_angular_21.md +9 -9
- package/docs/vi/analytics.md +222 -0
- 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/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/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/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/intlayer_with_angular_21.md +7 -7
- package/package.json +6 -6
- package/src/generated/blog.entry.ts +27 -27
- package/src/generated/docs.entry.ts +234 -214
- package/src/generated/frequentQuestions.entry.ts +17 -17
- package/src/generated/legal.entry.ts +2 -2
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.
|
package/docs/fr/intlayer_CMS.md
CHANGED
|
@@ -253,28 +253,61 @@ La synchronisation en direct permet à votre application de refléter les modifi
|
|
|
253
253
|
|
|
254
254
|
Pour le guide de configuration complet (activation, démarrage du serveur Live Sync, flux de travail en développement local et contraintes), consultez la [documentation Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/live-sync.md).
|
|
255
255
|
|
|
256
|
-
|
|
256
|
+
### Installation
|
|
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
|
+
### Fonctionnement : authenticator + endpoints
|
|
275
|
+
|
|
276
|
+
Le SDK est divisé en **deux imports distincts** à dessein, pour maintenir la taille de votre bundle réduite :
|
|
277
|
+
|
|
278
|
+
1. `createIntlayerCMS` — crée un **authenticator** léger. Il ne transporte que les credentials et le token d'accès géré ; il ne connaît rien sur aucun domaine spécifique.
|
|
279
|
+
2. `dictionaryEndpoint`, `projectEndpoint`, … — des **endpoint binders** par domaine, chacun importé depuis son propre chemin (`@intlayer/api/dictionary`, `@intlayer/api/project`, …). Vous passez l'authenticator à l'endpoint dont vous avez besoin.
|
|
280
|
+
|
|
281
|
+
Parce que chaque endpoint est importé séparément, votre bundle inclut uniquement les domaines que vous utilisez réellement — importer `dictionaryEndpoint` ne tire jamais le client du projet, de l'IA ou d'un autre domaine.
|
|
282
|
+
|
|
283
|
+
```typescript fileName="cms.ts" codeFormat="typescript"
|
|
284
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
285
|
+
|
|
286
|
+
// La configuration est optionnelle : lorsqu'elle est omise, les credentials sont lus depuis
|
|
287
|
+
// `@intlayer/config/built`, qui résout les variables d'environnement INTLAYER_CLIENT_ID et
|
|
288
|
+
// INTLAYER_CLIENT_SECRET.
|
|
289
|
+
export const cmsAuthenticator = createIntlayerCMS();
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
> [!WARNING]
|
|
293
|
+
> Les credentials du CMS (`clientId` / `clientSecret`) accordent un **accès en écriture** à votre contenu. Ne créez l'authenticator que du **côté serveur** (server actions, route handlers, scripts, CI). Ne l'importez jamais dans du code côté client ni n'exposez vos credentials au navigateur.
|
|
294
|
+
|
|
295
|
+
Si vous préférez ne pas vous fier à la configuration au moment de la construction, passez les credentials explicitement :
|
|
265
296
|
|
|
266
|
-
|
|
297
|
+
```typescript fileName="cms.ts" codeFormat="typescript"
|
|
298
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
267
299
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
300
|
+
export const cmsAuthenticator = createIntlayerCMS({
|
|
301
|
+
editor: {
|
|
302
|
+
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
303
|
+
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
304
|
+
// Optionnel, pour les backends auto-hébergés :
|
|
305
|
+
// backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
306
|
+
},
|
|
307
|
+
});
|
|
308
|
+
```
|
|
276
309
|
|
|
277
|
-
|
|
310
|
+
> Obtenez vos credentials en créant une nouvelle clé d'accès dans le [Tableau de bord Intlayer - Projets](https://app.intlayer.org/projects).
|
|
278
311
|
|
|
279
312
|
### Connecter votre projet à une instance auto-hébergée
|
|
280
313
|
|
|
@@ -366,6 +399,24 @@ Pour une référence complète de toutes les variables d'environnement disponibl
|
|
|
366
399
|
|
|
367
400
|
---
|
|
368
401
|
|
|
402
|
+
## Synchronisation en direct
|
|
403
|
+
|
|
404
|
+
La Synchronisation en direct permet à votre application de refléter les changements de contenu CMS à l'exécution — aucune reconstruction ou redéploiement requis. Lorsqu'elle est activée, les mises à jour sont diffusées vers un serveur Live Sync qui actualise les dictionnaires que votre application lit.
|
|
405
|
+
|
|
406
|
+
Pour le guide de configuration complet (configuration, démarrage du serveur Live Sync, le flux de travail de développement local et les contraintes), consultez la [documentation Live Sync](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/live-sync.md).
|
|
407
|
+
|
|
408
|
+
## Auto-hébergement
|
|
409
|
+
|
|
410
|
+
Intlayer peut s'exécuter entièrement sur votre propre infrastructure. Une seule commande bootstrap la pile complète (dashboard, API, base de données, stockage d'objets et email) avec Docker Compose :
|
|
411
|
+
|
|
412
|
+
```sh
|
|
413
|
+
curl -fsSL https://intlayer.org/install.sh | sh
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
Pour le guide de configuration complet, la référence des variables d'environnement, les instructions de mise à jour et les procédures de sauvegarde/restauration, consultez le [Guide d'auto-hébergement](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/self_hosting.md).
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
369
420
|
## Débogage
|
|
370
421
|
|
|
371
422
|
Si vous rencontrez des problèmes avec le CMS, vérifiez les points suivants :
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-04-18
|
|
3
3
|
updatedAt: 2026-05-31
|
|
4
|
-
title: "Angular
|
|
5
|
-
description: "Oubliez i18next. Le guide 2026 pour créer une application Angular
|
|
4
|
+
title: "Angular 22 i18n - Guide complet pour traduire votre application"
|
|
5
|
+
description: "Oubliez i18next. Le guide 2026 pour créer une application Angular 22 multilingue (i18n). Traduisez avec des agents IA et optimisez la taille du bundle, le SEO et les performances."
|
|
6
6
|
keywords:
|
|
7
7
|
- Internationalisation
|
|
8
8
|
- Documentation
|
|
@@ -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
|
-
# Traduisez votre site Angular
|
|
34
|
+
# Traduisez votre site Angular 22 (Vite) avec Intlayer | Internationalisation (i18n)
|
|
35
35
|
|
|
36
36
|
## Table des matières
|
|
37
37
|
|
|
@@ -94,7 +94,7 @@ Bien plus qu'une simple solution i18n, Intlayer propose un **[éditeur visuel](h
|
|
|
94
94
|
<Tab label="Code" 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="Démo CodeSandbox - Comment internationaliser votre application avec Intlayer"
|
|
100
100
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
@@ -105,7 +105,7 @@ Bien plus qu'une simple solution i18n, Intlayer propose un **[éditeur visuel](h
|
|
|
105
105
|
<Tab label="Démo" 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="Démo - intlayer-angular-template"
|
|
111
111
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
@@ -115,7 +115,7 @@ Bien plus qu'une simple solution i18n, Intlayer propose un **[éditeur visuel](h
|
|
|
115
115
|
</Tab>
|
|
116
116
|
</Tabs>
|
|
117
117
|
|
|
118
|
-
Voir [Modèle d'Application](https://github.com/aymericzip/intlayer-angular-
|
|
118
|
+
Voir [Modèle d'Application](https://github.com/aymericzip/intlayer-angular-22-template) sur GitHub.
|
|
119
119
|
|
|
120
120
|
<Steps>
|
|
121
121
|
|
|
@@ -203,7 +203,7 @@ export default config;
|
|
|
203
203
|
|
|
204
204
|
<Step number={3} title="Intégrer Intlayer dans votre configuration Angular">
|
|
205
205
|
|
|
206
|
-
Pour intégrer Intlayer avec Angular CLI, vous devez utiliser un builder personnalisé. Ce guide suppose que vous utilisez Vite/esbuild (par défaut pour les projets Angular
|
|
206
|
+
Pour intégrer Intlayer avec Angular CLI, vous devez utiliser un builder personnalisé. Ce guide suppose que vous utilisez Vite/esbuild (par défaut pour les projets Angular 22).
|
|
207
207
|
|
|
208
208
|
D'abord, modifiez votre `angular.json` pour utiliser le builder esbuild personnalisé. Mettez à jour les configurations `build` et `serve` :
|
|
209
209
|
|
|
@@ -24,34 +24,7 @@ history:
|
|
|
24
24
|
author: aymericzip
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
#
|
|
28
|
-
|
|
29
|
-
<Tabs defaultTab="code">
|
|
30
|
-
<Tab label="Code" 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="Démo" 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="Démo - 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
|
-
Voir [Application Template](https://github.com/aymericzip/intlayer-next-14-template) sur GitHub.
|
|
27
|
+
# Traduisez votre site web Next.js 14 et App Router avec Intlayer | Internationalisation (i18n)
|
|
55
28
|
|
|
56
29
|
## Table des matières
|
|
57
30
|
|
|
@@ -31,39 +31,7 @@ history:
|
|
|
31
31
|
author: aymericzip
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
#
|
|
35
|
-
|
|
36
|
-
<Tabs defaultTab="video">
|
|
37
|
-
<Tab label="Vidéo" 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="Code" 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="Démo" 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="Démo - 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
|
-
Voir le [Modèle d’Application](https://github.com/aymericzip/intlayer-next-15-template) sur GitHub.
|
|
34
|
+
# Traduisez votre site web Next.js 15 avec Intlayer | Internationalization (i18n)
|
|
67
35
|
|
|
68
36
|
## Table des matières
|
|
69
37
|
|