@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/uk/configuration.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-06
|
|
4
4
|
title: Конфігурація
|
|
5
5
|
description: Дізнайтеся, як налаштувати Intlayer для вашого додатка. Зрозумійте різні налаштування та параметри, доступні для адаптації Intlayer під ваші потреби.
|
|
6
6
|
keywords:
|
|
@@ -14,6 +14,9 @@ slugs:
|
|
|
14
14
|
- concept
|
|
15
15
|
- configuration
|
|
16
16
|
history:
|
|
17
|
+
- version: 9.1.3
|
|
18
|
+
date: 2026-08-06
|
|
19
|
+
changes: "Зробити `routing.enableProxy` трипозиційним: не задано (auto), `true`, `false`"
|
|
17
20
|
- version: 9.0.0
|
|
18
21
|
date: 2026-07-11
|
|
19
22
|
changes: "Додано конфігурацію `analytics`"
|
|
@@ -235,6 +238,19 @@ const config: IntlayerConfig = {
|
|
|
235
238
|
*/
|
|
236
239
|
mode: "prefix-no-default",
|
|
237
240
|
|
|
241
|
+
/**
|
|
242
|
+
* Вмикає проксі маршрутизації локалей Intlayer (middleware).
|
|
243
|
+
* Відповідає за визначення локалі, перенаправлення та перезапис URL у dev, preview та SSR.
|
|
244
|
+
* - не задано (auto): сервери dev і preview зберігають маршрутизацію за URL,
|
|
245
|
+
* ігноруючи локаль, збережену в cookie та заголовках. Префікси й далі
|
|
246
|
+
* розв’язуються, локаль і далі зберігається, а визначення Accept-Language
|
|
247
|
+
* і далі діє. У продакшені поводиться як `true`.
|
|
248
|
+
* - true: повна поведінка в усіх середовищах.
|
|
249
|
+
* - false: маршрутизація локалей вимкнена.
|
|
250
|
+
* За замовчуванням: undefined (auto)
|
|
251
|
+
*/
|
|
252
|
+
enableProxy: undefined,
|
|
253
|
+
|
|
238
254
|
/**
|
|
239
255
|
* Де зберігається вибрана користувачем локаль.
|
|
240
256
|
* Варіанти: 'cookie', 'localStorage', 'sessionStorage', 'header' або їх масив.
|
|
@@ -713,13 +729,14 @@ export default config;
|
|
|
713
729
|
|
|
714
730
|
Налаштування для контролю поведінки маршрутизації, включаючи структуру URL, зберігання локалі та керування проміжним ПЗ.
|
|
715
731
|
|
|
716
|
-
| Поле
|
|
717
|
-
|
|
|
718
|
-
| `mode`
|
|
719
|
-
| `
|
|
720
|
-
| `
|
|
721
|
-
| `
|
|
722
|
-
| `
|
|
732
|
+
| Поле | Опис | Тип | За замовчуванням | Приклад | Примітки |
|
|
733
|
+
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
734
|
+
| `mode` | Режим структури URL для керування локаллю. | `'prefix-no-default'` | <br/> `'prefix-all'` | <br/> `'no-prefix'` | <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) або `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard` . `'no-prefix'`: локаль керується іншим способом. `'search-params'`: `/dashboard?locale=fr` | Не впливає на керування файлами cookie або локальне сховище. |
|
|
735
|
+
| `enableProxy` | Вмикає проксі маршрутизації локалей Intlayer (middleware). | `boolean` | <br/> `undefined` | `undefined` (auto) | `true` | • Не задано (auto): сервери dev і preview ігнорують локаль із cookie/заголовків як джерело перенаправлення; префікси, збереження локалі та визначення `Accept-Language` продовжують діяти. У продакшені поводиться як `true`.<br/>• `true`: повна поведінка всюди.<br/>• `false`: маршрутизація локалей вимкнена. У Next.js middleware `intlayerProxy` стає наскрізним. |
|
|
736
|
+
| `storage` | Конфігурація для зберігання локалі на клієнті. | `false` | <br/> `'cookie'` | <br/> `'localStorage'` | <br/> `'sessionStorage'` | <br/> `'header'` | <br/> `CookiesAttributes` | <br/> `StorageAttributes` | <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | Див. таблицю параметрів зберігання нижче. |
|
|
737
|
+
| `basePath` | Базовий шлях для URL додатка. | `string` | `''` | `'/my-app'` | Якщо ваш додаток знаходиться за адресою `https://example.com/my-app`, basePath - `'/my-app'`, що вказує на URL `https://example.com/my-app/en` . |
|
|
738
|
+
| `rewrite` | Власні правила перенаправлення URL для зміни стандартного режиму маршрутизації для певних шляхів. Підтримує динамічні параметри `[param]`. | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | Див. приклад нижче | • Правила перенаправлення мають вищий пріоритет, ніж `mode`.<br/>• Працює з Next.js та Vite.<br/>• `getLocalizedUrl()` автоматично застосовує відповідні правила.<br/>• Див. [Власні перенаправлення URL](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/custom_url_rewrites.md). |
|
|
739
|
+
| `domains` | Відображає локалі на імена хостів доменів для маршрутизації на основі доменів. Якщо встановлено, URL для цієї локалі використовують цей домен як базу (абсолютний URL), і префікс локалі не додається до шляху. | `Partial<Record<Locale, string>>` | `undefined` | `{ zh: 'intlayer.zh', fr: 'intlayer.org' }` | • Протокол за замовчуванням - `https://`, якщо він не вказаний у імені хоста.<br/>• Сам домен ідентифікує локаль, тому префікс `/zh/` не додається.<br/>• `getLocalizedUrl('/', 'zh')` повертає `https://intlayer.zh/`. |
|
|
723
740
|
|
|
724
741
|
**Приклад `rewrite`**:
|
|
725
742
|
|
|
@@ -68,6 +68,53 @@ export default firstDictionary;
|
|
|
68
68
|
}
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
+
### Посилання з Nest
|
|
72
|
+
|
|
73
|
+
Тепер створіть ще один модуль контенту, який використовує функцію `nest` для посилання на вищезазначений контент. Ви можете посилатися на весь контент або на конкретне вкладене значення:
|
|
74
|
+
|
|
75
|
+
```typescript fileName="secondDictionary.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
76
|
+
import { nest, type Dictionary } from "intlayer";
|
|
77
|
+
|
|
78
|
+
const myNestingContent = {
|
|
79
|
+
key: "key_of_my_second_dictionary",
|
|
80
|
+
content: {
|
|
81
|
+
// Посилається на весь словник:
|
|
82
|
+
fullNestedContent: nest("key_of_my_first_dictionary"),
|
|
83
|
+
// Посилається на конкретне вкладене значення:
|
|
84
|
+
partialNestedContent: nest(
|
|
85
|
+
"key_of_my_first_dictionary",
|
|
86
|
+
"subContent.contentNumber"
|
|
87
|
+
),
|
|
88
|
+
},
|
|
89
|
+
} satisfies Dictionary;
|
|
90
|
+
|
|
91
|
+
export default myNestingContent;
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```json fileName="secondDictionary.content.json" contentDeclarationFormat="json"
|
|
95
|
+
{
|
|
96
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
97
|
+
"key": "key_of_my_second_dictionary",
|
|
98
|
+
"content": {
|
|
99
|
+
"fullNestedContent": {
|
|
100
|
+
"nodeType": "nested",
|
|
101
|
+
"nested": {
|
|
102
|
+
"dictionaryKey": "key_of_my_first_dictionary"
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"partialNestedContent": {
|
|
106
|
+
"nodeType": "nested",
|
|
107
|
+
"nested": {
|
|
108
|
+
"dictionaryKey": "key_of_my_first_dictionary",
|
|
109
|
+
"path": "subContent.contentNumber"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Як другий параметр, ви можете вказати шлях до вкладеного значення в цьому контенті. Якщо шлях не вказаний, повертається весь контент посилаючого словника.
|
|
117
|
+
|
|
71
118
|
## Налаштування вкладення
|
|
72
119
|
|
|
73
120
|
<Tabs group="framework">
|
|
@@ -262,36 +309,6 @@ document.getElementById("nested")!.textContent = content.partialNestedContent;
|
|
|
262
309
|
</Tab>
|
|
263
310
|
</Tabs>
|
|
264
311
|
|
|
265
|
-
## Використання вкладення з React Intlayer
|
|
266
|
-
|
|
267
|
-
Щоб використовувати вкладений вміст у React-компоненті, скористайтеся хуком `useIntlayer` з пакету `react-intlayer`. Цей хук отримує відповідний вміст на основі вказаного ключа. Ось приклад того, як його використовувати:
|
|
268
|
-
|
|
269
|
-
```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
|
|
270
|
-
import type { FC } from "react";
|
|
271
|
-
import { useIntlayer } from "react-intlayer";
|
|
272
|
-
|
|
273
|
-
const NestComponent: FC = () => {
|
|
274
|
-
const { fullNestedContent, partialNestedContent } = useIntlayer(
|
|
275
|
-
"key_of_my_second_dictionary"
|
|
276
|
-
);
|
|
277
|
-
|
|
278
|
-
return (
|
|
279
|
-
<div>
|
|
280
|
-
<p>
|
|
281
|
-
Full Nested Content: {JSON.stringify(fullNestedContent)}
|
|
282
|
-
{/* Вивід: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
|
|
283
|
-
</p>
|
|
284
|
-
<p>
|
|
285
|
-
Часткове вкладене значення: {partialNestedContent}
|
|
286
|
-
{/* Вивід: 0 */}
|
|
287
|
-
</p>
|
|
288
|
-
</div>
|
|
289
|
-
);
|
|
290
|
-
};
|
|
291
|
-
|
|
292
|
-
export default NestComponent;
|
|
293
|
-
```
|
|
294
|
-
|
|
295
312
|
## Додаткові ресурси
|
|
296
313
|
|
|
297
314
|
Для детальнішої інформації щодо конфігурації та використання зверніться до наступних ресурсів:
|
package/docs/uk/formatters.md
CHANGED
|
@@ -49,37 +49,6 @@ author: aymericzip
|
|
|
49
49
|
|
|
50
50
|
<TOC/>
|
|
51
51
|
|
|
52
|
-
## Огляд
|
|
53
|
-
|
|
54
|
-
Intlayer надає набір легких хелперів, побудованих поверх рідних API `Intl`, а також кешований обгорток `Intl`, щоб уникнути повторного створення важких форматерів. Ці утиліти повністю враховують локаль і можуть використовуватися з основного пакета `intlayer`.
|
|
55
|
-
|
|
56
|
-
### Імпорт
|
|
57
|
-
|
|
58
|
-
```ts
|
|
59
|
-
import {
|
|
60
|
-
Intl,
|
|
61
|
-
number,
|
|
62
|
-
percentage,
|
|
63
|
-
currency,
|
|
64
|
-
date,
|
|
65
|
-
relativeTime,
|
|
66
|
-
units,
|
|
67
|
-
compact,
|
|
68
|
-
list,
|
|
69
|
-
getLocaleName,
|
|
70
|
-
getLocaleLang,
|
|
71
|
-
getLocaleFromPath,
|
|
72
|
-
getPathWithoutLocale,
|
|
73
|
-
getLocalizedUrl,
|
|
74
|
-
getHTMLTextDir,
|
|
75
|
-
getContent,
|
|
76
|
-
getTranslation,
|
|
77
|
-
getIntlayer,
|
|
78
|
-
} from "intlayer";
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
If you are using React, hooks are also available; see `react-intlayer/format`.
|
|
82
|
-
|
|
83
52
|
## Cached Intl
|
|
84
53
|
|
|
85
54
|
The exported `Intl` is a thin, cached wrapper around the global `Intl`. It memoizes instances of `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, `ListFormat`, `DisplayNames`, `Collator`, and `PluralRules`, which avoids rebuilding the same formatter repeatedly.
|
|
@@ -116,51 +85,6 @@ pluralRules.select(1); // "one"
|
|
|
116
85
|
pluralRules.select(2); // "інше"
|
|
117
86
|
```
|
|
118
87
|
|
|
119
|
-
### `Intl.DisplayNames`
|
|
120
|
-
|
|
121
|
-
Для локалізованих назв мов, регіонів, валют та писемностей:
|
|
122
|
-
|
|
123
|
-
```ts
|
|
124
|
-
import { Intl } from "intlayer";
|
|
125
|
-
|
|
126
|
-
const languageNames = new Intl.DisplayNames("en", { type: "language" });
|
|
127
|
-
languageNames.of("fr"); // "французька"
|
|
128
|
-
|
|
129
|
-
const regionNames = new Intl.DisplayNames("fr", { type: "region" });
|
|
130
|
-
regionNames.of("US"); // "Сполучені Штати"
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### `Intl.Collator`
|
|
134
|
-
|
|
135
|
-
Для порівняння рядків та сортування з урахуванням локалі:
|
|
136
|
-
|
|
137
|
-
```ts
|
|
138
|
-
import { Intl } from "intlayer";
|
|
139
|
-
|
|
140
|
-
const collator = new Intl.Collator("de", {
|
|
141
|
-
sensitivity: "base",
|
|
142
|
-
numeric: true,
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
const words = ["äpfel", "zebra", "100", "20"];
|
|
146
|
-
words.sort(collator.compare); // ["20", "100", "äpfel", "zebra"]
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### `Intl.PluralRules`
|
|
150
|
-
|
|
151
|
-
Для визначення форм множини в різних локалях:
|
|
152
|
-
|
|
153
|
-
```ts
|
|
154
|
-
import { Intl } from "intlayer";
|
|
155
|
-
|
|
156
|
-
const pluralRules = new Intl.PluralRules("ar");
|
|
157
|
-
pluralRules.select(0); // "нуль"
|
|
158
|
-
pluralRules.select(1); // "один"
|
|
159
|
-
pluralRules.select(2); // "два"
|
|
160
|
-
pluralRules.select(3); // "кілька"
|
|
161
|
-
pluralRules.select(11); // "багато"
|
|
162
|
-
```
|
|
163
|
-
|
|
164
88
|
## Утиліти локалей
|
|
165
89
|
|
|
166
90
|
### `getLocaleName(displayLocale, targetLocale?)`
|
|
@@ -178,22 +102,6 @@ getLocaleName("de", "es"); // іспанською: "alemán"
|
|
|
178
102
|
- **displayLocale**: Локаль, для якої потрібно отримати назву
|
|
179
103
|
- **targetLocale**: Локаль, в якій відображається назва (за замовчуванням displayLocale)
|
|
180
104
|
|
|
181
|
-
### `getLocaleFromPath(inputUrl)`
|
|
182
|
-
|
|
183
|
-
Витягує сегмент локалі з URL або шляху:
|
|
184
|
-
|
|
185
|
-
```ts
|
|
186
|
-
import { getLocaleFromPath } from "intlayer";
|
|
187
|
-
|
|
188
|
-
getLocaleFromPath("/en/dashboard"); // "en"
|
|
189
|
-
getLocaleFromPath("/fr/dashboard"); // "fr"
|
|
190
|
-
getLocaleFromPath("/dashboard"); // "en" (default locale)
|
|
191
|
-
getLocaleFromPath("https://example.com/es/about"); // "es"
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
- **inputUrl**: Повний рядок URL або шлях (pathname) для обробки
|
|
195
|
-
- **returns**: Виявлена локаль або локаль за замовчуванням, якщо локаль не знайдена
|
|
196
|
-
|
|
197
105
|
### `getLocalizedUrl(url, currentLocale, locales?, defaultLocale?, prefixDefault?)`
|
|
198
106
|
|
|
199
107
|
Генерує локалізований URL для поточної локалі:
|
|
@@ -212,21 +120,6 @@ getLocalizedUrl("https://example.com/about", "fr", ["en", "fr"], "en", true); //
|
|
|
212
120
|
- **defaultLocale**: Необов'язкова локаль за замовчуванням (за замовчуванням, сконфігурована локаль за замовчуванням)
|
|
213
121
|
- **prefixDefault**: Чи додавати префікс для локалі за замовчуванням (за замовчуванням, сконфігуроване значення)
|
|
214
122
|
|
|
215
|
-
### `getHTMLTextDir(locale?)`
|
|
216
|
-
|
|
217
|
-
Повертає напрямок тексту для локалі:
|
|
218
|
-
|
|
219
|
-
```ts
|
|
220
|
-
import { getHTMLTextDir } from "intlayer";
|
|
221
|
-
|
|
222
|
-
getHTMLTextDir("en-US"); // повертає "ltr"
|
|
223
|
-
getHTMLTextDir("ar"); // повертає "rtl"
|
|
224
|
-
getHTMLTextDir("he"); // повертає "rtl"
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
- **locale**: Локаль, для якої потрібно отримати напрямок тексту (за замовчуванням, поточна локаль)
|
|
228
|
-
- **повертає**: `"ltr"`, `"rtl"`, або `"auto"`
|
|
229
|
-
|
|
230
123
|
### `getContent(node, nodeProps, locale?)`
|
|
231
124
|
|
|
232
125
|
Перетворює вузол контенту за допомогою всіх доступних плагінів (translation, enumeration, insertion тощо):
|
|
@@ -281,25 +174,6 @@ number("1000000", { locale: "fr" }); // "1 000 000"
|
|
|
281
174
|
number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
|
|
282
175
|
```
|
|
283
176
|
|
|
284
|
-
### `percentage(value, options?)`
|
|
285
|
-
|
|
286
|
-
Форматує число у рядок відсотків.
|
|
287
|
-
|
|
288
|
-
Поведінка: значення більше за 1 інтерпретується як повні відсотки та нормалізується (наприклад, `25` → `25%`, `0.25` → `25%`).
|
|
289
|
-
|
|
290
|
-
- **value**: `number | string`
|
|
291
|
-
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
292
|
-
|
|
293
|
-
Приклади:
|
|
294
|
-
|
|
295
|
-
```ts
|
|
296
|
-
import { percentage } from "intlayer";
|
|
297
|
-
|
|
298
|
-
percentage(0.25); // "25%"
|
|
299
|
-
percentage(25); // "25%"
|
|
300
|
-
percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
|
|
301
|
-
```
|
|
302
|
-
|
|
303
177
|
### `currency(value, options?)`
|
|
304
178
|
|
|
305
179
|
Форматує значення як локалізовану валюту. За замовчуванням `USD` з двома знаками після коми.
|
|
@@ -317,23 +191,6 @@ currency(1234.5, { currency: "EUR" }); // "€1,234.50"
|
|
|
317
191
|
currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
|
|
318
192
|
```
|
|
319
193
|
|
|
320
|
-
### `date(date, optionsOrPreset?)`
|
|
321
|
-
|
|
322
|
-
Форматує значення дати/часу за допомогою `Intl.DateTimeFormat`.
|
|
323
|
-
|
|
324
|
-
- **date**: `Date | string | number`
|
|
325
|
-
- **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` або один із пресетів:
|
|
326
|
-
- Presets: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
|
|
327
|
-
|
|
328
|
-
Приклади:
|
|
329
|
-
|
|
330
|
-
```ts
|
|
331
|
-
import { date } from "intlayer";
|
|
332
|
-
|
|
333
|
-
date(new Date(), "short"); // наприклад: "08/02/25, 14:30"
|
|
334
|
-
date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
|
|
335
|
-
```
|
|
336
|
-
|
|
337
194
|
### `relativeTime(from, to = new Date(), options?)`
|
|
338
195
|
|
|
339
196
|
Форматує відносний час між двома моментами за допомогою `Intl.RelativeTimeFormat`.
|
|
@@ -375,21 +232,9 @@ units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 к
|
|
|
375
232
|
units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B" (залежить від локалі)
|
|
376
233
|
```
|
|
377
234
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
Форматує число з використанням компактної нотації (наприклад, `1.2K`, `1M`).
|
|
235
|
+
## Vanilla JS / Node.js Formatters
|
|
381
236
|
|
|
382
|
-
|
|
383
|
-
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }` (використовує `notation: 'compact'` під капотом)
|
|
384
|
-
|
|
385
|
-
Приклади:
|
|
386
|
-
|
|
387
|
-
```ts
|
|
388
|
-
import { compact } from "intlayer";
|
|
389
|
-
|
|
390
|
-
compact(1200); // результат: "1.2K"
|
|
391
|
-
compact("1000000", { locale: "fr", compactDisplay: "long" }); // результат: "1 million"
|
|
392
|
-
```
|
|
237
|
+
Для контекстів без фреймворку імпортуйте форматери безпосередньо з `intlayer`. Зверніть увагу, що ви повинні передати locale вручну.
|
|
393
238
|
|
|
394
239
|
### `list(values, options?)`
|
|
395
240
|
|
|
@@ -410,6 +255,114 @@ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge
|
|
|
410
255
|
list([1, 2, 3], { type: "unit" }); // "1, 2, 3"
|
|
411
256
|
```
|
|
412
257
|
|
|
258
|
+
### Функції форматування
|
|
259
|
+
|
|
260
|
+
#### `number(value, options?)`
|
|
261
|
+
|
|
262
|
+
Форматує числове значення з врахуванням локалі для групування та десяткових знаків.
|
|
263
|
+
|
|
264
|
+
- **value**: `number | string`
|
|
265
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
266
|
+
|
|
267
|
+
```ts
|
|
268
|
+
number(123456.789); // "123,456.789" (in en-US)
|
|
269
|
+
number("1000000", { locale: "fr" }); // "1 000 000"
|
|
270
|
+
number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
#### `percentage(value, options?)`
|
|
274
|
+
|
|
275
|
+
Форматує число як рядок відсотка. Значення більше 1 нормалізуються (наприклад, `25` → `25%`, `0.25` → `25%`).
|
|
276
|
+
|
|
277
|
+
- **value**: `number | string`
|
|
278
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
279
|
+
|
|
280
|
+
```ts
|
|
281
|
+
percentage(0.25); // "25%"
|
|
282
|
+
percentage(25); // "25%"
|
|
283
|
+
percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
#### `currency(value, options?)`
|
|
287
|
+
|
|
288
|
+
Форматує значення як локалізовану валюту. За замовчуванням використовує `USD`.
|
|
289
|
+
|
|
290
|
+
- **value**: `number | string`
|
|
291
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
292
|
+
- Common: `currency`, `currencyDisplay` (`"symbol" | "code" | "name"`)
|
|
293
|
+
|
|
294
|
+
```ts
|
|
295
|
+
currency(1234.5, { currency: "EUR" }); // "€1,234.50"
|
|
296
|
+
currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
#### `date(date, optionsOrPreset?)`
|
|
300
|
+
|
|
301
|
+
Форматує значення дати/часу.
|
|
302
|
+
|
|
303
|
+
- **date**: `Date | string | number`
|
|
304
|
+
- **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` або preset: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
|
|
305
|
+
|
|
306
|
+
```ts
|
|
307
|
+
date(new Date(), "short"); // наприклад, "08/02/25, 14:30"
|
|
308
|
+
date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
#### `relativeTime(from, to?, options?)`
|
|
312
|
+
|
|
313
|
+
Форматує відносний час між двома моментами.
|
|
314
|
+
|
|
315
|
+
- **from**: `Date | string | number`
|
|
316
|
+
- **to**: `Date | string | number` (за замовчуванням `new Date()`)
|
|
317
|
+
- **options**: `{ locale?, unit?, numeric?, style? }`
|
|
318
|
+
|
|
319
|
+
```ts
|
|
320
|
+
const now = new Date();
|
|
321
|
+
const in3Days = new Date(now.getTime() + 3 * 864e5);
|
|
322
|
+
relativeTime(now, in3Days, { unit: "day" }); // "через 3 дні"
|
|
323
|
+
|
|
324
|
+
const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
|
|
325
|
+
relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2 години тому"
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
#### `units(value, options?)`
|
|
329
|
+
|
|
330
|
+
Форматує числове значення з одиницею виміру.
|
|
331
|
+
|
|
332
|
+
- **value**: `number | string`
|
|
333
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
334
|
+
- Common: `unit` (e.g., `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
|
|
335
|
+
|
|
336
|
+
```ts
|
|
337
|
+
units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
|
|
338
|
+
units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B"
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
#### `compact(value, options?)`
|
|
342
|
+
|
|
343
|
+
Форматує число за допомогою компактного запису.
|
|
344
|
+
|
|
345
|
+
- **value**: `number | string`
|
|
346
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
347
|
+
|
|
348
|
+
```ts
|
|
349
|
+
compact(1200); // "1.2K"
|
|
350
|
+
compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
#### `list(values, options?)`
|
|
354
|
+
|
|
355
|
+
Форматує масив у локалізований рядок списку.
|
|
356
|
+
|
|
357
|
+
- **values**: `(string | number)[]`
|
|
358
|
+
- **options**: `Intl.ListFormatOptions & { locale?: LocalesValues }`
|
|
359
|
+
- Поширені: `type` (`"conjunction" | "disjunction" | "unit"`), `style` (`"long" | "short" | "narrow"`)
|
|
360
|
+
|
|
361
|
+
```ts
|
|
362
|
+
list(["apple", "banana", "orange"]); // "apple, banana, and orange"
|
|
363
|
+
list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge, vert ou bleu"
|
|
364
|
+
```
|
|
365
|
+
|
|
413
366
|
## Cached Intl
|
|
414
367
|
|
|
415
368
|
Експортований `Intl` з `intlayer` — це кешований wrapper навколо глобального `Intl`. Він мемоізує екземпляри форматерів (`NumberFormat`, `DateTimeFormat` тощо), щоб уникнути їхнього повторного створення та поліпшити продуктивність.
|
|
@@ -440,11 +393,19 @@ pluralRules.select(2); // "other"
|
|
|
440
393
|
|
|
441
394
|
### Додаткові функції Intl
|
|
442
395
|
|
|
443
|
-
|
|
396
|
+
#### `Intl.DisplayNames`
|
|
444
397
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
398
|
+
Для локалізованих назв мов, регіонів, валют та письмових систем:
|
|
399
|
+
|
|
400
|
+
```ts
|
|
401
|
+
import { Intl } from "intlayer";
|
|
402
|
+
|
|
403
|
+
const languageNames = new Intl.DisplayNames("en", { type: "language" });
|
|
404
|
+
languageNames.of("fr"); // "French"
|
|
405
|
+
|
|
406
|
+
const regionNames = new Intl.DisplayNames("fr", { type: "region" });
|
|
407
|
+
regionNames.of("US"); // "États-Unis"
|
|
408
|
+
```
|
|
448
409
|
|
|
449
410
|
#### `Intl.Collator`
|
|
450
411
|
|
|
@@ -491,33 +452,15 @@ getLocaleName("en", "fr"); // "anglais"
|
|
|
491
452
|
getLocaleName("de", "es"); // "alemán"
|
|
492
453
|
```
|
|
493
454
|
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
Форматери містяться в core-пакеті і реекспортуються з пакетів вищого рівня, щоб зробити імпорти зручними в різних середовищах виконання:
|
|
455
|
+
### `getLocaleLang(locale?)`
|
|
497
456
|
|
|
498
|
-
|
|
457
|
+
Витягує код мови з рядка локалі:
|
|
499
458
|
|
|
500
459
|
```ts
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
date,
|
|
506
|
-
relativeTime,
|
|
507
|
-
units,
|
|
508
|
-
compact,
|
|
509
|
-
list,
|
|
510
|
-
Intl,
|
|
511
|
-
getLocaleName,
|
|
512
|
-
getLocaleLang,
|
|
513
|
-
getLocaleFromPath,
|
|
514
|
-
getPathWithoutLocale,
|
|
515
|
-
getLocalizedUrl,
|
|
516
|
-
getHTMLTextDir,
|
|
517
|
-
getContent,
|
|
518
|
-
getTranslation,
|
|
519
|
-
getIntlayer,
|
|
520
|
-
} from "intlayer";
|
|
460
|
+
import { getLocaleLang } from "intlayer";
|
|
461
|
+
|
|
462
|
+
getLocaleLang("en-US"); // "en"
|
|
463
|
+
getLocaleLang("fr-CA"); // "fr"
|
|
521
464
|
```
|
|
522
465
|
|
|
523
466
|
### `getLocaleFromPath(inputUrl)`
|