@intlayer/docs 5.8.1 → 6.0.0-canary.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/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,549 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-09-04
|
|
3
|
+
updatedAt: 2025-09-04
|
|
4
|
+
title: Prise en main d'Intlayer avec React Router v7
|
|
5
|
+
description: Apprenez comment ajouter l'internationalisation (i18n) à votre application React Router v7 en utilisant Intlayer. Suivez ce guide complet pour rendre votre application multilingue avec un routage sensible à la locale.
|
|
6
|
+
keywords:
|
|
7
|
+
- Internationalisation
|
|
8
|
+
- Documentation
|
|
9
|
+
- Intlayer
|
|
10
|
+
- React Router v7
|
|
11
|
+
- React
|
|
12
|
+
- i18n
|
|
13
|
+
- TypeScript
|
|
14
|
+
- Routage par locale
|
|
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
|
+
# Prise en main de l'internationalisation (i18n) avec Intlayer et React Router v7
|
|
25
|
+
|
|
26
|
+
Ce guide montre comment intégrer **Intlayer** pour une internationalisation fluide dans les projets React Router v7 avec un routage sensible à la locale, la prise en charge de TypeScript et des pratiques de développement modernes.
|
|
27
|
+
|
|
28
|
+
## Qu'est-ce qu'Intlayer ?
|
|
29
|
+
|
|
30
|
+
**Intlayer** est une bibliothèque d'internationalisation (i18n) innovante et open-source conçue pour simplifier la prise en charge multilingue dans les applications web modernes.
|
|
31
|
+
|
|
32
|
+
Avec Intlayer, vous pouvez :
|
|
33
|
+
|
|
34
|
+
- **Gérer facilement les traductions** en utilisant des dictionnaires déclaratifs au niveau des composants.
|
|
35
|
+
- **Localiser dynamiquement les métadonnées**, les routes et le contenu.
|
|
36
|
+
- **Assurer la prise en charge de TypeScript** avec des types générés automatiquement, améliorant l'autocomplétion et la détection des erreurs.
|
|
37
|
+
- **Bénéficier de fonctionnalités avancées**, comme la détection et le changement dynamique de la locale.
|
|
38
|
+
- **Activer le routage sensible à la locale** avec le système de routage basé sur la configuration de React Router v7.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Guide étape par étape pour configurer Intlayer dans une application React Router v7
|
|
43
|
+
|
|
44
|
+
### Étape 1 : Installer les dépendances
|
|
45
|
+
|
|
46
|
+
Installez les paquets nécessaires en utilisant votre gestionnaire de paquets préféré :
|
|
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
|
+
Le paquet principal qui fournit des outils d'internationalisation pour la gestion de la configuration, la traduction, la [déclaration de contenu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/get_started.md), la transpilation, et les [commandes CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_cli.md).
|
|
63
|
+
|
|
64
|
+
- **react-intlayer**
|
|
65
|
+
Le paquet qui intègre Intlayer avec une application React. Il fournit des fournisseurs de contexte et des hooks pour l'internationalisation dans React.
|
|
66
|
+
|
|
67
|
+
- **vite-intlayer**
|
|
68
|
+
Inclut le plugin Vite pour intégrer Intlayer avec le [bundler Vite](https://vite.dev/guide/why.html#why-bundle-for-production), ainsi qu'un middleware pour détecter la locale préférée de l'utilisateur, gérer les cookies, et gérer la redirection des URL.
|
|
69
|
+
|
|
70
|
+
### Étape 2 : Configuration de votre projet
|
|
71
|
+
|
|
72
|
+
Créez un fichier de configuration pour configurer les langues de votre application :
|
|
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, // Toujours préfixer la locale par défaut dans les URLs
|
|
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
|
+
> Grâce à ce fichier de configuration, vous pouvez configurer des URLs localisées, la redirection via middleware, les noms des cookies, l'emplacement et l'extension de vos déclarations de contenu, désactiver les logs Intlayer dans la console, et bien plus encore. Pour une liste complète des paramètres disponibles, consultez la [documentation de configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/configuration.md).
|
|
125
|
+
|
|
126
|
+
### Étape 3 : Configurer les routes de React Router v7
|
|
127
|
+
|
|
128
|
+
Configurez votre routage avec des routes sensibles à la locale :
|
|
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"), // Page racine - redirige vers la locale
|
|
136
|
+
route("/:lang", "routes/[lang]/page.tsx"), // Page d'accueil localisée
|
|
137
|
+
route("/:lang/about", "routes/[lang]/about/page.tsx"), // Page "à propos" localisée
|
|
138
|
+
]),
|
|
139
|
+
] satisfies RouteConfig;
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Étape 4 : Intégrer Intlayer dans votre configuration Vite
|
|
143
|
+
|
|
144
|
+
Ajoutez le plugin intlayer dans votre configuration :
|
|
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
|
+
> Le plugin Vite `intlayerPlugin()` est utilisé pour intégrer Intlayer avec Vite. Il assure la génération des fichiers de déclaration de contenu et les surveille en mode développement. Il définit les variables d'environnement Intlayer au sein de l'application Vite. De plus, il fournit des alias pour optimiser les performances.
|
|
163
|
+
|
|
164
|
+
### Étape 5 : Créer les composants de mise en page
|
|
165
|
+
|
|
166
|
+
Configurez votre mise en page racine et les mises en page spécifiques à la locale :
|
|
167
|
+
|
|
168
|
+
#### Mise en page racine
|
|
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
|
+
### Étape 6 : Déclarez Votre Contenu
|
|
185
|
+
|
|
186
|
+
Créez et gérez vos déclarations de contenu pour stocker les traductions :
|
|
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
|
+
tsx fileName="app/routes/[lang]/page.content.ts" contentDeclarationFormat="typescript"
|
|
201
|
+
import { t, type Dictionary } from "intlayer";
|
|
202
|
+
|
|
203
|
+
const pageContent = {
|
|
204
|
+
key: "page",
|
|
205
|
+
content: {
|
|
206
|
+
title: t({
|
|
207
|
+
en: "Welcome to React Router v7 + Intlayer",
|
|
208
|
+
tr: "React Router v7 + Intlayer'a Hoş Geldiniz",
|
|
209
|
+
fr: "Bienvenue sur React Router v7 + Intlayer",
|
|
210
|
+
}),
|
|
211
|
+
description: t({
|
|
212
|
+
en: "Build multilingual applications with ease using React Router v7 and Intlayer.",
|
|
213
|
+
tr: "React Router v7 ve Intlayer kullanarak kolayca çok dilli uygulamalar geliştirin.",
|
|
214
|
+
fr: "Créez des applications multilingues facilement avec React Router v7 et Intlayer.",
|
|
215
|
+
}),
|
|
216
|
+
aboutLink: t({
|
|
217
|
+
en: "Learn About Us",
|
|
218
|
+
tr: "Hakkımızda Öğrenin",
|
|
219
|
+
fr: "En savoir plus sur nous",
|
|
220
|
+
}),
|
|
221
|
+
homeLink: t({
|
|
222
|
+
en: "Home",
|
|
223
|
+
tr: "Ana Sayfa",
|
|
224
|
+
fr: "Accueil",
|
|
225
|
+
}),
|
|
226
|
+
},
|
|
227
|
+
} satisfies Dictionary;
|
|
228
|
+
|
|
229
|
+
export default pageContent;
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
> Vos déclarations de contenu peuvent être définies n'importe où dans votre application dès qu'elles sont incluses dans le répertoire `contentDir` (par défaut, `./app`). Et correspondent à l'extension de fichier de déclaration de contenu (par défaut, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
|
|
233
|
+
|
|
234
|
+
> Pour plus de détails, consultez la [documentation sur la déclaration de contenu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/get_started.md).
|
|
235
|
+
|
|
236
|
+
### Étape 7 : Créez des composants sensibles à la locale
|
|
237
|
+
|
|
238
|
+
Créez un composant `LocalizedLink` pour une navigation adaptée à la locale :
|
|
239
|
+
|
|
240
|
+
```tsx fileName="app/components/localized-link.tsx" codeFormat="typescript"
|
|
241
|
+
// app/components/localized-link.tsx
|
|
242
|
+
import { getLocalizedUrl } from "intlayer";
|
|
243
|
+
import { useLocale } from "react-intlayer";
|
|
244
|
+
import React from "react";
|
|
245
|
+
import { Link, useLocation } from "react-router";
|
|
246
|
+
|
|
247
|
+
type RouterLinkProps = React.ComponentProps<typeof Link>;
|
|
248
|
+
|
|
249
|
+
export default function LocalizedLink({ to, ...props }: RouterLinkProps) {
|
|
250
|
+
const { locale } = useLocale();
|
|
251
|
+
const location = useLocation();
|
|
252
|
+
|
|
253
|
+
const isExternal = (path: string) =>
|
|
254
|
+
/^([a-z][a-z0-9+.-]*:)?\/\//i.test(path) || path.startsWith("mailto:");
|
|
255
|
+
|
|
256
|
+
if (typeof to === "string") {
|
|
257
|
+
if (to.startsWith("/") && !isExternal(to)) {
|
|
258
|
+
return <Link to={getLocalizedUrl(to, locale)} {...props} />;
|
|
259
|
+
}
|
|
260
|
+
return <Link to={to} {...props} />;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
if (to && typeof to === "object") {
|
|
264
|
+
const pathname = (to as { pathname?: string }).pathname;
|
|
265
|
+
if (pathname && pathname.startsWith("/") && !isExternal(pathname)) {
|
|
266
|
+
return (
|
|
267
|
+
<Link
|
|
268
|
+
to={{ ...to, pathname: getLocalizedUrl(pathname, locale) }}
|
|
269
|
+
{...props}
|
|
270
|
+
/>
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
return <Link to={to} {...props} />;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
return (
|
|
277
|
+
<Link
|
|
278
|
+
to={getLocalizedUrl(location.pathname + location.search, locale)}
|
|
279
|
+
{...props}
|
|
280
|
+
/>
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Étape 8 : Utiliser Intlayer dans vos pages
|
|
286
|
+
|
|
287
|
+
Accédez à vos dictionnaires de contenu dans toute votre application :
|
|
288
|
+
|
|
289
|
+
#### Page de redirection racine
|
|
290
|
+
|
|
291
|
+
```tsx fileName="app/routes/page.tsx" codeFormat="typescript"
|
|
292
|
+
// app/routes/page.tsx
|
|
293
|
+
import { useLocale } from "react-intlayer";
|
|
294
|
+
import { Navigate } from "react-router";
|
|
295
|
+
|
|
296
|
+
export default function Page() {
|
|
297
|
+
const { locale } = useLocale();
|
|
298
|
+
|
|
299
|
+
return <Navigate replace to={locale} />;
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
#### Page d'accueil localisée
|
|
304
|
+
|
|
305
|
+
```tsx fileName="app/routes/[lang]/page.tsx" codeFormat="typescript"
|
|
306
|
+
import { useIntlayer } from "react-intlayer";
|
|
307
|
+
import LocalizedLink from "~/components/localized-link";
|
|
308
|
+
|
|
309
|
+
export default function Page() {
|
|
310
|
+
const content = useIntlayer("page");
|
|
311
|
+
|
|
312
|
+
return (
|
|
313
|
+
<div style={{ padding: "2rem", textAlign: "center" }}>
|
|
314
|
+
<h1>{content.title}</h1>
|
|
315
|
+
<p>{content.description}</p>
|
|
316
|
+
<nav style={{ marginTop: "2rem" }}>
|
|
317
|
+
<LocalizedLink
|
|
318
|
+
to="/about"
|
|
319
|
+
style={{
|
|
320
|
+
display: "inline-block",
|
|
321
|
+
padding: "0.5rem 1rem",
|
|
322
|
+
backgroundColor: "#007bff",
|
|
323
|
+
color: "white",
|
|
324
|
+
textDecoration: "none",
|
|
325
|
+
borderRadius: "4px",
|
|
326
|
+
}}
|
|
327
|
+
>
|
|
328
|
+
{content.aboutLink}
|
|
329
|
+
</LocalizedLink>
|
|
330
|
+
</nav>
|
|
331
|
+
</div>
|
|
332
|
+
);
|
|
333
|
+
}
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
> Pour en savoir plus sur le hook `useIntlayer`, consultez la [documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/packages/react-intlayer/useIntlayer.md).
|
|
337
|
+
|
|
338
|
+
### Étape 9 : Créer un composant de changement de langue
|
|
339
|
+
|
|
340
|
+
Créez un composant pour permettre aux utilisateurs de changer de langue :
|
|
341
|
+
|
|
342
|
+
```tsx fileName="app/components/locale-switcher.tsx" codeFormat="typescript"
|
|
343
|
+
import { getLocalizedUrl, getLocaleName } from "intlayer";
|
|
344
|
+
import { useLocale } from "react-intlayer";
|
|
345
|
+
import { useLocation, useNavigate } from "react-router";
|
|
346
|
+
|
|
347
|
+
export default function LocaleSwitcher() {
|
|
348
|
+
const { locale, availableLocales, setLocale } = useLocale();
|
|
349
|
+
const location = useLocation();
|
|
350
|
+
const navigate = useNavigate();
|
|
351
|
+
|
|
352
|
+
const handleLocaleChange = (newLocale: string) => {
|
|
353
|
+
const localizedUrl = getLocalizedUrl(
|
|
354
|
+
location.pathname + location.search,
|
|
355
|
+
newLocale
|
|
356
|
+
);
|
|
357
|
+
setLocale(newLocale);
|
|
358
|
+
navigate(localizedUrl);
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
return (
|
|
362
|
+
<div style={{ margin: "1rem 0" }}>
|
|
363
|
+
<label htmlFor="locale-select">Choisir la langue : </label>
|
|
364
|
+
<select
|
|
365
|
+
id="locale-select"
|
|
366
|
+
value={locale}
|
|
367
|
+
onChange={(e) => handleLocaleChange(e.target.value)}
|
|
368
|
+
style={{ padding: "0.25rem", marginLeft: "0.5rem" }}
|
|
369
|
+
>
|
|
370
|
+
{availableLocales.map((availableLocale) => (
|
|
371
|
+
<option key={availableLocale} value={availableLocale}>
|
|
372
|
+
{getLocaleName(availableLocale)}
|
|
373
|
+
</option>
|
|
374
|
+
))}
|
|
375
|
+
</select>
|
|
376
|
+
</div>
|
|
377
|
+
);
|
|
378
|
+
}
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
> Pour en savoir plus sur le hook `useLocale`, consultez la [documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/packages/react-intlayer/useLocale.md).
|
|
382
|
+
|
|
383
|
+
### Étape 10 : Ajouter la gestion des attributs HTML (optionnel)
|
|
384
|
+
|
|
385
|
+
Créez un hook pour gérer les attributs lang et dir du HTML :
|
|
386
|
+
|
|
387
|
+
```tsx fileName="app/hooks/useI18nHTMLAttributes.tsx" codeFormat="typescript"
|
|
388
|
+
// app/hooks/useI18nHTMLAttributes.tsx
|
|
389
|
+
import { getHTMLTextDir } from "intlayer";
|
|
390
|
+
import { useEffect } from "react";
|
|
391
|
+
import { useLocale } from "react-intlayer";
|
|
392
|
+
|
|
393
|
+
export const useI18nHTMLAttributes = () => {
|
|
394
|
+
const { locale } = useLocale();
|
|
395
|
+
|
|
396
|
+
useEffect(() => {
|
|
397
|
+
document.documentElement.lang = locale;
|
|
398
|
+
document.documentElement.dir = getHTMLTextDir(locale);
|
|
399
|
+
}, [locale]);
|
|
400
|
+
};
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
Ensuite, utilisez-le dans votre composant racine :
|
|
404
|
+
|
|
405
|
+
```tsx fileName="app/root.tsx" codeFormat="typescript"
|
|
406
|
+
// app/routes/layout.tsx
|
|
407
|
+
import { Outlet } from "react-router";
|
|
408
|
+
import { IntlayerProvider } from "react-intlayer";
|
|
409
|
+
|
|
410
|
+
import { useI18nHTMLAttributes } from "app/hooks/useI18nHTMLAttributes"; // importer le hook
|
|
411
|
+
|
|
412
|
+
export default function RootLayout() {
|
|
413
|
+
useI18nHTMLAttributes(); // appeler le hook
|
|
414
|
+
|
|
415
|
+
return (
|
|
416
|
+
<IntlayerProvider>
|
|
417
|
+
<Outlet />
|
|
418
|
+
</IntlayerProvider>
|
|
419
|
+
);
|
|
420
|
+
}
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
### Étape 11 : Construisez et lancez votre application
|
|
424
|
+
|
|
425
|
+
Construisez les dictionnaires de contenu et lancez votre application :
|
|
426
|
+
|
|
427
|
+
```bash packageManager="npm"
|
|
428
|
+
# Construire les dictionnaires Intlayer
|
|
429
|
+
npm run intlayer:build
|
|
430
|
+
|
|
431
|
+
# Démarrer le serveur de développement
|
|
432
|
+
npm run dev
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
```bash packageManager="pnpm"
|
|
436
|
+
# Construire les dictionnaires Intlayer
|
|
437
|
+
pnpm intlayer:build
|
|
438
|
+
|
|
439
|
+
# Démarrer le serveur de développement
|
|
440
|
+
pnpm dev
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
```bash packageManager="yarn"
|
|
444
|
+
# Construire les dictionnaires Intlayer
|
|
445
|
+
yarn intlayer:build
|
|
446
|
+
|
|
447
|
+
# Démarrer le serveur de développement
|
|
448
|
+
yarn dev
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
### Étape 12 : Configurer TypeScript (Optionnel)
|
|
452
|
+
|
|
453
|
+
Intlayer utilise l'augmentation de module pour bénéficier de TypeScript et renforcer votre base de code.
|
|
454
|
+
|
|
455
|
+
Assurez-vous que votre configuration TypeScript inclut les types générés automatiquement :
|
|
456
|
+
|
|
457
|
+
```json5 fileName="tsconfig.json"
|
|
458
|
+
{
|
|
459
|
+
compilerOptions: {
|
|
460
|
+
// ... vos configurations TypeScript existantes
|
|
461
|
+
},
|
|
462
|
+
include: [
|
|
463
|
+
// ... vos inclusions existantes
|
|
464
|
+
".intlayer/**/*.ts", // Inclure les types générés automatiquement
|
|
465
|
+
],
|
|
466
|
+
}
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### Configuration Git
|
|
470
|
+
|
|
471
|
+
Il est recommandé d'ignorer les fichiers générés par Intlayer. Cela vous permet d'éviter de les commettre dans votre dépôt Git.
|
|
472
|
+
|
|
473
|
+
Pour ce faire, vous pouvez ajouter les instructions suivantes dans votre fichier `.gitignore` :
|
|
474
|
+
|
|
475
|
+
```plaintext fileName=".gitignore"
|
|
476
|
+
# Ignorer les fichiers générés par Intlayer
|
|
477
|
+
.intlayer
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
---
|
|
481
|
+
|
|
482
|
+
## Déploiement en Production
|
|
483
|
+
|
|
484
|
+
Lors du déploiement de votre application :
|
|
485
|
+
|
|
486
|
+
1. **Construisez votre application :**
|
|
487
|
+
|
|
488
|
+
```bash
|
|
489
|
+
npm run build
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
2. **Construisez les dictionnaires Intlayer :**
|
|
493
|
+
|
|
494
|
+
```bash
|
|
495
|
+
npm run intlayer:build
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
3. **Déplacez `vite-intlayer` dans les dépendances** si vous utilisez un middleware en production :
|
|
499
|
+
```bash
|
|
500
|
+
npm install vite-intlayer --save
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
Votre application prendra désormais en charge :
|
|
504
|
+
|
|
505
|
+
- **Structure des URL** : `/en`, `/en/about`, `/tr`, `/tr/about`
|
|
506
|
+
- **Détection automatique de la langue** basée sur les préférences du navigateur
|
|
507
|
+
- **Routage sensible à la langue** avec React Router v7
|
|
508
|
+
- **Support TypeScript** avec des types générés automatiquement
|
|
509
|
+
- **Rendu côté serveur** avec une gestion correcte des langues
|
|
510
|
+
|
|
511
|
+
## Extension VS Code
|
|
512
|
+
|
|
513
|
+
Pour améliorer votre expérience de développement avec Intlayer, vous pouvez installer l’extension officielle **Intlayer VS Code Extension**.
|
|
514
|
+
|
|
515
|
+
[Installer depuis le Marketplace VS Code](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
516
|
+
|
|
517
|
+
Cette extension offre :
|
|
518
|
+
|
|
519
|
+
- **Autocomplétion** pour les clés de traduction.
|
|
520
|
+
- **Détection d’erreurs en temps réel** pour les traductions manquantes.
|
|
521
|
+
- **Aperçus en ligne** du contenu traduit.
|
|
522
|
+
- **Actions rapides** pour créer et mettre à jour facilement les traductions.
|
|
523
|
+
|
|
524
|
+
Pour plus de détails sur l'utilisation de l'extension, consultez la [documentation de l'extension VS Code Intlayer](https://intlayer.org/doc/vs-code-extension).
|
|
525
|
+
|
|
526
|
+
---
|
|
527
|
+
|
|
528
|
+
## Aller plus loin
|
|
529
|
+
|
|
530
|
+
Pour aller plus loin, vous pouvez implémenter l'[éditeur visuel](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md) ou externaliser votre contenu en utilisant le [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_CMS.md).
|
|
531
|
+
|
|
532
|
+
---
|
|
533
|
+
|
|
534
|
+
## Références de la documentation
|
|
535
|
+
|
|
536
|
+
- [Documentation Intlayer](https://intlayer.org)
|
|
537
|
+
- [Documentation React Router v7](https://reactrouter.com/)
|
|
538
|
+
- [Hook useIntlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/packages/react-intlayer/useIntlayer.md)
|
|
539
|
+
- [useLocale hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/packages/react-intlayer/useLocale.md)
|
|
540
|
+
- [Déclaration de contenu](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/dictionary/get_started.md)
|
|
541
|
+
- [Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/configuration.md)
|
|
542
|
+
|
|
543
|
+
Ce guide complet vous fournit tout ce dont vous avez besoin pour intégrer Intlayer avec React Router v7 afin d’obtenir une application entièrement internationalisée avec un routage sensible à la locale et une prise en charge de TypeScript.
|
|
544
|
+
|
|
545
|
+
## Historique de la documentation
|
|
546
|
+
|
|
547
|
+
| Version | Date | Modifications |
|
|
548
|
+
| ------- | --------- | -------------------------- |
|
|
549
|
+
| 5.8.2 | 2025-09-4 | Ajout pour React Router v7 |
|