@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/blog/ru/index.md
CHANGED
|
@@ -313,6 +313,13 @@ RAG, один из самых простых и мощных способов с
|
|
|
313
313
|
</Step>
|
|
314
314
|
|
|
315
315
|
</Steps>
|
|
316
|
+
|
|
317
|
+
## Упростите сложность с Sanity
|
|
318
|
+
|
|
319
|
+
Sanity стоит упомянуть здесь как вариант CMS, на который указывает статья. В то время как файлы Markdown требуют произвольного разделения токенов — с компромиссами размера блока и перекрытия, которые описывает статья — Content Lake Sanity хранит документацию как типизированные JSON-документы, определённые схемой. Каждое поле, заголовок и блок контента уже являются семантической единицей, что означает, что RAG-поиск работает на значимых границах, а не на приблизительных подсчётах токенов.
|
|
320
|
+
|
|
321
|
+
Язык запросов GROQ в Sanity позволяет получить ровно те поля документа, которые релевантны для запроса пользователя — название, текст, связанные разделы — без загрузки всего документа. MCP-сервер подключает Content Lake напрямую к AI-агентам, поэтому структурированный контент, который питает ваш документационный сайт, также питает ваш RAG-pipeline без отдельного этапа приёма данных.
|
|
322
|
+
|
|
316
323
|
## Заключение
|
|
317
324
|
|
|
318
325
|
RAG — один из самых простых и мощных способов сделать LLM практичными. Комбинируя **поиск + генерацию**, вы можете превратить статичную документацию в **умного помощника** и одновременно получить постоянный поток информации о продукте.
|
|
@@ -29,7 +29,9 @@ history:
|
|
|
29
29
|
author: aymericzip
|
|
30
30
|
---
|
|
31
31
|
|
|
32
|
-
#
|
|
32
|
+
# Intlayer kullanarak react-intl JSON çevirilerinizi nasıl otomatikleştirilebilir
|
|
33
|
+
|
|
34
|
+
<iframe title="How to automate your react-intl JSON translations using Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&origin=https://intlayer.org&controls=0&rel=1"/>
|
|
33
35
|
|
|
34
36
|
## İçindekiler
|
|
35
37
|
|
|
@@ -73,14 +73,20 @@ Bu rehber, **Next.js** için yaygın olarak kullanılan üç i18n seçeneğini k
|
|
|
73
73
|
|
|
74
74
|
---
|
|
75
75
|
|
|
76
|
-
##
|
|
76
|
+
## Giriş
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
Next.js, uluslararasılaştırılmış routing (örneğin, locale segmentleri) için yerleşik destek sağlar. Ancak bu özellik kendi başına çeviriler yapmaz. Yine de kullanıcılarınıza yerelleştirilmiş içerik sunmak için bir kütüphaneye ihtiyacınız vardır.
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
- **Intlayer**: **Bileşen başına** (veya özellik başına) sözlükleri **hizmet ettikleri kodla birlikte** teşvik eder. Bu, bilişsel yükü azaltır, UI parçalarının çoğaltılmasını/migrasyonunu kolaylaştırır ve ekip arası çatışmaları azaltır. Kullanılmayan içerik doğal olarak daha kolay tespit edilir ve temizlenir.
|
|
80
|
+
Birçok i18n kütüphanesi mevcuttur, ancak günümüzde Next.js dünyasında üçü popüler hale gelmektedir: next-i18next, next-intl ve Intlayer.
|
|
82
81
|
|
|
83
|
-
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Mimari & ölçeklenebilirlik
|
|
85
|
+
|
|
86
|
+
- **next-intl / next-i18next**: Varsayılan olarak dile göre **merkezi katologlar** kullanır (plus i18next'te **namespaces**). Başlangıçta iyi çalışır, ancak artan coupling ve key churn ile büyük bir paylaşılan surface area haline gelebilir.
|
|
87
|
+
- **Intlayer**: **bileşen başına** (veya özellik başına) sözlükleri **hizmet ettikleri kod ile birlikte** yerleştirmeyi teşvik eder. Bu, bilişsel yükü azaltır, UI parçalarının çoğaltılmasını/göç edilmesini kolaylaştırır ve takımlar arası çatışmaları azaltır. Kullanılmayan içerik doğal olarak tanımlanması ve kaldırılması daha kolaydır.
|
|
88
|
+
|
|
89
|
+
**Neden önemli:** Büyük codebases veya design-system kurulumlarında, **modüler içerik** monolitik kataloğlardan daha iyi ölçeklenir.
|
|
84
90
|
|
|
85
91
|
---
|
|
86
92
|
|
|
@@ -153,40 +159,132 @@ Kütüphanenin fallback'leri nasıl işlediği de önemlidir. Uygulamanın varsa
|
|
|
153
159
|
|
|
154
160
|
---
|
|
155
161
|
|
|
156
|
-
|
|
162
|
+
## TypeScript & güvenlik
|
|
163
|
+
|
|
164
|
+
<Columns>
|
|
165
|
+
<Column>
|
|
166
|
+
|
|
167
|
+
**next-i18next**
|
|
168
|
+
|
|
169
|
+
- Hook'lar için temel typings. **katı anahtar typing ekstra araç/yapılandırma gerektirir**.
|
|
157
170
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
171
|
+
</Column>
|
|
172
|
+
<Column>
|
|
173
|
+
|
|
174
|
+
**next-intl**
|
|
161
175
|
|
|
162
|
-
|
|
176
|
+
- Sağlam TypeScript desteği, ancak **anahtarlar varsayılan olarak katı şekilde yazılmaz**. güvenlik desenlerini manuel olarak korumanız gerekecektir.
|
|
177
|
+
|
|
178
|
+
</Column>
|
|
179
|
+
<Column>
|
|
180
|
+
|
|
181
|
+
**intlayer**
|
|
182
|
+
|
|
183
|
+
- **İçeriğinizden katı türler oluşturur**. **IDE otomatik tamamlama** ve **derleme zamanı hataları** yazım hatalarını ve eksik anahtarları deploy'dan önce yakalar.
|
|
184
|
+
|
|
185
|
+
</Column>
|
|
186
|
+
|
|
187
|
+
</Columns>
|
|
188
|
+
|
|
189
|
+
**Neden önemli:** Güçlü typing hataları **sola** (CI/build) kaydırır, **sağa** (runtime) değil.
|
|
163
190
|
|
|
164
191
|
---
|
|
165
192
|
|
|
166
|
-
|
|
193
|
+
## Eksik çeviri işleme
|
|
194
|
+
|
|
195
|
+
<Columns>
|
|
196
|
+
<Column>
|
|
197
|
+
|
|
198
|
+
**next-i18next**
|
|
199
|
+
|
|
200
|
+
- **Runtime fallbacks** kullanır. Build başarısız olmaz.
|
|
201
|
+
|
|
202
|
+
</Column>
|
|
203
|
+
<Column>
|
|
204
|
+
|
|
205
|
+
**next-intl**
|
|
206
|
+
|
|
207
|
+
- **Runtime fallbacks** kullanır. Build başarısız olmaz.
|
|
167
208
|
|
|
168
|
-
|
|
169
|
-
|
|
209
|
+
</Column>
|
|
210
|
+
<Column>
|
|
170
211
|
|
|
171
|
-
**
|
|
212
|
+
**intlayer**
|
|
213
|
+
|
|
214
|
+
- Eksik locale'ler veya anahtarlar için **build-time detection** ile **uyarılar/hatalar** verir.
|
|
215
|
+
|
|
216
|
+
</Column>
|
|
217
|
+
|
|
218
|
+
</Columns>
|
|
219
|
+
|
|
220
|
+
**Neden önemlidir:** Build sırasındaki boşlukları yakalamak, üretimde 'undefined' stringleri önler.
|
|
172
221
|
|
|
173
222
|
---
|
|
174
223
|
|
|
175
|
-
|
|
224
|
+
## Yönlendirme, middleware & URL stratejisi
|
|
176
225
|
|
|
177
|
-
|
|
178
|
-
|
|
226
|
+
<Columns>
|
|
227
|
+
<Column>
|
|
228
|
+
|
|
229
|
+
**next-i18next**
|
|
230
|
+
|
|
231
|
+
- Yerelleştirilmiş yönlendirmeye izin verir. Ancak middleware yerleşik değildir.
|
|
232
|
+
|
|
233
|
+
</Column>
|
|
234
|
+
<Column>
|
|
235
|
+
|
|
236
|
+
**next-intl**
|
|
179
237
|
|
|
180
|
-
|
|
238
|
+
- Yerelleştirilmiş yönlendirmeye izin verir.
|
|
239
|
+
- Middleware sağlar.
|
|
240
|
+
|
|
241
|
+
</Column>
|
|
242
|
+
<Column>
|
|
243
|
+
|
|
244
|
+
**intlayer**
|
|
245
|
+
|
|
246
|
+
- Yerelleştirilmiş yönlendirmeye izin verir.
|
|
247
|
+
- Middleware sağlar.
|
|
248
|
+
|
|
249
|
+
</Column>
|
|
250
|
+
|
|
251
|
+
</Columns>
|
|
252
|
+
|
|
253
|
+
**Neden önemli:** SEO ve keşif için, ayrıca kullanıcı deneyimi için yardımcı olur.
|
|
181
254
|
|
|
182
255
|
---
|
|
183
256
|
|
|
184
|
-
|
|
257
|
+
## Server Components (RSC) hizalaması
|
|
185
258
|
|
|
186
|
-
|
|
187
|
-
|
|
259
|
+
<Columns>
|
|
260
|
+
<Column>
|
|
261
|
+
|
|
262
|
+
**next-i18next**
|
|
188
263
|
|
|
189
|
-
|
|
264
|
+
- Sayfa ve layout server bileşenlerini destekler.
|
|
265
|
+
- Alt server bileşenleri için senkron API sağlamaz.
|
|
266
|
+
|
|
267
|
+
</Column>
|
|
268
|
+
<Column>
|
|
269
|
+
|
|
270
|
+
**next-intl**
|
|
271
|
+
|
|
272
|
+
- Sayfa ve layout server bileşenlerini destekler.
|
|
273
|
+
- Alt server bileşenleri için senkron API sağlamaz.
|
|
274
|
+
|
|
275
|
+
</Column>
|
|
276
|
+
<Column>
|
|
277
|
+
|
|
278
|
+
**intlayer**
|
|
279
|
+
|
|
280
|
+
- Sayfa ve layout server bileşenlerini destekler.
|
|
281
|
+
- Alt server bileşenleri için senkron API sağlar.
|
|
282
|
+
|
|
283
|
+
</Column>
|
|
284
|
+
|
|
285
|
+
</Columns>
|
|
286
|
+
|
|
287
|
+
**Neden önemlidir:** Server component desteği Next.js 13+ sürümünün önemli bir özelliğidir ve performans için yardımcıdır. Ebeveyn server bileşenlerinden çocuk server bileşenlerine locale veya `t` fonksiyonunu props olarak geçirmek, bileşenlerinizi daha az yeniden kullanılabilir hale getirir.
|
|
190
288
|
|
|
191
289
|
---
|
|
192
290
|
|
|
@@ -297,14 +395,10 @@ Uygulama yapısı, codebase'iniz için iyi bir bakım alabilirliği sağlamak a
|
|
|
297
395
|
</Tab>
|
|
298
396
|
</Tabs>
|
|
299
397
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
- **next-intl / next-i18next**: **Ad alanları** ve **rota düzeyinde bölmeler** aracılığıyla kısmi kontrol; disiplin kayarsa kullanılmayan dizeleri paketleme riski.
|
|
303
|
-
- **Intlayer**: **Derleme zamanında ağaç sallar** ve **sözlük/yere göre tembel yükler**. Kullanılmayan içerik gönderilmez.
|
|
398
|
+
#### Karşılaştırma
|
|
304
399
|
|
|
305
|
-
**
|
|
306
|
-
|
|
307
|
-
---
|
|
400
|
+
- **next-intl / next-i18next**: Merkezi kataloglar (JSON; namespaces/messages). Net yapı, çeviri platformlarıyla iyi entegrasyon sağlar, ancak uygulamalar büyüdükçe dosyalar arası daha fazla düzenlemeye yol açabilir.
|
|
401
|
+
- **Intlayer**: Bileşenlerle birlikte bulunan `.content.{ts|js|json}` sözlükleri. Bileşen yeniden kullanımını ve yerel akıl yürütmeyi kolaylaştırır; dosya ekler ve derleme zamanı araçlarına bağlıdır.
|
|
308
402
|
|
|
309
403
|
#### Kurulum ve İçerik Yükleme
|
|
310
404
|
|
|
@@ -658,14 +752,15 @@ export default LandingPage;
|
|
|
658
752
|
</Tab>
|
|
659
753
|
</Tabs>
|
|
660
754
|
|
|
661
|
-
|
|
755
|
+
#### Karşılaştırma
|
|
662
756
|
|
|
663
|
-
|
|
664
|
-
- **Intlayer**: **Ücretsiz Görsel Düzenleyici** ve **isteğe bağlı CMS** (Git dostu veya dışa aktarılmış) gönderir. Artı içerik yazımı için **VSCode uzantısı** ve kendi sağlayıcı anahtarlarınızı kullanarak **AI destekli çeviriler**.
|
|
757
|
+
Üçü de yerel başına içerik yükleme ve sağlayıcıları destekler.
|
|
665
758
|
|
|
666
|
-
**
|
|
759
|
+
- **next-intl/next-i18next** ile, tipik olarak seçili mesajları/namespace'leri rota başına yükler ve sağlayıcıları gerekli yerlere yerleştirirsiniz.
|
|
667
760
|
|
|
668
|
-
|
|
761
|
+
- **Intlayer** ile, kullanımı çıkarmak için derleme zamanı analizini ekler, bu da manuel bağlantıları azaltabilir ve tek bir kök sağlayıcı kullanılmasını sağlayabilir.
|
|
762
|
+
|
|
763
|
+
Ekip tercihine göre açık kontrol ile otomasyon arasında seçim yapın.
|
|
669
764
|
|
|
670
765
|
### İstemci bileşeninde kullanım
|
|
671
766
|
|
|
@@ -831,11 +926,20 @@ const ClientComponentExample = () => {
|
|
|
831
926
|
</Tab>
|
|
832
927
|
</Tabs>
|
|
833
928
|
|
|
834
|
-
|
|
929
|
+
#### Karşılaştırma
|
|
930
|
+
|
|
931
|
+
- **Sayı biçimlendirme**
|
|
932
|
+
- **next-i18next**: `useNumber` yok; `Intl.NumberFormat` kullanın (veya i18next-icu).
|
|
933
|
+
- **next-intl**: `useFormatter().number(value)`.
|
|
934
|
+
- **Intlayer**: `useNumber()` built-in.
|
|
935
|
+
|
|
936
|
+
- **Anahtarlar**
|
|
937
|
+
- İç içe geçmiş bir yapı tutun (`about.counter.label`) ve hook'unuzu buna göre kapsamlandırın (`useTranslation("about")` + `t("counter.label")` veya `useTranslations("about.counter")` + `t("label")`).
|
|
835
938
|
|
|
836
|
-
- **
|
|
837
|
-
- **next-i18next**
|
|
838
|
-
- **
|
|
939
|
+
- **Dosya konumları**
|
|
940
|
+
- **next-i18next** `public/locales/{lng}/{ns}.json` içinde JSON bekler.
|
|
941
|
+
- **next-intl** esnek; mesajları nasıl yapılandırdığınıza göre yükleyin.
|
|
942
|
+
- **Intlayer** içeriği TS/JS sözlüklerinde depolar ve anahtara göre çözer.
|
|
839
943
|
|
|
840
944
|
---
|
|
841
945
|
|
|
@@ -951,7 +1055,7 @@ const ServerComponent = ({ count }: ServerComponentProps) => {
|
|
|
951
1055
|
Geliştiriciler genellikle sayfalarını yerel ayarlar arasında düzgün şekilde referans vermeyi unuturlar.
|
|
952
1056
|
|
|
953
1057
|
<Tabs defaultTab="next-intl" group='techno'>
|
|
954
|
-
|
|
1058
|
+
|
|
955
1059
|
<Tab label="next-i18next" value="next-i18next">
|
|
956
1060
|
|
|
957
1061
|
```ts fileName="i18n.config.ts"
|
|
@@ -1302,11 +1406,39 @@ Middleware'in kurulumu `intlayer.config.ts` dosyasında merkezileştirilmiştir.
|
|
|
1302
1406
|
</Tab>
|
|
1303
1407
|
</Tabs>
|
|
1304
1408
|
|
|
1305
|
-
|
|
1409
|
+
### Kurulum kontrol listesi ve en iyi uygulamalar
|
|
1410
|
+
|
|
1411
|
+
<Tabs defaultTab="next-intl" group='techno'>
|
|
1412
|
+
<Tab label="next-i18next" value="next-i18next">
|
|
1413
|
+
|
|
1414
|
+
- `src/app/[locale]/layout.tsx` dosyasında kök `<html>` öğesinde `lang` ve `dir` özniteliklerinin ayarlandığından emin olun.
|
|
1415
|
+
- Çevirileri ad alanlarına (örneğin `common.json`, `about.json`) `src/locales/<locale>/` altında bölün.
|
|
1416
|
+
- İstemci bileşenlerinde `useTranslation('<ns>')` kullanarak ve `I18nProvider` kapsamını aynı ad alanlarıyla ayarlayarak yalnızca gerekli ad alanlarını yükleyin.
|
|
1417
|
+
- Mümkün olduğunda sayfaları statik tutun: sayfalar üzerinde `export const dynamic = 'force-static'` olarak dışa aktarın; `dynamicParams = false` olarak ayarlayın ve `generateStaticParams` uygulayın.
|
|
1418
|
+
- Önceden hesaplanmış dizeler veya `t` işlevi ve `locale` geçirerek istemci sınırları altında eşzamanlı sunucu bileşenlerini kullanın.
|
|
1419
|
+
- SEO için, meta verilerde `alternates.languages` ayarlayın, `sitemap.ts` içinde yerelleştirilmiş URL'leri listeleyin ve `robots.ts` içinde yinelenen yerelleştirilmiş rotaları devre dışı bırakın.
|
|
1420
|
+
- Yerel ayara duyarlı biçimlendiricileri (örneğin `Intl.NumberFormat(locale)`) tercih edin ve React < 19 kullanırken bunları istemci üzerinde hafızaya alın.
|
|
1306
1421
|
|
|
1307
|
-
|
|
1422
|
+
</Tab>
|
|
1423
|
+
<Tab label="next-intl" value="next-intl">
|
|
1308
1424
|
|
|
1309
|
-
`
|
|
1425
|
+
- **HTML `lang` ve `dir` özniteliklerini ayarlayın**: `src/app/[locale]/layout.tsx` içinde, `dir` özniteliğini `getLocaleDirection(locale)` aracılığıyla hesaplayın ve `<html lang={locale} dir={dir}>` olarak ayarlayın.
|
|
1426
|
+
- **İletileri ad alanlarına göre bölün**: JSON'u locale ve ad alanına göre düzenleyin (örneğin `common.json`, `about.json`).
|
|
1427
|
+
- **İstemci yükünü en aza indirin**: Sayfalarda, yalnızca gerekli ad alanlarını `NextIntlClientProvider` öğesine gönderin (örneğin `pick(messages, ['common', 'about'])`).
|
|
1428
|
+
- **Statik sayfaları tercih edin**: `export const dynamic = 'force-static'` olarak dışa aktarın ve tüm `locales` için statik parametreler oluşturun.
|
|
1429
|
+
- **Eşzamanlı sunucu bileşenleri**: Sunucu bileşenlerini önceden hesaplanmış dizeler (çevrilmiş etiketler, biçimlendirilmiş sayılar) geçirerek eşzamanlı tutun; async çağrıları veya seri hale getirilemeyen işlevleri kullanmayın.
|
|
1430
|
+
|
|
1431
|
+
</Tab>
|
|
1432
|
+
<Tab label="intlayer" value="intlayer">
|
|
1433
|
+
|
|
1434
|
+
- **Modüler içerik**: `.content.{ts|js|json}` dosyalarını kullanarak içerik sözlüklerini bileşenlerle birlikte konumlandırın.
|
|
1435
|
+
- **Tür güvenliği**: Derleme zamanı içerik doğrulaması için TypeScript entegrasyonundan yararlanın.
|
|
1436
|
+
- **Derleme zamanı optimizasyonu**: Otomatik tree-shaking ve bundle optimizasyonu için Intlayer'ın derleme araçlarını kullanın.
|
|
1437
|
+
- **Entegre araçlar**: Yerleşik yönlendirme, SEO yardımcıları ve görsel editör desteğinden yararlanın.
|
|
1438
|
+
|
|
1439
|
+
</Tab>
|
|
1440
|
+
|
|
1441
|
+
</Tabs>
|
|
1310
1442
|
|
|
1311
1443
|
---
|
|
1312
1444
|
|
|
@@ -1336,6 +1468,7 @@ Basit değil. Her seçeneğin avantaj ve dezavantajları var. İşte benim gör
|
|
|
1336
1468
|
- modern Next.js için oluşturulmuş, modüler içerik, tip güvenliği, araçlar ve daha az boilerplate ile. **Bileşen kapsamlı içerik**, **kesin TypeScript**, **derleme zamanı garantileri**, **tree-shaking** ve **pil dahil** yönlendirme/SEO/editör araçlarını değer veriyorsanız - özellikle **Next.js App Router**, tasarım sistemleri ve **büyük, modüler kod tabanları** için.
|
|
1337
1469
|
|
|
1338
1470
|
</Column>
|
|
1471
|
+
|
|
1339
1472
|
</Columns>
|
|
1340
1473
|
|
|
1341
1474
|
Minimal kurulumu tercih ederseniz ve bazı manuel bağlantıları kabul ederseniz, next-intl iyi bir seçimdir. Tüm özelliklere ihtiyacınız varsa ve karmaşıklığa aldırmıyorsanız, next-i18next işe yarar. Ancak modern, ölçeklenebilir, modüler bir çözüm istiyorsanız ve dahili araçlarla, Intlayer bunu size kutusundan çıkar halde sağlamayı amaçlar.
|
|
@@ -254,6 +254,12 @@ Gpt-5 ile denedik, ama gecikme çok yüksekti (bazen 15 saniyeye kadar bir yanı
|
|
|
254
254
|
|
|
255
255
|
</Steps>
|
|
256
256
|
|
|
257
|
+
## Sanity ile Karmaşıklığı Atlayın
|
|
258
|
+
|
|
259
|
+
Sanity, makalenin işaret ettiği CMS seçeneği olarak burada adlandırılmaya değer. Markdown dosyalarının keyfi token bölümlere ihtiyaç duyduğu durumlarda — makalenin açıkladığı chunk boyutu ve overlap dengeleri ile — Sanity'nin Content Lake, belgeleri yazılı, şema tarafından tanımlanmış JSON belgeleri olarak depolar. Her alan, başlık ve içerik bloğu zaten bir anlamsal birimdir; bu da RAG alımının yaklaşık token sayıları yerine anlamlı sınırlar üzerinde çalışması anlamına gelir.
|
|
260
|
+
|
|
261
|
+
Sanity'nin GROQ sorgu dili, bir kullanıcı sorgusuna uygun belge alanlarını — başlık, gövde, ilgili bölümler — tam olarak almanızı sağlar; bu, tüm belgeyi getirmeye gerek yoktur. MCP sunucusu, Content Lake'i doğrudan AI ajanlarına bağlar; bu nedenle docs sitenizi güçlendiren aynı yapılandırılmış içerik, ayrı bir ingestion adımı olmaksızın RAG pipeline'ınızı da besler.
|
|
262
|
+
|
|
257
263
|
## Sonuç
|
|
258
264
|
|
|
259
265
|
RAG, LLM'leri pratik hale getirmenin en basit, en güçlü yollarından biridir. **Retrieval + generation** birleştirerek, statik dokümanları **akıllı bir asistana** dönüştürebilir ve aynı zamanda sürekli ürün içgörüleri akışı elde edebilirsiniz.
|
package/blog/uk/index.md
CHANGED
|
@@ -317,6 +317,12 @@ RAG, це один із найпростіших і найпотужніших
|
|
|
317
317
|
</Step>
|
|
318
318
|
|
|
319
319
|
</Steps>
|
|
320
|
+
## Пропустіть складність за допомогою Sanity
|
|
321
|
+
|
|
322
|
+
Sanity варто згадати тут як варіант CMS, на який вказує стаття. Там де файли Markdown потребують довільного розділення токенів — з компромісами розміру chunk'а та перекриття, які описує стаття — Content Lake від Sanity зберігає документацію як типізовані, схемою визначені JSON-документи. Кожне поле, заголовок і блок контенту вже є семантичною одиницею, що означає, що RAG-пошук працює на змістовних межах замість приблизних підрахунків токенів.
|
|
323
|
+
|
|
324
|
+
GROQ-мова запитів від Sanity дозволяє отримати саме ті поля документа, які відповідають запиту користувача — заголовок, основний текст, пов'язані розділи — без завантаження всього документа. MCP-сервер підключає Content Lake безпосередньо до AI-агентів, тому той самий структурований контент, який живить ваш сайт документації, також живить вашу RAG-конвеєр без окремого кроку ingestion.
|
|
325
|
+
|
|
320
326
|
## Висновок
|
|
321
327
|
|
|
322
328
|
RAG — це один з найпростіших і найпотужніших способів зробити LLM практичними. Комбінуючи **retrieval + generation**, ви можете перетворити статичну документацію на **розумного помічника** і водночас отримати постійний потік інсайтів про продукт.
|
package/blog/vi/index.md
CHANGED
|
@@ -317,6 +317,12 @@ Và nếu bạn cũng đang thử nghiệm với RAG, tôi rất muốn nghe cá
|
|
|
317
317
|
</Step>
|
|
318
318
|
|
|
319
319
|
</Steps>
|
|
320
|
+
## Bỏ Qua Độ Phức Tạp với Sanity
|
|
321
|
+
|
|
322
|
+
Sanity đáng được nhắc đến ở đây như một tùy chọn CMS mà bài viết hướng tới. Trong khi các tệp Markdown yêu cầu chia tách token tùy ý — với những sự đánh đổi giữa kích thước chunk và overlap mà bài viết mô tả — Content Lake của Sanity lưu trữ tài liệu dưới dạng các tài liệu JSON được định nghĩa theo schema và có kiểu dữ liệu. Mỗi trường, tiêu đề và khối nội dung đã là một đơn vị ngữ nghĩa, điều này có nghĩa là việc truy xuất RAG hoạt động trên các ranh giới có ý nghĩa thay vì các số lượng token xấp xỉ.
|
|
323
|
+
|
|
324
|
+
Ngôn ngữ truy vấn GROQ của Sanity cho phép bạn truy xuất chính xác các trường tài liệu liên quan đến truy vấn của người dùng — tiêu đề, nội dung, các phần liên quan — mà không cần tải toàn bộ tài liệu. MCP server kết nối Content Lake trực tiếp với các AI agent, vì vậy cùng một nội dung có cấu trúc làm nên trang tài liệu của bạn cũng cấp nuôi cho pipeline RAG của bạn mà không cần một bước nhập dữ liệu riêng biệt.
|
|
325
|
+
|
|
320
326
|
## Kết luận
|
|
321
327
|
|
|
322
328
|
RAG là một trong những cách đơn giản nhất và mạnh mẽ nhất để làm cho các LLM trở nên thực tế. Bằng cách kết hợp **retrieval + generation**, bạn có thể biến các tài liệu tĩnh thành một **trợ lý thông minh** và cùng lúc đó, thu được một luồng thông tin sản phẩm liên tục.
|
package/blog/zh/index.md
CHANGED
|
@@ -61,11 +61,62 @@ author: aymericzip
|
|
|
61
61
|
|
|
62
62
|
<TOC/>
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
## 分步指南:使用 i18next 设置 Intlayer
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
<Steps>
|
|
67
|
+
|
|
68
|
+
<Step number={1} title="安装依赖项">
|
|
69
|
+
|
|
70
|
+
安装必要的包:
|
|
71
|
+
|
|
72
|
+
```bash packageManager="npm"
|
|
73
|
+
npx intlayer init --interactive
|
|
74
|
+
```
|
|
67
75
|
|
|
68
|
-
|
|
76
|
+
```bash packageManager="pnpm"
|
|
77
|
+
pnpm dlx intlayer@canary init --interactive
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
```bash packageManager="yarn"
|
|
81
|
+
yarn dlx intlayer@canary init --interactive
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
```bash packageManager="bun"
|
|
85
|
+
bunx intlayer@canary init --interactive
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
> `--interactive` 标志是可选的。如果你是 AI 代理,请使用 `intlayer-cli init`。
|
|
89
|
+
|
|
90
|
+
> 此命令将检测你的环境并安装所需的包。例如:
|
|
91
|
+
|
|
92
|
+
```bash packageManager="npm"
|
|
93
|
+
npm install intlayer @intlayer/sync-json-plugin --save-dev
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
```bash packageManager="pnpm"
|
|
97
|
+
pnpm add intlayer @intlayer/sync-json-plugin --save-dev
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
```bash packageManager="yarn"
|
|
101
|
+
yarn add intlayer @intlayer/sync-json-plugin --dev
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
```bash packageManager="bun"
|
|
105
|
+
bun add intlayer @intlayer/sync-json-plugin --dev
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**包描述:**
|
|
109
|
+
|
|
110
|
+
- **intlayer**: 国际化管理、内容声明和构建的核心库
|
|
111
|
+
- **@intlayer/sync-json-plugin**: 将 Intlayer 内容声明导出为 i18next 兼容 JSON 格式的插件
|
|
112
|
+
|
|
113
|
+
</Step>
|
|
114
|
+
|
|
115
|
+
<Step number={2} title="实现 Intlayer 插件来包装 JSON">
|
|
116
|
+
|
|
117
|
+
创建一个 Intlayer 配置文件来定义你支持的语言:
|
|
118
|
+
|
|
119
|
+
**如果你还想为 i18next 导出 JSON 字典**,添加 `syncJSON` 插件:
|
|
69
120
|
|
|
70
121
|
```typescript fileName="intlayer.config.ts"
|
|
71
122
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -86,24 +137,32 @@ const config: IntlayerConfig = {
|
|
|
86
137
|
export default config;
|
|
87
138
|
```
|
|
88
139
|
|
|
89
|
-
`syncJSON`
|
|
140
|
+
`syncJSON` 插件将自动包装 JSON。它将读取和写入 JSON 文件,而不改变内容架构。
|
|
90
141
|
|
|
91
|
-
如果你想让 JSON 与
|
|
142
|
+
如果你想让 JSON 与 Intlayer 内容声明文件(`.content` 文件)共存,Intlayer 将按以下方式处理:
|
|
92
143
|
|
|
93
|
-
1. 加载 JSON 和内容声明文件,并将它们转换为
|
|
94
|
-
2. 如果 JSON 和内容声明文件之间存在冲突,Intlayer
|
|
144
|
+
1. 加载 JSON 和内容声明文件,并将它们转换为 Intlayer 字典。
|
|
145
|
+
2. 如果 JSON 和内容声明文件之间存在冲突,Intlayer 将合并所有字典。这取决于插件的优先级和内容声明文件的优先级(都可以配置)。
|
|
95
146
|
|
|
96
|
-
|
|
147
|
+
如果使用 CLI 翻译 JSON 或使用 CMS 进行更改,Intlayer 将使用新的翻译更新 JSON 文件。
|
|
97
148
|
|
|
98
|
-
|
|
149
|
+
要了解有关 `syncJSON` 插件的更多详细信息,请参阅 [syncJSON 插件文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/plugins/sync-json.md)。
|
|
99
150
|
|
|
100
|
-
|
|
151
|
+
</Step>
|
|
152
|
+
|
|
153
|
+
<Step number={3} title="设置 AI 提供商">
|
|
101
154
|
|
|
102
|
-
|
|
155
|
+
Intlayer 为你的 i18next 工作流解锁了一套高级自动化和开发者友好的功能。
|
|
103
156
|
|
|
104
|
-
|
|
157
|
+
- **自动检测和填充缺失翻译**:Intlayer 扫描你的 JSON 字典,查找未翻译或缺失的键,仅翻译这些,因此你的 JSON 的 99% 保持不变。
|
|
158
|
+
- **大型 JSON 文件的分块翻译**:当你的翻译文件非常大时,Intlayer 自动将处理分成可管理的块,独立翻译它们以避免 API 限制和内存问题。
|
|
159
|
+
- **命名空间并行化**:如果你有数百个命名空间(或文件),Intlayer 并行化翻译任务,有效地加快你的 CI/CD 或批量翻译操作。
|
|
160
|
+
- **灵活的 AI 提供商支持**:选择你首选的 AI 提供商(例如 OpenAI、Claude、Gemini),只需配置凭据。使用你自己的 API 密钥,并根据需要切换提供商。
|
|
161
|
+
- **弹性 AI 响应处理**:Intlayer 可以处理你的 AI 提供商将文本作为字符串或对象返回的边界情况,甚至在格式不一致时自动重试。
|
|
162
|
+
- **CLI 和 CI/CD 就绪**:直接在你的测试或管道中运行 Intlayer 的检查和自动填充,使你的本地化过程健壮且自动化。
|
|
163
|
+
- **集成到你现有的设置之上**:你不需要改变你的 i18next 或 Next.js 基础。Intlayer 作为插件添加到你的当前设置中,为你提供所有这些好处,同时实现最小迁移。
|
|
105
164
|
|
|
106
|
-
|
|
165
|
+
以下是如何设置 AI 提供商的示例:
|
|
107
166
|
|
|
108
167
|
```ts fileName="intlayer.config.ts"
|
|
109
168
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -114,23 +173,14 @@ const config: IntlayerConfig = {
|
|
|
114
173
|
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
115
174
|
defaultLocale: Locales.ENGLISH,
|
|
116
175
|
},
|
|
117
|
-
|
|
118
|
-
|
|
176
|
+
ai: {
|
|
177
|
+
provider: "openai",
|
|
178
|
+
model: "gpt-5-mini",
|
|
179
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
180
|
+
},
|
|
119
181
|
plugins: [
|
|
120
|
-
/**
|
|
121
|
-
* 将加载 src 目录中所有匹配模式 {key}.i18n.json 的 JSON 文件
|
|
122
|
-
*/
|
|
123
|
-
loadJSON({
|
|
124
|
-
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
125
|
-
locale: Locales.ENGLISH,
|
|
126
|
-
priority: 1, // 确保这些 JSON 文件优先于 `./locales/en/${key}.json` 中的文件
|
|
127
|
-
}),
|
|
128
|
-
/**
|
|
129
|
-
* 将加载并将输出和翻译写回到 locales 目录中的 JSON 文件
|
|
130
|
-
*/
|
|
131
182
|
syncJSON({
|
|
132
183
|
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
133
|
-
priority: 0,
|
|
134
184
|
}),
|
|
135
185
|
],
|
|
136
186
|
};
|
|
@@ -138,7 +188,16 @@ const config: IntlayerConfig = {
|
|
|
138
188
|
export default config;
|
|
139
189
|
```
|
|
140
190
|
|
|
141
|
-
|
|
191
|
+
然后你可以执行以下命令来填充你的翻译:
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
npx intlayer fill
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
这将使用你配置的 AI 提供商填充你的翻译。
|
|
198
|
+
|
|
199
|
+
> 在 [Intlayer AI 配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md#ai-configuration) 中查看所有可用的 AI 提供商。
|
|
200
|
+
> 在 [Intlayer CLI 文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/index.md) 中查看所有可用的命令。
|
|
142
201
|
|
|
143
202
|
---
|
|
144
203
|
|