@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/dist/esm/common.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.mjs","names":[],"sources":["../../src/common.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { getLocalizedUrl } from '@intlayer/core/localization';\nimport { getMarkdownMetadata } from '@intlayer/core/transpiler';\nimport * as Locales from '@intlayer/types/locales';\nimport type { LocalesValues } from '@intlayer/types/module_augmentation';\n\nexport const defaultLocale = Locales.ENGLISH;\n\nexport const GITHUB_URL_PREFIX =\n 'https://github.com/aymericzip/intlayer/blob/main/docs';\nexport const URL_PREFIX = 'https://intlayer.org/';\n\nexport const getKeys = <T extends Record<string, any>>(obj: T): (keyof T)[] =>\n Object.keys(obj) as (keyof T)[];\n\nexport const getFiles = async <\n F extends Record<`./${string}`, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n lang: LocalesValues = defaultLocale as LocalesValues\n): Promise<Record<string, string>> => {\n const filesEntries = await Promise.all(\n Object.entries(files)\n .map(([key, value]) => [key, value[lang as LocalesValues]])\n .map(async ([key, value]) => [key, await value])\n );\n const filesResult = Object.fromEntries(filesEntries);\n return filesResult;\n};\n\nexport const getFile = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n docKey: keyof F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<string> => {\n const fileRecord = files[docKey];\n\n if (!fileRecord) {\n throw new Error(`File ${docKey as string} not found`);\n }\n\n const file = await files[docKey]?.[locale];\n\n if (!file) {\n const englishFile = await files[docKey]?.[defaultLocale as LocalesValues];\n\n if (!englishFile) {\n throw new Error(`File ${docKey as string} not found`);\n }\n\n return englishFile;\n }\n\n return file;\n};\n\nexport type FileMetadata = {\n docKey: string;\n url: string;\n relativeUrl: string;\n githubUrl: string;\n title: string;\n slugs: string[];\n description: string;\n keywords: string[];\n updatedAt: string;\n createdAt: string;\n author?: string;\n youtubeVideo?: string;\n applicationTemplate?: string;\n applicationShowcase?: string;\n history?: {\n version: string;\n date: string;\n changes: string;\n }[];\n};\n\nexport const formatMetadata = (\n docKey: string,\n file: string,\n locale: LocalesValues = defaultLocale as LocalesValues\n): FileMetadata => {\n const metadata = getMarkdownMetadata(file);\n\n const slugs = (metadata.slugs ?? []).map(String);\n const keywords = (metadata.keywords ?? []).map(String);\n\n const relativeUrl = join('/', ...slugs);\n\n const slicedDocKey = docKey.slice(1);\n\n // Normalise author: accept both a plain string handle (new format)\n // and a legacy object `{ github: '...' }` — always reduce to a plain string.\n const rawAuthor = metadata.author as\n | string\n | { name?: string; github?: string }\n | undefined;\n const author: string | undefined =\n typeof rawAuthor === 'string'\n ? rawAuthor || undefined\n : rawAuthor?.github || undefined;\n\n return {\n ...metadata,\n docKey,\n slugs,\n keywords,\n author,\n githubUrl: `${GITHUB_URL_PREFIX}${slicedDocKey}`.replace(\n '/en/',\n `/${locale}/`\n ),\n relativeUrl: getLocalizedUrl(relativeUrl, locale),\n url: getLocalizedUrl(join(URL_PREFIX, relativeUrl), locale),\n } as FileMetadata;\n};\n\nexport const getFileMetadata = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n R extends FileMetadata,\n>(\n files: F,\n docKey: keyof F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<R> => {\n const file = await getFile(files, docKey, locale);\n\n return formatMetadata(docKey as string, file, locale) as R;\n};\n\nexport const getFileMetadataRecord = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<Record<keyof F, FileMetadata>> => {\n const results = await Promise.allSettled(\n Object.entries(files).map(async ([key]) => {\n const metadata = await getFileMetadata(files, key as keyof F, locale);\n return [key, metadata] as [string, FileMetadata];\n })\n );\n const filesEntries = results\n .filter(\n (r): r is PromiseFulfilledResult<[string, FileMetadata]> =>\n r.status === 'fulfilled'\n )\n .map((r) => r.value);\n const filesResult = Object.fromEntries(filesEntries);\n return filesResult as Record<keyof F, FileMetadata>;\n};\n\nexport const getFileMetadataBySlug = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n slugs: string | string[],\n locale: LocalesValues = defaultLocale as LocalesValues,\n strict = false\n) => {\n const slugsArray = Array.isArray(slugs) ? slugs : [slugs];\n const filesMetadata = await getFileMetadataRecord(\n files,\n defaultLocale as LocalesValues\n );\n\n let fileMetadataArray: FileMetadata[] = Object.values(filesMetadata).filter(\n (fileMetadata) =>\n slugsArray.every((slug) => fileMetadata.slugs?.includes(slug))\n );\n\n if (strict) {\n fileMetadataArray = fileMetadataArray.filter(\n (fileMetadata) => fileMetadata.slugs.length === slugsArray.length\n );\n }\n\n if (locale !== defaultLocale) {\n const localizedFileMetadata = await Promise.all(\n fileMetadataArray.map(\n async (fileMetadata) =>\n await getFileMetadata(files, fileMetadata.docKey, locale)\n )\n );\n\n return localizedFileMetadata;\n }\n\n return fileMetadataArray;\n};\n\nexport const getFileBySlug = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n slugs: string | string[],\n locale: LocalesValues = defaultLocale as LocalesValues,\n strict = false\n) => {\n const slugsArray = Array.isArray(slugs) ? slugs : [slugs];\n const filesMetadata = await getFileMetadataRecord(\n files,\n defaultLocale as LocalesValues\n );\n\n let fileMetadataArray = Object.values(filesMetadata).filter((fileMetadata) =>\n slugsArray.every((slug) => fileMetadata.slugs?.includes(slug))\n );\n\n if (strict) {\n fileMetadataArray = fileMetadataArray.filter(\n (fileMetadata) => fileMetadata.slugs.length === slugsArray.length\n );\n }\n\n const fileList = await Promise.all(\n fileMetadataArray.map(async (fileMetadata) => {\n const file = await getFile(files, fileMetadata.docKey, locale);\n return file;\n })\n );\n\n return fileList;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common.mjs","names":[],"sources":["../../src/common.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { getLocalizedUrl } from '@intlayer/core/localization';\nimport { getMarkdownMetadata } from '@intlayer/core/transpiler';\nimport * as Locales from '@intlayer/types/locales';\nimport type { LocalesValues } from '@intlayer/types/module_augmentation';\n\nexport const defaultLocale = Locales.ENGLISH;\n\nexport const GITHUB_URL_PREFIX =\n 'https://github.com/aymericzip/intlayer/blob/main/docs';\nexport const URL_PREFIX = 'https://intlayer.org/';\n\nexport const getKeys = <T extends Record<string, any>>(obj: T): (keyof T)[] =>\n Object.keys(obj) as (keyof T)[];\n\nexport const getFiles = async <\n F extends Record<`./${string}`, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n lang: LocalesValues = defaultLocale as LocalesValues\n): Promise<Record<string, string>> => {\n const filesEntries = await Promise.all(\n Object.entries(files)\n .map(([key, value]) => [key, value[lang as LocalesValues]])\n .map(async ([key, value]) => [key, await value])\n );\n const filesResult = Object.fromEntries(filesEntries);\n return filesResult;\n};\n\nexport const getFile = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n docKey: keyof F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<string> => {\n const fileRecord = files[docKey];\n\n if (!fileRecord) {\n throw new Error(`File ${docKey as string} not found`);\n }\n\n const file = await files[docKey]?.[locale];\n\n if (!file) {\n const englishFile = await files[docKey]?.[defaultLocale as LocalesValues];\n\n if (!englishFile) {\n throw new Error(`File ${docKey as string} not found`);\n }\n\n return englishFile;\n }\n\n return file;\n};\n\nexport type FileMetadata = {\n docKey: string;\n url: string;\n relativeUrl: string;\n githubUrl: string;\n title: string;\n slugs: string[];\n description: string;\n keywords: string[];\n updatedAt: string;\n createdAt: string;\n author?: string;\n youtubeVideo?: string;\n applicationTemplate?: string;\n applicationShowcase?: string;\n history?: {\n version: string;\n date: string;\n changes: string;\n }[];\n};\n\nexport const formatMetadata = (\n docKey: string,\n file: string,\n locale: LocalesValues = defaultLocale as LocalesValues\n): FileMetadata => {\n const metadata = getMarkdownMetadata(file);\n\n const slugs = (metadata.slugs ?? []).map(String);\n const keywords = (metadata.keywords ?? []).map(String);\n\n const relativeUrl = join('/', ...slugs);\n\n const slicedDocKey = docKey.slice(1);\n\n // Normalise author: accept both a plain string handle (new format)\n // and a legacy object `{ github: '...' }` — always reduce to a plain string.\n const rawAuthor = metadata.author as\n | string\n | { name?: string; github?: string }\n | undefined;\n const author: string | undefined =\n typeof rawAuthor === 'string'\n ? rawAuthor || undefined\n : rawAuthor?.github || undefined;\n\n return {\n ...metadata,\n docKey,\n slugs,\n keywords,\n author,\n githubUrl: `${GITHUB_URL_PREFIX}${slicedDocKey}`.replace(\n '/en/',\n `/${locale}/`\n ),\n relativeUrl: getLocalizedUrl(relativeUrl, locale),\n url: getLocalizedUrl(join(URL_PREFIX, relativeUrl), locale),\n } as FileMetadata;\n};\n\nexport const getFileMetadata = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n R extends FileMetadata,\n>(\n files: F,\n docKey: keyof F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<R> => {\n const file = await getFile(files, docKey, locale);\n\n return formatMetadata(docKey as string, file, locale) as R;\n};\n\n/**\n * Per-locale metadata records, keyed by the entry map they were built from.\n *\n * Building a record parses the frontmatter of every document of a category, and\n * callers such as {@link getFileMetadataBySlug} need the whole record just to\n * resolve a single slug — which a static site generator repeats for every page\n * it renders. Documents are read once per process anyway (each entry caches its\n * own read), so the derived metadata is equally safe to keep.\n */\nconst fileMetadataRecordCache = new WeakMap<\n Record<string, unknown>,\n Map<LocalesValues, Promise<Record<string, FileMetadata>>>\n>();\n\nconst buildFileMetadataRecord = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n locale: LocalesValues\n): Promise<Record<keyof F, FileMetadata>> => {\n const results = await Promise.allSettled(\n Object.entries(files).map(async ([key]) => {\n const metadata = await getFileMetadata(files, key as keyof F, locale);\n return [key, metadata] as [string, FileMetadata];\n })\n );\n const filesEntries = results\n .filter(\n (r): r is PromiseFulfilledResult<[string, FileMetadata]> =>\n r.status === 'fulfilled'\n )\n .map((r) => r.value);\n const filesResult = Object.fromEntries(filesEntries);\n return filesResult as Record<keyof F, FileMetadata>;\n};\n\nexport const getFileMetadataRecord = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n locale: LocalesValues = defaultLocale as LocalesValues\n): Promise<Record<keyof F, FileMetadata>> => {\n let localeCache = fileMetadataRecordCache.get(files);\n\n if (!localeCache) {\n localeCache = new Map();\n fileMetadataRecordCache.set(files, localeCache);\n }\n\n let record = localeCache.get(locale);\n\n if (!record) {\n record = buildFileMetadataRecord(files, locale);\n localeCache.set(locale, record);\n }\n\n return (await record) as Record<keyof F, FileMetadata>;\n};\n\nexport const getFileMetadataBySlug = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n slugs: string | string[],\n locale: LocalesValues = defaultLocale as LocalesValues,\n strict = false\n) => {\n const slugsArray = Array.isArray(slugs) ? slugs : [slugs];\n const filesMetadata = await getFileMetadataRecord(\n files,\n defaultLocale as LocalesValues\n );\n\n let fileMetadataArray: FileMetadata[] = Object.values(filesMetadata).filter(\n (fileMetadata) =>\n slugsArray.every((slug) => fileMetadata.slugs?.includes(slug))\n );\n\n if (strict) {\n fileMetadataArray = fileMetadataArray.filter(\n (fileMetadata) => fileMetadata.slugs.length === slugsArray.length\n );\n }\n\n if (locale !== defaultLocale) {\n const localizedFileMetadata = await Promise.all(\n fileMetadataArray.map(\n async (fileMetadata) =>\n await getFileMetadata(files, fileMetadata.docKey, locale)\n )\n );\n\n return localizedFileMetadata;\n }\n\n return fileMetadataArray;\n};\n\nexport const getFileBySlug = async <\n F extends Record<string, Record<LocalesValues, Promise<string>>>,\n>(\n files: F,\n slugs: string | string[],\n locale: LocalesValues = defaultLocale as LocalesValues,\n strict = false\n) => {\n const slugsArray = Array.isArray(slugs) ? slugs : [slugs];\n const filesMetadata = await getFileMetadataRecord(\n files,\n defaultLocale as LocalesValues\n );\n\n let fileMetadataArray = Object.values(filesMetadata).filter((fileMetadata) =>\n slugsArray.every((slug) => fileMetadata.slugs?.includes(slug))\n );\n\n if (strict) {\n fileMetadataArray = fileMetadataArray.filter(\n (fileMetadata) => fileMetadata.slugs.length === slugsArray.length\n );\n }\n\n const fileList = await Promise.all(\n fileMetadataArray.map(async (fileMetadata) => {\n const file = await getFile(files, fileMetadata.docKey, locale);\n return file;\n })\n );\n\n return fileList;\n};\n"],"mappings":";;;;;;AAMA,MAAa,gBAAgB,QAAQ;AAErC,MAAa,oBACX;AACF,MAAa,aAAa;AAE1B,MAAa,WAA0C,QACrD,OAAO,KAAK,GAAG;AAEjB,MAAa,WAAW,OAGtB,OACA,OAAsB,kBACc;CACpC,MAAM,eAAe,MAAM,QAAQ,IACjC,OAAO,QAAQ,KAAK,CAAC,CAClB,KAAK,CAAC,KAAK,WAAW,CAAC,KAAK,MAAM,KAAsB,CAAC,CAAC,CAC1D,IAAI,OAAO,CAAC,KAAK,WAAW,CAAC,KAAK,MAAM,KAAK,CAAC,CACnD;CAEA,OADoB,OAAO,YAAY,YACtB;AACnB;AAEA,MAAa,UAAU,OAGrB,OACA,QACA,SAAwB,kBACJ;CAGpB,IAAI,CAFe,MAAM,SAGvB,MAAM,IAAI,MAAM,QAAQ,OAAiB,WAAW;CAGtD,MAAM,OAAO,MAAM,MAAM,OAAO,GAAG;CAEnC,IAAI,CAAC,MAAM;EACT,MAAM,cAAc,MAAM,MAAM,OAAO,GAAG;EAE1C,IAAI,CAAC,aACH,MAAM,IAAI,MAAM,QAAQ,OAAiB,WAAW;EAGtD,OAAO;CACT;CAEA,OAAO;AACT;AAwBA,MAAa,kBACX,QACA,MACA,SAAwB,kBACP;CACjB,MAAM,WAAW,oBAAoB,IAAI;CAEzC,MAAM,SAAS,SAAS,SAAS,CAAC,EAAC,CAAE,IAAI,MAAM;CAC/C,MAAM,YAAY,SAAS,YAAY,CAAC,EAAC,CAAE,IAAI,MAAM;CAErD,MAAM,cAAc,KAAK,KAAK,GAAG,KAAK;CAEtC,MAAM,eAAe,OAAO,MAAM,CAAC;CAInC,MAAM,YAAY,SAAS;CAI3B,MAAM,SACJ,OAAO,cAAc,WACjB,aAAa,SACb,WAAW,UAAU;CAE3B,OAAO;EACL,GAAG;EACH;EACA;EACA;EACA;EACA,WAAW,GAAG,oBAAoB,eAAe,QAC/C,QACA,IAAI,OAAO,EACb;EACA,aAAa,gBAAgB,aAAa,MAAM;EAChD,KAAK,gBAAgB,KAAK,YAAY,WAAW,GAAG,MAAM;CAC5D;AACF;AAEA,MAAa,kBAAkB,OAI7B,OACA,QACA,SAAwB,kBACT;CACf,MAAM,OAAO,MAAM,QAAQ,OAAO,QAAQ,MAAM;CAEhD,OAAO,eAAe,QAAkB,MAAM,MAAM;AACtD;;;;;;;;;;AAWA,MAAM,0CAA0B,IAAI,QAGlC;AAEF,MAAM,0BAA0B,OAG9B,OACA,WAC2C;CAO3C,MAAM,gBAAe,MANC,QAAQ,WAC5B,OAAO,QAAQ,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS;EAEzC,OAAO,CAAC,KAAK,MADU,gBAAgB,OAAO,KAAgB,MAAM,CAC/C;CACvB,CAAC,CACH,EAC4B,CACzB,QACE,MACC,EAAE,WAAW,WACjB,CAAC,CACA,KAAK,MAAM,EAAE,KAAK;CAErB,OADoB,OAAO,YAAY,YACtB;AACnB;AAEA,MAAa,wBAAwB,OAGnC,OACA,SAAwB,kBACmB;CAC3C,IAAI,cAAc,wBAAwB,IAAI,KAAK;CAEnD,IAAI,CAAC,aAAa;EAChB,8BAAc,IAAI,IAAI;EACtB,wBAAwB,IAAI,OAAO,WAAW;CAChD;CAEA,IAAI,SAAS,YAAY,IAAI,MAAM;CAEnC,IAAI,CAAC,QAAQ;EACX,SAAS,wBAAwB,OAAO,MAAM;EAC9C,YAAY,IAAI,QAAQ,MAAM;CAChC;CAEA,OAAQ,MAAM;AAChB;AAEA,MAAa,wBAAwB,OAGnC,OACA,OACA,SAAwB,eACxB,SAAS,UACN;CACH,MAAM,aAAa,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;CACxD,MAAM,gBAAgB,MAAM,sBAC1B,OACA,aACF;CAEA,IAAI,oBAAoC,OAAO,OAAO,aAAa,CAAC,CAAC,QAClE,iBACC,WAAW,OAAO,SAAS,aAAa,OAAO,SAAS,IAAI,CAAC,CACjE;CAEA,IAAI,QACF,oBAAoB,kBAAkB,QACnC,iBAAiB,aAAa,MAAM,WAAW,WAAW,MAC7D;CAGF,IAAI,WAAW,eAQb,OAAO,MAP6B,QAAQ,IAC1C,kBAAkB,IAChB,OAAO,iBACL,MAAM,gBAAgB,OAAO,aAAa,QAAQ,MAAM,CAC5D,CACF;CAKF,OAAO;AACT;AAEA,MAAa,gBAAgB,OAG3B,OACA,OACA,SAAwB,eACxB,SAAS,UACN;CACH,MAAM,aAAa,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;CACxD,MAAM,gBAAgB,MAAM,sBAC1B,OACA,aACF;CAEA,IAAI,oBAAoB,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,iBAC3D,WAAW,OAAO,SAAS,aAAa,OAAO,SAAS,IAAI,CAAC,CAC/D;CAEA,IAAI,QACF,oBAAoB,kBAAkB,QACnC,iBAAiB,aAAa,MAAM,WAAW,WAAW,MAC7D;CAUF,OAAO,MAPgB,QAAQ,IAC7B,kBAAkB,IAAI,OAAO,iBAAiB;EAE5C,OAAO,MADY,QAAQ,OAAO,aAAa,QAAQ,MAAM;CAE/D,CAAC,CACH;AAGF"}
|
|
@@ -16,22 +16,49 @@ try {
|
|
|
16
16
|
baseDir = getPackageJsonPath(currentDir).baseDir;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Reads a document, preferring the requested locale and falling back to English.
|
|
21
|
+
*/
|
|
22
|
+
const readLocaleFile = async (relativeAfterLocale, locale) => {
|
|
20
23
|
const target1 = join(baseDir, `./blog/${locale}/${relativeAfterLocale}`);
|
|
21
|
-
if (existsSync(target1)) return readFile(target1, "utf8");
|
|
24
|
+
if (existsSync(target1)) return await readFile(target1, "utf8");
|
|
22
25
|
const target2 = join(baseDir, `./blog/en/${relativeAfterLocale}`);
|
|
23
|
-
if (existsSync(target2)) return readFile(target2, "utf8");
|
|
24
|
-
|
|
26
|
+
if (existsSync(target2)) return await readFile(target2, "utf8");
|
|
27
|
+
throw new Error(`[docs] File not found: ${relativeAfterLocale} - locale: ${locale} - path: ${target1} - path: ${target2}`);
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Builds a lazy, awaitable handle over a document.
|
|
31
|
+
*
|
|
32
|
+
* The entry map below holds one handle per document *per locale*, so reading
|
|
33
|
+
* eagerly would pull every markdown file of every locale into memory as soon as
|
|
34
|
+
* this module is imported — hundreds of megabytes, duplicated in every
|
|
35
|
+
* prerender worker, for the handful of documents a page actually renders.
|
|
36
|
+
*
|
|
37
|
+
* The returned value is a thenable rather than a promise: consumers only ever
|
|
38
|
+
* `await` it, and `await` triggers `then`, so the file is read on first use and
|
|
39
|
+
* the resulting promise is cached for subsequent reads.
|
|
40
|
+
*/
|
|
41
|
+
const readLocale = (relativeAfterLocale, locale) => {
|
|
42
|
+
let pendingRead;
|
|
43
|
+
const read = () => {
|
|
44
|
+
pendingRead ??= readLocaleFile(relativeAfterLocale, locale);
|
|
45
|
+
return pendingRead;
|
|
46
|
+
};
|
|
47
|
+
return {
|
|
48
|
+
then: (onFulfilled, onRejected) => read().then(onFulfilled, onRejected),
|
|
49
|
+
catch: (onRejected) => read().catch(onRejected),
|
|
50
|
+
finally: (onFinally) => read().finally(onFinally)
|
|
51
|
+
};
|
|
25
52
|
};
|
|
26
53
|
const blogEntry = {
|
|
27
54
|
"./blog/en/compiler_vs_declarative_i18n.md": {
|
|
28
55
|
en: readLocale("compiler_vs_declarative_i18n.md", "en"),
|
|
56
|
+
es: readLocale("compiler_vs_declarative_i18n.md", "es"),
|
|
29
57
|
ru: readLocale("compiler_vs_declarative_i18n.md", "ru"),
|
|
30
58
|
ja: readLocale("compiler_vs_declarative_i18n.md", "ja"),
|
|
31
59
|
fr: readLocale("compiler_vs_declarative_i18n.md", "fr"),
|
|
32
60
|
ko: readLocale("compiler_vs_declarative_i18n.md", "ko"),
|
|
33
61
|
zh: readLocale("compiler_vs_declarative_i18n.md", "zh"),
|
|
34
|
-
es: readLocale("compiler_vs_declarative_i18n.md", "es"),
|
|
35
62
|
de: readLocale("compiler_vs_declarative_i18n.md", "de"),
|
|
36
63
|
ar: readLocale("compiler_vs_declarative_i18n.md", "ar"),
|
|
37
64
|
it: readLocale("compiler_vs_declarative_i18n.md", "it"),
|
|
@@ -46,12 +73,12 @@ const blogEntry = {
|
|
|
46
73
|
},
|
|
47
74
|
"./blog/en/i18n_meaning.md": {
|
|
48
75
|
en: readLocale("i18n_meaning.md", "en"),
|
|
76
|
+
es: readLocale("i18n_meaning.md", "es"),
|
|
49
77
|
ru: readLocale("i18n_meaning.md", "ru"),
|
|
50
78
|
ja: readLocale("i18n_meaning.md", "ja"),
|
|
51
79
|
fr: readLocale("i18n_meaning.md", "fr"),
|
|
52
80
|
ko: readLocale("i18n_meaning.md", "ko"),
|
|
53
81
|
zh: readLocale("i18n_meaning.md", "zh"),
|
|
54
|
-
es: readLocale("i18n_meaning.md", "es"),
|
|
55
82
|
de: readLocale("i18n_meaning.md", "de"),
|
|
56
83
|
ar: readLocale("i18n_meaning.md", "ar"),
|
|
57
84
|
it: readLocale("i18n_meaning.md", "it"),
|
|
@@ -66,12 +93,12 @@ const blogEntry = {
|
|
|
66
93
|
},
|
|
67
94
|
"./blog/en/i18n_using_next-i18next.md": {
|
|
68
95
|
en: readLocale("i18n_using_next-i18next.md", "en"),
|
|
96
|
+
es: readLocale("i18n_using_next-i18next.md", "es"),
|
|
69
97
|
ru: readLocale("i18n_using_next-i18next.md", "ru"),
|
|
70
98
|
ja: readLocale("i18n_using_next-i18next.md", "ja"),
|
|
71
99
|
fr: readLocale("i18n_using_next-i18next.md", "fr"),
|
|
72
100
|
ko: readLocale("i18n_using_next-i18next.md", "ko"),
|
|
73
101
|
zh: readLocale("i18n_using_next-i18next.md", "zh"),
|
|
74
|
-
es: readLocale("i18n_using_next-i18next.md", "es"),
|
|
75
102
|
de: readLocale("i18n_using_next-i18next.md", "de"),
|
|
76
103
|
ar: readLocale("i18n_using_next-i18next.md", "ar"),
|
|
77
104
|
it: readLocale("i18n_using_next-i18next.md", "it"),
|
|
@@ -86,12 +113,12 @@ const blogEntry = {
|
|
|
86
113
|
},
|
|
87
114
|
"./blog/en/i18n_using_next-intl.md": {
|
|
88
115
|
en: readLocale("i18n_using_next-intl.md", "en"),
|
|
116
|
+
es: readLocale("i18n_using_next-intl.md", "es"),
|
|
89
117
|
ru: readLocale("i18n_using_next-intl.md", "ru"),
|
|
90
118
|
ja: readLocale("i18n_using_next-intl.md", "ja"),
|
|
91
119
|
fr: readLocale("i18n_using_next-intl.md", "fr"),
|
|
92
120
|
ko: readLocale("i18n_using_next-intl.md", "ko"),
|
|
93
121
|
zh: readLocale("i18n_using_next-intl.md", "zh"),
|
|
94
|
-
es: readLocale("i18n_using_next-intl.md", "es"),
|
|
95
122
|
de: readLocale("i18n_using_next-intl.md", "de"),
|
|
96
123
|
ar: readLocale("i18n_using_next-intl.md", "ar"),
|
|
97
124
|
it: readLocale("i18n_using_next-intl.md", "it"),
|
|
@@ -106,12 +133,12 @@ const blogEntry = {
|
|
|
106
133
|
},
|
|
107
134
|
"./blog/en/index.md": {
|
|
108
135
|
en: readLocale("index.md", "en"),
|
|
136
|
+
es: readLocale("index.md", "es"),
|
|
109
137
|
ru: readLocale("index.md", "ru"),
|
|
110
138
|
ja: readLocale("index.md", "ja"),
|
|
111
139
|
fr: readLocale("index.md", "fr"),
|
|
112
140
|
ko: readLocale("index.md", "ko"),
|
|
113
141
|
zh: readLocale("index.md", "zh"),
|
|
114
|
-
es: readLocale("index.md", "es"),
|
|
115
142
|
de: readLocale("index.md", "de"),
|
|
116
143
|
ar: readLocale("index.md", "ar"),
|
|
117
144
|
it: readLocale("index.md", "it"),
|
|
@@ -126,12 +153,12 @@ const blogEntry = {
|
|
|
126
153
|
},
|
|
127
154
|
"./blog/en/internationalization_and_SEO.md": {
|
|
128
155
|
en: readLocale("internationalization_and_SEO.md", "en"),
|
|
156
|
+
es: readLocale("internationalization_and_SEO.md", "es"),
|
|
129
157
|
ru: readLocale("internationalization_and_SEO.md", "ru"),
|
|
130
158
|
ja: readLocale("internationalization_and_SEO.md", "ja"),
|
|
131
159
|
fr: readLocale("internationalization_and_SEO.md", "fr"),
|
|
132
160
|
ko: readLocale("internationalization_and_SEO.md", "ko"),
|
|
133
161
|
zh: readLocale("internationalization_and_SEO.md", "zh"),
|
|
134
|
-
es: readLocale("internationalization_and_SEO.md", "es"),
|
|
135
162
|
de: readLocale("internationalization_and_SEO.md", "de"),
|
|
136
163
|
ar: readLocale("internationalization_and_SEO.md", "ar"),
|
|
137
164
|
it: readLocale("internationalization_and_SEO.md", "it"),
|
|
@@ -146,12 +173,12 @@ const blogEntry = {
|
|
|
146
173
|
},
|
|
147
174
|
"./blog/en/intlayer_with_i18next.md": {
|
|
148
175
|
en: readLocale("intlayer_with_i18next.md", "en"),
|
|
176
|
+
es: readLocale("intlayer_with_i18next.md", "es"),
|
|
149
177
|
ru: readLocale("intlayer_with_i18next.md", "ru"),
|
|
150
178
|
ja: readLocale("intlayer_with_i18next.md", "ja"),
|
|
151
179
|
fr: readLocale("intlayer_with_i18next.md", "fr"),
|
|
152
180
|
ko: readLocale("intlayer_with_i18next.md", "ko"),
|
|
153
181
|
zh: readLocale("intlayer_with_i18next.md", "zh"),
|
|
154
|
-
es: readLocale("intlayer_with_i18next.md", "es"),
|
|
155
182
|
de: readLocale("intlayer_with_i18next.md", "de"),
|
|
156
183
|
ar: readLocale("intlayer_with_i18next.md", "ar"),
|
|
157
184
|
it: readLocale("intlayer_with_i18next.md", "it"),
|
|
@@ -166,12 +193,12 @@ const blogEntry = {
|
|
|
166
193
|
},
|
|
167
194
|
"./blog/en/intlayer_with_next-i18next.md": {
|
|
168
195
|
en: readLocale("intlayer_with_next-i18next.md", "en"),
|
|
196
|
+
es: readLocale("intlayer_with_next-i18next.md", "es"),
|
|
169
197
|
ru: readLocale("intlayer_with_next-i18next.md", "ru"),
|
|
170
198
|
ja: readLocale("intlayer_with_next-i18next.md", "ja"),
|
|
171
199
|
fr: readLocale("intlayer_with_next-i18next.md", "fr"),
|
|
172
200
|
ko: readLocale("intlayer_with_next-i18next.md", "ko"),
|
|
173
201
|
zh: readLocale("intlayer_with_next-i18next.md", "zh"),
|
|
174
|
-
es: readLocale("intlayer_with_next-i18next.md", "es"),
|
|
175
202
|
de: readLocale("intlayer_with_next-i18next.md", "de"),
|
|
176
203
|
ar: readLocale("intlayer_with_next-i18next.md", "ar"),
|
|
177
204
|
it: readLocale("intlayer_with_next-i18next.md", "it"),
|
|
@@ -186,12 +213,12 @@ const blogEntry = {
|
|
|
186
213
|
},
|
|
187
214
|
"./blog/en/intlayer_with_next-intl.md": {
|
|
188
215
|
en: readLocale("intlayer_with_next-intl.md", "en"),
|
|
216
|
+
es: readLocale("intlayer_with_next-intl.md", "es"),
|
|
189
217
|
ru: readLocale("intlayer_with_next-intl.md", "ru"),
|
|
190
218
|
ja: readLocale("intlayer_with_next-intl.md", "ja"),
|
|
191
219
|
fr: readLocale("intlayer_with_next-intl.md", "fr"),
|
|
192
220
|
ko: readLocale("intlayer_with_next-intl.md", "ko"),
|
|
193
221
|
zh: readLocale("intlayer_with_next-intl.md", "zh"),
|
|
194
|
-
es: readLocale("intlayer_with_next-intl.md", "es"),
|
|
195
222
|
de: readLocale("intlayer_with_next-intl.md", "de"),
|
|
196
223
|
ar: readLocale("intlayer_with_next-intl.md", "ar"),
|
|
197
224
|
it: readLocale("intlayer_with_next-intl.md", "it"),
|
|
@@ -206,12 +233,12 @@ const blogEntry = {
|
|
|
206
233
|
},
|
|
207
234
|
"./blog/en/intlayer_with_react-i18next.md": {
|
|
208
235
|
en: readLocale("intlayer_with_react-i18next.md", "en"),
|
|
236
|
+
es: readLocale("intlayer_with_react-i18next.md", "es"),
|
|
209
237
|
ru: readLocale("intlayer_with_react-i18next.md", "ru"),
|
|
210
238
|
ja: readLocale("intlayer_with_react-i18next.md", "ja"),
|
|
211
239
|
fr: readLocale("intlayer_with_react-i18next.md", "fr"),
|
|
212
240
|
ko: readLocale("intlayer_with_react-i18next.md", "ko"),
|
|
213
241
|
zh: readLocale("intlayer_with_react-i18next.md", "zh"),
|
|
214
|
-
es: readLocale("intlayer_with_react-i18next.md", "es"),
|
|
215
242
|
de: readLocale("intlayer_with_react-i18next.md", "de"),
|
|
216
243
|
ar: readLocale("intlayer_with_react-i18next.md", "ar"),
|
|
217
244
|
it: readLocale("intlayer_with_react-i18next.md", "it"),
|
|
@@ -226,12 +253,12 @@ const blogEntry = {
|
|
|
226
253
|
},
|
|
227
254
|
"./blog/en/intlayer_with_react-intl.md": {
|
|
228
255
|
en: readLocale("intlayer_with_react-intl.md", "en"),
|
|
256
|
+
es: readLocale("intlayer_with_react-intl.md", "es"),
|
|
229
257
|
ru: readLocale("intlayer_with_react-intl.md", "ru"),
|
|
230
258
|
ja: readLocale("intlayer_with_react-intl.md", "ja"),
|
|
231
259
|
fr: readLocale("intlayer_with_react-intl.md", "fr"),
|
|
232
260
|
ko: readLocale("intlayer_with_react-intl.md", "ko"),
|
|
233
261
|
zh: readLocale("intlayer_with_react-intl.md", "zh"),
|
|
234
|
-
es: readLocale("intlayer_with_react-intl.md", "es"),
|
|
235
262
|
de: readLocale("intlayer_with_react-intl.md", "de"),
|
|
236
263
|
ar: readLocale("intlayer_with_react-intl.md", "ar"),
|
|
237
264
|
it: readLocale("intlayer_with_react-intl.md", "it"),
|
|
@@ -246,12 +273,12 @@ const blogEntry = {
|
|
|
246
273
|
},
|
|
247
274
|
"./blog/en/intlayer_with_vue-i18n.md": {
|
|
248
275
|
en: readLocale("intlayer_with_vue-i18n.md", "en"),
|
|
276
|
+
es: readLocale("intlayer_with_vue-i18n.md", "es"),
|
|
249
277
|
ru: readLocale("intlayer_with_vue-i18n.md", "ru"),
|
|
250
278
|
ja: readLocale("intlayer_with_vue-i18n.md", "ja"),
|
|
251
279
|
fr: readLocale("intlayer_with_vue-i18n.md", "fr"),
|
|
252
280
|
ko: readLocale("intlayer_with_vue-i18n.md", "ko"),
|
|
253
281
|
zh: readLocale("intlayer_with_vue-i18n.md", "zh"),
|
|
254
|
-
es: readLocale("intlayer_with_vue-i18n.md", "es"),
|
|
255
282
|
de: readLocale("intlayer_with_vue-i18n.md", "de"),
|
|
256
283
|
ar: readLocale("intlayer_with_vue-i18n.md", "ar"),
|
|
257
284
|
it: readLocale("intlayer_with_vue-i18n.md", "it"),
|
|
@@ -266,12 +293,12 @@ const blogEntry = {
|
|
|
266
293
|
},
|
|
267
294
|
"./blog/en/l10n_platform_alternative/Lokalise.md": {
|
|
268
295
|
en: readLocale("l10n_platform_alternative/Lokalise.md", "en"),
|
|
296
|
+
es: readLocale("l10n_platform_alternative/Lokalise.md", "es"),
|
|
269
297
|
ru: readLocale("l10n_platform_alternative/Lokalise.md", "ru"),
|
|
270
298
|
ja: readLocale("l10n_platform_alternative/Lokalise.md", "ja"),
|
|
271
299
|
fr: readLocale("l10n_platform_alternative/Lokalise.md", "fr"),
|
|
272
300
|
ko: readLocale("l10n_platform_alternative/Lokalise.md", "ko"),
|
|
273
301
|
zh: readLocale("l10n_platform_alternative/Lokalise.md", "zh"),
|
|
274
|
-
es: readLocale("l10n_platform_alternative/Lokalise.md", "es"),
|
|
275
302
|
de: readLocale("l10n_platform_alternative/Lokalise.md", "de"),
|
|
276
303
|
ar: readLocale("l10n_platform_alternative/Lokalise.md", "ar"),
|
|
277
304
|
it: readLocale("l10n_platform_alternative/Lokalise.md", "it"),
|
|
@@ -286,12 +313,12 @@ const blogEntry = {
|
|
|
286
313
|
},
|
|
287
314
|
"./blog/en/l10n_platform_alternative/crowdin.md": {
|
|
288
315
|
en: readLocale("l10n_platform_alternative/crowdin.md", "en"),
|
|
316
|
+
es: readLocale("l10n_platform_alternative/crowdin.md", "es"),
|
|
289
317
|
ru: readLocale("l10n_platform_alternative/crowdin.md", "ru"),
|
|
290
318
|
ja: readLocale("l10n_platform_alternative/crowdin.md", "ja"),
|
|
291
319
|
fr: readLocale("l10n_platform_alternative/crowdin.md", "fr"),
|
|
292
320
|
ko: readLocale("l10n_platform_alternative/crowdin.md", "ko"),
|
|
293
321
|
zh: readLocale("l10n_platform_alternative/crowdin.md", "zh"),
|
|
294
|
-
es: readLocale("l10n_platform_alternative/crowdin.md", "es"),
|
|
295
322
|
de: readLocale("l10n_platform_alternative/crowdin.md", "de"),
|
|
296
323
|
ar: readLocale("l10n_platform_alternative/crowdin.md", "ar"),
|
|
297
324
|
it: readLocale("l10n_platform_alternative/crowdin.md", "it"),
|
|
@@ -306,12 +333,12 @@ const blogEntry = {
|
|
|
306
333
|
},
|
|
307
334
|
"./blog/en/l10n_platform_alternative/phrase.md": {
|
|
308
335
|
en: readLocale("l10n_platform_alternative/phrase.md", "en"),
|
|
336
|
+
es: readLocale("l10n_platform_alternative/phrase.md", "es"),
|
|
309
337
|
ru: readLocale("l10n_platform_alternative/phrase.md", "ru"),
|
|
310
338
|
ja: readLocale("l10n_platform_alternative/phrase.md", "ja"),
|
|
311
339
|
fr: readLocale("l10n_platform_alternative/phrase.md", "fr"),
|
|
312
340
|
ko: readLocale("l10n_platform_alternative/phrase.md", "ko"),
|
|
313
341
|
zh: readLocale("l10n_platform_alternative/phrase.md", "zh"),
|
|
314
|
-
es: readLocale("l10n_platform_alternative/phrase.md", "es"),
|
|
315
342
|
de: readLocale("l10n_platform_alternative/phrase.md", "de"),
|
|
316
343
|
ar: readLocale("l10n_platform_alternative/phrase.md", "ar"),
|
|
317
344
|
it: readLocale("l10n_platform_alternative/phrase.md", "it"),
|
|
@@ -326,12 +353,12 @@ const blogEntry = {
|
|
|
326
353
|
},
|
|
327
354
|
"./blog/en/list_i18n_technologies/frameworks/angular.md": {
|
|
328
355
|
en: readLocale("list_i18n_technologies/frameworks/angular.md", "en"),
|
|
356
|
+
es: readLocale("list_i18n_technologies/frameworks/angular.md", "es"),
|
|
329
357
|
ru: readLocale("list_i18n_technologies/frameworks/angular.md", "ru"),
|
|
330
358
|
ja: readLocale("list_i18n_technologies/frameworks/angular.md", "ja"),
|
|
331
359
|
fr: readLocale("list_i18n_technologies/frameworks/angular.md", "fr"),
|
|
332
360
|
ko: readLocale("list_i18n_technologies/frameworks/angular.md", "ko"),
|
|
333
361
|
zh: readLocale("list_i18n_technologies/frameworks/angular.md", "zh"),
|
|
334
|
-
es: readLocale("list_i18n_technologies/frameworks/angular.md", "es"),
|
|
335
362
|
de: readLocale("list_i18n_technologies/frameworks/angular.md", "de"),
|
|
336
363
|
ar: readLocale("list_i18n_technologies/frameworks/angular.md", "ar"),
|
|
337
364
|
it: readLocale("list_i18n_technologies/frameworks/angular.md", "it"),
|
|
@@ -346,12 +373,12 @@ const blogEntry = {
|
|
|
346
373
|
},
|
|
347
374
|
"./blog/en/list_i18n_technologies/frameworks/react-native.md": {
|
|
348
375
|
en: readLocale("list_i18n_technologies/frameworks/react-native.md", "en"),
|
|
376
|
+
es: readLocale("list_i18n_technologies/frameworks/react-native.md", "es"),
|
|
349
377
|
ru: readLocale("list_i18n_technologies/frameworks/react-native.md", "ru"),
|
|
350
378
|
ja: readLocale("list_i18n_technologies/frameworks/react-native.md", "ja"),
|
|
351
379
|
fr: readLocale("list_i18n_technologies/frameworks/react-native.md", "fr"),
|
|
352
380
|
ko: readLocale("list_i18n_technologies/frameworks/react-native.md", "ko"),
|
|
353
381
|
zh: readLocale("list_i18n_technologies/frameworks/react-native.md", "zh"),
|
|
354
|
-
es: readLocale("list_i18n_technologies/frameworks/react-native.md", "es"),
|
|
355
382
|
de: readLocale("list_i18n_technologies/frameworks/react-native.md", "de"),
|
|
356
383
|
ar: readLocale("list_i18n_technologies/frameworks/react-native.md", "ar"),
|
|
357
384
|
it: readLocale("list_i18n_technologies/frameworks/react-native.md", "it"),
|
|
@@ -366,12 +393,12 @@ const blogEntry = {
|
|
|
366
393
|
},
|
|
367
394
|
"./blog/en/list_i18n_technologies/frameworks/react.md": {
|
|
368
395
|
en: readLocale("list_i18n_technologies/frameworks/react.md", "en"),
|
|
396
|
+
es: readLocale("list_i18n_technologies/frameworks/react.md", "es"),
|
|
369
397
|
ru: readLocale("list_i18n_technologies/frameworks/react.md", "ru"),
|
|
370
398
|
ja: readLocale("list_i18n_technologies/frameworks/react.md", "ja"),
|
|
371
399
|
fr: readLocale("list_i18n_technologies/frameworks/react.md", "fr"),
|
|
372
400
|
ko: readLocale("list_i18n_technologies/frameworks/react.md", "ko"),
|
|
373
401
|
zh: readLocale("list_i18n_technologies/frameworks/react.md", "zh"),
|
|
374
|
-
es: readLocale("list_i18n_technologies/frameworks/react.md", "es"),
|
|
375
402
|
de: readLocale("list_i18n_technologies/frameworks/react.md", "de"),
|
|
376
403
|
ar: readLocale("list_i18n_technologies/frameworks/react.md", "ar"),
|
|
377
404
|
it: readLocale("list_i18n_technologies/frameworks/react.md", "it"),
|
|
@@ -386,12 +413,12 @@ const blogEntry = {
|
|
|
386
413
|
},
|
|
387
414
|
"./blog/en/list_i18n_technologies/frameworks/svelte.md": {
|
|
388
415
|
en: readLocale("list_i18n_technologies/frameworks/svelte.md", "en"),
|
|
416
|
+
es: readLocale("list_i18n_technologies/frameworks/svelte.md", "es"),
|
|
389
417
|
ru: readLocale("list_i18n_technologies/frameworks/svelte.md", "ru"),
|
|
390
418
|
ja: readLocale("list_i18n_technologies/frameworks/svelte.md", "ja"),
|
|
391
419
|
fr: readLocale("list_i18n_technologies/frameworks/svelte.md", "fr"),
|
|
392
420
|
ko: readLocale("list_i18n_technologies/frameworks/svelte.md", "ko"),
|
|
393
421
|
zh: readLocale("list_i18n_technologies/frameworks/svelte.md", "zh"),
|
|
394
|
-
es: readLocale("list_i18n_technologies/frameworks/svelte.md", "es"),
|
|
395
422
|
de: readLocale("list_i18n_technologies/frameworks/svelte.md", "de"),
|
|
396
423
|
ar: readLocale("list_i18n_technologies/frameworks/svelte.md", "ar"),
|
|
397
424
|
it: readLocale("list_i18n_technologies/frameworks/svelte.md", "it"),
|
|
@@ -406,12 +433,12 @@ const blogEntry = {
|
|
|
406
433
|
},
|
|
407
434
|
"./blog/en/list_i18n_technologies/frameworks/vue.md": {
|
|
408
435
|
en: readLocale("list_i18n_technologies/frameworks/vue.md", "en"),
|
|
436
|
+
es: readLocale("list_i18n_technologies/frameworks/vue.md", "es"),
|
|
409
437
|
ru: readLocale("list_i18n_technologies/frameworks/vue.md", "ru"),
|
|
410
438
|
ja: readLocale("list_i18n_technologies/frameworks/vue.md", "ja"),
|
|
411
439
|
fr: readLocale("list_i18n_technologies/frameworks/vue.md", "fr"),
|
|
412
440
|
ko: readLocale("list_i18n_technologies/frameworks/vue.md", "ko"),
|
|
413
441
|
zh: readLocale("list_i18n_technologies/frameworks/vue.md", "zh"),
|
|
414
|
-
es: readLocale("list_i18n_technologies/frameworks/vue.md", "es"),
|
|
415
442
|
de: readLocale("list_i18n_technologies/frameworks/vue.md", "de"),
|
|
416
443
|
ar: readLocale("list_i18n_technologies/frameworks/vue.md", "ar"),
|
|
417
444
|
it: readLocale("list_i18n_technologies/frameworks/vue.md", "it"),
|
|
@@ -426,12 +453,12 @@ const blogEntry = {
|
|
|
426
453
|
},
|
|
427
454
|
"./blog/en/next-i18next_vs_next-intl_vs_intlayer.md": {
|
|
428
455
|
en: readLocale("next-i18next_vs_next-intl_vs_intlayer.md", "en"),
|
|
456
|
+
es: readLocale("next-i18next_vs_next-intl_vs_intlayer.md", "es"),
|
|
429
457
|
ru: readLocale("next-i18next_vs_next-intl_vs_intlayer.md", "ru"),
|
|
430
458
|
ja: readLocale("next-i18next_vs_next-intl_vs_intlayer.md", "ja"),
|
|
431
459
|
fr: readLocale("next-i18next_vs_next-intl_vs_intlayer.md", "fr"),
|
|
432
460
|
ko: readLocale("next-i18next_vs_next-intl_vs_intlayer.md", "ko"),
|
|
433
461
|
zh: readLocale("next-i18next_vs_next-intl_vs_intlayer.md", "zh"),
|
|
434
|
-
es: readLocale("next-i18next_vs_next-intl_vs_intlayer.md", "es"),
|
|
435
462
|
de: readLocale("next-i18next_vs_next-intl_vs_intlayer.md", "de"),
|
|
436
463
|
ar: readLocale("next-i18next_vs_next-intl_vs_intlayer.md", "ar"),
|
|
437
464
|
it: readLocale("next-i18next_vs_next-intl_vs_intlayer.md", "it"),
|
|
@@ -446,12 +473,12 @@ const blogEntry = {
|
|
|
446
473
|
},
|
|
447
474
|
"./blog/en/nextjs-multilingual-seo-comparison.md": {
|
|
448
475
|
en: readLocale("nextjs-multilingual-seo-comparison.md", "en"),
|
|
476
|
+
es: readLocale("nextjs-multilingual-seo-comparison.md", "es"),
|
|
449
477
|
ru: readLocale("nextjs-multilingual-seo-comparison.md", "ru"),
|
|
450
478
|
ja: readLocale("nextjs-multilingual-seo-comparison.md", "ja"),
|
|
451
479
|
fr: readLocale("nextjs-multilingual-seo-comparison.md", "fr"),
|
|
452
480
|
ko: readLocale("nextjs-multilingual-seo-comparison.md", "ko"),
|
|
453
481
|
zh: readLocale("nextjs-multilingual-seo-comparison.md", "zh"),
|
|
454
|
-
es: readLocale("nextjs-multilingual-seo-comparison.md", "es"),
|
|
455
482
|
de: readLocale("nextjs-multilingual-seo-comparison.md", "de"),
|
|
456
483
|
ar: readLocale("nextjs-multilingual-seo-comparison.md", "ar"),
|
|
457
484
|
it: readLocale("nextjs-multilingual-seo-comparison.md", "it"),
|
|
@@ -466,12 +493,12 @@ const blogEntry = {
|
|
|
466
493
|
},
|
|
467
494
|
"./blog/en/per-component_vs_centralized_i18n.md": {
|
|
468
495
|
en: readLocale("per-component_vs_centralized_i18n.md", "en"),
|
|
496
|
+
es: readLocale("per-component_vs_centralized_i18n.md", "es"),
|
|
469
497
|
ru: readLocale("per-component_vs_centralized_i18n.md", "ru"),
|
|
470
498
|
ja: readLocale("per-component_vs_centralized_i18n.md", "ja"),
|
|
471
499
|
fr: readLocale("per-component_vs_centralized_i18n.md", "fr"),
|
|
472
500
|
ko: readLocale("per-component_vs_centralized_i18n.md", "ko"),
|
|
473
501
|
zh: readLocale("per-component_vs_centralized_i18n.md", "zh"),
|
|
474
|
-
es: readLocale("per-component_vs_centralized_i18n.md", "es"),
|
|
475
502
|
de: readLocale("per-component_vs_centralized_i18n.md", "de"),
|
|
476
503
|
ar: readLocale("per-component_vs_centralized_i18n.md", "ar"),
|
|
477
504
|
it: readLocale("per-component_vs_centralized_i18n.md", "it"),
|
|
@@ -486,12 +513,12 @@ const blogEntry = {
|
|
|
486
513
|
},
|
|
487
514
|
"./blog/en/rag_powered_documentation_assistant.md": {
|
|
488
515
|
en: readLocale("rag_powered_documentation_assistant.md", "en"),
|
|
516
|
+
es: readLocale("rag_powered_documentation_assistant.md", "es"),
|
|
489
517
|
ru: readLocale("rag_powered_documentation_assistant.md", "ru"),
|
|
490
518
|
ja: readLocale("rag_powered_documentation_assistant.md", "ja"),
|
|
491
519
|
fr: readLocale("rag_powered_documentation_assistant.md", "fr"),
|
|
492
520
|
ko: readLocale("rag_powered_documentation_assistant.md", "ko"),
|
|
493
521
|
zh: readLocale("rag_powered_documentation_assistant.md", "zh"),
|
|
494
|
-
es: readLocale("rag_powered_documentation_assistant.md", "es"),
|
|
495
522
|
de: readLocale("rag_powered_documentation_assistant.md", "de"),
|
|
496
523
|
ar: readLocale("rag_powered_documentation_assistant.md", "ar"),
|
|
497
524
|
it: readLocale("rag_powered_documentation_assistant.md", "it"),
|
|
@@ -506,12 +533,12 @@ const blogEntry = {
|
|
|
506
533
|
},
|
|
507
534
|
"./blog/en/react-i18next_vs_react-intl_vs_intlayer.md": {
|
|
508
535
|
en: readLocale("react-i18next_vs_react-intl_vs_intlayer.md", "en"),
|
|
536
|
+
es: readLocale("react-i18next_vs_react-intl_vs_intlayer.md", "es"),
|
|
509
537
|
ru: readLocale("react-i18next_vs_react-intl_vs_intlayer.md", "ru"),
|
|
510
538
|
ja: readLocale("react-i18next_vs_react-intl_vs_intlayer.md", "ja"),
|
|
511
539
|
fr: readLocale("react-i18next_vs_react-intl_vs_intlayer.md", "fr"),
|
|
512
540
|
ko: readLocale("react-i18next_vs_react-intl_vs_intlayer.md", "ko"),
|
|
513
541
|
zh: readLocale("react-i18next_vs_react-intl_vs_intlayer.md", "zh"),
|
|
514
|
-
es: readLocale("react-i18next_vs_react-intl_vs_intlayer.md", "es"),
|
|
515
542
|
de: readLocale("react-i18next_vs_react-intl_vs_intlayer.md", "de"),
|
|
516
543
|
ar: readLocale("react-i18next_vs_react-intl_vs_intlayer.md", "ar"),
|
|
517
544
|
it: readLocale("react-i18next_vs_react-intl_vs_intlayer.md", "it"),
|
|
@@ -526,12 +553,12 @@ const blogEntry = {
|
|
|
526
553
|
},
|
|
527
554
|
"./blog/en/vue-i18n_vs_intlayer.md": {
|
|
528
555
|
en: readLocale("vue-i18n_vs_intlayer.md", "en"),
|
|
556
|
+
es: readLocale("vue-i18n_vs_intlayer.md", "es"),
|
|
529
557
|
ru: readLocale("vue-i18n_vs_intlayer.md", "ru"),
|
|
530
558
|
ja: readLocale("vue-i18n_vs_intlayer.md", "ja"),
|
|
531
559
|
fr: readLocale("vue-i18n_vs_intlayer.md", "fr"),
|
|
532
560
|
ko: readLocale("vue-i18n_vs_intlayer.md", "ko"),
|
|
533
561
|
zh: readLocale("vue-i18n_vs_intlayer.md", "zh"),
|
|
534
|
-
es: readLocale("vue-i18n_vs_intlayer.md", "es"),
|
|
535
562
|
de: readLocale("vue-i18n_vs_intlayer.md", "de"),
|
|
536
563
|
ar: readLocale("vue-i18n_vs_intlayer.md", "ar"),
|
|
537
564
|
it: readLocale("vue-i18n_vs_intlayer.md", "it"),
|
|
@@ -546,12 +573,12 @@ const blogEntry = {
|
|
|
546
573
|
},
|
|
547
574
|
"./blog/en/what_is_internationalization.md": {
|
|
548
575
|
en: readLocale("what_is_internationalization.md", "en"),
|
|
576
|
+
es: readLocale("what_is_internationalization.md", "es"),
|
|
549
577
|
ru: readLocale("what_is_internationalization.md", "ru"),
|
|
550
578
|
ja: readLocale("what_is_internationalization.md", "ja"),
|
|
551
579
|
fr: readLocale("what_is_internationalization.md", "fr"),
|
|
552
580
|
ko: readLocale("what_is_internationalization.md", "ko"),
|
|
553
581
|
zh: readLocale("what_is_internationalization.md", "zh"),
|
|
554
|
-
es: readLocale("what_is_internationalization.md", "es"),
|
|
555
582
|
de: readLocale("what_is_internationalization.md", "de"),
|
|
556
583
|
ar: readLocale("what_is_internationalization.md", "ar"),
|
|
557
584
|
it: readLocale("what_is_internationalization.md", "it"),
|