@intlayer/docs 9.1.3 → 9.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blog/ar/index.md +1 -1
- package/blog/ar/rag_powered_documentation_assistant.md +7 -0
- package/blog/de/index.md +1 -1
- package/blog/de/rag_powered_documentation_assistant.md +6 -0
- package/blog/en/index.md +1 -1
- package/blog/en-GB/index.md +1 -1
- package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
- package/blog/es/index.md +1 -1
- package/blog/es/rag_powered_documentation_assistant.md +7 -0
- package/blog/fr/i18n_meaning.md +7 -1
- package/blog/fr/index.md +1 -1
- package/blog/fr/list_i18n_technologies/frameworks/angular.md +5 -1
- package/blog/fr/rag_powered_documentation_assistant.md +6 -0
- package/blog/hi/index.md +1 -1
- package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
- package/blog/hi/rag_powered_documentation_assistant.md +7 -0
- package/blog/id/index.md +1 -1
- package/blog/id/rag_powered_documentation_assistant.md +6 -0
- package/blog/it/index.md +1 -1
- package/blog/it/rag_powered_documentation_assistant.md +6 -0
- package/blog/ja/index.md +1 -1
- package/blog/ja/rag_powered_documentation_assistant.md +7 -0
- package/blog/ko/index.md +1 -1
- package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
- package/blog/ko/rag_powered_documentation_assistant.md +6 -0
- package/blog/pl/index.md +1 -1
- package/blog/pl/rag_powered_documentation_assistant.md +6 -0
- package/blog/pt/index.md +1 -1
- package/blog/pt/rag_powered_documentation_assistant.md +6 -0
- package/blog/ru/index.md +1 -1
- package/blog/ru/rag_powered_documentation_assistant.md +7 -0
- package/blog/tr/intlayer_with_react-intl.md +3 -1
- package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +175 -42
- package/blog/tr/rag_powered_documentation_assistant.md +6 -0
- package/blog/uk/index.md +1 -1
- package/blog/uk/rag_powered_documentation_assistant.md +6 -0
- package/blog/vi/index.md +1 -1
- package/blog/vi/rag_powered_documentation_assistant.md +6 -0
- package/blog/zh/index.md +1 -1
- package/blog/zh/intlayer_with_i18next.md +87 -28
- package/blog/zh/intlayer_with_next-i18next.md +86 -29
- package/blog/zh/intlayer_with_next-intl.md +88 -28
- package/blog/zh/intlayer_with_react-i18next.md +87 -28
- package/blog/zh/intlayer_with_react-intl.md +88 -27
- package/blog/zh/intlayer_with_vue-i18n.md +117 -8
- package/blog/zh/rag_powered_documentation_assistant.md +6 -0
- package/dist/cjs/common.cjs +24 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +58 -31
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +265 -218
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +48 -21
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +33 -6
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/common.mjs +24 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +58 -31
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +265 -218
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +48 -21
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +33 -6
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/docs/ar/analytics.md +222 -0
- package/docs/ar/autoFill.md +28 -9
- package/docs/ar/bundle_optimization.md +58 -25
- package/docs/ar/configuration.md +25 -8
- package/docs/ar/dictionary/file.md +3 -1
- package/docs/ar/dictionary/nesting.md +47 -30
- package/docs/ar/formatters.md +148 -193
- package/docs/ar/intlayer_CMS.md +152 -0
- package/docs/ar/intlayer_with_angular_21.md +9 -9
- package/docs/ar/intlayer_with_nextjs_14.md +1 -28
- package/docs/ar/intlayer_with_nextjs_15.md +1 -33
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +40 -83
- package/docs/ar/intlayer_with_solid_start.md +1078 -0
- package/docs/ar/intlayer_with_vite+vue.md +1 -3
- package/docs/ar/live-sync.md +4 -0
- package/docs/ar/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/ar/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/ar/packages/react-intlayer/useDictionary.md +4 -21
- package/docs/ar/packages/react-intlayer/useIntlayer.md +2 -2
- package/docs/ar/packages/vite-intlayer/exports.md +15 -0
- package/docs/ar/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/ar/packages/vite-intlayer/intlayerPrune.md +70 -3
- package/docs/ar/releases/v9.md +0 -37
- package/docs/ar/self_hosting.md +46 -49
- package/docs/bn/bundle_optimization.md +58 -25
- package/docs/bn/configuration.md +25 -8
- package/docs/bn/intlayer_with_angular_21.md +9 -9
- package/docs/cs/bundle_optimization.md +58 -25
- package/docs/cs/configuration.md +25 -8
- package/docs/cs/intlayer_with_angular_21.md +9 -9
- package/docs/de/analytics.md +222 -0
- package/docs/de/autoFill.md +28 -9
- package/docs/de/bundle_optimization.md +58 -25
- package/docs/de/configuration.md +25 -8
- package/docs/de/dictionary/file.md +3 -1
- package/docs/de/dictionary/nesting.md +47 -31
- package/docs/de/formatters.md +208 -334
- package/docs/de/intlayer_CMS.md +66 -15
- package/docs/de/intlayer_with_angular_21.md +9 -9
- package/docs/de/intlayer_with_nestjs.md +11 -7
- package/docs/de/intlayer_with_nextjs_14.md +1 -28
- package/docs/de/intlayer_with_nextjs_15.md +1 -33
- package/docs/de/intlayer_with_solid_start.md +1078 -0
- package/docs/de/intlayer_with_vite+vue.md +1 -3
- package/docs/de/live-sync.md +4 -0
- package/docs/de/packages/intlayer/getLocalizedUrl.md +33 -25
- package/docs/de/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/de/packages/react-intlayer/useDictionary.md +2 -5
- package/docs/de/packages/vite-intlayer/exports.md +15 -0
- package/docs/de/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/de/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/de/releases/v9.md +0 -15
- package/docs/de/self_hosting.md +46 -50
- package/docs/en/bundle_optimization.md +51 -23
- package/docs/en/cli/doc-review.md +13 -2
- package/docs/en/configuration.md +24 -15
- package/docs/en/intlayer_with_angular_21.md +9 -9
- package/docs/en/intlayer_with_solid_start.md +1091 -0
- package/docs/en/intlayer_with_vite+solid.md +12 -0
- package/docs/en/live-sync.md +4 -0
- package/docs/en-GB/analytics.md +222 -0
- package/docs/en-GB/autoFill.md +26 -7
- package/docs/en-GB/bundle_optimization.md +58 -25
- package/docs/en-GB/configuration.md +25 -8
- package/docs/en-GB/dictionary/file.md +2 -0
- package/docs/en-GB/dictionary/nesting.md +64 -205
- package/docs/en-GB/formatters.md +146 -181
- package/docs/en-GB/intlayer_CMS.md +152 -0
- package/docs/en-GB/intlayer_with_angular_21.md +9 -9
- package/docs/en-GB/intlayer_with_nestjs.md +6 -2
- package/docs/en-GB/intlayer_with_nextjs_14.md +0 -27
- package/docs/en-GB/intlayer_with_nextjs_15.md +1 -33
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +40 -82
- package/docs/en-GB/intlayer_with_solid_start.md +1078 -0
- package/docs/en-GB/intlayer_with_vite+vue.md +1 -3
- package/docs/en-GB/live-sync.md +4 -0
- package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +30 -22
- package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +16 -48
- package/docs/en-GB/packages/vite-intlayer/exports.md +15 -0
- package/docs/en-GB/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/en-GB/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/en-GB/self_hosting.md +60 -49
- package/docs/es/analytics.md +222 -0
- package/docs/es/autoFill.md +28 -9
- package/docs/es/bundle_optimization.md +58 -25
- package/docs/es/configuration.md +24 -7
- package/docs/es/dictionary/file.md +3 -1
- package/docs/es/dictionary/nesting.md +47 -30
- package/docs/es/formatters.md +114 -168
- package/docs/es/intlayer_CMS.md +35 -10
- package/docs/es/intlayer_with_angular_21.md +9 -9
- package/docs/es/intlayer_with_nextjs_14.md +1 -28
- package/docs/es/intlayer_with_nextjs_15.md +1 -33
- package/docs/es/intlayer_with_solid_start.md +1078 -0
- package/docs/es/live-sync.md +4 -0
- package/docs/es/packages/intlayer/getLocalizedUrl.md +31 -23
- package/docs/es/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/es/packages/vite-intlayer/exports.md +15 -0
- package/docs/es/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/es/packages/vite-intlayer/intlayerPrune.md +69 -2
- package/docs/es/releases/v9.md +0 -15
- package/docs/es/self_hosting.md +46 -49
- package/docs/fr/analytics.md +222 -0
- package/docs/fr/autoFill.md +27 -8
- package/docs/fr/bundle_optimization.md +58 -25
- package/docs/fr/configuration.md +25 -8
- package/docs/fr/dictionary/file.md +2 -0
- package/docs/fr/dictionary/nesting.md +37 -184
- package/docs/fr/formatters.md +95 -236
- package/docs/fr/intlayer_CMS.md +66 -15
- package/docs/fr/intlayer_with_angular_21.md +9 -9
- package/docs/fr/intlayer_with_nextjs_14.md +1 -28
- package/docs/fr/intlayer_with_nextjs_15.md +1 -33
- package/docs/fr/intlayer_with_solid_start.md +1078 -0
- package/docs/fr/live-sync.md +4 -0
- package/docs/fr/packages/intlayer/getLocalizedUrl.md +37 -27
- package/docs/fr/packages/intlayer/getMultilingualUrls.md +18 -20
- package/docs/fr/packages/vite-intlayer/exports.md +15 -0
- package/docs/fr/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/fr/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/fr/releases/v9.md +0 -15
- package/docs/fr/self_hosting.md +46 -49
- package/docs/hi/analytics.md +222 -0
- package/docs/hi/autoFill.md +28 -9
- package/docs/hi/bundle_optimization.md +58 -25
- package/docs/hi/configuration.md +25 -8
- package/docs/hi/dictionary/file.md +3 -1
- package/docs/hi/dictionary/nesting.md +47 -30
- package/docs/hi/formatters.md +233 -334
- package/docs/hi/how_works_intlayer.md +3 -1
- package/docs/hi/intlayer_CMS.md +152 -0
- package/docs/hi/intlayer_with_angular_21.md +9 -9
- package/docs/hi/intlayer_with_nestjs.md +11 -7
- package/docs/hi/intlayer_with_nextjs_14.md +1 -28
- package/docs/hi/intlayer_with_nextjs_15.md +1 -33
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +40 -83
- package/docs/hi/intlayer_with_solid_start.md +1077 -0
- package/docs/hi/intlayer_with_vite+preact.md +56 -49
- package/docs/hi/intlayer_with_vite+react.md +48 -41
- package/docs/hi/intlayer_with_vite+solid.md +32 -41
- package/docs/hi/intlayer_with_vite+vue.md +49 -44
- package/docs/hi/live-sync.md +4 -0
- package/docs/hi/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/hi/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/hi/packages/next-intlayer/t.md +33 -1
- package/docs/hi/packages/react-intlayer/useDictionary.md +4 -21
- package/docs/hi/packages/vite-intlayer/exports.md +15 -0
- package/docs/hi/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/hi/packages/vite-intlayer/intlayerPrune.md +78 -5
- package/docs/hi/plugins/sync-json.md +9 -9
- package/docs/hi/releases/v9.md +0 -15
- package/docs/hi/self_hosting.md +38 -51
- package/docs/id/analytics.md +223 -0
- package/docs/id/bundle_optimization.md +58 -25
- package/docs/id/configuration.md +25 -8
- package/docs/id/dictionary/nesting.md +37 -184
- package/docs/id/formatters.md +208 -305
- package/docs/id/intlayer_CMS.md +164 -0
- package/docs/id/intlayer_with_angular_21.md +9 -9
- package/docs/id/intlayer_with_nextjs_14.md +1 -26
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +70 -63
- package/docs/id/intlayer_with_solid_start.md +1078 -0
- package/docs/id/live-sync.md +4 -0
- package/docs/id/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/id/packages/react-intlayer/useIntlayer.md +2 -2
- package/docs/id/packages/vite-intlayer/exports.md +15 -0
- package/docs/id/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/id/packages/vite-intlayer/intlayerPrune.md +78 -5
- package/docs/id/releases/v9.md +12 -0
- package/docs/id/self_hosting.md +61 -50
- package/docs/it/analytics.md +222 -0
- package/docs/it/autoFill.md +27 -8
- package/docs/it/bundle_optimization.md +58 -25
- package/docs/it/configuration.md +25 -8
- package/docs/it/dictionary/file.md +3 -1
- package/docs/it/dictionary/nesting.md +47 -30
- package/docs/it/formatters.md +114 -168
- package/docs/it/intlayer_CMS.md +66 -15
- package/docs/it/intlayer_with_angular_21.md +9 -9
- package/docs/it/intlayer_with_nestjs.md +11 -7
- package/docs/it/intlayer_with_nextjs_14.md +1 -28
- package/docs/it/intlayer_with_nextjs_15.md +1 -33
- package/docs/it/intlayer_with_solid_start.md +1078 -0
- package/docs/it/intlayer_with_vite+vue.md +1 -3
- package/docs/it/live-sync.md +4 -0
- package/docs/it/packages/intlayer/getLocalizedUrl.md +34 -26
- package/docs/it/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/it/packages/react-intlayer/useDictionary.md +4 -21
- package/docs/it/packages/vite-intlayer/exports.md +15 -0
- package/docs/it/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/it/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/it/releases/v9.md +0 -15
- package/docs/it/self_hosting.md +60 -49
- package/docs/ja/analytics.md +222 -0
- package/docs/ja/autoFill.md +28 -9
- package/docs/ja/bundle_optimization.md +58 -25
- package/docs/ja/configuration.md +25 -8
- package/docs/ja/dictionary/content_file.md +15 -7
- package/docs/ja/dictionary/file.md +3 -1
- package/docs/ja/dictionary/nesting.md +47 -30
- package/docs/ja/formatters.md +133 -187
- package/docs/ja/intlayer_visual_editor.md +3 -1
- package/docs/ja/intlayer_with_angular_21.md +6 -6
- package/docs/ja/intlayer_with_nestjs.md +2 -12
- package/docs/ja/intlayer_with_nextjs_14.md +1 -28
- package/docs/ja/intlayer_with_nextjs_15.md +1 -33
- package/docs/ja/intlayer_with_react_router_v7.md +456 -20
- package/docs/ja/intlayer_with_solid_start.md +1078 -0
- package/docs/ja/intlayer_with_vite+preact.md +73 -41
- package/docs/ja/intlayer_with_vite+vue.md +1 -3
- package/docs/ja/live-sync.md +4 -0
- package/docs/ja/mcp_server.md +3 -9
- package/docs/ja/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/ja/packages/intlayer/getMultilingualUrls.md +3 -17
- package/docs/ja/packages/vite-intlayer/exports.md +15 -0
- package/docs/ja/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/ja/packages/vite-intlayer/intlayerPrune.md +79 -6
- package/docs/ja/releases/v9.md +12 -0
- package/docs/ja/self_hosting.md +46 -50
- package/docs/ko/analytics.md +222 -0
- package/docs/ko/autoFill.md +28 -9
- package/docs/ko/bundle_optimization.md +58 -25
- package/docs/ko/configuration.md +25 -8
- package/docs/ko/dictionary/file.md +3 -1
- package/docs/ko/dictionary/nesting.md +47 -30
- package/docs/ko/formatters.md +133 -187
- package/docs/ko/intlayer_with_angular_21.md +9 -9
- package/docs/ko/intlayer_with_lynx+react.md +133 -39
- package/docs/ko/intlayer_with_nextjs_14.md +1 -28
- package/docs/ko/intlayer_with_nextjs_15.md +1 -33
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +40 -188
- package/docs/ko/intlayer_with_solid_start.md +1078 -0
- package/docs/ko/intlayer_with_vite+preact.md +57 -23
- package/docs/ko/intlayer_with_vite+vue.md +1 -3
- package/docs/ko/live-sync.md +4 -0
- package/docs/ko/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/ko/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/ko/packages/vite-intlayer/exports.md +15 -0
- package/docs/ko/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/ko/packages/vite-intlayer/intlayerPrune.md +79 -6
- package/docs/ko/releases/v9.md +12 -0
- package/docs/ko/self_hosting.md +60 -49
- package/docs/nl/bundle_optimization.md +58 -25
- package/docs/nl/configuration.md +25 -8
- package/docs/nl/intlayer_with_angular_21.md +9 -9
- package/docs/pl/analytics.md +220 -0
- package/docs/pl/bundle_optimization.md +58 -25
- package/docs/pl/configuration.md +25 -8
- package/docs/pl/dictionary/nesting.md +47 -30
- package/docs/pl/formatters.md +208 -305
- package/docs/pl/intlayer_CMS.md +152 -0
- package/docs/pl/intlayer_with_angular_21.md +9 -9
- package/docs/pl/intlayer_with_nextjs_14.md +1 -26
- package/docs/pl/intlayer_with_solid_start.md +1078 -0
- package/docs/pl/live-sync.md +4 -0
- package/docs/pl/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/pl/packages/react-intlayer/useDictionary.md +2 -19
- package/docs/pl/packages/vite-intlayer/exports.md +15 -0
- package/docs/pl/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/pl/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/pl/releases/v9.md +0 -15
- package/docs/pl/self_hosting.md +60 -49
- package/docs/pt/analytics.md +222 -0
- package/docs/pt/bundle_optimization.md +58 -24
- package/docs/pt/configuration.md +25 -8
- package/docs/pt/dictionary/file.md +3 -1
- package/docs/pt/dictionary/nesting.md +47 -30
- package/docs/pt/formatters.md +112 -168
- package/docs/pt/intlayer_CMS.md +66 -15
- package/docs/pt/intlayer_with_angular_21.md +9 -9
- package/docs/pt/intlayer_with_astro_lit.md +26 -1
- package/docs/pt/intlayer_with_nextjs_14.md +1 -28
- package/docs/pt/intlayer_with_nextjs_15.md +1 -33
- package/docs/pt/intlayer_with_solid_start.md +1078 -0
- package/docs/pt/intlayer_with_vite+vue.md +1 -3
- package/docs/pt/live-sync.md +4 -0
- package/docs/pt/packages/intlayer/getLocalizedUrl.md +34 -26
- package/docs/pt/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/pt/packages/vite-intlayer/exports.md +15 -0
- package/docs/pt/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/pt/packages/vite-intlayer/intlayerPrune.md +78 -6
- package/docs/pt/releases/v9.md +0 -15
- package/docs/pt/self_hosting.md +60 -49
- package/docs/ru/analytics.md +222 -0
- package/docs/ru/autoFill.md +27 -8
- package/docs/ru/bundle_optimization.md +58 -25
- package/docs/ru/configuration.md +25 -8
- package/docs/ru/dictionary/file.md +3 -1
- package/docs/ru/dictionary/nesting.md +64 -205
- package/docs/ru/formatters.md +108 -128
- package/docs/ru/intlayer_with_angular_21.md +9 -9
- package/docs/ru/intlayer_with_nextjs_14.md +1 -28
- package/docs/ru/intlayer_with_nextjs_15.md +1 -33
- package/docs/ru/intlayer_with_solid_start.md +1078 -0
- package/docs/ru/intlayer_with_vite+vue.md +1 -3
- package/docs/ru/live-sync.md +4 -0
- package/docs/ru/packages/intlayer/getLocalizedUrl.md +34 -26
- package/docs/ru/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/ru/packages/react-intlayer/useDictionary.md +4 -21
- package/docs/ru/packages/vite-intlayer/exports.md +15 -0
- package/docs/ru/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/ru/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/ru/releases/v9.md +0 -15
- package/docs/ru/self_hosting.md +60 -49
- package/docs/tr/analytics.md +222 -0
- package/docs/tr/autoFill.md +28 -9
- package/docs/tr/bundle_optimization.md +58 -25
- package/docs/tr/configuration.md +25 -8
- package/docs/tr/dictionary/file.md +2 -0
- package/docs/tr/dictionary/nesting.md +47 -30
- package/docs/tr/formatters.md +144 -190
- package/docs/tr/intlayer_CMS.md +152 -0
- package/docs/tr/intlayer_with_angular_21.md +9 -9
- package/docs/tr/intlayer_with_nestjs.md +2 -12
- package/docs/tr/intlayer_with_nextjs_15.md +1 -33
- package/docs/tr/intlayer_with_solid_start.md +1078 -0
- package/docs/tr/intlayer_with_vite+vue.md +1 -3
- package/docs/tr/live-sync.md +4 -0
- package/docs/tr/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/tr/packages/vite-intlayer/exports.md +15 -0
- package/docs/tr/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/tr/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/tr/self_hosting.md +47 -50
- package/docs/uk/analytics.md +222 -0
- package/docs/uk/bundle_optimization.md +58 -25
- package/docs/uk/configuration.md +25 -8
- package/docs/uk/dictionary/nesting.md +47 -30
- package/docs/uk/formatters.md +128 -185
- package/docs/uk/intlayer_CMS.md +152 -0
- package/docs/uk/intlayer_with_angular_21.md +9 -9
- package/docs/uk/intlayer_with_nextjs_14.md +1 -26
- package/docs/uk/intlayer_with_solid_start.md +1078 -0
- package/docs/uk/live-sync.md +4 -0
- package/docs/uk/packages/react-intlayer/useDictionary.md +2 -19
- package/docs/uk/packages/vite-intlayer/exports.md +15 -0
- package/docs/uk/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/uk/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/uk/releases/v9.md +0 -15
- package/docs/uk/self_hosting.md +60 -50
- package/docs/ur/bundle_optimization.md +58 -25
- package/docs/ur/configuration.md +25 -8
- package/docs/ur/intlayer_with_angular_21.md +9 -9
- package/docs/vi/analytics.md +222 -0
- package/docs/vi/bundle_optimization.md +58 -25
- package/docs/vi/configuration.md +24 -8
- package/docs/vi/dictionary/nesting.md +37 -184
- package/docs/vi/formatters.md +208 -309
- package/docs/vi/intlayer_CMS.md +164 -0
- package/docs/vi/intlayer_with_angular_21.md +9 -9
- package/docs/vi/intlayer_with_nextjs_14.md +0 -25
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +70 -63
- package/docs/vi/intlayer_with_solid_start.md +1078 -0
- package/docs/vi/live-sync.md +4 -0
- package/docs/vi/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/vi/packages/react-intlayer/useIntlayer.md +2 -2
- package/docs/vi/packages/vite-intlayer/exports.md +15 -0
- package/docs/vi/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/vi/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/vi/plugins/sync-json.md +6 -6
- package/docs/vi/releases/v9.md +12 -0
- package/docs/vi/self_hosting.md +61 -50
- package/docs/zh/CI_CD.md +4 -0
- package/docs/zh/analytics.md +222 -0
- package/docs/zh/autoFill.md +28 -9
- package/docs/zh/bundle_optimization.md +58 -25
- package/docs/zh/configuration.md +24 -8
- package/docs/zh/dictionary/file.md +2 -0
- package/docs/zh/dictionary/nesting.md +47 -30
- package/docs/zh/formatters.md +140 -188
- package/docs/zh/intlayer_CMS.md +164 -0
- package/docs/zh/intlayer_with_analog.md +193 -3
- package/docs/zh/intlayer_with_angular_19.md +272 -3
- package/docs/zh/intlayer_with_angular_21.md +7 -7
- package/docs/zh/intlayer_with_create_react_app.md +348 -26
- package/docs/zh/intlayer_with_lynx+react.md +263 -4
- package/docs/zh/intlayer_with_nextjs_14.md +1 -28
- package/docs/zh/intlayer_with_nextjs_15.md +1 -33
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +558 -1
- package/docs/zh/intlayer_with_nuxt.md +182 -7
- package/docs/zh/intlayer_with_react_router_v7.md +183 -25
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +306 -42
- package/docs/zh/intlayer_with_solid_start.md +1077 -0
- package/docs/zh/intlayer_with_storybook.md +260 -3
- package/docs/zh/intlayer_with_svelte_kit.md +428 -48
- package/docs/zh/intlayer_with_tanstack+solid.md +713 -13
- package/docs/zh/intlayer_with_tanstack.md +731 -20
- package/docs/zh/intlayer_with_vanilla.md +314 -4
- package/docs/zh/intlayer_with_vite+lit.md +465 -4
- package/docs/zh/intlayer_with_vite+preact.md +422 -116
- package/docs/zh/intlayer_with_vite+react.md +324 -45
- package/docs/zh/intlayer_with_vite+react_compiler.md +228 -13
- package/docs/zh/intlayer_with_vite+solid.md +462 -32
- package/docs/zh/intlayer_with_vite+vanilla.md +497 -4
- package/docs/zh/live-sync.md +4 -0
- package/docs/zh/mcp_server.md +3 -9
- package/docs/zh/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/zh/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/zh/packages/vite-intlayer/exports.md +29 -0
- package/docs/zh/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/zh/packages/vite-intlayer/intlayerPrune.md +79 -6
- package/docs/zh/releases/v9.md +12 -0
- package/docs/zh/self_hosting.md +60 -50
- package/docs/zh-TW/bundle_optimization.md +58 -25
- package/docs/zh-TW/intlayer_with_angular_21.md +7 -7
- package/package.json +7 -7
- package/src/common.ts +39 -2
- package/src/generated/blog.entry.ts +66 -34
- package/src/generated/docs.entry.ts +273 -221
- package/src/generated/frequentQuestions.entry.ts +56 -24
- package/src/generated/legal.entry.ts +41 -9
package/docs/ko/configuration.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
|
-
updatedAt: 2026-
|
|
3
|
+
updatedAt: 2026-08-06
|
|
4
4
|
title: 구성 (Configuration)
|
|
5
5
|
description: 애플리케이션에 Intlayer를 구성하는 방법을 알아보세요. 필요에 따라 Intlayer를 맞춤설정하는 데 사용할 수 있는 다양한 설정과 옵션을 이해하세요.
|
|
6
6
|
keywords:
|
|
@@ -14,6 +14,9 @@ slugs:
|
|
|
14
14
|
- concept
|
|
15
15
|
- configuration
|
|
16
16
|
history:
|
|
17
|
+
- version: 9.1.3
|
|
18
|
+
date: 2026-08-06
|
|
19
|
+
changes: "`routing.enableProxy`를 3상태로 변경: 미설정(auto), `true`, `false`"
|
|
17
20
|
- version: 9.0.0
|
|
18
21
|
date: 2026-07-11
|
|
19
22
|
changes: "`analytics` 구성 추가"
|
|
@@ -235,6 +238,19 @@ const config: IntlayerConfig = {
|
|
|
235
238
|
*/
|
|
236
239
|
mode: "prefix-no-default",
|
|
237
240
|
|
|
241
|
+
/**
|
|
242
|
+
* Intlayer 로케일 라우팅 프록시(미들웨어)를 활성화합니다.
|
|
243
|
+
* dev, preview, SSR에서 로케일 감지, 리디렉션, 리라이트를 처리합니다.
|
|
244
|
+
* - 미설정(auto): dev 및 preview 서버는 쿠키와 헤더에 저장된 로케일을 무시하여
|
|
245
|
+
* 라우팅을 URL 기반으로 유지합니다. 접두사 해석, 로케일 저장,
|
|
246
|
+
* Accept-Language 감지는 계속 동작합니다.
|
|
247
|
+
* 프로덕션에서는 `true`와 동일하게 동작합니다.
|
|
248
|
+
* - true: 모든 환경에서 완전한 동작.
|
|
249
|
+
* - false: 로케일 라우팅 없음.
|
|
250
|
+
* 기본값: undefined (auto)
|
|
251
|
+
*/
|
|
252
|
+
enableProxy: undefined,
|
|
253
|
+
|
|
238
254
|
/**
|
|
239
255
|
* 사용자가 선택한 로케일 저장 위치.
|
|
240
256
|
* 옵션: 'cookie', 'localStorage', 'sessionStorage', 'header' 또는 이들의 배열.
|
|
@@ -713,13 +729,14 @@ Intlayer 애널리틱스와 관련된 설정을 정의합니다: 사용자에게
|
|
|
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` | 쿠키나 로컬 스토리지 관리에는 영향을 주지 않습니다. |
|
|
735
|
+
| `enableProxy` | Intlayer 로케일 라우팅 프록시(미들웨어)를 활성화합니다. | `boolean` | <br/> `undefined` | `undefined` (auto) | `true` | • 미설정(auto): dev 및 preview 서버는 쿠키/헤더에 저장된 로케일을 리디렉션 소스로 무시합니다. 접두사, 저장, `Accept-Language` 감지는 계속 동작합니다. 프로덕션에서는 `true`와 동일합니다.<br/>• `true`: 어디서나 완전한 동작.<br/>• `false`: 로케일 라우팅 없음. Next.js에서는 `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` | 아래 예시 참조 | • Rewrite 규칙은 `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
|
|
|
@@ -23,7 +23,9 @@ history:
|
|
|
23
23
|
author: aymericzip
|
|
24
24
|
---
|
|
25
25
|
|
|
26
|
-
# 파일 콘텐츠 /
|
|
26
|
+
# Intlayer의 파일 콘텐츠 / 파일 임베딩
|
|
27
|
+
|
|
28
|
+
Intlayer에서 `file` 함수는 외부 파일 콘텐츠를 딕셔너리에 임베드할 수 있게 합니다. 이 방식은 Intlayer이 소스 파일을 인식하도록 하여 Intlayer Visual Editor 및 CMS와의 seamless 통합을 가능하게 합니다.
|
|
27
29
|
|
|
28
30
|
## 파일 임베딩 작동 방식
|
|
29
31
|
|
|
@@ -64,6 +64,53 @@ export default firstDictionary;
|
|
|
64
64
|
}
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
### Nest를 통한 참조
|
|
68
|
+
|
|
69
|
+
이제 위의 콘텐츠를 참조하기 위해 `nest` 함수를 사용하는 다른 콘텐츠 모듈을 만듭니다. 전체 콘텐츠 또는 특정 중첩된 값을 참조할 수 있습니다:
|
|
70
|
+
|
|
71
|
+
```typescript fileName="secondDictionary.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
|
|
72
|
+
import { nest, type Dictionary } from "intlayer";
|
|
73
|
+
|
|
74
|
+
const myNestingContent = {
|
|
75
|
+
key: "key_of_my_second_dictionary",
|
|
76
|
+
content: {
|
|
77
|
+
// 전체 딕셔너리를 참조합니다:
|
|
78
|
+
fullNestedContent: nest("key_of_my_first_dictionary"),
|
|
79
|
+
// 특정 중첩된 값을 참조합니다:
|
|
80
|
+
partialNestedContent: nest(
|
|
81
|
+
"key_of_my_first_dictionary",
|
|
82
|
+
"subContent.contentNumber"
|
|
83
|
+
),
|
|
84
|
+
},
|
|
85
|
+
} satisfies Dictionary;
|
|
86
|
+
|
|
87
|
+
export default myNestingContent;
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
```json fileName="secondDictionary.content.json" contentDeclarationFormat="json"
|
|
91
|
+
{
|
|
92
|
+
"$schema": "https://intlayer.org/schema.json",
|
|
93
|
+
"key": "key_of_my_second_dictionary",
|
|
94
|
+
"content": {
|
|
95
|
+
"fullNestedContent": {
|
|
96
|
+
"nodeType": "nested",
|
|
97
|
+
"nested": {
|
|
98
|
+
"dictionaryKey": "key_of_my_first_dictionary"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"partialNestedContent": {
|
|
102
|
+
"nodeType": "nested",
|
|
103
|
+
"nested": {
|
|
104
|
+
"dictionaryKey": "key_of_my_first_dictionary",
|
|
105
|
+
"path": "subContent.contentNumber"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
두 번째 파라미터로는 해당 콘텐츠 내의 중첩된 값으로의 경로를 지정할 수 있습니다. 경로가 제공되지 않으면 참조된 딕셔너리의 전체 콘텐츠가 반환됩니다.
|
|
113
|
+
|
|
67
114
|
## 중첩 설정
|
|
68
115
|
|
|
69
116
|
<Tabs group="framework">
|
|
@@ -258,36 +305,6 @@ document.getElementById("nested")!.textContent = content.partialNestedContent;
|
|
|
258
305
|
</Tab>
|
|
259
306
|
</Tabs>
|
|
260
307
|
|
|
261
|
-
## React Intlayer와 함께 중첩 사용
|
|
262
|
-
|
|
263
|
-
React 컴포넌트에서 중첩된 콘텐츠를 사용하려면 `react-intlayer` 패키지의 `useIntlayer` 훅을 활용하세요. 이 훅은 지정된 키를 기반으로 올바른 콘텐츠를 가져옵니다. 사용 예제는 다음과 같습니다:
|
|
264
|
-
|
|
265
|
-
```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
|
|
266
|
-
import type { FC } from "react";
|
|
267
|
-
import { useIntlayer } from "react-intlayer";
|
|
268
|
-
|
|
269
|
-
const NestComponent: FC = () => {
|
|
270
|
-
const { fullNestedContent, partialNestedContent } = useIntlayer(
|
|
271
|
-
"key_of_my_second_dictionary"
|
|
272
|
-
);
|
|
273
|
-
|
|
274
|
-
return (
|
|
275
|
-
<div>
|
|
276
|
-
<p>
|
|
277
|
-
Full Nested Content: {JSON.stringify(fullNestedContent)}
|
|
278
|
-
{/* 출력: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
|
|
279
|
-
</p>
|
|
280
|
-
<p>
|
|
281
|
-
Partial Nested Value: {partialNestedContent}
|
|
282
|
-
{/* 출력: 0 */}
|
|
283
|
-
</p>
|
|
284
|
-
</div>
|
|
285
|
-
);
|
|
286
|
-
};
|
|
287
|
-
|
|
288
|
-
export default NestComponent;
|
|
289
|
-
```
|
|
290
|
-
|
|
291
308
|
## 추가 자료
|
|
292
309
|
|
|
293
310
|
구성 및 사용에 대한 자세한 정보는 다음 리소스를 참조하세요:
|
package/docs/ko/formatters.md
CHANGED
|
@@ -46,34 +46,6 @@ author: aymericzip
|
|
|
46
46
|
|
|
47
47
|
Intlayer는 네이티브 `Intl` API 위에 구축된 경량 헬퍼 세트와 무거운 포매터를 반복 생성하지 않도록 하는 캐시된 `Intl` 래퍼를 제공합니다. 이 유틸리티들은 완전한 로케일 인식을 지원하며 메인 `intlayer` 패키지에서 사용할 수 있습니다.
|
|
48
48
|
|
|
49
|
-
### 임포트
|
|
50
|
-
|
|
51
|
-
```ts
|
|
52
|
-
import {
|
|
53
|
-
Intl,
|
|
54
|
-
number,
|
|
55
|
-
percentage,
|
|
56
|
-
currency,
|
|
57
|
-
date,
|
|
58
|
-
relativeTime,
|
|
59
|
-
units,
|
|
60
|
-
compact,
|
|
61
|
-
list,
|
|
62
|
-
getLocaleName,
|
|
63
|
-
getLocaleLang,
|
|
64
|
-
getLocaleFromPath,
|
|
65
|
-
getPathWithoutLocale,
|
|
66
|
-
getLocalizedUrl,
|
|
67
|
-
getHTMLTextDir,
|
|
68
|
-
getContent,
|
|
69
|
-
getTranslation,
|
|
70
|
-
getIntlayer,
|
|
71
|
-
getIntlayerAsync,
|
|
72
|
-
} from "intlayer";
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
React를 사용하는 경우, 훅도 제공됩니다; `react-intlayer/format`을 참조하세요.
|
|
76
|
-
|
|
77
49
|
## 캐시된 Intl
|
|
78
50
|
|
|
79
51
|
내보내진 `Intl`은 전역 `Intl`을 감싼 얇은 캐시 래퍼입니다. 이는 `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, `ListFormat`, `DisplayNames`, `Collator`, `PluralRules` 인스턴스를 메모이제이션하여 동일한 포매터를 반복 생성하는 것을 방지합니다.
|
|
@@ -110,72 +82,8 @@ pluralRules.select(1); // "one"
|
|
|
110
82
|
pluralRules.select(2); // "other"
|
|
111
83
|
```
|
|
112
84
|
|
|
113
|
-
## 추가 Intl 유틸리티
|
|
114
|
-
|
|
115
|
-
포매터 헬퍼 외에도, 캐시된 Intl 래퍼를 직접 사용하여 다른 Intl 기능을 활용할 수 있습니다:
|
|
116
|
-
|
|
117
|
-
### `Intl.DisplayNames`
|
|
118
|
-
|
|
119
|
-
언어, 지역, 통화, 스크립트의 현지화된 이름을 위한 기능:
|
|
120
|
-
|
|
121
|
-
```ts
|
|
122
|
-
import { Intl } from "intlayer";
|
|
123
|
-
|
|
124
|
-
const languageNames = new Intl.DisplayNames("en", { type: "language" });
|
|
125
|
-
languageNames.of("fr"); // "French"
|
|
126
|
-
|
|
127
|
-
const regionNames = new Intl.DisplayNames("fr", { type: "region" });
|
|
128
|
-
regionNames.of("US"); // "États-Unis"
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### `Intl.Collator`
|
|
132
|
-
|
|
133
|
-
로케일 인식 문자열 비교 및 정렬을 위해:
|
|
134
|
-
|
|
135
|
-
```ts
|
|
136
|
-
import { Intl } from "intlayer";
|
|
137
|
-
|
|
138
|
-
const collator = new Intl.Collator("de", {
|
|
139
|
-
sensitivity: "base",
|
|
140
|
-
numeric: true,
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
const words = ["äpfel", "zebra", "100", "20"];
|
|
144
|
-
words.sort(collator.compare); // ["20", "100", "äpfel", "zebra"]
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
### `Intl.PluralRules`
|
|
148
|
-
|
|
149
|
-
다양한 로케일에서 복수형을 결정하기 위해:
|
|
150
|
-
|
|
151
|
-
```ts
|
|
152
|
-
import { Intl } from "intlayer";
|
|
153
|
-
|
|
154
|
-
const pluralRules = new Intl.PluralRules("ar");
|
|
155
|
-
pluralRules.select(0); // "zero"
|
|
156
|
-
pluralRules.select(1); // "one"
|
|
157
|
-
pluralRules.select(2); // "two"
|
|
158
|
-
pluralRules.select(3); // "few"
|
|
159
|
-
pluralRules.select(11); // "many"
|
|
160
|
-
```
|
|
161
|
-
|
|
162
85
|
## 로케일 유틸리티
|
|
163
86
|
|
|
164
|
-
### `getLocaleName(displayLocale, targetLocale?)`
|
|
165
|
-
|
|
166
|
-
다른 로케일에서 로케일의 현지화된 이름을 가져옵니다:
|
|
167
|
-
|
|
168
|
-
```ts
|
|
169
|
-
import { getLocaleName } from "intlayer";
|
|
170
|
-
|
|
171
|
-
getLocaleName("fr", "en"); // "French"
|
|
172
|
-
getLocaleName("en", "fr"); // "anglais"
|
|
173
|
-
getLocaleName("de", "es"); // "alemán"
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
- **displayLocale**: 이름을 가져올 로케일
|
|
177
|
-
- **targetLocale**: 이름을 표시할 로케일 (기본값은 displayLocale)
|
|
178
|
-
|
|
179
87
|
### `getLocaleLang(locale?)`
|
|
180
88
|
|
|
181
89
|
로케일 문자열에서 언어 코드를 추출합니다:
|
|
@@ -206,22 +114,6 @@ getLocaleFromPath("https://example.com/es/about"); // "es"
|
|
|
206
114
|
- **inputUrl**: 처리할 전체 URL 문자열 또는 경로명
|
|
207
115
|
- **returns**: 감지된 로케일 또는 로케일이 없을 경우 기본 로케일
|
|
208
116
|
|
|
209
|
-
### `getPathWithoutLocale(inputUrl, locales?)`
|
|
210
|
-
|
|
211
|
-
URL 또는 경로명에서 로케일 세그먼트를 제거합니다:
|
|
212
|
-
|
|
213
|
-
```ts
|
|
214
|
-
import { getPathWithoutLocale } from "intlayer";
|
|
215
|
-
|
|
216
|
-
getPathWithoutLocale("/en/dashboard"); // "/dashboard"
|
|
217
|
-
getPathWithoutLocale("/fr/dashboard"); // "/dashboard"
|
|
218
|
-
getPathWithoutLocale("https://example.com/en/about"); // "https://example.com/about"
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
- **inputUrl**: 처리할 전체 URL 문자열 또는 경로명
|
|
222
|
-
- **locales**: 선택적 지원 로케일 배열 (기본값은 구성된 로케일)
|
|
223
|
-
- **returns**: 로케일 세그먼트가 제거된 URL
|
|
224
|
-
|
|
225
117
|
### `getLocalizedUrl(url, currentLocale, locales?, defaultLocale?, prefixDefault?)`
|
|
226
118
|
|
|
227
119
|
현재 로케일에 맞는 로컬라이즈된 URL을 생성합니다:
|
|
@@ -330,9 +222,11 @@ const content = await getIntlayerAsync("common", "fr");
|
|
|
330
222
|
|
|
331
223
|
아래의 모든 헬퍼는 `intlayer`에서 내보내집니다.
|
|
332
224
|
|
|
333
|
-
### `
|
|
225
|
+
### `percentage(value, options?)`
|
|
226
|
+
|
|
227
|
+
숫자를 백분율 문자열로 포맷합니다.
|
|
334
228
|
|
|
335
|
-
|
|
229
|
+
동작: 1보다 큰 값은 전체 백분율로 해석되어 정규화됩니다 (예: `25` → `25%`, `0.25` → `25%`).
|
|
336
230
|
|
|
337
231
|
- **value**: `number | string`
|
|
338
232
|
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
@@ -340,49 +234,121 @@ const content = await getIntlayerAsync("common", "fr");
|
|
|
340
234
|
예시:
|
|
341
235
|
|
|
342
236
|
```ts
|
|
343
|
-
import {
|
|
237
|
+
import { percentage } from "intlayer";
|
|
344
238
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
239
|
+
percentage(0.25); // "25%"
|
|
240
|
+
percentage(25); // "25%"
|
|
241
|
+
percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
|
|
348
242
|
```
|
|
349
243
|
|
|
350
|
-
###
|
|
244
|
+
### Formatter Functions
|
|
351
245
|
|
|
352
|
-
|
|
246
|
+
#### `number(value, options?)`
|
|
353
247
|
|
|
354
|
-
|
|
248
|
+
로케일을 인식하는 그룹핑 및 소수점으로 숫자 값을 포맷합니다.
|
|
355
249
|
|
|
356
250
|
- **value**: `number | string`
|
|
357
251
|
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
358
252
|
|
|
359
|
-
예시:
|
|
360
|
-
|
|
361
253
|
```ts
|
|
362
|
-
|
|
254
|
+
number(123456.789); // "123,456.789" (in en-US)
|
|
255
|
+
number("1000000", { locale: "fr" }); // "1 000 000"
|
|
256
|
+
number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
#### `percentage(value, options?)`
|
|
260
|
+
|
|
261
|
+
숫자를 백분율 문자열로 포맷합니다. 1보다 큰 값은 정규화됩니다 (예: `25` → `25%`, `0.25` → `25%`).
|
|
363
262
|
|
|
263
|
+
- **value**: `number | string`
|
|
264
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
265
|
+
|
|
266
|
+
```ts
|
|
364
267
|
percentage(0.25); // "25%"
|
|
365
268
|
percentage(25); // "25%"
|
|
366
269
|
percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
|
|
367
270
|
```
|
|
368
271
|
|
|
369
|
-
|
|
272
|
+
#### `currency(value, options?)`
|
|
370
273
|
|
|
371
|
-
값을
|
|
274
|
+
값을 로컬화된 통화로 포맷합니다. 기본값은 `USD`입니다.
|
|
372
275
|
|
|
373
276
|
- **value**: `number | string`
|
|
374
277
|
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
375
|
-
-
|
|
376
|
-
|
|
377
|
-
예시:
|
|
278
|
+
- Common: `currency`, `currencyDisplay` (`"symbol" | "code" | "name"`)
|
|
378
279
|
|
|
379
280
|
```ts
|
|
380
|
-
import { currency } from "intlayer";
|
|
381
|
-
|
|
382
281
|
currency(1234.5, { currency: "EUR" }); // "€1,234.50"
|
|
383
282
|
currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
|
|
384
283
|
```
|
|
385
284
|
|
|
285
|
+
#### `date(date, optionsOrPreset?)`
|
|
286
|
+
|
|
287
|
+
날짜/시간 값을 포맷합니다.
|
|
288
|
+
|
|
289
|
+
- **date**: `Date | string | number`
|
|
290
|
+
- **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` 또는 preset: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
|
|
291
|
+
|
|
292
|
+
```ts
|
|
293
|
+
date(new Date(), "short"); // 예: "08/02/25, 14:30"
|
|
294
|
+
date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
#### `relativeTime(from, to?, options?)`
|
|
298
|
+
|
|
299
|
+
두 순간 사이의 상대 시간을 형식화합니다.
|
|
300
|
+
|
|
301
|
+
- **from**: `Date | string | number`
|
|
302
|
+
- **to**: `Date | string | number` (기본값: `new Date()`)
|
|
303
|
+
- **options**: `{ locale?, unit?, numeric?, style? }`
|
|
304
|
+
|
|
305
|
+
```ts
|
|
306
|
+
const now = new Date();
|
|
307
|
+
const in3Days = new Date(now.getTime() + 3 * 864e5);
|
|
308
|
+
relativeTime(now, in3Days, { unit: "day" }); // "in 3 days"
|
|
309
|
+
|
|
310
|
+
const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
|
|
311
|
+
relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2 hours ago"
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
#### `units(value, options?)`
|
|
315
|
+
|
|
316
|
+
단위를 포함하여 숫자 값을 포맷팅합니다.
|
|
317
|
+
|
|
318
|
+
- **value**: `number | string`
|
|
319
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
320
|
+
- Common: `unit` (예: `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
|
|
321
|
+
|
|
322
|
+
```ts
|
|
323
|
+
units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
|
|
324
|
+
units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B"
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
#### `compact(value, options?)`
|
|
328
|
+
|
|
329
|
+
압축 표기법을 사용하여 숫자를 포맷팅합니다.
|
|
330
|
+
|
|
331
|
+
- **value**: `number | string`
|
|
332
|
+
- **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
|
|
333
|
+
|
|
334
|
+
```ts
|
|
335
|
+
compact(1200); // "1.2K"
|
|
336
|
+
compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
#### `list(values, options?)`
|
|
340
|
+
|
|
341
|
+
배열을 로컬라이즈된 리스트 문자열로 포맷합니다.
|
|
342
|
+
|
|
343
|
+
- **values**: `(string | number)[]`
|
|
344
|
+
- **options**: `Intl.ListFormatOptions & { locale?: LocalesValues }`
|
|
345
|
+
- 일반적: `type` (`"conjunction" | "disjunction" | "unit"`), `style` (`"long" | "short" | "narrow"`)
|
|
346
|
+
|
|
347
|
+
```ts
|
|
348
|
+
list(["apple", "banana", "orange"]); // "apple, banana, and orange"
|
|
349
|
+
list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge, vert ou bleu"
|
|
350
|
+
```
|
|
351
|
+
|
|
386
352
|
## Cached Intl
|
|
387
353
|
|
|
388
354
|
`intlayer`에서 내보낸 `Intl`은 전역 `Intl`을 래핑한 캐시된 래퍼입니다. formatter 인스턴스(`NumberFormat`, `DateTimeFormat` 등)를 메모이제이션하여 반복적인 구성을 피하고 성능을 향상시킵니다.
|
|
@@ -413,44 +379,34 @@ pluralRules.select(2); // "other"
|
|
|
413
379
|
|
|
414
380
|
### 추가 Intl 기능
|
|
415
381
|
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
`Intl.DateTimeFormat`을 사용하여 날짜/시간 값을 포맷합니다.
|
|
419
|
-
|
|
420
|
-
- **date**: `Date | string | number`
|
|
421
|
-
- **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` 또는 다음 프리셋 중 하나:
|
|
422
|
-
- 프리셋: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
|
|
382
|
+
#### `Intl.DisplayNames`
|
|
423
383
|
|
|
424
|
-
|
|
384
|
+
언어, 지역, 통화 및 스크립트의 지역화된 이름을 위해:
|
|
425
385
|
|
|
426
386
|
```ts
|
|
427
|
-
import {
|
|
428
|
-
|
|
429
|
-
date(new Date(), "short"); // 예: "08/02/25, 14:30"
|
|
430
|
-
date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
|
|
431
|
-
```
|
|
387
|
+
import { Intl } from "intlayer";
|
|
432
388
|
|
|
433
|
-
|
|
389
|
+
const languageNames = new Intl.DisplayNames("en", { type: "language" });
|
|
390
|
+
languageNames.of("fr"); // "French"
|
|
434
391
|
|
|
435
|
-
|
|
392
|
+
const regionNames = new Intl.DisplayNames("fr", { type: "region" });
|
|
393
|
+
regionNames.of("US"); // "États-Unis"
|
|
394
|
+
```
|
|
436
395
|
|
|
437
|
-
|
|
438
|
-
- **from**: `Date | string | number`
|
|
439
|
-
- **to**: `Date | string | number` (기본값은 `new Date()`)
|
|
440
|
-
- **options**: `{ locale?: LocalesValues; unit?: Intl.RelativeTimeFormatUnit; numeric?: Intl.RelativeTimeFormatNumeric; style?: Intl.RelativeTimeFormatStyle }`
|
|
441
|
-
- 기본 `unit`은 `"second"`입니다.
|
|
396
|
+
#### `Intl.Collator`
|
|
442
397
|
|
|
443
|
-
|
|
398
|
+
로케일을 인식한 문자열 비교 및 정렬:
|
|
444
399
|
|
|
445
400
|
```ts
|
|
446
|
-
import {
|
|
401
|
+
import { Intl } from "intlayer";
|
|
447
402
|
|
|
448
|
-
const
|
|
449
|
-
|
|
450
|
-
|
|
403
|
+
const collator = new Intl.Collator("de", {
|
|
404
|
+
sensitivity: "base",
|
|
405
|
+
numeric: true,
|
|
406
|
+
});
|
|
451
407
|
|
|
452
|
-
const
|
|
453
|
-
|
|
408
|
+
const words = ["äpfel", "zebra", "100", "20"];
|
|
409
|
+
words.sort(collator.compare); // ["20", "100", "äpfel", "zebra"]
|
|
454
410
|
```
|
|
455
411
|
|
|
456
412
|
#### `Intl.PluralRules`
|
|
@@ -545,44 +501,20 @@ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge
|
|
|
545
501
|
list([1, 2, 3], { type: "unit" }); // "1, 2, 3"
|
|
546
502
|
```
|
|
547
503
|
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
- 모든 헬퍼는 `string` 입력을 허용하며, 내부적으로 숫자나 날짜로 강제 변환됩니다.
|
|
551
|
-
- 로케일이 제공되지 않으면 구성된 `internationalization.defaultLocale`이 기본값으로 사용됩니다.
|
|
552
|
-
- 이 유틸리티들은 얇은 래퍼이며, 고급 포맷팅이 필요할 경우 표준 `Intl` 옵션을 직접 전달하세요.
|
|
553
|
-
|
|
554
|
-
## Content Handling Utilities
|
|
555
|
-
|
|
556
|
-
## 진입점 및 재내보내기 (`@index.ts`)
|
|
557
|
-
|
|
558
|
-
포매터들은 코어 패키지에 존재하며, 런타임 전반에 걸쳐 임포트를 편리하게 하기 위해 상위 패키지에서 재내보내기됩니다:
|
|
504
|
+
### `getHTMLTextDir(locale?)`
|
|
559
505
|
|
|
560
|
-
|
|
506
|
+
로케일에 대한 텍스트 방향을 반환합니다:
|
|
561
507
|
|
|
562
508
|
```ts
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
relativeTime,
|
|
569
|
-
units,
|
|
570
|
-
compact,
|
|
571
|
-
list,
|
|
572
|
-
Intl,
|
|
573
|
-
getLocaleName,
|
|
574
|
-
getLocaleLang,
|
|
575
|
-
getLocaleFromPath,
|
|
576
|
-
getPathWithoutLocale,
|
|
577
|
-
getLocalizedUrl,
|
|
578
|
-
getHTMLTextDir,
|
|
579
|
-
getContent,
|
|
580
|
-
getTranslation,
|
|
581
|
-
getIntlayer,
|
|
582
|
-
getIntlayerAsync,
|
|
583
|
-
} from "intlayer";
|
|
509
|
+
import { getHTMLTextDir } from "intlayer";
|
|
510
|
+
|
|
511
|
+
getHTMLTextDir("en-US"); // "ltr"
|
|
512
|
+
getHTMLTextDir("ar"); // "rtl"
|
|
513
|
+
getHTMLTextDir("he"); // "rtl"
|
|
584
514
|
```
|
|
585
515
|
|
|
516
|
+
## Content Handling Utilities
|
|
517
|
+
|
|
586
518
|
### React
|
|
587
519
|
|
|
588
520
|
클라이언트 컴포넌트:
|
|
@@ -663,6 +595,20 @@ import {
|
|
|
663
595
|
|
|
664
596
|
> 이 훅들은 `IntlayerProvider` 또는 `IntlayerServerProvider`에서 설정된 로케일을 고려합니다.
|
|
665
597
|
|
|
598
|
+
### `getTranslation(languageContent, locale?, fallback?)`
|
|
599
|
+
|
|
600
|
+
특정 로케일의 콘텐츠를 추출합니다:
|
|
601
|
+
|
|
602
|
+
```ts
|
|
603
|
+
import { getTranslation } from "intlayer";
|
|
604
|
+
|
|
605
|
+
const content = getTranslation(
|
|
606
|
+
{ ko: "안녕하세요", en: "Hello", fr: "Bonjour", de: "Hallo" },
|
|
607
|
+
"fr",
|
|
608
|
+
true
|
|
609
|
+
); // "Bonjour"
|
|
610
|
+
```
|
|
611
|
+
|
|
666
612
|
### Vue
|
|
667
613
|
|
|
668
614
|
클라이언트 컴포넌트:
|