@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,202 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-03-01
|
|
3
|
+
updatedAt: 2025-09-20
|
|
4
|
+
title: Тестирование вашего контента
|
|
5
|
+
description: Узнайте, как тестировать ваш контент с помощью Intlayer.
|
|
6
|
+
keywords:
|
|
7
|
+
- Тестирование
|
|
8
|
+
- Intlayer
|
|
9
|
+
- Интернационализация
|
|
10
|
+
- CMS
|
|
11
|
+
- Система управления контентом
|
|
12
|
+
- Визуальный редактор
|
|
13
|
+
slugs:
|
|
14
|
+
- doc
|
|
15
|
+
- testing
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Тестирование вашего контента
|
|
19
|
+
|
|
20
|
+
Это руководство показывает, как автоматически проверять полноту ваших словарей, выявлять отсутствующие переводы до выпуска и тестировать локализованный пользовательский интерфейс в вашем приложении.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Что вы можете тестировать
|
|
25
|
+
|
|
26
|
+
- **Отсутствующие переводы**: провалить CI, если для любого словаря отсутствуют обязательные локали.
|
|
27
|
+
- **Отрисовка локализованного UI**: рендерить компоненты с провайдером конкретной локали и проверять видимый текст/атрибуты.
|
|
28
|
+
- **Аудиты во время сборки**: запускать быстрый аудит локально через CLI.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Быстрый старт: аудит через CLI
|
|
33
|
+
|
|
34
|
+
Запустите аудит из корня вашего проекта:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npx intlayer content test
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Полезные флаги:
|
|
41
|
+
|
|
42
|
+
- `--env-file [path]`: загрузить переменные окружения из файла.
|
|
43
|
+
- `-e, --env [name]`: выбрать профиль окружения.
|
|
44
|
+
- `--base-dir [path]`: задать базовую директорию приложения для разрешения путей.
|
|
45
|
+
- `--verbose`: показывать подробные логи.
|
|
46
|
+
- `--prefix [label]`: добавлять префикс к строкам логов.
|
|
47
|
+
|
|
48
|
+
Примечание: CLI выводит подробный отчет, но не завершает работу с ошибкой при обнаружении проблем. Для контроля в CI добавьте юнит-тест (ниже), который проверяет отсутствие отсутствующих обязательных локалей.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Программное тестирование (Vitest/Jest)
|
|
53
|
+
|
|
54
|
+
Используйте API Intlayer CLI, чтобы проверить, что отсутствующих переводов для обязательных локалей нет.
|
|
55
|
+
|
|
56
|
+
```ts file=i18n.test.ts
|
|
57
|
+
/* @vitest-environment node */
|
|
58
|
+
import { listMissingTranslations } from "intlayer/cli";
|
|
59
|
+
import { describe, expect, it } from "vitest";
|
|
60
|
+
|
|
61
|
+
describe("переводы", () => {
|
|
62
|
+
it("отсутствуют обязательные локали", () => {
|
|
63
|
+
const result = listMissingTranslations();
|
|
64
|
+
|
|
65
|
+
if (result.missingRequiredLocales.length > 0) {
|
|
66
|
+
// Полезно, когда тест не проходит локально или в CI
|
|
67
|
+
console.log(result.missingTranslations);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
expect(result.missingRequiredLocales).toHaveLength(0);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Эквивалент для Jest:
|
|
76
|
+
|
|
77
|
+
```ts file=i18n.test.ts
|
|
78
|
+
import { listMissingTranslations } from "intlayer/cli";
|
|
79
|
+
|
|
80
|
+
test("отсутствуют обязательные локали", () => {
|
|
81
|
+
const result = listMissingTranslations();
|
|
82
|
+
|
|
83
|
+
if (result.missingRequiredLocales.length > 0) {
|
|
84
|
+
// eslint-disable-next-line no-console
|
|
85
|
+
console.log(result.missingTranslations);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
expect(result.missingRequiredLocales).toHaveLength(0);
|
|
89
|
+
});
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Как это работает:
|
|
93
|
+
|
|
94
|
+
- Intlayer читает вашу конфигурацию (locales, requiredLocales) и объявленные словари, затем сообщает:
|
|
95
|
+
- `missingTranslations`: для каждого ключа, какие локали отсутствуют и из какого файла.
|
|
96
|
+
- `missingLocales`: объединение всех отсутствующих локалей.
|
|
97
|
+
- `missingRequiredLocales`: подмножество, ограниченное `requiredLocales` (или все локали, если `requiredLocales` не установлены).
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Тестирование локализованного UI (React / Next.js)
|
|
102
|
+
|
|
103
|
+
Рендерьте компоненты под провайдером Intlayer и проверяйте видимый контент.
|
|
104
|
+
|
|
105
|
+
Пример для React (Testing Library):
|
|
106
|
+
|
|
107
|
+
```tsx
|
|
108
|
+
import { IntlayerProvider } from "react-intlayer/client";
|
|
109
|
+
import { render, screen } from "@testing-library/react";
|
|
110
|
+
import { MyComponent } from "./MyComponent";
|
|
111
|
+
|
|
112
|
+
test("renders localized title in English", () => {
|
|
113
|
+
render(
|
|
114
|
+
<IntlayerProvider locale="en-US">
|
|
115
|
+
<MyComponent />
|
|
116
|
+
</IntlayerProvider>
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
expect(
|
|
120
|
+
screen.getByText("Ожидаемый английский заголовок")
|
|
121
|
+
).toBeInTheDocument();
|
|
122
|
+
});
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Пример для Next.js (App Router): используйте обертку фреймворка:
|
|
126
|
+
|
|
127
|
+
```tsx
|
|
128
|
+
import { IntlayerClientProvider } from "next-intlayer/client";
|
|
129
|
+
import { render, screen } from "@testing-library/react";
|
|
130
|
+
import { MyPage } from "./MyPage";
|
|
131
|
+
|
|
132
|
+
test("отображает локализованный заголовок на французском", () => {
|
|
133
|
+
render(
|
|
134
|
+
<IntlayerClientProvider locale="fr-FR">
|
|
135
|
+
<MyPage />
|
|
136
|
+
</IntlayerClientProvider>
|
|
137
|
+
);
|
|
138
|
+
expect(
|
|
139
|
+
screen.getByRole("heading", { name: "Titre attendu" })
|
|
140
|
+
).toBeInTheDocument();
|
|
141
|
+
});
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Советы:
|
|
145
|
+
|
|
146
|
+
- Когда вам нужны необработанные строковые значения для атрибутов (например, `aria-label`), обращайтесь к полю `.value`, возвращаемому `useIntlayer` в React.
|
|
147
|
+
- Храните словари рядом с компонентами для упрощения модульного тестирования и очистки.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Непрерывная интеграция
|
|
152
|
+
|
|
153
|
+
Добавьте тест, который будет прерывать сборку, если отсутствуют необходимые переводы.
|
|
154
|
+
|
|
155
|
+
`package.json`:
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"scripts": {
|
|
160
|
+
"test:i18n": "vitest run -c"
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Пример GitHub Actions:
|
|
166
|
+
|
|
167
|
+
```yaml
|
|
168
|
+
name: CI
|
|
169
|
+
on: [push, pull_request]
|
|
170
|
+
jobs:
|
|
171
|
+
test:
|
|
172
|
+
runs-on: ubuntu-latest
|
|
173
|
+
steps:
|
|
174
|
+
- uses: actions/checkout@v4
|
|
175
|
+
- uses: actions/setup-node@v4
|
|
176
|
+
with:
|
|
177
|
+
node-version: 20
|
|
178
|
+
- run: npm ci
|
|
179
|
+
- run: npm run test:i18n
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Опционально: запустите аудит CLI для получения удобочитаемого отчёта вместе с тестами:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
npx intlayer content test --verbose
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Устранение неполадок
|
|
191
|
+
|
|
192
|
+
- Убедитесь, что ваша конфигурация Intlayer определяет `locales` и (опционально) `requiredLocales`.
|
|
193
|
+
- Если ваше приложение использует динамические или удалённые словари, запускайте тесты в среде, где эти словари доступны.
|
|
194
|
+
- Для смешанных монорепозиториев используйте `--base-dir`, чтобы указать CLI правильный корень приложения.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## История документации
|
|
199
|
+
|
|
200
|
+
| Версия | Дата | Изменения |
|
|
201
|
+
| ------ | ---------- | --------------------- |
|
|
202
|
+
| 6.0.0 | 2025-09-20 | Введение тестирования |
|
package/docs/tr/CI_CD.md
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-09-07
|
|
3
|
+
updatedAt: 2025-09-07
|
|
4
|
+
title: CI/CD Entegrasyonu
|
|
5
|
+
description: Otomatik içerik yönetimi ve dağıtım için Intlayer'ı CI/CD hattınıza nasıl entegre edeceğinizi öğrenin.
|
|
6
|
+
keywords:
|
|
7
|
+
- CI/CD
|
|
8
|
+
- Sürekli Entegrasyon
|
|
9
|
+
- Sürekli Dağıtım
|
|
10
|
+
- Otomasyon
|
|
11
|
+
- Uluslararasılaştırma
|
|
12
|
+
- Dokümantasyon
|
|
13
|
+
- Intlayer
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- concept
|
|
17
|
+
- ci-cd
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# CI/CD Hattında Çevirileri Otomatik Oluştur
|
|
21
|
+
|
|
22
|
+
Intlayer, içerik bildirim dosyalarınız için çevirilerin otomatik olarak oluşturulmasına izin verir. İş akışınıza bağlı olarak bunu başarmanın birden fazla yolu vardır.
|
|
23
|
+
|
|
24
|
+
## CMS Kullanarak
|
|
25
|
+
|
|
26
|
+
Intlayer ile, sadece tek bir yerel ayar yerel olarak bildirilirken, tüm çevirilerin CMS aracılığıyla uzaktan yönetildiği bir iş akışı benimseyebilirsiniz. Bu, içerik ve çevirileri kod tabanından tamamen ayırmaya izin verir, içerik editörleri için daha fazla esneklik sunar ve sıcak içerik yeniden yüklemesini etkinleştirir (değişiklikleri uygulamak için uygulamayı yeniden oluşturmaya gerek yoktur).
|
|
27
|
+
|
|
28
|
+
### Örnek Konfigürasyon
|
|
29
|
+
|
|
30
|
+
```ts fileName="intlayer.config.ts"
|
|
31
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
32
|
+
|
|
33
|
+
const config: IntlayerConfig = {
|
|
34
|
+
internationalization: {
|
|
35
|
+
locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],
|
|
36
|
+
requiredLocales: [Locales.ENGLISH], // İsteğe bağlı yerel ayarlar uzaktan yönetilecek
|
|
37
|
+
defaultLocale: Locales.ENGLISH,
|
|
38
|
+
},
|
|
39
|
+
editor: {
|
|
40
|
+
dictionaryPriorityStrategy: "distant_first", // Uzak içerik öncelikli
|
|
41
|
+
|
|
42
|
+
applicationURL: process.env.APPLICATION_URL, // CMS tarafından kullanılan uygulama URL'si
|
|
43
|
+
|
|
44
|
+
clientId: process.env.INTLAYER_CLIENT_ID, // CMS kimlik bilgileri
|
|
45
|
+
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
46
|
+
},
|
|
47
|
+
ai: {
|
|
48
|
+
applicationContext: "This is a test application", // Tutarlı çeviri oluşturmayı sağlar
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export default config;
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
CMS hakkında daha fazla bilgi için [resmi dokümantasyona](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md) bakın.
|
|
56
|
+
|
|
57
|
+
## Husky Kullanarak
|
|
58
|
+
|
|
59
|
+
[Husky](https://typicode.github.io/husky/) kullanarak çeviri oluşturmayı yerel Git iş akışınıza entegre edebilirsiniz.
|
|
60
|
+
|
|
61
|
+
### Örnek Konfigürasyon
|
|
62
|
+
|
|
63
|
+
```ts fileName="intlayer.config.ts"
|
|
64
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
65
|
+
|
|
66
|
+
const config: IntlayerConfig = {
|
|
67
|
+
internationalization: {
|
|
68
|
+
locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],
|
|
69
|
+
requiredLocales: [Locales.ENGLISH], // İsteğe bağlı yerel ayarlar uzaktan yönetilir
|
|
70
|
+
defaultLocale: Locales.ENGLISH,
|
|
71
|
+
},
|
|
72
|
+
editor: {
|
|
73
|
+
clientId: process.env.INTLAYER_CLIENT_ID,
|
|
74
|
+
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
75
|
+
},
|
|
76
|
+
ai: {
|
|
77
|
+
provider: "openai",
|
|
78
|
+
apiKey: process.env.OPENAI_API_KEY, // Kendi API anahtarınızı kullanın
|
|
79
|
+
|
|
80
|
+
applicationContext: "This is a test application", // Tutarlı çeviri oluşturmayı sağlar
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export default config;
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
```bash fileName=".husky/pre-push"
|
|
88
|
+
npx intlayer build # Sözlüklerin güncel olduğundan emin olun
|
|
89
|
+
npx intlayer fill --unpushed --mode fill # Sadece eksik içeriği doldurun, mevcut olanları güncellemez
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
> Intlayer CLI komutları ve kullanımları hakkında daha fazla bilgi için [CLI dokümantasyonuna](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_cli.md) bakın.
|
|
93
|
+
|
|
94
|
+
> Deponuzda ayrı intlayer örnekleri kullanan birden fazla uygulama varsa, `--base-dir` argümanını şu şekilde kullanabilirsiniz:
|
|
95
|
+
|
|
96
|
+
```bash fileName=".husky/pre-push"
|
|
97
|
+
# Uygulama 1
|
|
98
|
+
npx intlayer build --base-dir ./app1
|
|
99
|
+
npx intlayer fill --base-dir ./app1 --unpushed --mode fill
|
|
100
|
+
|
|
101
|
+
# Uygulama 2
|
|
102
|
+
npx intlayer build --base-dir ./app2
|
|
103
|
+
npx intlayer fill --base-dir ./app2 --unpushed --mode fill
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## GitHub Actions Kullanarak
|
|
107
|
+
|
|
108
|
+
Intlayer, sözlük içeriğini otomatik doldurmak ve gözden geçirmek için bir CLI komutu sağlar. Bu, GitHub Actions kullanarak CI/CD iş akışınıza entegre edilebilir.
|
|
109
|
+
|
|
110
|
+
```yaml fileName=".github/workflows/intlayer-translate.yml"
|
|
111
|
+
name: Intlayer Auto-Fill
|
|
112
|
+
# Bu iş akışı için tetikleme koşulları
|
|
113
|
+
on:
|
|
114
|
+
pull_request:
|
|
115
|
+
branches:
|
|
116
|
+
- "main"
|
|
117
|
+
|
|
118
|
+
permissions:
|
|
119
|
+
contents: write
|
|
120
|
+
pull-requests: write
|
|
121
|
+
|
|
122
|
+
concurrency:
|
|
123
|
+
group: "autofill-${{ github.ref }}"
|
|
124
|
+
cancel-in-progress: true
|
|
125
|
+
|
|
126
|
+
jobs:
|
|
127
|
+
autofill:
|
|
128
|
+
runs-on: ubuntu-latest
|
|
129
|
+
env:
|
|
130
|
+
# OpenAI
|
|
131
|
+
AI_MODEL: openai
|
|
132
|
+
AI_PROVIDER: gpt-5-mini
|
|
133
|
+
AI_API_KEY: ${{ secrets.AI_API_KEY }}
|
|
134
|
+
|
|
135
|
+
steps:
|
|
136
|
+
# Adım 1: Depodan en son kodu alın
|
|
137
|
+
- name: ⬇️ Depoyu kontrol et
|
|
138
|
+
uses: actions/checkout@v4
|
|
139
|
+
with:
|
|
140
|
+
persist-credentials: true # PR oluşturmak için kimlik bilgilerini saklayın
|
|
141
|
+
fetch-depth: 0 # Fark analizi için tam git geçmişini alın
|
|
142
|
+
|
|
143
|
+
# Adım 2: Node.js ortamını ayarlayın
|
|
144
|
+
- name: 🟢 Node.js'i ayarla
|
|
145
|
+
uses: actions/setup-node@v4
|
|
146
|
+
with:
|
|
147
|
+
node-version: 20 # Kararlılık için Node.js 20 LTS kullanın
|
|
148
|
+
|
|
149
|
+
# Adım 3: Proje bağımlılıklarını yükleyin
|
|
150
|
+
- name: 📦 Bağımlılıkları yükle
|
|
151
|
+
run: npm install
|
|
152
|
+
|
|
153
|
+
# Adım 4: Çeviri yönetimi için Intlayer CLI'yi global olarak yükleyin
|
|
154
|
+
- name: 📦 Intlayer'ı yükle
|
|
155
|
+
run: npm install -g intlayer-cli
|
|
156
|
+
|
|
157
|
+
# Adım 5: Çeviri dosyalarını oluşturmak için Intlayer projesini oluşturun
|
|
158
|
+
- name: ⚙️ Intlayer projesini oluştur
|
|
159
|
+
run: npx intlayer build
|
|
160
|
+
|
|
161
|
+
# Adım 6: Eksik çevirileri otomatik olarak doldurmak için AI kullanın
|
|
162
|
+
- name: 🤖 Eksik çevirileri otomatik doldur
|
|
163
|
+
run: npx intlayer fill --git-diff --mode fill --provider $AI_PROVIDER --model $AI_MODEL --api-key $AI_API_KEY
|
|
164
|
+
|
|
165
|
+
# Adım 7: Değişiklik olup olmadığını kontrol edin ve bunları commit edin
|
|
166
|
+
- name: � Değişiklikleri kontrol et
|
|
167
|
+
id: check-changes
|
|
168
|
+
run: |
|
|
169
|
+
if [ -n "$(git status --porcelain)" ]; then
|
|
170
|
+
echo "has-changes=true" >> $GITHUB_OUTPUT
|
|
171
|
+
else
|
|
172
|
+
echo "has-changes=false" >> $GITHUB_OUTPUT
|
|
173
|
+
fi
|
|
174
|
+
|
|
175
|
+
# Adım 8: Varsa değişiklikleri commit edin ve pushlayın
|
|
176
|
+
- name: 📤 Değişiklikleri commit et ve pushla
|
|
177
|
+
if: steps.check-changes.outputs.has-changes == 'true'
|
|
178
|
+
run: |
|
|
179
|
+
git config --local user.email "action@github.com"
|
|
180
|
+
git config --local user.name "GitHub Action"
|
|
181
|
+
git add .
|
|
182
|
+
git commit -m "chore: auto-fill missing translations [skip ci]"
|
|
183
|
+
git push origin HEAD:${{ github.head_ref }}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Ortam değişkenlerini ayarlamak için GitHub → Settings → Secrets and variables → Actions'a gidin ve sırrı ekleyin.
|
|
187
|
+
|
|
188
|
+
> Husky ile aynı şekilde, monorepo durumunda her uygulamayı sırayla işlemek için `--base-dir` argümanını kullanabilirsiniz.
|
|
189
|
+
|
|
190
|
+
> Varsayılan olarak, `--git-diff` argümanı base'den (varsayılan `origin/main`) mevcut branch'e (varsayılan: `HEAD`) kadar olan değişiklikleri içeren sözlükleri filtreler.
|
|
191
|
+
|
|
192
|
+
> Intlayer CLI komutları ve kullanımları hakkında daha fazla bilgi için [CLI dokümantasyonuna](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_cli.md) bakın.
|
|
193
|
+
|
|
194
|
+
## Doküman Geçmişi
|
|
195
|
+
|
|
196
|
+
| Sürüm | Tarih | Değişiklikler |
|
|
197
|
+
| ------ | ---------- | ----------------- |
|
|
198
|
+
| 5.5.10 | 2025-06-29 | Geçmiş başlatıldı |
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-03-13
|
|
3
|
+
updatedAt: 2025-09-20
|
|
4
|
+
title: Otomatik Doldurma
|
|
5
|
+
description: Intlayer'da önceden tanımlanmış kalıplara göre içeriği otomatik doldurmak için otomatik doldurma işlevinin nasıl kullanılacağını öğrenin. Projenizde otomatik doldurma özelliklerini verimli bir şekilde uygulamak için bu dokümantasyonu takip edin.
|
|
6
|
+
keywords:
|
|
7
|
+
- Otomatik Doldurma
|
|
8
|
+
- İçerik Otomasyonu
|
|
9
|
+
- Dinamik İçerik
|
|
10
|
+
- Intlayer
|
|
11
|
+
- Next.js
|
|
12
|
+
- JavaScript
|
|
13
|
+
- React
|
|
14
|
+
slugs:
|
|
15
|
+
- doc
|
|
16
|
+
- concept
|
|
17
|
+
- auto-fill
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Otomatik Doldurma İçerik Beyan Dosyası Çevirileri
|
|
21
|
+
|
|
22
|
+
**Otomatik doldurma içerik beyan dosyaları**, geliştirme iş akışınızı hızlandırmanın bir yoludur.
|
|
23
|
+
|
|
24
|
+
Otomatik doldurma mekanizması, içerik beyan dosyaları arasında bir _ana-uydu_ ilişkisi üzerinden çalışır. Ana (master) dosya güncellendiğinde, Intlayer bu değişiklikleri türetilmiş (otomatik doldurulmuş) beyan dosyalarına otomatik olarak uygular.
|
|
25
|
+
|
|
26
|
+
```ts fileName="src/components/example/example.content.ts"
|
|
27
|
+
import { Locales, type Dictionary } from "intlayer";
|
|
28
|
+
|
|
29
|
+
const exampleContent = {
|
|
30
|
+
key: "example",
|
|
31
|
+
locale: Locales.ENGLISH,
|
|
32
|
+
autoFill: "./example.content.json",
|
|
33
|
+
content: {
|
|
34
|
+
contentExample: "Bu bir içerik örneğidir",
|
|
35
|
+
},
|
|
36
|
+
} satisfies Dictionary;
|
|
37
|
+
|
|
38
|
+
export default exampleContent;
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
İşte `autoFill` talimatını kullanan bir [her dil için içerik beyan dosyası](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/per_locale_file.md).
|
|
42
|
+
|
|
43
|
+
Sonra, aşağıdaki komutu çalıştırdığınızda:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npx intlayer fill --file 'src/components/example/example.content.ts'
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Intlayer, ana dosyada henüz beyan edilmemiş tüm yerelleri doldurarak, türetilmiş beyan dosyasını `src/components/example/example.content.json` konumunda otomatik olarak oluşturacaktır.
|
|
50
|
+
|
|
51
|
+
```json5 fileName="src/components/example/example.content.json"
|
|
52
|
+
{
|
|
53
|
+
"key": "example",
|
|
54
|
+
"content": {
|
|
55
|
+
"contentExample": {
|
|
56
|
+
"nodeType": "translation",
|
|
57
|
+
"translation": {
|
|
58
|
+
"fr": "Ceci est un exemple de contenu",
|
|
59
|
+
"es": "Este es un ejemplo de contenido",
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Daha sonra, her iki beyan dosyası tek bir sözlükte birleştirilecek ve standart `useIntlayer("example")` hook'u (react) / composable'ı (vue) kullanılarak erişilebilir olacaktır.
|
|
67
|
+
|
|
68
|
+
## Otomatik Doldurulmuş Dosya Formatı
|
|
69
|
+
|
|
70
|
+
Önerilen otomatik doldurulmuş beyan dosyalarının formatı, biçimlendirme kısıtlamalarından kaçınmaya yardımcı olan **JSON** formatıdır. Ancak, Intlayer `.ts`, `.js`, `.mjs`, `.cjs` ve diğer formatları da destekler.
|
|
71
|
+
|
|
72
|
+
```ts fileName="src/components/example/example.content.ts"
|
|
73
|
+
const exampleContent = {
|
|
74
|
+
key: "example",
|
|
75
|
+
autoFill: "./example.filled.content.ts",
|
|
76
|
+
content: {
|
|
77
|
+
// İçeriğiniz
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Bu, şu dosyayı oluşturacaktır:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
src/components/example/example.filled.content.ts
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
> `.js`, `.ts` ve benzeri dosyaların oluşturulması şu şekilde çalışır:
|
|
89
|
+
>
|
|
90
|
+
> - Dosya zaten mevcutsa, Intlayer her alanı bulmak ve eksik çevirileri eklemek için AST (Soyut Sözdizimi Ağacı) kullanarak dosyayı ayrıştırır.
|
|
91
|
+
> - Dosya mevcut değilse, Intlayer varsayılan içerik beyan dosyası şablonunu kullanarak dosyayı oluşturur.
|
|
92
|
+
|
|
93
|
+
## Mutlak Yollar
|
|
94
|
+
|
|
95
|
+
`autoFill` alanı mutlak yolları da destekler.
|
|
96
|
+
|
|
97
|
+
```ts fileName="src/components/example/example.content.ts"
|
|
98
|
+
const exampleContent = {
|
|
99
|
+
key: "example",
|
|
100
|
+
autoFill: "/messages/example.content.json",
|
|
101
|
+
content: {
|
|
102
|
+
// İçeriğiniz
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Bu, şu dosyayı oluşturacaktır:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
/messages/example.content.json
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Yerel Bazlı İçerik Beyan Dosyalarının Otomatik Oluşturulması
|
|
114
|
+
|
|
115
|
+
`autoFill` alanı ayrıca **yerel bazlı** içerik beyan dosyalarının oluşturulmasını da destekler.
|
|
116
|
+
|
|
117
|
+
```ts fileName="src/components/example/example.content.ts"
|
|
118
|
+
const exampleContent = {
|
|
119
|
+
key: "example",
|
|
120
|
+
autoFill: {
|
|
121
|
+
fr: "./example.fr.content.json",
|
|
122
|
+
es: "./example.es.content.json",
|
|
123
|
+
},
|
|
124
|
+
content: {
|
|
125
|
+
// İçeriğiniz
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Bu, iki ayrı dosya oluşturacaktır:
|
|
131
|
+
|
|
132
|
+
- `src/components/example/example.fr.content.json`
|
|
133
|
+
- `src/components/example/example.es.content.json`
|
|
134
|
+
|
|
135
|
+
> Bu durumda, nesne tüm yerelleri içermiyorsa, Intlayer kalan yerellerin oluşturulmasını atlar.
|
|
136
|
+
|
|
137
|
+
## Belirli Yerel Otodoldurmayı Filtreleme
|
|
138
|
+
|
|
139
|
+
`autoFill` alanı için bir nesne kullanmak, filtre uygulamanıza ve yalnızca belirli yerel dosyalarını oluşturmanıza olanak tanır.
|
|
140
|
+
|
|
141
|
+
```ts fileName="src/components/example/example.content.ts"
|
|
142
|
+
const exampleContent = {
|
|
143
|
+
key: "example",
|
|
144
|
+
autoFill: {
|
|
145
|
+
fr: "./example.fr.content.json",
|
|
146
|
+
},
|
|
147
|
+
content: {
|
|
148
|
+
// İçeriğiniz
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Bu sadece Fransızca çeviri dosyasını oluşturacaktır.
|
|
154
|
+
|
|
155
|
+
## Yol Değişkenleri
|
|
156
|
+
|
|
157
|
+
`autoFill` yolu içinde değişkenler kullanarak oluşturulan dosyaların hedef yollarını dinamik olarak çözebilirsiniz.
|
|
158
|
+
|
|
159
|
+
**Kullanılabilir değişkenler:**
|
|
160
|
+
|
|
161
|
+
- `{{locale}}` – Yerel kodu (örneğin `fr`, `es`)
|
|
162
|
+
- `{{fileName}}` – Dosya adı (örneğin `index`)
|
|
163
|
+
- `{{key}}` – Sözlük anahtarı (örneğin `example`)
|
|
164
|
+
|
|
165
|
+
```ts fileName="src/components/example/index.content.ts"
|
|
166
|
+
const exampleContent = {
|
|
167
|
+
key: "example",
|
|
168
|
+
autoFill: "/messages/{{locale}}/{{key}}.content.json",
|
|
169
|
+
content: {
|
|
170
|
+
// İçeriğiniz
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Bu, aşağıdaki dosyaları oluşturacaktır:
|
|
176
|
+
|
|
177
|
+
- `/messages/fr/example.content.json`
|
|
178
|
+
- `/messages/es/example.content.json`
|
|
179
|
+
|
|
180
|
+
```ts fileName="src/components/example/index.content.ts"
|
|
181
|
+
const exampleContent = {
|
|
182
|
+
key: "example",
|
|
183
|
+
autoFill: "./{{fileName}}.content.json",
|
|
184
|
+
content: {
|
|
185
|
+
// İçeriğiniz
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Bu, aşağıdaki dosyaları oluşturacaktır:
|
|
191
|
+
|
|
192
|
+
- `./index.content.json`
|
|
193
|
+
- `./index.content.json`
|
|
194
|
+
|
|
195
|
+
## Doküman Geçmişi
|
|
196
|
+
|
|
197
|
+
| Sürüm | Tarih | Değişiklikler |
|
|
198
|
+
| ------- | ---------- | --------------------------- |
|
|
199
|
+
| 6.0.0 | 2025-09-20 | Küresel yapılandırma eklendi |
|
|
200
|
+
| 6.0.0 | 2025-09-17 | `{{fileName}}` değişkeni eklendi |
|
|
201
|
+
| 5.5.10 | 2025-06-29 | Geçmiş başlatıldı |
|