@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,534 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-09-04
|
|
3
|
+
updatedAt: 2025-09-04
|
|
4
|
+
title: React Router v7でのIntlayerによる国際化(i18n)入門
|
|
5
|
+
description: Intlayerを使ってReact Router v7アプリケーションに国際化(i18n)を追加する方法を学びます。ロケール対応ルーティングで多言語対応アプリを作成するための包括的なガイドです。
|
|
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
|
+
# IntlayerとReact Router v7で始める国際化(i18n)
|
|
25
|
+
|
|
26
|
+
このガイドでは、React Router v7プロジェクトにおいて、ロケール対応ルーティング、TypeScriptサポート、最新の開発手法を用いて、**Intlayer**をシームレスに統合する方法を示します。
|
|
27
|
+
|
|
28
|
+
## Intlayerとは?
|
|
29
|
+
|
|
30
|
+
**Intlayer**は、モダンなウェブアプリケーションにおける多言語対応を簡素化するために設計された革新的なオープンソースの国際化(i18n)ライブラリです。
|
|
31
|
+
|
|
32
|
+
Intlayerを使うことで、以下が可能になります:
|
|
33
|
+
|
|
34
|
+
- **コンポーネントレベルで宣言的な辞書を使い、翻訳を簡単に管理**できます。
|
|
35
|
+
- **メタデータ、ルート、コンテンツを動的にローカライズ**できます。
|
|
36
|
+
- **自動生成される型情報によりTypeScriptサポートを確保し、オートコンプリートやエラー検出を向上**させます。
|
|
37
|
+
- **動的なロケール検出や切り替えなどの高度な機能を活用**できます。
|
|
38
|
+
- **React Router v7の設定ベースのルーティングシステムを使って、ロケール対応ルーティングを有効化**します。
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## React Router v7アプリケーションでIntlayerをセットアップするステップバイステップガイド
|
|
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
|
+
設定管理、翻訳、[コンテンツ宣言](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/get_started.md)、トランスパイル、および[CLIコマンド](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/intlayer_cli.md)のための国際化ツールを提供するコアパッケージ。
|
|
62
|
+
|
|
63
|
+
- **react-intlayer**
|
|
64
|
+
IntlayerをReactアプリケーションに統合するパッケージです。Reactの国際化のためのコンテキストプロバイダーとフックを提供します。
|
|
65
|
+
|
|
66
|
+
- **vite-intlayer**
|
|
67
|
+
Intlayerを[Viteバンドラー](https://vite.dev/guide/why.html#why-bundle-for-production)と統合するためのViteプラグイン、およびユーザーの優先ロケール検出、クッキー管理、URLリダイレクト処理のためのミドルウェアを含みます。
|
|
68
|
+
|
|
69
|
+
### ステップ 2: プロジェクトの設定
|
|
70
|
+
|
|
71
|
+
アプリケーションの言語を設定するための設定ファイルを作成します:
|
|
72
|
+
|
|
73
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
74
|
+
import { type IntlayerConfig, Locales } from "intlayer";
|
|
75
|
+
|
|
76
|
+
const config: IntlayerConfig = {
|
|
77
|
+
internationalization: {
|
|
78
|
+
defaultLocale: Locales.ENGLISH,
|
|
79
|
+
locales: [Locales.ENGLISH, Locales.TURKISH],
|
|
80
|
+
},
|
|
81
|
+
middleware: {
|
|
82
|
+
prefixDefault: true, // URLに常にデフォルトのロケールをプレフィックスとして付ける
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export default config;
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
90
|
+
import { Locales } from "intlayer";
|
|
91
|
+
|
|
92
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
93
|
+
const config = {
|
|
94
|
+
internationalization: {
|
|
95
|
+
defaultLocale: Locales.ENGLISH,
|
|
96
|
+
locales: [Locales.ENGLISH, Locales.TURKISH],
|
|
97
|
+
},
|
|
98
|
+
middleware: {
|
|
99
|
+
prefixDefault: true,
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
export default config;
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
107
|
+
const { Locales } = require("intlayer");
|
|
108
|
+
|
|
109
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
110
|
+
// IntlayerConfigの型注釈
|
|
111
|
+
const config = {
|
|
112
|
+
internationalization: {
|
|
113
|
+
defaultLocale: Locales.ENGLISH, // デフォルトのロケールを英語に設定
|
|
114
|
+
locales: [Locales.ENGLISH, Locales.TURKISH], // 利用可能なロケール一覧
|
|
115
|
+
},
|
|
116
|
+
middleware: {
|
|
117
|
+
prefixDefault: true, // デフォルトロケールのURLに常にプレフィックスを付ける
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
module.exports = config;
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
> この設定ファイルを通じて、ローカライズされたURL、ミドルウェアのリダイレクション、クッキー名、コンテンツ宣言の場所や拡張子、Intlayerのコンソールログの無効化などを設定できます。利用可能なパラメータの完全なリストについては、[設定ドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/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: Vite設定にIntlayerを統合する
|
|
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
|
+
> `intlayerPlugin()` Viteプラグインは、IntlayerをViteと統合するために使用されます。これにより、コンテンツ宣言ファイルのビルドが保証され、開発モードで監視されます。また、Viteアプリケーション内でIntlayerの環境変数を定義します。さらに、パフォーマンスを最適化するためのエイリアスも提供します。
|
|
163
|
+
|
|
164
|
+
### ステップ5: レイアウトコンポーネントの作成
|
|
165
|
+
|
|
166
|
+
ルートレイアウトとロケール固有のレイアウトを設定します。
|
|
167
|
+
|
|
168
|
+
#### ルートレイアウト
|
|
169
|
+
|
|
170
|
+
```tsx fileName="app/routes/layout.tsx" codeFormat="typescript"
|
|
171
|
+
tsx;
|
|
172
|
+
// app/routes/layout.tsx
|
|
173
|
+
import { Outlet } from "react-router";
|
|
174
|
+
import { IntlayerProvider } from "react-intlayer";
|
|
175
|
+
|
|
176
|
+
export default function RootLayout() {
|
|
177
|
+
return (
|
|
178
|
+
<IntlayerProvider>
|
|
179
|
+
<Outlet />
|
|
180
|
+
</IntlayerProvider>
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### ステップ6: コンテンツを宣言する
|
|
186
|
+
|
|
187
|
+
翻訳を格納するためのコンテンツ宣言を作成および管理します:
|
|
188
|
+
|
|
189
|
+
```tsx fileName="app/routes/[lang]/page.content.ts" contentDeclarationFormat="typescript"
|
|
190
|
+
import { t, type Dictionary } from "intlayer";
|
|
191
|
+
|
|
192
|
+
const pageContent = {
|
|
193
|
+
key: "page",
|
|
194
|
+
content: {
|
|
195
|
+
title: t({
|
|
196
|
+
en: "Welcome to React Router v7 + Intlayer",
|
|
197
|
+
tr: "React Router v7 + Intlayer'a Hoş Geldiniz",
|
|
198
|
+
}),
|
|
199
|
+
description: t({
|
|
200
|
+
en: "Build multilingual applications with ease using React Router v7 and Intlayer.",
|
|
201
|
+
tr: "React Router v7 ve Intlayer kullanarak kolayca çok dilli uygulamalar geliştirin。",
|
|
202
|
+
}),
|
|
203
|
+
aboutLink: t({
|
|
204
|
+
en: "Learn About Us",
|
|
205
|
+
tr: "Hakkımızda Öğrenin",
|
|
206
|
+
}),
|
|
207
|
+
homeLink: t({
|
|
208
|
+
en: "Home",
|
|
209
|
+
tr: "Ana Sayfa",
|
|
210
|
+
}),
|
|
211
|
+
},
|
|
212
|
+
} satisfies Dictionary;
|
|
213
|
+
|
|
214
|
+
export default pageContent;
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
> コンテンツ宣言は、アプリケーション内のどこにでも定義できます。`contentDir` ディレクトリ(デフォルトは `./app`)に含まれていれば有効です。また、コンテンツ宣言ファイルの拡張子(デフォルトは `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`)に一致する必要があります。
|
|
218
|
+
|
|
219
|
+
> 詳細については、[コンテンツ宣言のドキュメント](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/get_started.md)を参照してください。
|
|
220
|
+
|
|
221
|
+
### ステップ7: ロケール対応コンポーネントの作成
|
|
222
|
+
|
|
223
|
+
ロケール対応のナビゲーションのために `LocalizedLink` コンポーネントを作成します:
|
|
224
|
+
|
|
225
|
+
```tsx fileName="app/components/localized-link.tsx" codeFormat="typescript"
|
|
226
|
+
// app/components/localized-link.tsx
|
|
227
|
+
import { getLocalizedUrl } from "intlayer";
|
|
228
|
+
import { useLocale } from "react-intlayer";
|
|
229
|
+
import React from "react";
|
|
230
|
+
import { Link, useLocation } from "react-router";
|
|
231
|
+
|
|
232
|
+
type RouterLinkProps = React.ComponentProps<typeof Link>;
|
|
233
|
+
|
|
234
|
+
export default function LocalizedLink({ to, ...props }: RouterLinkProps) {
|
|
235
|
+
const { locale } = useLocale(); // 現在のロケールを取得
|
|
236
|
+
const location = useLocation(); // 現在の場所を取得
|
|
237
|
+
|
|
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/ja/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/ja/packages/react-intlayer/useLocale.md)を参照してください。
|
|
367
|
+
|
|
368
|
+
### ステップ10: HTML属性の管理を追加(オプション)
|
|
369
|
+
|
|
370
|
+
HTMLの lang と dir 属性を管理するフックを作成します:
|
|
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
|
+
// ... your existing includes
|
|
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`を依存関係に移動する:**
|
|
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マーケットプレイスからインストール](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/ja/intlayer_visual_editor.md)を実装したり、[CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/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/ja/packages/react-intlayer/useIntlayer.md)
|
|
524
|
+
- [useLocale フック](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/packages/react-intlayer/useLocale.md)
|
|
525
|
+
- [コンテンツ宣言](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/dictionary/get_started.md)
|
|
526
|
+
- [設定](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ja/configuration.md)
|
|
527
|
+
|
|
528
|
+
この包括的なガイドは、Intlayer を React Router v7 と統合し、ロケール対応のルーティングと TypeScript サポートを備えた完全な国際化アプリケーションを構築するために必要なすべてを提供します。
|
|
529
|
+
|
|
530
|
+
## ドキュメント履歴
|
|
531
|
+
|
|
532
|
+
| バージョン | 日付 | 変更内容 |
|
|
533
|
+
| ---------- | --------- | ------------------------ |
|
|
534
|
+
| 5.8.2 | 2025-09-4 | React Router v7 用に追加 |
|