@intlayer/docs 5.8.1 → 6.0.0-canary.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blog/ar/rag_powered_documentation_assistant.md +282 -0
- package/blog/de/rag_powered_documentation_assistant.md +282 -0
- package/blog/en/rag_powered_documentation_assistant.md +289 -0
- package/blog/en-GB/rag_powered_documentation_assistant.md +284 -0
- package/blog/es/rag_powered_documentation_assistant.md +308 -0
- package/blog/fr/rag_powered_documentation_assistant.md +308 -0
- package/blog/hi/rag_powered_documentation_assistant.md +284 -0
- package/blog/it/rag_powered_documentation_assistant.md +284 -0
- package/blog/ja/rag_powered_documentation_assistant.md +284 -0
- package/blog/ko/rag_powered_documentation_assistant.md +283 -0
- package/blog/pt/rag_powered_documentation_assistant.md +284 -0
- package/blog/ru/rag_powered_documentation_assistant.md +284 -0
- package/blog/tr/index.md +69 -0
- package/blog/tr/internationalization_and_SEO.md +273 -0
- package/blog/tr/intlayer_with_i18next.md +162 -0
- package/blog/tr/intlayer_with_next-i18next.md +367 -0
- package/blog/tr/intlayer_with_next-intl.md +392 -0
- package/blog/tr/intlayer_with_react-i18next.md +346 -0
- package/blog/tr/intlayer_with_react-intl.md +345 -0
- package/blog/tr/list_i18n_technologies/CMS/drupal.md +143 -0
- package/blog/tr/list_i18n_technologies/CMS/wix.md +167 -0
- package/blog/tr/list_i18n_technologies/CMS/wordpress.md +188 -0
- package/blog/tr/list_i18n_technologies/frameworks/angular.md +125 -0
- package/blog/tr/list_i18n_technologies/frameworks/flutter.md +150 -0
- package/blog/tr/list_i18n_technologies/frameworks/react-native.md +217 -0
- package/blog/tr/list_i18n_technologies/frameworks/react.md +155 -0
- package/blog/tr/list_i18n_technologies/frameworks/svelte.md +129 -0
- package/blog/tr/list_i18n_technologies/frameworks/vue.md +130 -0
- package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +170 -0
- package/blog/tr/rag_powered_documentation_assistant.md +284 -0
- package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +162 -0
- package/blog/tr/vue-i18n_vs_intlayer.md +276 -0
- package/blog/tr/what_is_internationalization.md +166 -0
- package/blog/zh/rag_powered_documentation_assistant.md +284 -0
- package/dist/cjs/generated/blog.entry.cjs +212 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +660 -132
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +84 -0
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +6 -0
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +212 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +660 -132
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +84 -0
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +6 -0
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +5 -2
- 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/autoFill.md +41 -40
- package/docs/ar/configuration.md +202 -199
- package/docs/ar/dictionary/content_file.md +1059 -0
- package/docs/ar/intlayer_CMS.md +4 -4
- package/docs/ar/intlayer_with_nestjs.md +271 -0
- package/docs/ar/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ar/intlayer_with_react_router_v7.md +533 -0
- package/docs/ar/intlayer_with_tanstack.md +465 -299
- package/docs/ar/intlayer_with_vite+preact.md +7 -7
- package/docs/ar/intlayer_with_vite+react.md +7 -7
- package/docs/ar/intlayer_with_vite+vue.md +9 -9
- package/docs/ar/packages/vite-intlayer/index.md +3 -3
- package/docs/ar/readme.md +261 -0
- package/docs/ar/testing.md +199 -0
- package/docs/de/autoFill.md +42 -19
- package/docs/de/configuration.md +155 -147
- package/docs/de/dictionary/content_file.md +1059 -0
- package/docs/de/intlayer_CMS.md +4 -5
- package/docs/de/intlayer_with_nestjs.md +270 -0
- package/docs/de/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/de/intlayer_with_react_router_v7.md +537 -0
- package/docs/de/intlayer_with_tanstack.md +469 -302
- package/docs/de/intlayer_with_vite+preact.md +7 -7
- package/docs/de/intlayer_with_vite+react.md +7 -7
- package/docs/de/intlayer_with_vite+vue.md +9 -9
- package/docs/de/packages/vite-intlayer/index.md +3 -3
- package/docs/de/readme.md +261 -0
- package/docs/de/testing.md +200 -0
- package/docs/en/CI_CD.md +4 -6
- package/docs/en/autoFill.md +25 -5
- package/docs/en/configuration.md +45 -54
- package/docs/en/dictionary/content_file.md +1054 -0
- package/docs/en/intlayer_CMS.md +8 -7
- package/docs/en/intlayer_cli.md +112 -5
- package/docs/en/intlayer_with_nestjs.md +268 -0
- package/docs/en/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/en/intlayer_with_react_router_v7.md +531 -0
- package/docs/en/intlayer_with_tanstack.md +463 -294
- package/docs/en/intlayer_with_vite+preact.md +8 -8
- package/docs/en/intlayer_with_vite+react.md +8 -8
- package/docs/en/intlayer_with_vite+vue.md +8 -8
- package/docs/en/packages/intlayer/getLocalizedUrl.md +102 -25
- package/docs/en/packages/vite-intlayer/index.md +3 -3
- package/docs/en/readme.md +261 -0
- package/docs/en/testing.md +200 -0
- package/docs/en-GB/autoFill.md +29 -6
- package/docs/en-GB/configuration.md +79 -71
- package/docs/en-GB/dictionary/content_file.md +1084 -0
- package/docs/en-GB/intlayer_CMS.md +4 -5
- package/docs/en-GB/intlayer_with_nestjs.md +268 -0
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/en-GB/intlayer_with_react_router_v7.md +533 -0
- package/docs/en-GB/intlayer_with_tanstack.md +466 -299
- package/docs/en-GB/intlayer_with_vite+preact.md +7 -7
- package/docs/en-GB/intlayer_with_vite+react.md +7 -7
- package/docs/en-GB/intlayer_with_vite+vue.md +9 -9
- package/docs/en-GB/packages/vite-intlayer/index.md +3 -3
- package/docs/en-GB/readme.md +261 -0
- package/docs/en-GB/testing.md +200 -0
- package/docs/es/autoFill.md +45 -23
- package/docs/es/configuration.md +171 -167
- package/docs/es/dictionary/content_file.md +1088 -0
- package/docs/es/intlayer_CMS.md +4 -5
- package/docs/es/intlayer_with_nestjs.md +268 -0
- package/docs/es/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/es/intlayer_with_react_router_v7.md +533 -0
- package/docs/es/intlayer_with_tanstack.md +469 -280
- package/docs/es/intlayer_with_vite+preact.md +7 -7
- package/docs/es/intlayer_with_vite+react.md +7 -7
- package/docs/es/intlayer_with_vite+vue.md +9 -9
- package/docs/es/packages/vite-intlayer/index.md +3 -3
- package/docs/es/readme.md +261 -0
- package/docs/es/testing.md +200 -0
- package/docs/fr/autoFill.md +47 -24
- package/docs/fr/configuration.md +213 -198
- package/docs/fr/dictionary/content_file.md +1054 -0
- package/docs/fr/intlayer_CMS.md +4 -5
- package/docs/fr/intlayer_with_nestjs.md +268 -0
- package/docs/fr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/fr/intlayer_with_react_router_v7.md +549 -0
- package/docs/fr/intlayer_with_tanstack.md +465 -279
- package/docs/fr/intlayer_with_vite+preact.md +7 -7
- package/docs/fr/intlayer_with_vite+react.md +7 -7
- package/docs/fr/intlayer_with_vite+vue.md +9 -9
- package/docs/fr/packages/vite-intlayer/index.md +3 -3
- package/docs/fr/readme.md +261 -0
- package/docs/fr/testing.md +200 -0
- package/docs/hi/autoFill.md +47 -25
- package/docs/hi/configuration.md +194 -189
- package/docs/hi/dictionary/content_file.md +1056 -0
- package/docs/hi/intlayer_CMS.md +4 -5
- package/docs/hi/intlayer_with_nestjs.md +269 -0
- package/docs/hi/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/hi/intlayer_with_react_router_v7.md +533 -0
- package/docs/hi/intlayer_with_tanstack.md +467 -282
- package/docs/hi/intlayer_with_vite+preact.md +7 -7
- package/docs/hi/intlayer_with_vite+react.md +7 -7
- package/docs/hi/intlayer_with_vite+vue.md +9 -9
- package/docs/hi/packages/vite-intlayer/index.md +3 -3
- package/docs/hi/readme.md +261 -0
- package/docs/hi/testing.md +200 -0
- package/docs/it/autoFill.md +46 -24
- package/docs/it/configuration.md +169 -161
- package/docs/it/dictionary/content_file.md +1061 -0
- package/docs/it/intlayer_CMS.md +4 -5
- package/docs/it/intlayer_with_nestjs.md +268 -0
- package/docs/it/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/it/intlayer_with_react_router_v7.md +535 -0
- package/docs/it/intlayer_with_tanstack.md +467 -301
- package/docs/it/intlayer_with_vite+preact.md +7 -7
- package/docs/it/intlayer_with_vite+react.md +7 -7
- package/docs/it/intlayer_with_vite+vue.md +9 -9
- package/docs/it/packages/vite-intlayer/index.md +3 -3
- package/docs/it/readme.md +261 -0
- package/docs/it/testing.md +200 -0
- package/docs/ja/autoFill.md +45 -23
- package/docs/ja/configuration.md +243 -204
- package/docs/ja/dictionary/content_file.md +1064 -0
- package/docs/ja/intlayer_CMS.md +4 -5
- package/docs/ja/intlayer_with_nestjs.md +268 -0
- package/docs/ja/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ja/intlayer_with_react_router_v7.md +534 -0
- package/docs/ja/intlayer_with_tanstack.md +467 -303
- package/docs/ja/intlayer_with_vite+preact.md +7 -7
- package/docs/ja/intlayer_with_vite+react.md +7 -7
- package/docs/ja/intlayer_with_vite+vue.md +9 -9
- package/docs/ja/packages/vite-intlayer/index.md +3 -3
- package/docs/ja/readme.md +263 -0
- package/docs/ja/testing.md +200 -0
- package/docs/ko/autoFill.md +39 -16
- package/docs/ko/configuration.md +217 -197
- package/docs/ko/dictionary/content_file.md +1060 -0
- package/docs/ko/intlayer_CMS.md +4 -5
- package/docs/ko/intlayer_with_nestjs.md +268 -0
- package/docs/ko/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ko/intlayer_with_react_router_v7.md +540 -0
- package/docs/ko/intlayer_with_tanstack.md +466 -302
- package/docs/ko/intlayer_with_vite+preact.md +7 -7
- package/docs/ko/intlayer_with_vite+react.md +7 -7
- package/docs/ko/intlayer_with_vite+vue.md +9 -9
- package/docs/ko/packages/vite-intlayer/index.md +3 -3
- package/docs/ko/readme.md +261 -0
- package/docs/ko/testing.md +200 -0
- package/docs/pt/autoFill.md +39 -15
- package/docs/pt/configuration.md +165 -147
- package/docs/pt/dictionary/content_file.md +1062 -0
- package/docs/pt/intlayer_CMS.md +4 -5
- package/docs/pt/intlayer_with_nestjs.md +271 -0
- package/docs/pt/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/pt/intlayer_with_react_router_v7.md +535 -0
- package/docs/pt/intlayer_with_tanstack.md +469 -300
- package/docs/pt/intlayer_with_vite+preact.md +7 -7
- package/docs/pt/intlayer_with_vite+react.md +7 -7
- package/docs/pt/intlayer_with_vite+vue.md +9 -9
- package/docs/pt/packages/vite-intlayer/index.md +3 -3
- package/docs/pt/readme.md +261 -0
- package/docs/pt/testing.md +200 -0
- package/docs/ru/autoFill.md +52 -30
- package/docs/ru/configuration.md +164 -117
- package/docs/ru/dictionary/content_file.md +1064 -0
- package/docs/ru/intlayer_CMS.md +4 -4
- package/docs/ru/intlayer_with_nestjs.md +270 -0
- package/docs/ru/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/ru/intlayer_with_react_router_v7.md +534 -0
- package/docs/ru/intlayer_with_tanstack.md +470 -305
- package/docs/ru/intlayer_with_vite+preact.md +7 -7
- package/docs/ru/intlayer_with_vite+react.md +7 -7
- package/docs/ru/intlayer_with_vite+vue.md +9 -9
- package/docs/ru/packages/vite-intlayer/index.md +3 -3
- package/docs/ru/readme.md +261 -0
- package/docs/ru/testing.md +202 -0
- package/docs/tr/CI_CD.md +198 -0
- package/docs/tr/autoFill.md +201 -0
- package/docs/tr/configuration.md +585 -0
- package/docs/tr/dictionary/condition.md +243 -0
- package/docs/tr/dictionary/content_file.md +1055 -0
- package/docs/tr/dictionary/enumeration.md +251 -0
- package/docs/tr/dictionary/file.md +228 -0
- package/docs/tr/dictionary/function_fetching.md +218 -0
- package/docs/tr/dictionary/gender.md +279 -0
- package/docs/tr/dictionary/insertion.md +191 -0
- package/docs/tr/dictionary/markdown.md +385 -0
- package/docs/tr/dictionary/nesting.md +279 -0
- package/docs/tr/dictionary/translation.md +315 -0
- package/docs/tr/formatters.md +618 -0
- package/docs/tr/how_works_intlayer.md +254 -0
- package/docs/tr/index.md +168 -0
- package/docs/tr/interest_of_intlayer.md +288 -0
- package/docs/tr/intlayer_CMS.md +347 -0
- package/docs/tr/intlayer_cli.md +570 -0
- package/docs/tr/intlayer_visual_editor.md +269 -0
- package/docs/tr/intlayer_with_angular.md +694 -0
- package/docs/tr/intlayer_with_create_react_app.md +1218 -0
- package/docs/tr/intlayer_with_express.md +415 -0
- package/docs/tr/intlayer_with_lynx+react.md +511 -0
- package/docs/tr/intlayer_with_nestjs.md +268 -0
- package/docs/tr/intlayer_with_nextjs_14.md +1029 -0
- package/docs/tr/intlayer_with_nextjs_15.md +1506 -0
- package/docs/tr/intlayer_with_nextjs_page_router.md +1484 -0
- package/docs/tr/intlayer_with_nuxt.md +773 -0
- package/docs/tr/intlayer_with_react_native+expo.md +660 -0
- package/docs/tr/intlayer_with_react_router_v7.md +531 -0
- package/docs/tr/intlayer_with_tanstack.md +452 -0
- package/docs/tr/intlayer_with_vite+preact.md +1673 -0
- package/docs/tr/intlayer_with_vite+react.md +1632 -0
- package/docs/tr/intlayer_with_vite+solid.md +288 -0
- package/docs/tr/intlayer_with_vite+svelte.md +288 -0
- package/docs/tr/intlayer_with_vite+vue.md +1042 -0
- package/docs/tr/introduction.md +209 -0
- package/docs/tr/locale_mapper.md +244 -0
- package/docs/tr/mcp_server.md +207 -0
- package/docs/tr/packages/@intlayer/api/index.md +58 -0
- package/docs/tr/packages/@intlayer/chokidar/index.md +57 -0
- package/docs/tr/packages/@intlayer/cli/index.md +47 -0
- package/docs/tr/packages/@intlayer/config/index.md +142 -0
- package/docs/tr/packages/@intlayer/core/index.md +51 -0
- package/docs/tr/packages/@intlayer/design-system/index.md +47 -0
- package/docs/tr/packages/@intlayer/dictionary-entry/index.md +53 -0
- package/docs/tr/packages/@intlayer/editor/index.md +47 -0
- package/docs/tr/packages/@intlayer/editor-react/index.md +47 -0
- package/docs/tr/packages/@intlayer/webpack/index.md +61 -0
- package/docs/tr/packages/angular-intlayer/index.md +59 -0
- package/docs/tr/packages/express-intlayer/index.md +258 -0
- package/docs/tr/packages/express-intlayer/t.md +459 -0
- package/docs/tr/packages/intlayer/getConfiguration.md +151 -0
- package/docs/tr/packages/intlayer/getEnumeration.md +165 -0
- package/docs/tr/packages/intlayer/getHTMLTextDir.md +127 -0
- package/docs/tr/packages/intlayer/getLocaleLang.md +87 -0
- package/docs/tr/packages/intlayer/getLocaleName.md +124 -0
- package/docs/tr/packages/intlayer/getLocalizedUrl.md +324 -0
- package/docs/tr/packages/intlayer/getMultilingualUrls.md +225 -0
- package/docs/tr/packages/intlayer/getPathWithoutLocale.md +81 -0
- package/docs/tr/packages/intlayer/getTranslation.md +196 -0
- package/docs/tr/packages/intlayer/getTranslationContent.md +195 -0
- package/docs/tr/packages/intlayer/index.md +505 -0
- package/docs/tr/packages/intlayer-cli/index.md +71 -0
- package/docs/tr/packages/intlayer-editor/index.md +139 -0
- package/docs/tr/packages/lynx-intlayer/index.md +85 -0
- package/docs/tr/packages/next-intlayer/index.md +154 -0
- package/docs/tr/packages/next-intlayer/t.md +354 -0
- package/docs/tr/packages/next-intlayer/useDictionary.md +270 -0
- package/docs/tr/packages/next-intlayer/useIntlayer.md +265 -0
- package/docs/tr/packages/next-intlayer/useLocale.md +133 -0
- package/docs/tr/packages/nuxt-intlayer/index.md +59 -0
- package/docs/tr/packages/preact-intlayer/index.md +55 -0
- package/docs/tr/packages/react-intlayer/index.md +148 -0
- package/docs/tr/packages/react-intlayer/t.md +304 -0
- package/docs/tr/packages/react-intlayer/useDictionary.md +554 -0
- package/docs/tr/packages/react-intlayer/useI18n.md +478 -0
- package/docs/tr/packages/react-intlayer/useIntlayer.md +253 -0
- package/docs/tr/packages/react-intlayer/useLocale.md +212 -0
- package/docs/tr/packages/react-native-intlayer/index.md +85 -0
- package/docs/tr/packages/react-scripts-intlayer/index.md +82 -0
- package/docs/tr/packages/solid-intlayer/index.md +56 -0
- package/docs/tr/packages/svelte-intlayer/index.md +55 -0
- package/docs/tr/packages/vite-intlayer/index.md +82 -0
- package/docs/tr/packages/vue-intlayer/index.md +59 -0
- package/docs/tr/per_locale_file.md +321 -0
- package/docs/tr/readme.md +261 -0
- package/docs/tr/roadmap.md +338 -0
- package/docs/tr/testing.md +200 -0
- package/docs/tr/vs_code_extension.md +154 -0
- package/docs/zh/autoFill.md +40 -18
- package/docs/zh/configuration.md +245 -226
- package/docs/zh/dictionary/content_file.md +1064 -0
- package/docs/zh/intlayer_CMS.md +4 -5
- package/docs/zh/intlayer_with_nestjs.md +268 -0
- package/docs/zh/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/zh/intlayer_with_react_router_v7.md +535 -0
- package/docs/zh/intlayer_with_tanstack.md +468 -278
- package/docs/zh/intlayer_with_vite+preact.md +7 -7
- package/docs/zh/intlayer_with_vite+react.md +7 -7
- package/docs/zh/intlayer_with_vite+vue.md +7 -7
- package/docs/zh/packages/vite-intlayer/index.md +3 -3
- package/docs/zh/readme.md +261 -0
- package/docs/zh/testing.md +198 -0
- package/frequent_questions/tr/SSR_Next_no_[locale].md +105 -0
- package/frequent_questions/tr/array_as_content_declaration.md +72 -0
- package/frequent_questions/tr/build_dictionaries.md +59 -0
- package/frequent_questions/tr/build_error_CI_CD.md +75 -0
- package/frequent_questions/tr/customized_locale_list.md +65 -0
- package/frequent_questions/tr/domain_routing.md +114 -0
- package/frequent_questions/tr/esbuild_error.md +30 -0
- package/frequent_questions/tr/get_locale_cookie.md +142 -0
- package/frequent_questions/tr/intlayer_command_undefined.md +156 -0
- package/frequent_questions/tr/locale_incorect_in_url.md +74 -0
- package/frequent_questions/tr/static_rendering.md +45 -0
- package/frequent_questions/tr/translated_path_url.md +56 -0
- package/frequent_questions/tr/unknown_command.md +98 -0
- package/legal/tr/privacy_notice.md +83 -0
- package/legal/tr/terms_of_service.md +55 -0
- package/package.json +12 -12
- package/src/generated/blog.entry.ts +212 -0
- package/src/generated/docs.entry.ts +663 -135
- package/src/generated/frequentQuestions.entry.ts +85 -1
- package/src/generated/legal.entry.ts +7 -1
- package/docs/ar/dictionary/content_extention_customization.md +0 -100
- package/docs/ar/dictionary/get_started.md +0 -527
- package/docs/de/dictionary/content_extention_customization.md +0 -100
- package/docs/de/dictionary/get_started.md +0 -531
- package/docs/en/dictionary/content_extention_customization.md +0 -102
- package/docs/en/dictionary/get_started.md +0 -529
- package/docs/en-GB/dictionary/content_extention_customization.md +0 -100
- package/docs/en-GB/dictionary/get_started.md +0 -591
- package/docs/es/dictionary/content_extention_customization.md +0 -100
- package/docs/es/dictionary/get_started.md +0 -527
- package/docs/fr/dictionary/content_extention_customization.md +0 -100
- package/docs/fr/dictionary/get_started.md +0 -527
- package/docs/hi/dictionary/content_extention_customization.md +0 -100
- package/docs/hi/dictionary/get_started.md +0 -527
- package/docs/it/dictionary/content_extention_customization.md +0 -113
- package/docs/it/dictionary/get_started.md +0 -573
- package/docs/ja/dictionary/content_extention_customization.md +0 -113
- package/docs/ja/dictionary/get_started.md +0 -576
- package/docs/ko/dictionary/content_extention_customization.md +0 -100
- package/docs/ko/dictionary/get_started.md +0 -530
- package/docs/pt/dictionary/content_extention_customization.md +0 -100
- package/docs/pt/dictionary/get_started.md +0 -532
- package/docs/ru/dictionary/content_extention_customization.md +0 -100
- package/docs/ru/dictionary/get_started.md +0 -575
- package/docs/zh/dictionary/content_extention_customization.md +0 -117
- package/docs/zh/dictionary/get_started.md +0 -533
|
@@ -0,0 +1,534 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-09-04
|
|
3
|
+
updatedAt: 2025-09-04
|
|
4
|
+
title: Начало работы с Intlayer в React Router v7
|
|
5
|
+
description: Узнайте, как добавить интернационализацию (i18n) в ваше приложение на React Router v7 с помощью Intlayer. Следуйте этому подробному руководству, чтобы сделать ваше приложение многоязычным с маршрутизацией, учитывающей локаль.
|
|
6
|
+
keywords:
|
|
7
|
+
- Интернационализация
|
|
8
|
+
- Документация
|
|
9
|
+
- Intlayer
|
|
10
|
+
- React Router v7
|
|
11
|
+
- React
|
|
12
|
+
- i18n
|
|
13
|
+
- TypeScript
|
|
14
|
+
- Маршрутизация по локали
|
|
15
|
+
slugs:
|
|
16
|
+
- doc
|
|
17
|
+
- environment
|
|
18
|
+
- vite-and-react
|
|
19
|
+
- react-router-v7
|
|
20
|
+
applicationTemplate: https://github.com/AydinTheFirst/react-router-intlayer
|
|
21
|
+
author: AydinTheFirst
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Начало работы с интернационализацией (i18n) с Intlayer и React Router v7
|
|
25
|
+
|
|
26
|
+
Это руководство демонстрирует, как интегрировать **Intlayer** для бесшовной интернационализации в проектах на React Router v7 с маршрутизацией, учитывающей локаль, поддержкой TypeScript и современными практиками разработки.
|
|
27
|
+
|
|
28
|
+
## Что такое Intlayer?
|
|
29
|
+
|
|
30
|
+
**Intlayer** — это инновационная, открытая библиотека интернационализации (i18n), разработанная для упрощения поддержки многоязычности в современных веб-приложениях.
|
|
31
|
+
|
|
32
|
+
С помощью Intlayer вы можете:
|
|
33
|
+
|
|
34
|
+
- **Легко управлять переводами** с использованием декларативных словарей на уровне компонентов.
|
|
35
|
+
- **Динамически локализовать метаданные**, маршруты и контент.
|
|
36
|
+
- **Обеспечить поддержку TypeScript** с помощью автогенерируемых типов, улучшая автодополнение и обнаружение ошибок.
|
|
37
|
+
- **Воспользоваться расширенными возможностями**, такими как динамическое определение и переключение локали.
|
|
38
|
+
- **Включите маршрутизацию с учетом локали** с помощью системы маршрутизации на основе конфигурации React Router v7.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Пошаговое руководство по настройке Intlayer в приложении React Router v7
|
|
43
|
+
|
|
44
|
+
### Шаг 1: Установка зависимостей
|
|
45
|
+
|
|
46
|
+
Установите необходимые пакеты с помощью предпочитаемого менеджера пакетов:
|
|
47
|
+
|
|
48
|
+
```bash packageManager="npm"
|
|
49
|
+
npm install intlayer react-intlayer
|
|
50
|
+
npm install vite-intlayer --save-dev
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```bash packageManager="pnpm"
|
|
54
|
+
pnpm add intlayer react-intlayer
|
|
55
|
+
pnpm add vite-intlayer --save-dev
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
- **intlayer**
|
|
59
|
+
|
|
60
|
+
- **intlayer**
|
|
61
|
+
|
|
62
|
+
Основной пакет, предоставляющий инструменты интернационализации для управления конфигурацией, перевода, [объявления контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/get_started.md), транспиляции и [CLI-команд](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_cli.md).
|
|
63
|
+
|
|
64
|
+
- **react-intlayer**
|
|
65
|
+
Пакет, который интегрирует Intlayer с приложением React. Он предоставляет провайдеры контекста и хуки для интернационализации в React.
|
|
66
|
+
|
|
67
|
+
- **vite-intlayer**
|
|
68
|
+
Включает плагин Vite для интеграции Intlayer с [сборщиком Vite](https://vite.dev/guide/why.html#why-bundle-for-production), а также middleware для определения предпочтительной локали пользователя, управления куки и обработки перенаправления URL.
|
|
69
|
+
|
|
70
|
+
### Шаг 2: Конфигурация вашего проекта
|
|
71
|
+
|
|
72
|
+
Создайте файл конфигурации для настройки языков вашего приложения:
|
|
73
|
+
|
|
74
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
75
|
+
import { type IntlayerConfig, Locales } from "intlayer";
|
|
76
|
+
|
|
77
|
+
const config: IntlayerConfig = {
|
|
78
|
+
internationalization: {
|
|
79
|
+
defaultLocale: Locales.ENGLISH,
|
|
80
|
+
locales: [Locales.ENGLISH, Locales.TURKISH],
|
|
81
|
+
},
|
|
82
|
+
middleware: {
|
|
83
|
+
prefixDefault: true, // Всегда добавлять префикс для языка по умолчанию в URL
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export default config;
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
91
|
+
import { Locales } from "intlayer";
|
|
92
|
+
|
|
93
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
94
|
+
const config = {
|
|
95
|
+
internationalization: {
|
|
96
|
+
defaultLocale: Locales.ENGLISH,
|
|
97
|
+
locales: [Locales.ENGLISH, Locales.TURKISH],
|
|
98
|
+
},
|
|
99
|
+
middleware: {
|
|
100
|
+
prefixDefault: true,
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
export default config;
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
108
|
+
const { Locales } = require("intlayer");
|
|
109
|
+
|
|
110
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
111
|
+
const config = {
|
|
112
|
+
internationalization: {
|
|
113
|
+
defaultLocale: Locales.ENGLISH,
|
|
114
|
+
locales: [Locales.ENGLISH, Locales.TURKISH],
|
|
115
|
+
},
|
|
116
|
+
middleware: {
|
|
117
|
+
prefixDefault: true,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
module.exports = config;
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
> С помощью этого файла конфигурации вы можете настроить локализованные URL, перенаправления в middleware, имена cookie, расположение и расширение ваших деклараций контента, отключить логи Intlayer в консоли и многое другое. Для полного списка доступных параметров обратитесь к [документации по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md).
|
|
125
|
+
|
|
126
|
+
### Шаг 3: Настройка маршрутов React Router v7
|
|
127
|
+
|
|
128
|
+
Настройте конфигурацию маршрутизации с учетом локализации:
|
|
129
|
+
|
|
130
|
+
```typescript fileName="app/routes.ts" codeFormat="typescript"
|
|
131
|
+
import { layout, route, type RouteConfig } from "@react-router/dev/routes";
|
|
132
|
+
|
|
133
|
+
export default [
|
|
134
|
+
layout("routes/layout.tsx", [
|
|
135
|
+
route("/", "routes/page.tsx"), // Корневая страница - перенаправляет на локаль
|
|
136
|
+
route("/:lang", "routes/[lang]/page.tsx"), // Локализованная главная страница
|
|
137
|
+
route("/:lang/about", "routes/[lang]/about/page.tsx"), // Локализованная страница "О нас"
|
|
138
|
+
]),
|
|
139
|
+
] satisfies RouteConfig;
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Шаг 4: Интеграция Intlayer в вашу конфигурацию Vite
|
|
143
|
+
|
|
144
|
+
Добавьте плагин intlayer в вашу конфигурацию:
|
|
145
|
+
|
|
146
|
+
```typescript fileName="vite.config.ts" codeFormat="typescript"
|
|
147
|
+
import { reactRouter } from "@react-router/dev/vite";
|
|
148
|
+
import { defineConfig } from "vite";
|
|
149
|
+
import { intlayerMiddlewarePlugin, intlayerPlugin } from "vite-intlayer";
|
|
150
|
+
import tsconfigPaths from "vite-tsconfig-paths";
|
|
151
|
+
|
|
152
|
+
export default defineConfig({
|
|
153
|
+
plugins: [
|
|
154
|
+
reactRouter(),
|
|
155
|
+
tsconfigPaths(),
|
|
156
|
+
intlayerPlugin(),
|
|
157
|
+
intlayerMiddlewarePlugin(),
|
|
158
|
+
],
|
|
159
|
+
});
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
> Плагин Vite `intlayerPlugin()` используется для интеграции Intlayer с Vite. Он обеспечивает сборку файлов деклараций контента и отслеживает их в режиме разработки. Также он определяет переменные окружения Intlayer внутри приложения Vite. Кроме того, плагин предоставляет алиасы для оптимизации производительности.
|
|
163
|
+
|
|
164
|
+
### Шаг 5: Создайте компоненты макета
|
|
165
|
+
|
|
166
|
+
Настройте корневой макет и макеты, специфичные для локали:
|
|
167
|
+
|
|
168
|
+
#### Корневой макет
|
|
169
|
+
|
|
170
|
+
```tsx fileName="app/routes/layout.tsx" codeFormat="typescript"
|
|
171
|
+
// app/routes/layout.tsx
|
|
172
|
+
import { Outlet } from "react-router";
|
|
173
|
+
import { IntlayerProvider } from "react-intlayer";
|
|
174
|
+
|
|
175
|
+
export default function RootLayout() {
|
|
176
|
+
return (
|
|
177
|
+
<IntlayerProvider>
|
|
178
|
+
<Outlet />
|
|
179
|
+
</IntlayerProvider>
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Шаг 6: Объявите Ваш Контент
|
|
185
|
+
|
|
186
|
+
Создайте и управляйте декларациями контента для хранения переводов:
|
|
187
|
+
|
|
188
|
+
```tsx fileName="app/routes/[lang]/page.content.ts" contentDeclarationFormat="typescript"
|
|
189
|
+
import { t, type Dictionary } from "intlayer";
|
|
190
|
+
|
|
191
|
+
const pageContent = {
|
|
192
|
+
key: "page",
|
|
193
|
+
content: {
|
|
194
|
+
title: t({
|
|
195
|
+
en: "Welcome to React Router v7 + Intlayer",
|
|
196
|
+
tr: "React Router v7 + Intlayer'a Hoş Geldiniz",
|
|
197
|
+
}),
|
|
198
|
+
description: t({
|
|
199
|
+
en: "Build multilingual applications with ease using React Router v7 and Intlayer.",
|
|
200
|
+
tr: "React Router v7 и Intlayer позволяют легко создавать многоязычные приложения.",
|
|
201
|
+
}),
|
|
202
|
+
aboutLink: t({
|
|
203
|
+
en: "Узнать о нас",
|
|
204
|
+
tr: "Hakkımızda Öğrenin",
|
|
205
|
+
}),
|
|
206
|
+
homeLink: t({
|
|
207
|
+
en: "Главная",
|
|
208
|
+
tr: "Ana Sayfa",
|
|
209
|
+
}),
|
|
210
|
+
},
|
|
211
|
+
} satisfies Dictionary;
|
|
212
|
+
|
|
213
|
+
export default pageContent;
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
> Ваши декларации контента могут быть определены в любом месте вашего приложения, как только они будут включены в директорию `contentDir` (по умолчанию, `./app`). И соответствовать расширению файла декларации контента (по умолчанию, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
217
|
+
|
|
218
|
+
> Для получения дополнительной информации обратитесь к [документации по декларации контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/get_started.md).
|
|
219
|
+
|
|
220
|
+
### Шаг 7: Создайте компоненты, учитывающие локаль
|
|
221
|
+
|
|
222
|
+
Создайте компонент `LocalizedLink` для навигации с учетом локали:
|
|
223
|
+
|
|
224
|
+
```tsx fileName="app/components/localized-link.tsx" codeFormat="typescript"
|
|
225
|
+
// app/components/localized-link.tsx
|
|
226
|
+
import { getLocalizedUrl } from "intlayer";
|
|
227
|
+
import { useLocale } from "react-intlayer";
|
|
228
|
+
import React from "react";
|
|
229
|
+
import { Link, useLocation } from "react-router";
|
|
230
|
+
|
|
231
|
+
type RouterLinkProps = React.ComponentProps<typeof Link>;
|
|
232
|
+
|
|
233
|
+
export default function LocalizedLink({ to, ...props }: RouterLinkProps) {
|
|
234
|
+
const { locale } = useLocale();
|
|
235
|
+
const location = useLocation();
|
|
236
|
+
|
|
237
|
+
// Проверка, является ли путь внешним URL или почтовым адресом
|
|
238
|
+
const isExternal = (path: string) =>
|
|
239
|
+
/^([a-z][a-z0-9+.-]*:)?\/\//i.test(path) || path.startsWith("mailto:");
|
|
240
|
+
|
|
241
|
+
if (typeof to === "string") {
|
|
242
|
+
if (to.startsWith("/") && !isExternal(to)) {
|
|
243
|
+
return <Link to={getLocalizedUrl(to, locale)} {...props} />;
|
|
244
|
+
}
|
|
245
|
+
return <Link to={to} {...props} />;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
if (to && typeof to === "object") {
|
|
249
|
+
const pathname = (to as { pathname?: string }).pathname;
|
|
250
|
+
if (pathname && pathname.startsWith("/") && !isExternal(pathname)) {
|
|
251
|
+
return (
|
|
252
|
+
<Link
|
|
253
|
+
to={{ ...to, pathname: getLocalizedUrl(pathname, locale) }}
|
|
254
|
+
{...props}
|
|
255
|
+
/>
|
|
256
|
+
);
|
|
257
|
+
}
|
|
258
|
+
return <Link to={to} {...props} />;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
return (
|
|
262
|
+
<Link
|
|
263
|
+
to={getLocalizedUrl(location.pathname + location.search, locale)}
|
|
264
|
+
{...props}
|
|
265
|
+
/>
|
|
266
|
+
);
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Шаг 8: Используйте Intlayer на своих страницах
|
|
271
|
+
|
|
272
|
+
Получайте доступ к словарям контента по всему вашему приложению:
|
|
273
|
+
|
|
274
|
+
#### Страница перенаправления корня
|
|
275
|
+
|
|
276
|
+
```tsx fileName="app/routes/page.tsx" codeFormat="typescript"
|
|
277
|
+
// app/routes/page.tsx
|
|
278
|
+
import { useLocale } from "react.intlayer";
|
|
279
|
+
import { Navigate } from "react-router";
|
|
280
|
+
|
|
281
|
+
export default function Page() {
|
|
282
|
+
const { locale } = useLocale();
|
|
283
|
+
|
|
284
|
+
return <Navigate replace to={locale} />;
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
#### Локализованная главная страница
|
|
289
|
+
|
|
290
|
+
```tsx fileName="app/routes/[lang]/page.tsx" codeFormat="typescript"
|
|
291
|
+
import { useIntlayer } from "react-intlayer";
|
|
292
|
+
import LocalizedLink from "~/components/localized-link";
|
|
293
|
+
|
|
294
|
+
export default function Page() {
|
|
295
|
+
const content = useIntlayer("page");
|
|
296
|
+
|
|
297
|
+
return (
|
|
298
|
+
<div style={{ padding: "2rem", textAlign: "center" }}>
|
|
299
|
+
<h1>{content.title}</h1>
|
|
300
|
+
<p>{content.description}</p>
|
|
301
|
+
<nav style={{ marginTop: "2rem" }}>
|
|
302
|
+
<LocalizedLink
|
|
303
|
+
to="/about"
|
|
304
|
+
style={{
|
|
305
|
+
display: "inline-block",
|
|
306
|
+
padding: "0.5rem 1rem",
|
|
307
|
+
backgroundColor: "#007bff",
|
|
308
|
+
color: "white",
|
|
309
|
+
textDecoration: "none",
|
|
310
|
+
borderRadius: "4px",
|
|
311
|
+
}}
|
|
312
|
+
>
|
|
313
|
+
{content.aboutLink}
|
|
314
|
+
</LocalizedLink>
|
|
315
|
+
</nav>
|
|
316
|
+
</div>
|
|
317
|
+
);
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
> Чтобы узнать больше о хуке `useIntlayer`, обратитесь к [документации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/react-intlayer/useIntlayer.md).
|
|
322
|
+
|
|
323
|
+
### Шаг 9: Создайте компонент переключателя локали
|
|
324
|
+
|
|
325
|
+
Создайте компонент, позволяющий пользователям менять язык:
|
|
326
|
+
|
|
327
|
+
```tsx fileName="app/components/locale-switcher.tsx" codeFormat="typescript"
|
|
328
|
+
import { getLocalizedUrl, getLocaleName } from "intlayer";
|
|
329
|
+
import { useLocale } from "react-intlayer";
|
|
330
|
+
import { useLocation, useNavigate } from "react-router";
|
|
331
|
+
|
|
332
|
+
export default function LocaleSwitcher() {
|
|
333
|
+
const { locale, availableLocales, setLocale } = useLocale();
|
|
334
|
+
const location = useLocation();
|
|
335
|
+
const navigate = useNavigate();
|
|
336
|
+
|
|
337
|
+
const handleLocaleChange = (newLocale: string) => {
|
|
338
|
+
const localizedUrl = getLocalizedUrl(
|
|
339
|
+
location.pathname + location.search,
|
|
340
|
+
newLocale
|
|
341
|
+
);
|
|
342
|
+
setLocale(newLocale);
|
|
343
|
+
navigate(localizedUrl);
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
return (
|
|
347
|
+
<div style={{ margin: "1rem 0" }}>
|
|
348
|
+
<label htmlFor="locale-select">Выберите язык: </label>
|
|
349
|
+
<select
|
|
350
|
+
id="locale-select"
|
|
351
|
+
value={locale}
|
|
352
|
+
onChange={(e) => handleLocaleChange(e.target.value)}
|
|
353
|
+
style={{ padding: "0.25rem", marginLeft: "0.5rem" }}
|
|
354
|
+
>
|
|
355
|
+
{availableLocales.map((availableLocale) => (
|
|
356
|
+
<option key={availableLocale} value={availableLocale}>
|
|
357
|
+
{getLocaleName(availableLocale)}
|
|
358
|
+
</option>
|
|
359
|
+
))}
|
|
360
|
+
</select>
|
|
361
|
+
</div>
|
|
362
|
+
);
|
|
363
|
+
}
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
> Чтобы узнать больше о хуке `useLocale`, обратитесь к [документации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/react-intlayer/useLocale.md).
|
|
367
|
+
|
|
368
|
+
### Шаг 10: Добавление управления атрибутами HTML (необязательно)
|
|
369
|
+
|
|
370
|
+
Создайте хук для управления атрибутами lang и dir в HTML:
|
|
371
|
+
|
|
372
|
+
```tsx fileName="app/hooks/useI18nHTMLAttributes.tsx" codeFormat="typescript"
|
|
373
|
+
// app/hooks/useI18nHTMLAttributes.tsx
|
|
374
|
+
import { getHTMLTextDir } from "intlayer";
|
|
375
|
+
import { useEffect } from "react";
|
|
376
|
+
import { useLocale } from "react-intlayer";
|
|
377
|
+
|
|
378
|
+
export const useI18nHTMLAttributes = () => {
|
|
379
|
+
const { locale } = useLocale();
|
|
380
|
+
|
|
381
|
+
useEffect(() => {
|
|
382
|
+
document.documentElement.lang = locale;
|
|
383
|
+
document.documentElement.dir = getHTMLTextDir(locale);
|
|
384
|
+
}, [locale]);
|
|
385
|
+
};
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
Затем используйте его в вашем корневом компоненте:
|
|
389
|
+
|
|
390
|
+
```tsx fileName="app/root.tsx" codeFormat="typescript"
|
|
391
|
+
// app/routes/layout.tsx
|
|
392
|
+
import { Outlet } from "react-router";
|
|
393
|
+
import { IntlayerProvider } from "react-intlayer";
|
|
394
|
+
|
|
395
|
+
import { useI18nHTMLAttributes } from "app/hooks/useI18nHTMLAttributes"; // импортируем хук
|
|
396
|
+
|
|
397
|
+
export default function RootLayout() {
|
|
398
|
+
useI18nHTMLAttributes(); // вызываем хук
|
|
399
|
+
|
|
400
|
+
return (
|
|
401
|
+
<IntlayerProvider>
|
|
402
|
+
<Outlet />
|
|
403
|
+
</IntlayerProvider>
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
### Шаг 11: Сборка и запуск вашего приложения
|
|
409
|
+
|
|
410
|
+
Постройте словари контента и запустите ваше приложение:
|
|
411
|
+
|
|
412
|
+
```bash packageManager="npm"
|
|
413
|
+
# Построить словари Intlayer
|
|
414
|
+
npm run intlayer:build
|
|
415
|
+
|
|
416
|
+
# Запустить сервер разработки
|
|
417
|
+
npm run dev
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
```bash packageManager="pnpm"
|
|
421
|
+
# Построить словари Intlayer
|
|
422
|
+
pnpm intlayer:build
|
|
423
|
+
|
|
424
|
+
# Запустить сервер разработки
|
|
425
|
+
pnpm dev
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
```bash packageManager="yarn"
|
|
429
|
+
# Построить словари Intlayer
|
|
430
|
+
yarn intlayer:build
|
|
431
|
+
|
|
432
|
+
# Запустить сервер разработки
|
|
433
|
+
yarn dev
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
### Шаг 12: Настройка TypeScript (необязательно)
|
|
437
|
+
|
|
438
|
+
Intlayer использует расширение модулей для получения преимуществ TypeScript и усиления вашей кодовой базы.
|
|
439
|
+
|
|
440
|
+
Убедитесь, что ваша конфигурация TypeScript включает автогенерируемые типы:
|
|
441
|
+
|
|
442
|
+
```json5 fileName="tsconfig.json"
|
|
443
|
+
{
|
|
444
|
+
compilerOptions: {
|
|
445
|
+
// ... ваши существующие настройки TypeScript
|
|
446
|
+
},
|
|
447
|
+
include: [
|
|
448
|
+
// ... ваши существующие включения
|
|
449
|
+
".intlayer/**/*.ts", // Включить автоматически сгенерированные типы
|
|
450
|
+
],
|
|
451
|
+
}
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
### Конфигурация Git
|
|
455
|
+
|
|
456
|
+
Рекомендуется игнорировать файлы, сгенерированные Intlayer. Это позволит избежать их коммита в ваш репозиторий Git.
|
|
457
|
+
|
|
458
|
+
Для этого вы можете добавить следующие инструкции в ваш файл `.gitignore`:
|
|
459
|
+
|
|
460
|
+
```plaintext fileName=".gitignore"
|
|
461
|
+
# Игнорировать файлы, сгенерированные Intlayer
|
|
462
|
+
.intlayer
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
---
|
|
466
|
+
|
|
467
|
+
## Развертывание в продакшн
|
|
468
|
+
|
|
469
|
+
При развертывании вашего приложения:
|
|
470
|
+
|
|
471
|
+
1. **Соберите ваше приложение:**
|
|
472
|
+
|
|
473
|
+
```bash
|
|
474
|
+
npm run build
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
2. **Постройте словари Intlayer:**
|
|
478
|
+
|
|
479
|
+
```bash
|
|
480
|
+
npm run intlayer:build
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
3. **Переместите `vite-intlayer` в зависимости**, если используете middleware в продакшне:
|
|
484
|
+
```bash
|
|
485
|
+
npm install vite-intlayer --save
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
Ваше приложение теперь будет поддерживать:
|
|
489
|
+
|
|
490
|
+
- **Структуру URL**: `/en`, `/en/about`, `/tr`, `/tr/about`
|
|
491
|
+
- **Автоматическое определение локали** на основе предпочтений браузера
|
|
492
|
+
- **Маршрутизацию с учётом локали** с React Router v7
|
|
493
|
+
- **Поддержку TypeScript** с автоматически сгенерированными типами
|
|
494
|
+
- **Серверный рендеринг** с правильной обработкой локали
|
|
495
|
+
|
|
496
|
+
## Расширение VS Code
|
|
497
|
+
|
|
498
|
+
Для улучшения вашего опыта разработки с Intlayer вы можете установить официальное **расширение Intlayer для VS Code**.
|
|
499
|
+
|
|
500
|
+
[Установить из VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
501
|
+
|
|
502
|
+
Это расширение предоставляет:
|
|
503
|
+
|
|
504
|
+
- **Автодополнение** ключей переводов.
|
|
505
|
+
- **Обнаружение ошибок в реальном времени** для отсутствующих переводов.
|
|
506
|
+
- **Встроенный просмотр** переведённого контента.
|
|
507
|
+
- **Быстрые действия** для удобного создания и обновления переводов.
|
|
508
|
+
|
|
509
|
+
Для получения дополнительной информации о том, как использовать расширение, обратитесь к [документации расширения Intlayer для VS Code](https://intlayer.org/doc/vs-code-extension).
|
|
510
|
+
|
|
511
|
+
---
|
|
512
|
+
|
|
513
|
+
## Продвинутые возможности
|
|
514
|
+
|
|
515
|
+
Для расширения функционала вы можете реализовать [визуальный редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_visual_editor.md) или вынести ваш контент с помощью [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_CMS.md).
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
## Ссылки на документацию
|
|
520
|
+
|
|
521
|
+
- [Документация Intlayer](https://intlayer.org)
|
|
522
|
+
- [Документация React Router v7](https://reactrouter.com/)
|
|
523
|
+
- [Хук useIntlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/react-intlayer/useIntlayer.md)
|
|
524
|
+
- [useLocale hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/react-intlayer/useLocale.md)
|
|
525
|
+
- [Объявление контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/get_started.md)
|
|
526
|
+
- [Конфигурация](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md)
|
|
527
|
+
|
|
528
|
+
Это подробное руководство содержит все необходимое для интеграции Intlayer с React Router v7 для полностью интернационализированного приложения с маршрутизацией, учитывающей локаль, и поддержкой TypeScript.
|
|
529
|
+
|
|
530
|
+
## История документации
|
|
531
|
+
|
|
532
|
+
| Версия | Дата | Изменения |
|
|
533
|
+
| ------ | --------- | ----------------------------- |
|
|
534
|
+
| 5.8.2 | 2025-09-4 | Добавлено для React Router v7 |
|