@intlayer/docs 9.1.3 → 9.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blog/ar/index.md +1 -1
- package/blog/ar/rag_powered_documentation_assistant.md +7 -0
- package/blog/de/index.md +1 -1
- package/blog/de/rag_powered_documentation_assistant.md +6 -0
- package/blog/en/index.md +1 -1
- package/blog/en-GB/index.md +1 -1
- package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
- package/blog/es/index.md +1 -1
- package/blog/es/rag_powered_documentation_assistant.md +7 -0
- package/blog/fr/i18n_meaning.md +7 -1
- package/blog/fr/index.md +1 -1
- package/blog/fr/list_i18n_technologies/frameworks/angular.md +5 -1
- package/blog/fr/rag_powered_documentation_assistant.md +6 -0
- package/blog/hi/index.md +1 -1
- package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
- package/blog/hi/rag_powered_documentation_assistant.md +7 -0
- package/blog/id/index.md +1 -1
- package/blog/id/rag_powered_documentation_assistant.md +6 -0
- package/blog/it/index.md +1 -1
- package/blog/it/rag_powered_documentation_assistant.md +6 -0
- package/blog/ja/index.md +1 -1
- package/blog/ja/rag_powered_documentation_assistant.md +7 -0
- package/blog/ko/index.md +1 -1
- package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
- package/blog/ko/rag_powered_documentation_assistant.md +6 -0
- package/blog/pl/index.md +1 -1
- package/blog/pl/rag_powered_documentation_assistant.md +6 -0
- package/blog/pt/index.md +1 -1
- package/blog/pt/rag_powered_documentation_assistant.md +6 -0
- package/blog/ru/index.md +1 -1
- package/blog/ru/rag_powered_documentation_assistant.md +7 -0
- package/blog/tr/intlayer_with_react-intl.md +3 -1
- package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +175 -42
- package/blog/tr/rag_powered_documentation_assistant.md +6 -0
- package/blog/uk/index.md +1 -1
- package/blog/uk/rag_powered_documentation_assistant.md +6 -0
- package/blog/vi/index.md +1 -1
- package/blog/vi/rag_powered_documentation_assistant.md +6 -0
- package/blog/zh/index.md +1 -1
- package/blog/zh/intlayer_with_i18next.md +87 -28
- package/blog/zh/intlayer_with_next-i18next.md +86 -29
- package/blog/zh/intlayer_with_next-intl.md +88 -28
- package/blog/zh/intlayer_with_react-i18next.md +87 -28
- package/blog/zh/intlayer_with_react-intl.md +88 -27
- package/blog/zh/intlayer_with_vue-i18n.md +117 -8
- package/blog/zh/rag_powered_documentation_assistant.md +6 -0
- package/dist/cjs/common.cjs +24 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +58 -31
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +265 -218
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +48 -21
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +33 -6
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/common.mjs +24 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +58 -31
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +265 -218
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +48 -21
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +33 -6
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/docs/ar/analytics.md +222 -0
- package/docs/ar/autoFill.md +28 -9
- package/docs/ar/bundle_optimization.md +58 -25
- package/docs/ar/configuration.md +25 -8
- package/docs/ar/dictionary/file.md +3 -1
- package/docs/ar/dictionary/nesting.md +47 -30
- package/docs/ar/formatters.md +148 -193
- package/docs/ar/intlayer_CMS.md +152 -0
- package/docs/ar/intlayer_with_angular_21.md +9 -9
- package/docs/ar/intlayer_with_nextjs_14.md +1 -28
- package/docs/ar/intlayer_with_nextjs_15.md +1 -33
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +40 -83
- package/docs/ar/intlayer_with_solid_start.md +1078 -0
- package/docs/ar/intlayer_with_vite+vue.md +1 -3
- package/docs/ar/live-sync.md +4 -0
- package/docs/ar/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/ar/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/ar/packages/react-intlayer/useDictionary.md +4 -21
- package/docs/ar/packages/react-intlayer/useIntlayer.md +2 -2
- package/docs/ar/packages/vite-intlayer/exports.md +15 -0
- package/docs/ar/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/ar/packages/vite-intlayer/intlayerPrune.md +70 -3
- package/docs/ar/releases/v9.md +0 -37
- package/docs/ar/self_hosting.md +46 -49
- package/docs/bn/bundle_optimization.md +58 -25
- package/docs/bn/configuration.md +25 -8
- package/docs/bn/intlayer_with_angular_21.md +9 -9
- package/docs/cs/bundle_optimization.md +58 -25
- package/docs/cs/configuration.md +25 -8
- package/docs/cs/intlayer_with_angular_21.md +9 -9
- package/docs/de/analytics.md +222 -0
- package/docs/de/autoFill.md +28 -9
- package/docs/de/bundle_optimization.md +58 -25
- package/docs/de/configuration.md +25 -8
- package/docs/de/dictionary/file.md +3 -1
- package/docs/de/dictionary/nesting.md +47 -31
- package/docs/de/formatters.md +208 -334
- package/docs/de/intlayer_CMS.md +66 -15
- package/docs/de/intlayer_with_angular_21.md +9 -9
- package/docs/de/intlayer_with_nestjs.md +11 -7
- package/docs/de/intlayer_with_nextjs_14.md +1 -28
- package/docs/de/intlayer_with_nextjs_15.md +1 -33
- package/docs/de/intlayer_with_solid_start.md +1078 -0
- package/docs/de/intlayer_with_vite+vue.md +1 -3
- package/docs/de/live-sync.md +4 -0
- package/docs/de/packages/intlayer/getLocalizedUrl.md +33 -25
- package/docs/de/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/de/packages/react-intlayer/useDictionary.md +2 -5
- package/docs/de/packages/vite-intlayer/exports.md +15 -0
- package/docs/de/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/de/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/de/releases/v9.md +0 -15
- package/docs/de/self_hosting.md +46 -50
- package/docs/en/bundle_optimization.md +51 -23
- package/docs/en/cli/doc-review.md +13 -2
- package/docs/en/configuration.md +24 -15
- package/docs/en/intlayer_with_angular_21.md +9 -9
- package/docs/en/intlayer_with_solid_start.md +1091 -0
- package/docs/en/intlayer_with_vite+solid.md +12 -0
- package/docs/en/live-sync.md +4 -0
- package/docs/en-GB/analytics.md +222 -0
- package/docs/en-GB/autoFill.md +26 -7
- package/docs/en-GB/bundle_optimization.md +58 -25
- package/docs/en-GB/configuration.md +25 -8
- package/docs/en-GB/dictionary/file.md +2 -0
- package/docs/en-GB/dictionary/nesting.md +64 -205
- package/docs/en-GB/formatters.md +146 -181
- package/docs/en-GB/intlayer_CMS.md +152 -0
- package/docs/en-GB/intlayer_with_angular_21.md +9 -9
- package/docs/en-GB/intlayer_with_nestjs.md +6 -2
- package/docs/en-GB/intlayer_with_nextjs_14.md +0 -27
- package/docs/en-GB/intlayer_with_nextjs_15.md +1 -33
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +40 -82
- package/docs/en-GB/intlayer_with_solid_start.md +1078 -0
- package/docs/en-GB/intlayer_with_vite+vue.md +1 -3
- package/docs/en-GB/live-sync.md +4 -0
- package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +30 -22
- package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +16 -48
- package/docs/en-GB/packages/vite-intlayer/exports.md +15 -0
- package/docs/en-GB/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/en-GB/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/en-GB/self_hosting.md +60 -49
- package/docs/es/analytics.md +222 -0
- package/docs/es/autoFill.md +28 -9
- package/docs/es/bundle_optimization.md +58 -25
- package/docs/es/configuration.md +24 -7
- package/docs/es/dictionary/file.md +3 -1
- package/docs/es/dictionary/nesting.md +47 -30
- package/docs/es/formatters.md +114 -168
- package/docs/es/intlayer_CMS.md +35 -10
- package/docs/es/intlayer_with_angular_21.md +9 -9
- package/docs/es/intlayer_with_nextjs_14.md +1 -28
- package/docs/es/intlayer_with_nextjs_15.md +1 -33
- package/docs/es/intlayer_with_solid_start.md +1078 -0
- package/docs/es/live-sync.md +4 -0
- package/docs/es/packages/intlayer/getLocalizedUrl.md +31 -23
- package/docs/es/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/es/packages/vite-intlayer/exports.md +15 -0
- package/docs/es/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/es/packages/vite-intlayer/intlayerPrune.md +69 -2
- package/docs/es/releases/v9.md +0 -15
- package/docs/es/self_hosting.md +46 -49
- package/docs/fr/analytics.md +222 -0
- package/docs/fr/autoFill.md +27 -8
- package/docs/fr/bundle_optimization.md +58 -25
- package/docs/fr/configuration.md +25 -8
- package/docs/fr/dictionary/file.md +2 -0
- package/docs/fr/dictionary/nesting.md +37 -184
- package/docs/fr/formatters.md +95 -236
- package/docs/fr/intlayer_CMS.md +66 -15
- package/docs/fr/intlayer_with_angular_21.md +9 -9
- package/docs/fr/intlayer_with_nextjs_14.md +1 -28
- package/docs/fr/intlayer_with_nextjs_15.md +1 -33
- package/docs/fr/intlayer_with_solid_start.md +1078 -0
- package/docs/fr/live-sync.md +4 -0
- package/docs/fr/packages/intlayer/getLocalizedUrl.md +37 -27
- package/docs/fr/packages/intlayer/getMultilingualUrls.md +18 -20
- package/docs/fr/packages/vite-intlayer/exports.md +15 -0
- package/docs/fr/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/fr/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/fr/releases/v9.md +0 -15
- package/docs/fr/self_hosting.md +46 -49
- package/docs/hi/analytics.md +222 -0
- package/docs/hi/autoFill.md +28 -9
- package/docs/hi/bundle_optimization.md +58 -25
- package/docs/hi/configuration.md +25 -8
- package/docs/hi/dictionary/file.md +3 -1
- package/docs/hi/dictionary/nesting.md +47 -30
- package/docs/hi/formatters.md +233 -334
- package/docs/hi/how_works_intlayer.md +3 -1
- package/docs/hi/intlayer_CMS.md +152 -0
- package/docs/hi/intlayer_with_angular_21.md +9 -9
- package/docs/hi/intlayer_with_nestjs.md +11 -7
- package/docs/hi/intlayer_with_nextjs_14.md +1 -28
- package/docs/hi/intlayer_with_nextjs_15.md +1 -33
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +40 -83
- package/docs/hi/intlayer_with_solid_start.md +1077 -0
- package/docs/hi/intlayer_with_vite+preact.md +56 -49
- package/docs/hi/intlayer_with_vite+react.md +48 -41
- package/docs/hi/intlayer_with_vite+solid.md +32 -41
- package/docs/hi/intlayer_with_vite+vue.md +49 -44
- package/docs/hi/live-sync.md +4 -0
- package/docs/hi/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/hi/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/hi/packages/next-intlayer/t.md +33 -1
- package/docs/hi/packages/react-intlayer/useDictionary.md +4 -21
- package/docs/hi/packages/vite-intlayer/exports.md +15 -0
- package/docs/hi/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/hi/packages/vite-intlayer/intlayerPrune.md +78 -5
- package/docs/hi/plugins/sync-json.md +9 -9
- package/docs/hi/releases/v9.md +0 -15
- package/docs/hi/self_hosting.md +38 -51
- package/docs/id/analytics.md +223 -0
- package/docs/id/bundle_optimization.md +58 -25
- package/docs/id/configuration.md +25 -8
- package/docs/id/dictionary/nesting.md +37 -184
- package/docs/id/formatters.md +208 -305
- package/docs/id/intlayer_CMS.md +164 -0
- package/docs/id/intlayer_with_angular_21.md +9 -9
- package/docs/id/intlayer_with_nextjs_14.md +1 -26
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +70 -63
- package/docs/id/intlayer_with_solid_start.md +1078 -0
- package/docs/id/live-sync.md +4 -0
- package/docs/id/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/id/packages/react-intlayer/useIntlayer.md +2 -2
- package/docs/id/packages/vite-intlayer/exports.md +15 -0
- package/docs/id/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/id/packages/vite-intlayer/intlayerPrune.md +78 -5
- package/docs/id/releases/v9.md +12 -0
- package/docs/id/self_hosting.md +61 -50
- package/docs/it/analytics.md +222 -0
- package/docs/it/autoFill.md +27 -8
- package/docs/it/bundle_optimization.md +58 -25
- package/docs/it/configuration.md +25 -8
- package/docs/it/dictionary/file.md +3 -1
- package/docs/it/dictionary/nesting.md +47 -30
- package/docs/it/formatters.md +114 -168
- package/docs/it/intlayer_CMS.md +66 -15
- package/docs/it/intlayer_with_angular_21.md +9 -9
- package/docs/it/intlayer_with_nestjs.md +11 -7
- package/docs/it/intlayer_with_nextjs_14.md +1 -28
- package/docs/it/intlayer_with_nextjs_15.md +1 -33
- package/docs/it/intlayer_with_solid_start.md +1078 -0
- package/docs/it/intlayer_with_vite+vue.md +1 -3
- package/docs/it/live-sync.md +4 -0
- package/docs/it/packages/intlayer/getLocalizedUrl.md +34 -26
- package/docs/it/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/it/packages/react-intlayer/useDictionary.md +4 -21
- package/docs/it/packages/vite-intlayer/exports.md +15 -0
- package/docs/it/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/it/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/it/releases/v9.md +0 -15
- package/docs/it/self_hosting.md +60 -49
- package/docs/ja/analytics.md +222 -0
- package/docs/ja/autoFill.md +28 -9
- package/docs/ja/bundle_optimization.md +58 -25
- package/docs/ja/configuration.md +25 -8
- package/docs/ja/dictionary/content_file.md +15 -7
- package/docs/ja/dictionary/file.md +3 -1
- package/docs/ja/dictionary/nesting.md +47 -30
- package/docs/ja/formatters.md +133 -187
- package/docs/ja/intlayer_visual_editor.md +3 -1
- package/docs/ja/intlayer_with_angular_21.md +6 -6
- package/docs/ja/intlayer_with_nestjs.md +2 -12
- package/docs/ja/intlayer_with_nextjs_14.md +1 -28
- package/docs/ja/intlayer_with_nextjs_15.md +1 -33
- package/docs/ja/intlayer_with_react_router_v7.md +456 -20
- package/docs/ja/intlayer_with_solid_start.md +1078 -0
- package/docs/ja/intlayer_with_vite+preact.md +73 -41
- package/docs/ja/intlayer_with_vite+vue.md +1 -3
- package/docs/ja/live-sync.md +4 -0
- package/docs/ja/mcp_server.md +3 -9
- package/docs/ja/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/ja/packages/intlayer/getMultilingualUrls.md +3 -17
- package/docs/ja/packages/vite-intlayer/exports.md +15 -0
- package/docs/ja/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/ja/packages/vite-intlayer/intlayerPrune.md +79 -6
- package/docs/ja/releases/v9.md +12 -0
- package/docs/ja/self_hosting.md +46 -50
- package/docs/ko/analytics.md +222 -0
- package/docs/ko/autoFill.md +28 -9
- package/docs/ko/bundle_optimization.md +58 -25
- package/docs/ko/configuration.md +25 -8
- package/docs/ko/dictionary/file.md +3 -1
- package/docs/ko/dictionary/nesting.md +47 -30
- package/docs/ko/formatters.md +133 -187
- package/docs/ko/intlayer_with_angular_21.md +9 -9
- package/docs/ko/intlayer_with_lynx+react.md +133 -39
- package/docs/ko/intlayer_with_nextjs_14.md +1 -28
- package/docs/ko/intlayer_with_nextjs_15.md +1 -33
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +40 -188
- package/docs/ko/intlayer_with_solid_start.md +1078 -0
- package/docs/ko/intlayer_with_vite+preact.md +57 -23
- package/docs/ko/intlayer_with_vite+vue.md +1 -3
- package/docs/ko/live-sync.md +4 -0
- package/docs/ko/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/ko/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/ko/packages/vite-intlayer/exports.md +15 -0
- package/docs/ko/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/ko/packages/vite-intlayer/intlayerPrune.md +79 -6
- package/docs/ko/releases/v9.md +12 -0
- package/docs/ko/self_hosting.md +60 -49
- package/docs/nl/bundle_optimization.md +58 -25
- package/docs/nl/configuration.md +25 -8
- package/docs/nl/intlayer_with_angular_21.md +9 -9
- package/docs/pl/analytics.md +220 -0
- package/docs/pl/bundle_optimization.md +58 -25
- package/docs/pl/configuration.md +25 -8
- package/docs/pl/dictionary/nesting.md +47 -30
- package/docs/pl/formatters.md +208 -305
- package/docs/pl/intlayer_CMS.md +152 -0
- package/docs/pl/intlayer_with_angular_21.md +9 -9
- package/docs/pl/intlayer_with_nextjs_14.md +1 -26
- package/docs/pl/intlayer_with_solid_start.md +1078 -0
- package/docs/pl/live-sync.md +4 -0
- package/docs/pl/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/pl/packages/react-intlayer/useDictionary.md +2 -19
- package/docs/pl/packages/vite-intlayer/exports.md +15 -0
- package/docs/pl/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/pl/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/pl/releases/v9.md +0 -15
- package/docs/pl/self_hosting.md +60 -49
- package/docs/pt/analytics.md +222 -0
- package/docs/pt/bundle_optimization.md +58 -24
- package/docs/pt/configuration.md +25 -8
- package/docs/pt/dictionary/file.md +3 -1
- package/docs/pt/dictionary/nesting.md +47 -30
- package/docs/pt/formatters.md +112 -168
- package/docs/pt/intlayer_CMS.md +66 -15
- package/docs/pt/intlayer_with_angular_21.md +9 -9
- package/docs/pt/intlayer_with_astro_lit.md +26 -1
- package/docs/pt/intlayer_with_nextjs_14.md +1 -28
- package/docs/pt/intlayer_with_nextjs_15.md +1 -33
- package/docs/pt/intlayer_with_solid_start.md +1078 -0
- package/docs/pt/intlayer_with_vite+vue.md +1 -3
- package/docs/pt/live-sync.md +4 -0
- package/docs/pt/packages/intlayer/getLocalizedUrl.md +34 -26
- package/docs/pt/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/pt/packages/vite-intlayer/exports.md +15 -0
- package/docs/pt/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/pt/packages/vite-intlayer/intlayerPrune.md +78 -6
- package/docs/pt/releases/v9.md +0 -15
- package/docs/pt/self_hosting.md +60 -49
- package/docs/ru/analytics.md +222 -0
- package/docs/ru/autoFill.md +27 -8
- package/docs/ru/bundle_optimization.md +58 -25
- package/docs/ru/configuration.md +25 -8
- package/docs/ru/dictionary/file.md +3 -1
- package/docs/ru/dictionary/nesting.md +64 -205
- package/docs/ru/formatters.md +108 -128
- package/docs/ru/intlayer_with_angular_21.md +9 -9
- package/docs/ru/intlayer_with_nextjs_14.md +1 -28
- package/docs/ru/intlayer_with_nextjs_15.md +1 -33
- package/docs/ru/intlayer_with_solid_start.md +1078 -0
- package/docs/ru/intlayer_with_vite+vue.md +1 -3
- package/docs/ru/live-sync.md +4 -0
- package/docs/ru/packages/intlayer/getLocalizedUrl.md +34 -26
- package/docs/ru/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/ru/packages/react-intlayer/useDictionary.md +4 -21
- package/docs/ru/packages/vite-intlayer/exports.md +15 -0
- package/docs/ru/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/ru/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/ru/releases/v9.md +0 -15
- package/docs/ru/self_hosting.md +60 -49
- package/docs/tr/analytics.md +222 -0
- package/docs/tr/autoFill.md +28 -9
- package/docs/tr/bundle_optimization.md +58 -25
- package/docs/tr/configuration.md +25 -8
- package/docs/tr/dictionary/file.md +2 -0
- package/docs/tr/dictionary/nesting.md +47 -30
- package/docs/tr/formatters.md +144 -190
- package/docs/tr/intlayer_CMS.md +152 -0
- package/docs/tr/intlayer_with_angular_21.md +9 -9
- package/docs/tr/intlayer_with_nestjs.md +2 -12
- package/docs/tr/intlayer_with_nextjs_15.md +1 -33
- package/docs/tr/intlayer_with_solid_start.md +1078 -0
- package/docs/tr/intlayer_with_vite+vue.md +1 -3
- package/docs/tr/live-sync.md +4 -0
- package/docs/tr/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/tr/packages/vite-intlayer/exports.md +15 -0
- package/docs/tr/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/tr/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/tr/self_hosting.md +47 -50
- package/docs/uk/analytics.md +222 -0
- package/docs/uk/bundle_optimization.md +58 -25
- package/docs/uk/configuration.md +25 -8
- package/docs/uk/dictionary/nesting.md +47 -30
- package/docs/uk/formatters.md +128 -185
- package/docs/uk/intlayer_CMS.md +152 -0
- package/docs/uk/intlayer_with_angular_21.md +9 -9
- package/docs/uk/intlayer_with_nextjs_14.md +1 -26
- package/docs/uk/intlayer_with_solid_start.md +1078 -0
- package/docs/uk/live-sync.md +4 -0
- package/docs/uk/packages/react-intlayer/useDictionary.md +2 -19
- package/docs/uk/packages/vite-intlayer/exports.md +15 -0
- package/docs/uk/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/uk/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/uk/releases/v9.md +0 -15
- package/docs/uk/self_hosting.md +60 -50
- package/docs/ur/bundle_optimization.md +58 -25
- package/docs/ur/configuration.md +25 -8
- package/docs/ur/intlayer_with_angular_21.md +9 -9
- package/docs/vi/analytics.md +222 -0
- package/docs/vi/bundle_optimization.md +58 -25
- package/docs/vi/configuration.md +24 -8
- package/docs/vi/dictionary/nesting.md +37 -184
- package/docs/vi/formatters.md +208 -309
- package/docs/vi/intlayer_CMS.md +164 -0
- package/docs/vi/intlayer_with_angular_21.md +9 -9
- package/docs/vi/intlayer_with_nextjs_14.md +0 -25
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +70 -63
- package/docs/vi/intlayer_with_solid_start.md +1078 -0
- package/docs/vi/live-sync.md +4 -0
- package/docs/vi/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/vi/packages/react-intlayer/useIntlayer.md +2 -2
- package/docs/vi/packages/vite-intlayer/exports.md +15 -0
- package/docs/vi/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/vi/packages/vite-intlayer/intlayerPrune.md +77 -4
- package/docs/vi/plugins/sync-json.md +6 -6
- package/docs/vi/releases/v9.md +12 -0
- package/docs/vi/self_hosting.md +61 -50
- package/docs/zh/CI_CD.md +4 -0
- package/docs/zh/analytics.md +222 -0
- package/docs/zh/autoFill.md +28 -9
- package/docs/zh/bundle_optimization.md +58 -25
- package/docs/zh/configuration.md +24 -8
- package/docs/zh/dictionary/file.md +2 -0
- package/docs/zh/dictionary/nesting.md +47 -30
- package/docs/zh/formatters.md +140 -188
- package/docs/zh/intlayer_CMS.md +164 -0
- package/docs/zh/intlayer_with_analog.md +193 -3
- package/docs/zh/intlayer_with_angular_19.md +272 -3
- package/docs/zh/intlayer_with_angular_21.md +7 -7
- package/docs/zh/intlayer_with_create_react_app.md +348 -26
- package/docs/zh/intlayer_with_lynx+react.md +263 -4
- package/docs/zh/intlayer_with_nextjs_14.md +1 -28
- package/docs/zh/intlayer_with_nextjs_15.md +1 -33
- package/docs/zh/intlayer_with_nextjs_no_locale_path.md +558 -1
- package/docs/zh/intlayer_with_nuxt.md +182 -7
- package/docs/zh/intlayer_with_react_router_v7.md +183 -25
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +306 -42
- package/docs/zh/intlayer_with_solid_start.md +1077 -0
- package/docs/zh/intlayer_with_storybook.md +260 -3
- package/docs/zh/intlayer_with_svelte_kit.md +428 -48
- package/docs/zh/intlayer_with_tanstack+solid.md +713 -13
- package/docs/zh/intlayer_with_tanstack.md +731 -20
- package/docs/zh/intlayer_with_vanilla.md +314 -4
- package/docs/zh/intlayer_with_vite+lit.md +465 -4
- package/docs/zh/intlayer_with_vite+preact.md +422 -116
- package/docs/zh/intlayer_with_vite+react.md +324 -45
- package/docs/zh/intlayer_with_vite+react_compiler.md +228 -13
- package/docs/zh/intlayer_with_vite+solid.md +462 -32
- package/docs/zh/intlayer_with_vite+vanilla.md +497 -4
- package/docs/zh/live-sync.md +4 -0
- package/docs/zh/mcp_server.md +3 -9
- package/docs/zh/packages/intlayer/getLocalizedUrl.md +26 -24
- package/docs/zh/packages/intlayer/getMultilingualUrls.md +4 -18
- package/docs/zh/packages/vite-intlayer/exports.md +29 -0
- package/docs/zh/packages/vite-intlayer/intlayer.md +121 -6
- package/docs/zh/packages/vite-intlayer/intlayerPrune.md +79 -6
- package/docs/zh/releases/v9.md +12 -0
- package/docs/zh/self_hosting.md +60 -50
- package/docs/zh-TW/bundle_optimization.md +58 -25
- package/docs/zh-TW/intlayer_with_angular_21.md +7 -7
- package/package.json +7 -7
- package/src/common.ts +39 -2
- package/src/generated/blog.entry.ts +66 -34
- package/src/generated/docs.entry.ts +273 -221
- package/src/generated/frequentQuestions.entry.ts +56 -24
- package/src/generated/legal.entry.ts +41 -9
package/docs/ar/intlayer_CMS.md
CHANGED
|
@@ -247,6 +247,158 @@ bun x intlayer dictionary push -d my-first-dictionary-key --env production
|
|
|
247
247
|
|
|
248
248
|
بعد ذلك، ستتمكن من رؤية وإدارة قاموسك في [نظام إدارة محتوى Intlayer](https://app.intlayer.org/content).
|
|
249
249
|
|
|
250
|
+
## الوصول البرمجي باستخدام SDK `@intlayer/api`
|
|
251
|
+
|
|
252
|
+
بالإضافة إلى واجهة سطر الأوامر والمحرر المرئي، يأتي Intlayer مع SDK مكتوب بشكل آمن من حيث النوع في حزمة [`@intlayer/api`](https://www.npmjs.com/package/@intlayer/api). يتيح لك التعامل مع نظام إدارة المحتوى كـ **قاعدة بيانات محتوى بدون رأس**: يمكنك جلب المشاريع وجلب القواميس، وتحديثها مباشرة من تطبيقك الخاص أو البرامج النصية أو خط أنابيب CI.
|
|
253
|
+
|
|
254
|
+
يتعامل SDK مع المصادقة من أجلك. طالما أن `clientId` و `clientSecret` متاحة (في تكوين Intlayer أو البيئة)، فإنه يحصل على رمز OAuth2 للوصول وينعشه تلقائياً ويوقع كل طلب.
|
|
255
|
+
|
|
256
|
+
### التثبيت
|
|
257
|
+
|
|
258
|
+
```bash packageManager="npm"
|
|
259
|
+
npm install @intlayer/api
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
```bash packageManager="yarn"
|
|
263
|
+
yarn add @intlayer/api
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
```bash packageManager="pnpm"
|
|
267
|
+
pnpm add @intlayer/api
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
```bash packageManager="bun"
|
|
271
|
+
bun add @intlayer/api
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### كيفية عملها: المصادق + نقاط النهاية
|
|
275
|
+
|
|
276
|
+
تم تقسيم SDK إلى **استيرادين منفصلين** عن قصد، للحفاظ على حجم حزمتك صغيرًا:
|
|
277
|
+
|
|
278
|
+
1. `createIntlayerCMS` — ينشئ **مصادقًا** خفيف الوزن. يحمل فقط بيانات الاعتماد والرمز المميز للوصول المُدار؛ لا يعرف شيئًا عن أي مجال محدد.
|
|
279
|
+
2. `dictionaryEndpoint`, `projectEndpoint`, … — **محررات نقاط النهاية** لكل مجال، يتم استيراد كل منها من مسارها الخاص (`@intlayer/api/dictionary`, `@intlayer/api/project`, …). تمرر المصادق إلى نقطة النهاية التي تحتاجها.
|
|
280
|
+
|
|
281
|
+
لأن كل نقطة نهاية يتم استيرادها بشكل منفصل، تتضمن حزمتك فقط المجالات التي تستخدمها فعليًا — استيراد `dictionaryEndpoint` لا يسحب أبدًا المشروع أو الذكاء الاصطناعي أو أي عميل مجال آخر.
|
|
282
|
+
|
|
283
|
+
```typescript fileName="cms.ts" codeFormat="typescript"
|
|
284
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
285
|
+
|
|
286
|
+
// التكوين اختياري: عند حذفه، يتم قراءة بيانات الاعتماد من
|
|
287
|
+
// `@intlayer/config/built`، الذي يحل متغيرات البيئة INTLAYER_CLIENT_ID و
|
|
288
|
+
// INTLAYER_CLIENT_SECRET.
|
|
289
|
+
export const cmsAuthenticator = createIntlayerCMS();
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
> [!WARNING]
|
|
293
|
+
> بيانات اعتماد CMS (`clientId` / `clientSecret`) تمنح **حق الوصول للكتابة** إلى محتواك. لا تنشئ المصادق أبدًا إلا على **الجانب الخادم** (إجراءات الخادم، معالجات المسارات، البرامج النصية، CI). لا تستورده أبدًا في الكود من جانب العميل أو تعرض بيانات اعتمادك للمتصفح.
|
|
294
|
+
|
|
295
|
+
إذا فضلت عدم الاعتماد على تكوين وقت البناء، مرر بيانات الاعتماد بشكل صريح:
|
|
296
|
+
|
|
297
|
+
```typescript fileName="cms.ts" codeFormat="typescript"
|
|
298
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
299
|
+
|
|
300
|
+
export const cmsAuthenticator = createIntlayerCMS({
|
|
301
|
+
editor: {
|
|
302
|
+
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
303
|
+
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
304
|
+
// اختياري، للخوادم الذاتية الاستضافة:
|
|
305
|
+
// backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
306
|
+
},
|
|
307
|
+
});
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
> احصل على بيانات اعتمادك بإنشاء مفتاح وصول جديد في [لوحة معلومات Intlayer - المشاريع](https://app.intlayer.org/projects).
|
|
311
|
+
|
|
312
|
+
### جلب المشاريع
|
|
313
|
+
|
|
314
|
+
```typescript fileName="projects.ts" codeFormat="typescript"
|
|
315
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
316
|
+
import { projectEndpoint } from "@intlayer/api/project";
|
|
317
|
+
|
|
318
|
+
const cmsAuthenticator = createIntlayerCMS();
|
|
319
|
+
|
|
320
|
+
// قائمة المشاريع التي يمكن الوصول إليها باستخدام بيانات اعتمادك
|
|
321
|
+
const { data: projects } =
|
|
322
|
+
await projectEndpoint(cmsAuthenticator).getProjects();
|
|
323
|
+
|
|
324
|
+
// قراءة رؤى التوطين المجمعة للمشروع المحدد
|
|
325
|
+
const { data: insights } =
|
|
326
|
+
await projectEndpoint(cmsAuthenticator).getProjectInsights();
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### جلب القواميیس
|
|
330
|
+
|
|
331
|
+
```typescript fileName="read-dictionaries.ts" codeFormat="typescript"
|
|
332
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
333
|
+
import { dictionaryEndpoint } from "@intlayer/api/dictionary";
|
|
334
|
+
|
|
335
|
+
const cmsAuthenticator = createIntlayerCMS();
|
|
336
|
+
|
|
337
|
+
// قائمة بكل قاموس بعید من المشروع
|
|
338
|
+
const { data: dictionaries } =
|
|
339
|
+
await dictionaryEndpoint(cmsAuthenticator).getDictionaries();
|
|
340
|
+
|
|
341
|
+
// أو الحصول على قاموس واحد حسب المفتاح
|
|
342
|
+
const { data: dictionary } = await dictionaryEndpoint(
|
|
343
|
+
cmsAuthenticator
|
|
344
|
+
).getDictionary("my-first-dictionary-key");
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### دفع وتحديث القواميس
|
|
348
|
+
|
|
349
|
+
استخدم نظام إدارة المحتوى (CMS) كقاعدة بيانات لكتابة المحتوى مرة أخرى:
|
|
350
|
+
|
|
351
|
+
```typescript fileName="write-dictionaries.ts" codeFormat="typescript"
|
|
352
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
353
|
+
import { dictionaryEndpoint } from "@intlayer/api/dictionary";
|
|
354
|
+
|
|
355
|
+
const cmsAuthenticator = createIntlayerCMS();
|
|
356
|
+
|
|
357
|
+
// إنشاء قاموس جديد
|
|
358
|
+
await dictionaryEndpoint(cmsAuthenticator).addDictionary({
|
|
359
|
+
key: "my-first-dictionary-key",
|
|
360
|
+
content: { title: "Hello world" },
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
// Upsert مجموعة من القواميس (إنشاء أو تحديثها في استدعاء واحد)
|
|
364
|
+
await dictionaryEndpoint(cmsAuthenticator).pushDictionaries([
|
|
365
|
+
{ key: "home", content: { title: "Home" } },
|
|
366
|
+
{ key: "about", content: { title: "About" } },
|
|
367
|
+
]);
|
|
368
|
+
|
|
369
|
+
// تحديث قاموس موجود
|
|
370
|
+
await dictionaryEndpoint(cmsAuthenticator).updateDictionary({
|
|
371
|
+
id: "<dictionary-id>",
|
|
372
|
+
key: "home",
|
|
373
|
+
content: { title: "Updated title" },
|
|
374
|
+
});
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
> نصيحة: أعد استخدام نقطة النهاية المرتبطة لتجنب تكرار نفسك:
|
|
378
|
+
>
|
|
379
|
+
> ```typescript codeFormat="typescript"
|
|
380
|
+
> const dictionary = dictionaryEndpoint(cmsAuthenticator);
|
|
381
|
+
> await dictionary.pushDictionaries([myDictionary]);
|
|
382
|
+
> const { data } = await dictionary.getDictionaries();
|
|
383
|
+
> ```
|
|
384
|
+
|
|
385
|
+
### استخراج طريقة واحدة
|
|
386
|
+
|
|
387
|
+
كل طريقة endpoint مصادق عليها بالفعل وقائمة بذاتها (تحمل معالجة الرمز الخاص بها)، لذا يمكنك استخراج واحدة وتمريرها حوله — على سبيل المثال لحقنها كتبعية:
|
|
388
|
+
|
|
389
|
+
```typescript fileName="push.ts" codeFormat="typescript"
|
|
390
|
+
import { createIntlayerCMS } from "@intlayer/api";
|
|
391
|
+
import { dictionaryEndpoint } from "@intlayer/api/dictionary";
|
|
392
|
+
|
|
393
|
+
const dictionary = dictionaryEndpoint(createIntlayerCMS());
|
|
394
|
+
|
|
395
|
+
// مصادق عليه بالفعل — ينعش الرمز تلقائياً في كل استدعاء
|
|
396
|
+
export const pushDictionaries = dictionary.pushDictionaries;
|
|
397
|
+
|
|
398
|
+
// الاستخدام
|
|
399
|
+
await pushDictionaries([{ key: "home", content: { title: "Home" } }]);
|
|
400
|
+
```
|
|
401
|
+
|
|
250
402
|
## التزامن الحي
|
|
251
403
|
|
|
252
404
|
يتيح التزامن الحي لتطبيقك عكس تغييرات محتوى نظام إدارة المحتوى أثناء وقت التشغيل. لا حاجة لإعادة البناء أو إعادة النشر. عند التمكين، يتم بث التحديثات إلى خادم التزامن الحي الذي يقوم بتحديث القواميس التي يقرأها تطبيقك.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-04-18
|
|
3
3
|
updatedAt: 2026-05-31
|
|
4
|
-
title: "تدويل Angular
|
|
5
|
-
description: "لا مزيد من i18next. دليل 2026 لبناء تطبيق Angular
|
|
4
|
+
title: "تدويل Angular 22 - الدليل الكامل لترجمة تطبيقك"
|
|
5
|
+
description: "لا مزيد من i18next. دليل 2026 لبناء تطبيق Angular 22 متعدد اللغات (i18n). ترجم باستخدام وكلاء الذكاء الاصطناعي وحسّن حجم الحزمة وتحسين محركات البحث والأداء."
|
|
6
6
|
keywords:
|
|
7
7
|
- تدويل
|
|
8
8
|
- وثائق
|
|
@@ -13,8 +13,8 @@ slugs:
|
|
|
13
13
|
- doc
|
|
14
14
|
- environment
|
|
15
15
|
- angular
|
|
16
|
-
applicationTemplate: https://github.com/aymericzip/intlayer-angular-
|
|
17
|
-
applicationShowcase: https://intlayer-angular-
|
|
16
|
+
applicationTemplate: https://github.com/aymericzip/intlayer-angular-22-template
|
|
17
|
+
applicationShowcase: https://intlayer-angular-22-template.vercel.app/
|
|
18
18
|
history:
|
|
19
19
|
- version: 8.9.0
|
|
20
20
|
date: 2026-05-04
|
|
@@ -31,7 +31,7 @@ history:
|
|
|
31
31
|
author: aymericzip
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
# ترجم موقع Angular
|
|
34
|
+
# ترجم موقع Angular 22 (Vite) الخاص بك باستخدام Intlayer | التدويل (i18n)
|
|
35
35
|
|
|
36
36
|
## جدول المحتويات
|
|
37
37
|
|
|
@@ -77,7 +77,7 @@ author: aymericzip
|
|
|
77
77
|
<Tab label="الرمز" value="code">
|
|
78
78
|
|
|
79
79
|
<iframe
|
|
80
|
-
src="https://ide.intlayer.org/aymericzip/intlayer-angular-
|
|
80
|
+
src="https://ide.intlayer.org/aymericzip/intlayer-angular-22-template?file=intlayer.config.ts"
|
|
81
81
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
82
82
|
title="Demo CodeSandbox - كيفية تدويل تطبيقك باستخدام Intlayer"
|
|
83
83
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
@@ -88,7 +88,7 @@ author: aymericzip
|
|
|
88
88
|
<Tab label="عرض تجريبي" value="demo">
|
|
89
89
|
|
|
90
90
|
<iframe
|
|
91
|
-
src="https://intlayer-angular-
|
|
91
|
+
src="https://intlayer-angular-22-template.vercel.app/"
|
|
92
92
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
93
93
|
title="Demo - intlayer-angular-template"
|
|
94
94
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
@@ -98,7 +98,7 @@ author: aymericzip
|
|
|
98
98
|
</Tab>
|
|
99
99
|
</Tabs>
|
|
100
100
|
|
|
101
|
-
راجع [قالب التطبيق](https://github.com/aymericzip/intlayer-angular-
|
|
101
|
+
راجع [قالب التطبيق](https://github.com/aymericzip/intlayer-angular-22-template) على GitHub.
|
|
102
102
|
|
|
103
103
|
<Steps>
|
|
104
104
|
|
|
@@ -186,7 +186,7 @@ export default config;
|
|
|
186
186
|
|
|
187
187
|
<Step number={3} title="دمج Intlayer في تكوين Angular الخاص بك">
|
|
188
188
|
|
|
189
|
-
لدمج Intlayer مع Angular CLI، تحتاج إلى استخدام باني مخصص (custom builder). يفترض هذا الدليل أنك تستخدم Vite/esbuild (الافتراضي لمشاريع Angular
|
|
189
|
+
لدمج Intlayer مع Angular CLI، تحتاج إلى استخدام باني مخصص (custom builder). يفترض هذا الدليل أنك تستخدم Vite/esbuild (الافتراضي لمشاريع Angular 22).
|
|
190
190
|
|
|
191
191
|
أولاً، قم بتعديل `angular.json` الخاص بك لاستخدام باني esbuild المخصص. قم بتحديث تكوينات `build` و `serve`:
|
|
192
192
|
|
|
@@ -24,34 +24,7 @@ history:
|
|
|
24
24
|
author: aymericzip
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
#
|
|
28
|
-
|
|
29
|
-
<Tabs defaultTab="code">
|
|
30
|
-
<Tab label="كود" value="code">
|
|
31
|
-
|
|
32
|
-
<iframe
|
|
33
|
-
src="https://ide.intlayer.org/aymericzip/intlayer-next-14-template?file=intlayer.config.ts"
|
|
34
|
-
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
35
|
-
title="Demo CodeSandbox - Intlayer"
|
|
36
|
-
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
37
|
-
loading="lazy"
|
|
38
|
-
/>
|
|
39
|
-
|
|
40
|
-
</Tab>
|
|
41
|
-
<Tab label="تجربة" value="demo">
|
|
42
|
-
|
|
43
|
-
<iframe
|
|
44
|
-
src="https://intlayer-next-14-template.vercel.app"
|
|
45
|
-
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
46
|
-
title="تجربة - intlayer-next-14-template"
|
|
47
|
-
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
48
|
-
loading="lazy"
|
|
49
|
-
/>
|
|
50
|
-
|
|
51
|
-
</Tab>
|
|
52
|
-
</Tabs>
|
|
53
|
-
|
|
54
|
-
انظر [Template Application](https://github.com/aymericzip/intlayer-next-14-template) على GitHub.
|
|
27
|
+
# ترجمة موقع Next.js 14 و App Router الخاص بك باستخدام Intlayer | Internationalization (i18n)
|
|
55
28
|
|
|
56
29
|
## جدول المحتويات
|
|
57
30
|
|
|
@@ -31,39 +31,7 @@ history:
|
|
|
31
31
|
author: aymericzip
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
#
|
|
35
|
-
|
|
36
|
-
<Tabs defaultTab="video">
|
|
37
|
-
<Tab label="فيديو" value="video">
|
|
38
|
-
|
|
39
|
-
<iframe title="Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&origin=https://intlayer.org&controls=0&rel=1"/>
|
|
40
|
-
|
|
41
|
-
</Tab>
|
|
42
|
-
<Tab label="كود" value="code">
|
|
43
|
-
|
|
44
|
-
<iframe
|
|
45
|
-
src="https://ide.intlayer.org/aymericzip/intlayer-next-15-template?file=intlayer.config.ts"
|
|
46
|
-
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
47
|
-
title="Demo CodeSandbox - Intlayer"
|
|
48
|
-
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
49
|
-
loading="lazy"
|
|
50
|
-
/>
|
|
51
|
-
|
|
52
|
-
</Tab>
|
|
53
|
-
<Tab label="تجربة" value="demo">
|
|
54
|
-
|
|
55
|
-
<iframe
|
|
56
|
-
src="https://next-15-intlayer-template-xt83.vercel.app"
|
|
57
|
-
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
58
|
-
title="تجربة - intlayer-next-15-template"
|
|
59
|
-
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
60
|
-
loading="lazy"
|
|
61
|
-
/>
|
|
62
|
-
|
|
63
|
-
</Tab>
|
|
64
|
-
</Tabs>
|
|
65
|
-
|
|
66
|
-
شاهد [قالب التطبيق](https://github.com/aymericzip/intlayer-next-15-template) على GitHub.
|
|
34
|
+
# ترجمة موقع Next.js 15 الخاص بك باستخدام Intlayer | Internationalization (i18n)
|
|
67
35
|
|
|
68
36
|
## جدول المحتويات
|
|
69
37
|
|
|
@@ -165,99 +165,56 @@ app/
|
|
|
165
165
|
- `_index` - مسار الفهرس (يتم عرضه في مسار العنصر الأب)
|
|
166
166
|
- `.` (نقطة) - فاصل مقاطع المسار (مثال: `($locale).about` → `/:locale?/about`)
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
#### مكون التخطيط
|
|
169
169
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
title="Demo CodeSandbox - How to Internationalize your application using Intlayer"
|
|
182
|
-
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
183
|
-
loading="lazy"
|
|
184
|
-
/>
|
|
185
|
-
|
|
186
|
-
</Tab>
|
|
187
|
-
<Tab label="تجربة" value="demo">
|
|
188
|
-
|
|
189
|
-
<iframe
|
|
190
|
-
src="https://intlayer-react-router-v7.vercel.app"
|
|
191
|
-
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
192
|
-
title="تجربة - intlayer-react-router-v7-template"
|
|
193
|
-
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
194
|
-
loading="lazy"
|
|
195
|
-
/>
|
|
196
|
-
|
|
197
|
-
</Tab>
|
|
198
|
-
</Tabs>
|
|
199
|
-
|
|
200
|
-
See [Application Template](https://github.com/aymericzip/intlayer-react-router-v7-template) on GitHub.
|
|
201
|
-
|
|
202
|
-
قم بإنشاء ملف تكوين لتكوين لغات تطبيقك:
|
|
203
|
-
|
|
204
|
-
```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
|
|
205
|
-
import { type IntlayerConfig, Locales } from "intlayer";
|
|
206
|
-
|
|
207
|
-
const config: IntlayerConfig = {
|
|
208
|
-
internationalization: {
|
|
209
|
-
defaultLocale: Locales.ENGLISH, // اللغة الافتراضية
|
|
210
|
-
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], // اللغات المدعومة
|
|
211
|
-
},
|
|
212
|
-
};
|
|
213
|
-
|
|
214
|
-
export default config;
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
> من خلال ملف التكوين هذا، يمكنك إعداد عناوين URL محلية، إعادة توجيه الوسيط، أسماء ملفات تعريف الارتباط، موقع وامتداد إعلانات المحتوى الخاصة بك، تعطيل سجلات Intlayer في وحدة التحكم، والمزيد. للحصول على قائمة كاملة بالمعلمات المتاحة، راجع [توثيق التكوين](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/configuration.md).
|
|
218
|
-
|
|
219
|
-
<Steps>
|
|
220
|
-
|
|
221
|
-
<Step number={3} title="دمج Intlayer في تكوين Vite الخاص بك">
|
|
222
|
-
|
|
223
|
-
أضف مكون intlayer الإضافي إلى تكوينك:
|
|
170
|
+
```tsx fileName="app/root.tsx"
|
|
171
|
+
import { getLocaleFromPath } from "intlayer";
|
|
172
|
+
import { IntlayerProvider } from "react-intlayer";
|
|
173
|
+
import {
|
|
174
|
+
isRouteErrorResponse,
|
|
175
|
+
Meta,
|
|
176
|
+
Outlet,
|
|
177
|
+
Scripts,
|
|
178
|
+
ScrollRestoration,
|
|
179
|
+
useLoaderData,
|
|
180
|
+
} from "react-router";
|
|
224
181
|
|
|
225
|
-
|
|
226
|
-
import { reactRouter } from "@react-router/dev/vite";
|
|
227
|
-
import { defineConfig } from "vite";
|
|
228
|
-
import { intlayer } from "vite-intlayer";
|
|
182
|
+
import type { Route } from "./+types/root";
|
|
229
183
|
|
|
230
|
-
|
|
231
|
-
plugins: [reactRouter(), intlayer()],
|
|
232
|
-
});
|
|
233
|
-
```
|
|
184
|
+
import "./app.css";
|
|
234
185
|
|
|
235
|
-
|
|
186
|
+
// ... كود App و links و ErrorBoundary دون تغيير
|
|
236
187
|
|
|
237
|
-
|
|
188
|
+
export async function loader({ request }: Route.LoaderArgs) {
|
|
189
|
+
const locale = getLocaleFromPath(request.url);
|
|
238
190
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
قم بإعداد تكوين التوجيه الخاص بك مع مسارات مدركة للغة:
|
|
191
|
+
return { locale };
|
|
192
|
+
}
|
|
242
193
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
194
|
+
export function Layout({
|
|
195
|
+
children,
|
|
196
|
+
}: { children: React.ReactNode } & Route.ComponentProps) {
|
|
197
|
+
const data = useLoaderData<typeof loader>();
|
|
198
|
+
const { locale } = data ?? {};
|
|
246
199
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
200
|
+
return (
|
|
201
|
+
<html lang={locale}>
|
|
202
|
+
<head>
|
|
203
|
+
<meta charSet="utf-8" />
|
|
204
|
+
<meta content="width=device-width, initial-scale=1" name="viewport" />
|
|
205
|
+
<Meta />
|
|
206
|
+
<Links />
|
|
207
|
+
</head>
|
|
208
|
+
<body>
|
|
209
|
+
<IntlayerProvider locale={locale}>{children}</IntlayerProvider>
|
|
210
|
+
<ScrollRestoration />
|
|
211
|
+
<Scripts />
|
|
212
|
+
</body>
|
|
213
|
+
</html>
|
|
214
|
+
);
|
|
215
|
+
}
|
|
253
216
|
```
|
|
254
217
|
|
|
255
|
-
</Step>
|
|
256
|
-
|
|
257
|
-
<Step number={5} title="إنشاء مكونات التخطيط">
|
|
258
|
-
|
|
259
|
-
قم بإعداد التخطيط الجذري والتخطيطات الخاصة باللغة:
|
|
260
|
-
|
|
261
218
|
#### التخطيط الجذري
|
|
262
219
|
|
|
263
220
|
```tsx fileName="app/routes/layout.tsx"
|