@intlayer/docs 7.5.0-canary.1 → 7.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -19
- package/blog/ar/intlayer_with_i18next.md +1 -1
- package/blog/ar/intlayer_with_next-i18next.md +1 -1
- package/blog/ar/intlayer_with_next-intl.md +1 -1
- package/blog/ar/intlayer_with_react-i18next.md +1 -1
- package/blog/ar/intlayer_with_react-intl.md +1 -1
- package/blog/ar/intlayer_with_vue-i18n.md +1 -1
- package/blog/ar/l10n_platform_alternative/Lokalise.md +80 -0
- package/blog/ar/l10n_platform_alternative/crowdin.md +86 -0
- package/blog/ar/l10n_platform_alternative/phrase.md +82 -0
- package/blog/de/intlayer_with_i18next.md +1 -1
- package/blog/de/intlayer_with_next-i18next.md +1 -1
- package/blog/de/intlayer_with_next-intl.md +1 -1
- package/blog/de/intlayer_with_react-i18next.md +1 -1
- package/blog/de/intlayer_with_react-intl.md +1 -1
- package/blog/de/intlayer_with_vue-i18n.md +1 -1
- package/blog/de/l10n_platform_alternative/Lokalise.md +84 -0
- package/blog/de/l10n_platform_alternative/crowdin.md +80 -0
- package/blog/de/l10n_platform_alternative/phrase.md +82 -0
- package/blog/en/intlayer_with_i18next.md +1 -1
- package/blog/en/intlayer_with_next-i18next.md +1 -1
- package/blog/en/intlayer_with_next-intl.md +1 -1
- package/blog/en/intlayer_with_react-i18next.md +1 -1
- package/blog/en/intlayer_with_react-intl.md +1 -1
- package/blog/en/intlayer_with_vue-i18n.md +1 -1
- package/blog/en/l10n_platform_alternative/Lokalise.md +80 -0
- package/blog/en/l10n_platform_alternative/crowdin.md +80 -0
- package/blog/en/l10n_platform_alternative/phrase.md +78 -0
- package/blog/en-GB/intlayer_with_i18next.md +1 -1
- package/blog/en-GB/intlayer_with_next-i18next.md +1 -1
- package/blog/en-GB/intlayer_with_next-intl.md +1 -1
- package/blog/en-GB/intlayer_with_react-i18next.md +1 -1
- package/blog/en-GB/intlayer_with_react-intl.md +1 -1
- package/blog/en-GB/intlayer_with_vue-i18n.md +1 -1
- package/blog/en-GB/l10n_platform_alternative/Lokalise.md +80 -0
- package/blog/en-GB/l10n_platform_alternative/crowdin.md +80 -0
- package/blog/en-GB/l10n_platform_alternative/phrase.md +78 -0
- package/blog/es/intlayer_with_i18next.md +1 -1
- package/blog/es/intlayer_with_next-i18next.md +1 -1
- package/blog/es/intlayer_with_next-intl.md +1 -1
- package/blog/es/intlayer_with_react-i18next.md +1 -1
- package/blog/es/intlayer_with_react-intl.md +1 -1
- package/blog/es/intlayer_with_vue-i18n.md +1 -1
- package/blog/es/l10n_platform_alternative/Lokalise.md +80 -0
- package/blog/es/l10n_platform_alternative/crowdin.md +86 -0
- package/blog/es/l10n_platform_alternative/phrase.md +84 -0
- package/blog/fr/intlayer_with_i18next.md +1 -1
- package/blog/fr/intlayer_with_next-i18next.md +1 -1
- package/blog/fr/intlayer_with_next-intl.md +1 -1
- package/blog/fr/intlayer_with_react-i18next.md +1 -1
- package/blog/fr/intlayer_with_react-intl.md +1 -1
- package/blog/fr/intlayer_with_vue-i18n.md +1 -1
- package/blog/fr/l10n_platform_alternative/Lokalise.md +84 -0
- package/blog/fr/l10n_platform_alternative/crowdin.md +86 -0
- package/blog/fr/l10n_platform_alternative/phrase.md +91 -0
- package/blog/hi/intlayer_with_i18next.md +1 -1
- package/blog/hi/intlayer_with_next-i18next.md +1 -1
- package/blog/hi/intlayer_with_next-intl.md +1 -1
- package/blog/hi/intlayer_with_react-i18next.md +1 -1
- package/blog/hi/intlayer_with_react-intl.md +1 -1
- package/blog/hi/intlayer_with_vue-i18n.md +1 -1
- package/blog/hi/l10n_platform_alternative/Lokalise.md +86 -0
- package/blog/hi/l10n_platform_alternative/crowdin.md +84 -0
- package/blog/hi/l10n_platform_alternative/phrase.md +78 -0
- package/blog/id/intlayer_with_i18next.md +1 -1
- package/blog/id/intlayer_with_next-i18next.md +1 -1
- package/blog/id/intlayer_with_next-intl.md +1 -1
- package/blog/id/intlayer_with_react-i18next.md +1 -1
- package/blog/id/intlayer_with_react-intl.md +1 -1
- package/blog/id/intlayer_with_vue-i18n.md +1 -1
- package/blog/id/l10n_platform_alternative/Lokalise.md +86 -0
- package/blog/id/l10n_platform_alternative/crowdin.md +84 -0
- package/blog/id/l10n_platform_alternative/phrase.md +89 -0
- package/blog/it/intlayer_with_i18next.md +1 -1
- package/blog/it/intlayer_with_next-i18next.md +1 -1
- package/blog/it/intlayer_with_next-intl.md +1 -1
- package/blog/it/intlayer_with_react-i18next.md +1 -1
- package/blog/it/intlayer_with_react-intl.md +1 -1
- package/blog/it/intlayer_with_vue-i18n.md +1 -1
- package/blog/it/l10n_platform_alternative/Lokalise.md +84 -0
- package/blog/it/l10n_platform_alternative/crowdin.md +86 -0
- package/blog/it/l10n_platform_alternative/phrase.md +82 -0
- package/blog/ja/intlayer_with_i18next.md +1 -1
- package/blog/ja/intlayer_with_next-i18next.md +1 -1
- package/blog/ja/intlayer_with_next-intl.md +1 -1
- package/blog/ja/intlayer_with_react-i18next.md +1 -1
- package/blog/ja/intlayer_with_react-intl.md +1 -1
- package/blog/ja/intlayer_with_vue-i18n.md +1 -1
- package/blog/ja/l10n_platform_alternative/Lokalise.md +80 -0
- package/blog/ja/l10n_platform_alternative/crowdin.md +80 -0
- package/blog/ja/l10n_platform_alternative/phrase.md +78 -0
- package/blog/ko/intlayer_with_i18next.md +1 -1
- package/blog/ko/intlayer_with_next-i18next.md +1 -1
- package/blog/ko/intlayer_with_next-intl.md +1 -1
- package/blog/ko/intlayer_with_react-i18next.md +1 -1
- package/blog/ko/intlayer_with_react-intl.md +1 -1
- package/blog/ko/intlayer_with_vue-i18n.md +1 -1
- package/blog/ko/l10n_platform_alternative/Lokalise.md +80 -0
- package/blog/ko/l10n_platform_alternative/crowdin.md +86 -0
- package/blog/ko/l10n_platform_alternative/phrase.md +78 -0
- package/blog/pl/intlayer_with_i18next.md +1 -1
- package/blog/pl/intlayer_with_next-i18next.md +1 -1
- package/blog/pl/intlayer_with_next-intl.md +1 -1
- package/blog/pl/intlayer_with_react-i18next.md +1 -1
- package/blog/pl/intlayer_with_react-intl.md +1 -1
- package/blog/pl/intlayer_with_vue-i18n.md +1 -1
- package/blog/pl/l10n_platform_alternative/Lokalise.md +84 -0
- package/blog/pl/l10n_platform_alternative/crowdin.md +80 -0
- package/blog/pl/l10n_platform_alternative/phrase.md +82 -0
- package/blog/pt/intlayer_with_i18next.md +1 -1
- package/blog/pt/intlayer_with_next-i18next.md +1 -1
- package/blog/pt/intlayer_with_next-intl.md +1 -1
- package/blog/pt/intlayer_with_react-i18next.md +1 -1
- package/blog/pt/intlayer_with_react-intl.md +1 -1
- package/blog/pt/intlayer_with_vue-i18n.md +1 -1
- package/blog/pt/l10n_platform_alternative/Lokalise.md +80 -0
- package/blog/pt/l10n_platform_alternative/crowdin.md +86 -0
- package/blog/pt/l10n_platform_alternative/phrase.md +78 -0
- package/blog/ru/intlayer_with_i18next.md +1 -1
- package/blog/ru/intlayer_with_next-i18next.md +1 -1
- package/blog/ru/intlayer_with_next-intl.md +1 -1
- package/blog/ru/intlayer_with_react-i18next.md +1 -1
- package/blog/ru/intlayer_with_react-intl.md +1 -1
- package/blog/ru/intlayer_with_vue-i18n.md +1 -1
- package/blog/ru/l10n_platform_alternative/Lokalise.md +80 -0
- package/blog/ru/l10n_platform_alternative/crowdin.md +86 -0
- package/blog/ru/l10n_platform_alternative/phrase.md +82 -0
- package/blog/tr/intlayer_with_i18next.md +1 -1
- package/blog/tr/intlayer_with_next-i18next.md +1 -1
- package/blog/tr/intlayer_with_next-intl.md +1 -1
- package/blog/tr/intlayer_with_react-i18next.md +1 -1
- package/blog/tr/intlayer_with_vue-i18n.md +1 -1
- package/blog/tr/l10n_platform_alternative/Lokalise.md +80 -0
- package/blog/tr/l10n_platform_alternative/crowdin.md +80 -0
- package/blog/tr/l10n_platform_alternative/phrase.md +89 -0
- package/blog/vi/intlayer_with_i18next.md +1 -1
- package/blog/vi/intlayer_with_next-i18next.md +1 -1
- package/blog/vi/intlayer_with_next-intl.md +1 -1
- package/blog/vi/intlayer_with_react-i18next.md +1 -1
- package/blog/vi/intlayer_with_react-intl.md +1 -1
- package/blog/vi/intlayer_with_vue-i18n.md +1 -1
- package/blog/vi/l10n_platform_alternative/Lokalise.md +87 -0
- package/blog/vi/l10n_platform_alternative/crowdin.md +80 -0
- package/blog/vi/l10n_platform_alternative/phrase.md +82 -0
- package/blog/zh/intlayer_with_i18next.md +1 -1
- package/blog/zh/intlayer_with_next-i18next.md +1 -1
- package/blog/zh/intlayer_with_next-intl.md +1 -1
- package/blog/zh/intlayer_with_react-i18next.md +1 -1
- package/blog/zh/intlayer_with_react-intl.md +1 -1
- package/blog/zh/intlayer_with_vue-i18n.md +1 -1
- package/blog/zh/l10n_platform_alternative/Lokalise.md +80 -0
- package/blog/zh/l10n_platform_alternative/crowdin.md +84 -0
- package/blog/zh/l10n_platform_alternative/phrase.md +84 -0
- package/dist/cjs/common.cjs +6 -6
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +61 -4
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +4 -4
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +4 -4
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +4 -4
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +57 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +3 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/docs/ar/dictionary/content_file.md +1 -1
- package/docs/ar/intlayer_CMS.md +1 -1
- package/docs/ar/intlayer_visual_editor.md +1 -1
- package/docs/ar/intlayer_with_nextjs_15.md +1 -1
- package/docs/ar/intlayer_with_nextjs_16.md +1 -1
- package/docs/ar/intlayer_with_nuxt.md +3 -3
- package/docs/ar/intlayer_with_react_router_v7.md +1 -1
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/ar/intlayer_with_tanstack.md +1 -1
- package/docs/ar/intlayer_with_vite+react.md +1 -1
- package/docs/ar/intlayer_with_vite+vue.md +1 -1
- package/docs/ar/packages/intlayer/getLocaleName.md +17 -1
- package/docs/ar/plugins/sync-json.md +1 -1
- package/docs/de/dictionary/content_file.md +1 -1
- package/docs/de/intlayer_CMS.md +1 -1
- package/docs/de/intlayer_visual_editor.md +1 -1
- package/docs/de/intlayer_with_nextjs_15.md +1 -1
- package/docs/de/intlayer_with_nextjs_16.md +1 -1
- package/docs/de/intlayer_with_nuxt.md +3 -3
- package/docs/de/intlayer_with_react_router_v7.md +1 -1
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/de/intlayer_with_tanstack.md +1 -1
- package/docs/de/intlayer_with_vite+react.md +1 -1
- package/docs/de/intlayer_with_vite+vue.md +1 -1
- package/docs/de/packages/intlayer/getLocaleName.md +17 -1
- package/docs/de/plugins/sync-json.md +1 -1
- package/docs/en/dictionary/content_file.md +1 -1
- package/docs/en/intlayer_CMS.md +1 -1
- package/docs/en/intlayer_visual_editor.md +1 -1
- package/docs/en/intlayer_with_nextjs_15.md +1 -1
- package/docs/en/intlayer_with_nextjs_16.md +1 -1
- package/docs/en/intlayer_with_nuxt.md +3 -3
- package/docs/en/intlayer_with_react_router_v7.md +1 -1
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/en/intlayer_with_tanstack.md +1 -1
- package/docs/en/intlayer_with_vite+preact.md +1 -2
- package/docs/en/intlayer_with_vite+react.md +1 -1
- package/docs/en/intlayer_with_vite+vue.md +1 -1
- package/docs/en/packages/intlayer/getLocaleName.md +17 -0
- package/docs/en/plugins/sync-json.md +1 -1
- package/docs/en-GB/dictionary/content_file.md +1 -1
- package/docs/en-GB/intlayer_CMS.md +1 -1
- package/docs/en-GB/intlayer_visual_editor.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_15.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_16.md +1 -1
- package/docs/en-GB/intlayer_with_nuxt.md +3 -3
- package/docs/en-GB/intlayer_with_react_router_v7.md +1 -1
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/en-GB/intlayer_with_tanstack.md +1 -1
- package/docs/en-GB/intlayer_with_vite+react.md +1 -1
- package/docs/en-GB/intlayer_with_vite+vue.md +1 -1
- package/docs/en-GB/packages/intlayer/getLocaleName.md +17 -1
- package/docs/en-GB/plugins/sync-json.md +1 -1
- package/docs/es/dictionary/content_file.md +1 -1
- package/docs/es/intlayer_CMS.md +1 -1
- package/docs/es/intlayer_visual_editor.md +1 -1
- package/docs/es/intlayer_with_nextjs_15.md +1 -1
- package/docs/es/intlayer_with_nextjs_16.md +1 -1
- package/docs/es/intlayer_with_nuxt.md +3 -3
- package/docs/es/intlayer_with_react_router_v7.md +1 -1
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/es/intlayer_with_tanstack.md +1 -1
- package/docs/es/intlayer_with_vite+react.md +1 -1
- package/docs/es/intlayer_with_vite+vue.md +1 -1
- package/docs/es/packages/intlayer/getLocaleName.md +17 -1
- package/docs/es/plugins/sync-json.md +1 -1
- package/docs/fr/dictionary/content_file.md +1 -1
- package/docs/fr/intlayer_CMS.md +1 -1
- package/docs/fr/intlayer_visual_editor.md +1 -1
- package/docs/fr/intlayer_with_nextjs_15.md +1 -1
- package/docs/fr/intlayer_with_nextjs_16.md +1 -1
- package/docs/fr/intlayer_with_nuxt.md +3 -3
- package/docs/fr/intlayer_with_react_router_v7.md +1 -1
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/fr/intlayer_with_tanstack.md +1 -1
- package/docs/fr/intlayer_with_vite+react.md +1 -1
- package/docs/fr/intlayer_with_vite+vue.md +1 -1
- package/docs/fr/packages/intlayer/getLocaleName.md +17 -1
- package/docs/fr/plugins/sync-json.md +1 -1
- package/docs/hi/dictionary/content_file.md +1 -1
- package/docs/hi/intlayer_CMS.md +1 -1
- package/docs/hi/intlayer_visual_editor.md +1 -1
- package/docs/hi/intlayer_with_nextjs_15.md +1 -1
- package/docs/hi/intlayer_with_nextjs_16.md +1 -1
- package/docs/hi/intlayer_with_nuxt.md +3 -3
- package/docs/hi/intlayer_with_react_router_v7.md +1 -1
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/hi/intlayer_with_tanstack.md +1 -1
- package/docs/hi/intlayer_with_vite+react.md +1 -1
- package/docs/hi/intlayer_with_vite+vue.md +1 -1
- package/docs/hi/packages/intlayer/getLocaleName.md +17 -1
- package/docs/hi/plugins/sync-json.md +1 -1
- package/docs/id/dictionary/content_file.md +1 -1
- package/docs/id/intlayer_CMS.md +1 -1
- package/docs/id/intlayer_visual_editor.md +1 -1
- package/docs/id/intlayer_with_nextjs_15.md +1 -1
- package/docs/id/intlayer_with_nextjs_16.md +1 -1
- package/docs/id/intlayer_with_nuxt.md +3 -3
- package/docs/id/intlayer_with_react_router_v7.md +1 -1
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/id/intlayer_with_tanstack.md +1 -1
- package/docs/id/intlayer_with_vite+preact.md +1 -2
- package/docs/id/intlayer_with_vite+react.md +1 -1
- package/docs/id/intlayer_with_vite+vue.md +1 -1
- package/docs/id/packages/intlayer/getLocaleName.md +17 -0
- package/docs/id/plugins/sync-json.md +1 -1
- package/docs/it/dictionary/content_file.md +1 -1
- package/docs/it/intlayer_CMS.md +1 -1
- package/docs/it/intlayer_visual_editor.md +1 -1
- package/docs/it/intlayer_with_nextjs_15.md +1 -1
- package/docs/it/intlayer_with_nextjs_16.md +1 -1
- package/docs/it/intlayer_with_nuxt.md +3 -3
- package/docs/it/intlayer_with_react_router_v7.md +1 -1
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/it/intlayer_with_tanstack.md +1 -1
- package/docs/it/intlayer_with_vite+react.md +1 -1
- package/docs/it/intlayer_with_vite+vue.md +1 -1
- package/docs/it/packages/intlayer/getLocaleName.md +17 -1
- package/docs/it/plugins/sync-json.md +1 -1
- package/docs/ja/dictionary/content_file.md +1 -1
- package/docs/ja/intlayer_CMS.md +1 -1
- package/docs/ja/intlayer_visual_editor.md +1 -1
- package/docs/ja/intlayer_with_nextjs_15.md +1 -1
- package/docs/ja/intlayer_with_nextjs_16.md +1 -1
- package/docs/ja/intlayer_with_nuxt.md +3 -3
- package/docs/ja/intlayer_with_react_router_v7.md +1 -1
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/ja/intlayer_with_tanstack.md +1 -1
- package/docs/ja/intlayer_with_vite+react.md +1 -1
- package/docs/ja/intlayer_with_vite+vue.md +1 -1
- package/docs/ja/packages/intlayer/getLocaleName.md +17 -1
- package/docs/ja/plugins/sync-json.md +1 -1
- package/docs/ko/dictionary/content_file.md +1 -1
- package/docs/ko/intlayer_CMS.md +1 -1
- package/docs/ko/intlayer_visual_editor.md +1 -1
- package/docs/ko/intlayer_with_nextjs_15.md +1 -1
- package/docs/ko/intlayer_with_nextjs_16.md +1 -1
- package/docs/ko/intlayer_with_nuxt.md +3 -3
- package/docs/ko/intlayer_with_react_router_v7.md +1 -1
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/ko/intlayer_with_tanstack.md +1 -1
- package/docs/ko/intlayer_with_vite+react.md +1 -1
- package/docs/ko/intlayer_with_vite+vue.md +1 -1
- package/docs/ko/packages/intlayer/getLocaleName.md +17 -1
- package/docs/ko/plugins/sync-json.md +1 -1
- package/docs/pl/dictionary/content_file.md +1 -1
- package/docs/pl/intlayer_CMS.md +1 -1
- package/docs/pl/intlayer_visual_editor.md +1 -1
- package/docs/pl/intlayer_with_nextjs_15.md +1 -1
- package/docs/pl/intlayer_with_nextjs_16.md +1 -1
- package/docs/pl/intlayer_with_nuxt.md +3 -3
- package/docs/pl/intlayer_with_react_router_v7.md +1 -1
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +2 -2
- package/docs/pl/intlayer_with_tanstack.md +1 -1
- package/docs/pl/intlayer_with_vite+preact.md +1 -2
- package/docs/pl/intlayer_with_vite+react.md +1 -1
- package/docs/pl/intlayer_with_vite+vue.md +1 -1
- package/docs/pl/packages/intlayer/getLocaleName.md +17 -0
- package/docs/pl/plugins/sync-json.md +1 -1
- package/docs/pt/dictionary/content_file.md +1 -1
- package/docs/pt/intlayer_CMS.md +1 -1
- package/docs/pt/intlayer_visual_editor.md +1 -1
- package/docs/pt/intlayer_with_nextjs_15.md +1 -1
- package/docs/pt/intlayer_with_nextjs_16.md +1 -1
- package/docs/pt/intlayer_with_nuxt.md +3 -3
- package/docs/pt/intlayer_with_react_router_v7.md +1 -1
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/pt/intlayer_with_tanstack.md +1 -1
- package/docs/pt/intlayer_with_vite+react.md +1 -1
- package/docs/pt/intlayer_with_vite+vue.md +1 -1
- package/docs/pt/packages/intlayer/getLocaleName.md +17 -1
- package/docs/pt/plugins/sync-json.md +1 -1
- package/docs/ru/dictionary/content_file.md +1 -1
- package/docs/ru/intlayer_CMS.md +1 -1
- package/docs/ru/intlayer_visual_editor.md +1 -1
- package/docs/ru/intlayer_with_nextjs_15.md +1 -1
- package/docs/ru/intlayer_with_nextjs_16.md +1 -1
- package/docs/ru/intlayer_with_nuxt.md +3 -3
- package/docs/ru/intlayer_with_react_router_v7.md +1 -1
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/ru/intlayer_with_tanstack.md +1 -1
- package/docs/ru/intlayer_with_vite+react.md +1 -1
- package/docs/ru/intlayer_with_vite+vue.md +1 -1
- package/docs/ru/packages/intlayer/getLocaleName.md +17 -1
- package/docs/ru/plugins/sync-json.md +1 -1
- package/docs/tr/dictionary/content_file.md +1 -1
- package/docs/tr/intlayer_CMS.md +1 -1
- package/docs/tr/intlayer_visual_editor.md +1 -1
- package/docs/tr/intlayer_with_nextjs_15.md +1 -1
- package/docs/tr/intlayer_with_nextjs_16.md +1 -1
- package/docs/tr/intlayer_with_nuxt.md +3 -3
- package/docs/tr/intlayer_with_react_router_v7.md +1 -1
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/tr/intlayer_with_tanstack.md +1 -1
- package/docs/tr/intlayer_with_vite+react.md +1 -1
- package/docs/tr/intlayer_with_vite+vue.md +1 -1
- package/docs/tr/packages/intlayer/getLocaleName.md +17 -0
- package/docs/tr/plugins/sync-json.md +1 -1
- package/docs/vi/dictionary/content_file.md +1 -1
- package/docs/vi/intlayer_CMS.md +1 -1
- package/docs/vi/intlayer_visual_editor.md +1 -1
- package/docs/vi/intlayer_with_nextjs_15.md +1 -1
- package/docs/vi/intlayer_with_nextjs_16.md +1 -1
- package/docs/vi/intlayer_with_nuxt.md +3 -3
- package/docs/vi/intlayer_with_react_router_v7.md +1 -1
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/vi/intlayer_with_tanstack.md +1 -1
- package/docs/vi/intlayer_with_vite+preact.md +1 -2
- package/docs/vi/intlayer_with_vite+react.md +1 -1
- package/docs/vi/intlayer_with_vite+vue.md +1 -1
- package/docs/vi/packages/intlayer/getLocaleName.md +17 -0
- package/docs/vi/plugins/sync-json.md +1 -1
- package/docs/zh/dictionary/content_file.md +1 -1
- package/docs/zh/intlayer_CMS.md +1 -1
- package/docs/zh/intlayer_visual_editor.md +1 -1
- package/docs/zh/intlayer_with_nextjs_15.md +1 -1
- package/docs/zh/intlayer_with_nextjs_16.md +1 -1
- package/docs/zh/intlayer_with_nuxt.md +3 -3
- package/docs/zh/intlayer_with_react_router_v7.md +1 -1
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/zh/intlayer_with_tanstack.md +1 -1
- package/docs/zh/intlayer_with_vite+react.md +1 -1
- package/docs/zh/intlayer_with_vite+vue.md +1 -1
- package/docs/zh/packages/intlayer/getLocaleName.md +17 -1
- package/docs/zh/plugins/sync-json.md +1 -1
- package/package.json +8 -8
- package/src/generated/blog.entry.ts +57 -0
|
@@ -54,7 +54,7 @@ Intlayerを使うことで、以下が可能になります:
|
|
|
54
54
|
<Tab defaultTab="video">
|
|
55
55
|
<TabItem label="Video" value="video">
|
|
56
56
|
|
|
57
|
-
<iframe title="How to translate your React Router v7 (File-System Routes) app using Intlayer" class="m-auto aspect-
|
|
57
|
+
<iframe title="How to translate your React Router v7 (File-System Routes) app using Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
58
58
|
|
|
59
59
|
</TabItem>
|
|
60
60
|
<TabItem label="Code" value="code">
|
|
@@ -57,7 +57,7 @@ Intlayerを使うことで、以下が可能になります:
|
|
|
57
57
|
<Tab defaultTab="video">
|
|
58
58
|
<TabItem label="Video" value="video">
|
|
59
59
|
|
|
60
|
-
<iframe title="Tanstack Startに最適なi18nソリューション?Intlayerを発見" class="m-auto aspect-
|
|
60
|
+
<iframe title="Tanstack Startに最適なi18nソリューション?Intlayerを発見" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/_XTdKVWaeqg?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
61
61
|
|
|
62
62
|
</TabItem>
|
|
63
63
|
<TabItem label="Code" value="code">
|
|
@@ -47,7 +47,7 @@ Intlayerを使うと、以下が可能です:
|
|
|
47
47
|
<Tab defaultTab="video">
|
|
48
48
|
<TabItem label="ビデオ" value="video">
|
|
49
49
|
|
|
50
|
-
<iframe title="ViteとReactに最適なi18nソリューション?Intlayerを発見" class="m-auto aspect-
|
|
50
|
+
<iframe title="ViteとReactに最適なi18nソリューション?Intlayerを発見" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?si=VaKmrYMmXjo3xpk2"/>
|
|
51
51
|
|
|
52
52
|
</TabItem>
|
|
53
53
|
<TabItem label="コード" value="code">
|
|
@@ -44,7 +44,7 @@ Intlayer を使うと、以下が可能です:
|
|
|
44
44
|
<Tab defaultTab="video">
|
|
45
45
|
<TabItem label="ビデオ" value="video">
|
|
46
46
|
|
|
47
|
-
<iframe title="The best i18n solution for Vite and Vue? Discover Intlayer" class="m-auto aspect-
|
|
47
|
+
<iframe title="The best i18n solution for Vite and Vue? Discover Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/IE3XWkZ6a5U?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
48
48
|
|
|
49
49
|
</TabItem>
|
|
50
50
|
<TabItem label="コード" value="code">
|
|
@@ -19,6 +19,9 @@ slugs:
|
|
|
19
19
|
- intlayer
|
|
20
20
|
- getLocaleName
|
|
21
21
|
history:
|
|
22
|
+
- version: 7.5.0
|
|
23
|
+
date: 2025-12-18
|
|
24
|
+
changes: React Native と古い環境用の polyfills を追加
|
|
22
25
|
- version: 5.5.10
|
|
23
26
|
date: 2025-06-29
|
|
24
27
|
changes: 履歴の初期化
|
|
@@ -33,7 +36,6 @@ history:
|
|
|
33
36
|
## パラメーター
|
|
34
37
|
|
|
35
38
|
- `displayLocale: Locales`
|
|
36
|
-
|
|
37
39
|
- **説明**: 対象ロケールの名前が表示されるロケール。
|
|
38
40
|
- **型**: 有効なロケールを表す列挙型または文字列。
|
|
39
41
|
|
|
@@ -117,3 +119,17 @@ getLocaleName("unknown-locale"); // 出力: "Unknown locale"
|
|
|
117
119
|
- 関数はデフォルトで `displayLocale` 自身の名前を返します。
|
|
118
120
|
- **翻訳が見つからない場合:**
|
|
119
121
|
- `localeNameTranslations` に `targetLocale` または特定の `displayLocale` のエントリが存在しない場合、関数は `ownLocalesName` にフォールバックするか、 `"Unknown locale"` を返します。
|
|
122
|
+
|
|
123
|
+
## React Native と古い環境用の Polyfills
|
|
124
|
+
|
|
125
|
+
`getLocaleName` 関数は `Intl.DisplayNames` API に依存しており、この API は React Native や古い JavaScript 環境では利用できません。これらの環境で `getLocaleName` を使用する場合は、polyfills を追加する必要があります。
|
|
126
|
+
|
|
127
|
+
アプリケーションの早期に polyfills をインポートしてください。理想的には、エントリポイントファイル(例:`index.js`、`App.tsx`、または `main.tsx`)で行います:
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
import "intl";
|
|
131
|
+
import "@formatjs/intl-locale/polyfill";
|
|
132
|
+
import "@formatjs/intl-displaynames/polyfill";
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
詳細については、[FormatJS polyfills ドキュメント](https://formatjs.io/docs/polyfills/intl-displaynames/)を参照してください。
|
|
@@ -34,7 +34,7 @@ history:
|
|
|
34
34
|
|
|
35
35
|
# Sync JSON(i18nブリッジ)- ICU / i18nextサポート付きSync JSON
|
|
36
36
|
|
|
37
|
-
<iframe title="IntlayerでJSON翻訳を同期状態に保つ方法" class="m-auto aspect-
|
|
37
|
+
<iframe title="IntlayerでJSON翻訳を同期状態に保つ方法" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
38
38
|
|
|
39
39
|
既存のi18nスタックにIntlayerをアドオンとして使用します。このプラグインはJSONメッセージをIntlayerの辞書と同期させるので、以下が可能です:
|
|
40
40
|
|
|
@@ -25,7 +25,7 @@ history:
|
|
|
25
25
|
|
|
26
26
|
# 콘텐츠 파일
|
|
27
27
|
|
|
28
|
-
<iframe title="i18n, Markdown, JSON… 모든 것을 관리하는 단일 솔루션 | Intlayer" class="m-auto aspect-
|
|
28
|
+
<iframe title="i18n, Markdown, JSON… 모든 것을 관리하는 단일 솔루션 | Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/1VHgSY_j9_I?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
29
29
|
|
|
30
30
|
## 콘텐츠 파일이란 무엇인가요?
|
|
31
31
|
|
package/docs/ko/intlayer_CMS.md
CHANGED
|
@@ -31,7 +31,7 @@ history:
|
|
|
31
31
|
|
|
32
32
|
# Intlayer 콘텐츠 관리 시스템(CMS) 문서
|
|
33
33
|
|
|
34
|
-
<iframe title="웹 앱을 위한 비주얼 에디터 + CMS: Intlayer 설명" class="m-auto aspect-
|
|
34
|
+
<iframe title="웹 앱을 위한 비주얼 에디터 + CMS: Intlayer 설명" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/UDDTnirwi_4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
35
35
|
|
|
36
36
|
Intlayer CMS는 Intlayer 프로젝트의 콘텐츠를 외부화할 수 있게 해주는 애플리케이션입니다.
|
|
37
37
|
|
|
@@ -24,7 +24,7 @@ history:
|
|
|
24
24
|
|
|
25
25
|
# Intlayer Visual Editor Documentation
|
|
26
26
|
|
|
27
|
-
<iframe title="Visual Editor + CMS for Your Web App: Intlayer Explained" class="m-auto aspect-
|
|
27
|
+
<iframe title="Visual Editor + CMS for Your Web App: Intlayer Explained" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/UDDTnirwi_4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
28
28
|
|
|
29
29
|
Intlayer Visual Editor는 시각적 편집기를 사용하여 콘텐츠 선언 파일과 상호작용할 수 있도록 웹사이트를 래핑하는 도구입니다.
|
|
30
30
|
|
|
@@ -25,7 +25,7 @@ history:
|
|
|
25
25
|
|
|
26
26
|
# Intlayer로 Next.js 15 번역하기 | 국제화(i18n)
|
|
27
27
|
|
|
28
|
-
<iframe title="Next.js를 위한 최고의 i18n 솔루션? Intlayer를 발견하세요" class="m-auto aspect-
|
|
28
|
+
<iframe title="Next.js를 위한 최고의 i18n 솔루션? Intlayer를 발견하세요" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
29
29
|
|
|
30
30
|
GitHub에서 [애플리케이션 템플릿](https://github.com/aymericzip/intlayer-next-15-template)을 확인하세요.
|
|
31
31
|
|
|
@@ -27,7 +27,7 @@ history:
|
|
|
27
27
|
<Tab defaultTab="video">
|
|
28
28
|
<TabItem label="Video" value="video">
|
|
29
29
|
|
|
30
|
-
<iframe title="Next.js를 위한 최고의 i18n 솔루션? Intlayer를 발견하세요" class="m-auto aspect-
|
|
30
|
+
<iframe title="Next.js를 위한 최고의 i18n 솔루션? Intlayer를 발견하세요" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
31
31
|
|
|
32
32
|
</TabItem>
|
|
33
33
|
<TabItem label="Code" value="code">
|
|
@@ -49,7 +49,7 @@ Intlayer를 사용하면 다음을 할 수 있습니다:
|
|
|
49
49
|
<Tab defaultTab="video">
|
|
50
50
|
<TabItem label="비디오" value="video">
|
|
51
51
|
|
|
52
|
-
<iframe title="Intlayer를 사용하여 Nuxt 및 Vue 앱을 번역하는 방법? Intlayer 알아보기" class="m-auto aspect-
|
|
52
|
+
<iframe title="Intlayer를 사용하여 Nuxt 및 Vue 앱을 번역하는 방법? Intlayer 알아보기" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/nhUcUAVQ6eQ?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
53
53
|
|
|
54
54
|
</TabItem>
|
|
55
55
|
<TabItem label="코드" value="code">
|
|
@@ -373,11 +373,11 @@ import { useIntlayer } from "vue-intlayer";
|
|
|
373
373
|
const content = useIntlayer("home-page");
|
|
374
374
|
|
|
375
375
|
useHead({
|
|
376
|
-
title: content.metaTitle.
|
|
376
|
+
title: content.metaTitle.raw,
|
|
377
377
|
meta: [
|
|
378
378
|
{
|
|
379
379
|
name: "description",
|
|
380
|
-
content: content.metaDescription.
|
|
380
|
+
content: content.metaDescription.raw,
|
|
381
381
|
},
|
|
382
382
|
],
|
|
383
383
|
});
|
|
@@ -84,7 +84,7 @@ pnpm add vite-intlayer --save-dev
|
|
|
84
84
|
<Tab defaultTab="video">
|
|
85
85
|
<TabItem label="Video" value="video">
|
|
86
86
|
|
|
87
|
-
<iframe title="How to translate your React Router v7 app using Intlayer" class="m-auto aspect-
|
|
87
|
+
<iframe title="How to translate your React Router v7 app using Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
88
88
|
|
|
89
89
|
</TabItem>
|
|
90
90
|
<TabItem label="Code" value="code">
|
|
@@ -84,7 +84,7 @@ pnpm add vite-intlayer --save-dev
|
|
|
84
84
|
<Tab defaultTab="video">
|
|
85
85
|
<TabItem label="Video" value="video">
|
|
86
86
|
|
|
87
|
-
<iframe title="How to translate your React Router v7 (File-System Routes) app using Intlayer" class="m-auto aspect-
|
|
87
|
+
<iframe title="How to translate your React Router v7 (File-System Routes) app using Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
88
88
|
|
|
89
89
|
</TabItem>
|
|
90
90
|
<TabItem label="Code" value="code">
|
|
@@ -57,7 +57,7 @@ Intlayer를 사용하면 다음을 할 수 있습니다:
|
|
|
57
57
|
<Tab defaultTab="video">
|
|
58
58
|
<TabItem label="Video" value="video">
|
|
59
59
|
|
|
60
|
-
<iframe title="Tanstack Start를 위한 최고의 i18n 솔루션? Intlayer를 발견하세요" class="m-auto aspect-
|
|
60
|
+
<iframe title="Tanstack Start를 위한 최고의 i18n 솔루션? Intlayer를 발견하세요" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/_XTdKVWaeqg?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
61
61
|
|
|
62
62
|
</TabItem>
|
|
63
63
|
<TabItem label="Code" value="code">
|
|
@@ -47,7 +47,7 @@ Intlayer를 사용하면 다음을 할 수 있습니다:
|
|
|
47
47
|
<Tab defaultTab="video">
|
|
48
48
|
<TabItem label="비디오" value="video">
|
|
49
49
|
|
|
50
|
-
<iframe title="The best i18n solution for Vite and React? Discover Intlayer" class="m-auto aspect-
|
|
50
|
+
<iframe title="The best i18n solution for Vite and React? Discover Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?si=VaKmrYMmXjo3xpk2"/>
|
|
51
51
|
|
|
52
52
|
</TabItem>
|
|
53
53
|
<TabItem label="코드" value="code">
|
|
@@ -44,7 +44,7 @@ Intlayer를 사용하면 다음을 할 수 있습니다:
|
|
|
44
44
|
<Tab defaultTab="video">
|
|
45
45
|
<TabItem label="비디오" value="video">
|
|
46
46
|
|
|
47
|
-
<iframe title="The best i18n solution for Vite and Vue? Discover Intlayer" class="m-auto aspect-
|
|
47
|
+
<iframe title="The best i18n solution for Vite and Vue? Discover Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/IE3XWkZ6a5U?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
48
48
|
|
|
49
49
|
</TabItem>
|
|
50
50
|
<TabItem label="코드" value="code">
|
|
@@ -19,6 +19,9 @@ slugs:
|
|
|
19
19
|
- intlayer
|
|
20
20
|
- getLocaleName
|
|
21
21
|
history:
|
|
22
|
+
- version: 7.5.0
|
|
23
|
+
date: 2025-12-18
|
|
24
|
+
changes: React Native 및 구형 환경용 polyfills 추가
|
|
22
25
|
- version: 5.5.10
|
|
23
26
|
date: 2025-06-29
|
|
24
27
|
changes: 초기 이력
|
|
@@ -33,7 +36,6 @@ history:
|
|
|
33
36
|
## 매개변수
|
|
34
37
|
|
|
35
38
|
- `displayLocale: Locales`
|
|
36
|
-
|
|
37
39
|
- **설명**: 대상 로케일의 이름이 표시될 로케일입니다.
|
|
38
40
|
- **타입**: 유효한 로케일을 나타내는 열거형 또는 문자열입니다.
|
|
39
41
|
|
|
@@ -117,3 +119,17 @@ getLocaleName("unknown-locale"); // 출력: "Unknown locale"
|
|
|
117
119
|
- 함수는 기본적으로 `displayLocale` 자신의 이름을 반환합니다.
|
|
118
120
|
- **번역 누락:**
|
|
119
121
|
- `localeNameTranslations`에 `targetLocale` 또는 특정 `displayLocale`에 대한 항목이 없으면, 함수는 `ownLocalesName`을 사용하거나 `"Unknown locale"`을 반환합니다.
|
|
122
|
+
|
|
123
|
+
## React Native 및 구형 환경용 Polyfills
|
|
124
|
+
|
|
125
|
+
`getLocaleName` 함수는 `Intl.DisplayNames` API에 의존하며, 이 API는 React Native나 구형 JavaScript 환경에서는 사용할 수 없습니다. 이러한 환경에서 `getLocaleName`을 사용하는 경우 polyfills를 추가해야 합니다.
|
|
126
|
+
|
|
127
|
+
애플리케이션 초기에 polyfills를 가져오세요. 가능하면 진입점 파일(예: `index.js`, `App.tsx`, 또는 `main.tsx`)에서 수행하세요:
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
import "intl";
|
|
131
|
+
import "@formatjs/intl-locale/polyfill";
|
|
132
|
+
import "@formatjs/intl-displaynames/polyfill";
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
자세한 내용은 [FormatJS polyfills 문서](https://formatjs.io/docs/polyfills/intl-displaynames/)를 참조하세요.
|
|
@@ -34,7 +34,7 @@ history:
|
|
|
34
34
|
|
|
35
35
|
# Sync JSON (i18n 브리지) - ICU / i18next 지원이 포함된 Sync JSON
|
|
36
36
|
|
|
37
|
-
<iframe title="Intlayer와 JSON 번역을 동기화 상태로 유지하는 방법" class="m-auto aspect-
|
|
37
|
+
<iframe title="Intlayer와 JSON 번역을 동기화 상태로 유지하는 방법" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
38
38
|
|
|
39
39
|
기존 i18n 스택에 Intlayer를 애드온으로 사용하세요. 이 플러그인은 JSON 메시지를 Intlayer 사전과 동기화하여 다음을 할 수 있습니다:
|
|
40
40
|
|
|
@@ -28,7 +28,7 @@ history:
|
|
|
28
28
|
|
|
29
29
|
# Plik z Treścią
|
|
30
30
|
|
|
31
|
-
<iframe title="i18n, Markdown, JSON… jedno rozwiązanie do zarządzania wszystkim | Intlayer" class="m-auto aspect-
|
|
31
|
+
<iframe title="i18n, Markdown, JSON… jedno rozwiązanie do zarządzania wszystkim | Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/1VHgSY_j9_I?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
32
32
|
|
|
33
33
|
## Czym jest Plik z Treścią?
|
|
34
34
|
|
package/docs/pl/intlayer_CMS.md
CHANGED
|
@@ -31,7 +31,7 @@ history:
|
|
|
31
31
|
|
|
32
32
|
# Dokumentacja Systemu Zarządzania Treścią Intlayer (CMS)
|
|
33
33
|
|
|
34
|
-
<iframe title="Edytor wizualny + CMS dla Twojej aplikacji internetowej: Intlayer wyjaśniony" class="m-auto aspect-
|
|
34
|
+
<iframe title="Edytor wizualny + CMS dla Twojej aplikacji internetowej: Intlayer wyjaśniony" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/UDDTnirwi_4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
35
35
|
|
|
36
36
|
Intlayer CMS to aplikacja, która pozwala na zewnętrzne zarządzanie treścią projektu Intlayer.
|
|
37
37
|
|
|
@@ -33,7 +33,7 @@ history:
|
|
|
33
33
|
|
|
34
34
|
# Dokumentacja Intlayer Visual Editor
|
|
35
35
|
|
|
36
|
-
<iframe title="Edytor wizualny + CMS dla Twojej aplikacji internetowej: wyjaśnienie Intlayer" class="m-auto aspect-
|
|
36
|
+
<iframe title="Edytor wizualny + CMS dla Twojej aplikacji internetowej: wyjaśnienie Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/UDDTnirwi_4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
37
37
|
|
|
38
38
|
Intlayer Visual Editor to narzędzie, które otacza Twoją stronę internetową, aby umożliwić interakcję z plikami deklaracji zawartości za pomocą edytora wizualnego.
|
|
39
39
|
|
|
@@ -71,7 +71,7 @@ Dzięki Intlayer możesz:
|
|
|
71
71
|
<Tab defaultTab="video">
|
|
72
72
|
<TabItem label="Wideo" value="video">
|
|
73
73
|
|
|
74
|
-
<iframe title="Najlepsze rozwiązanie i18n dla Next.js? Odkryj Intlayer" class="m-auto aspect-
|
|
74
|
+
<iframe title="Najlepsze rozwiązanie i18n dla Next.js? Odkryj Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
75
75
|
|
|
76
76
|
</TabItem>
|
|
77
77
|
<TabItem label="Kod" value="code">
|
|
@@ -27,7 +27,7 @@ history:
|
|
|
27
27
|
<Tab defaultTab="video">
|
|
28
28
|
<TabItem label="Video" value="video">
|
|
29
29
|
|
|
30
|
-
<iframe title="Najlepsze rozwiązanie i18n dla Next.js? Odkryj Intlayer" class="m-auto aspect-
|
|
30
|
+
<iframe title="Najlepsze rozwiązanie i18n dla Next.js? Odkryj Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
31
31
|
|
|
32
32
|
</TabItem>
|
|
33
33
|
<TabItem label="Code" value="code">
|
|
@@ -49,7 +49,7 @@ Dzięki Intlayer możesz:
|
|
|
49
49
|
<Tab defaultTab="video">
|
|
50
50
|
<TabItem label="Wideo" value="video">
|
|
51
51
|
|
|
52
|
-
<iframe title="Jak przetłumaczyć swoją aplikację Nuxt i Vue za pomocą Intlayer? Odkryj Intlayer" class="m-auto aspect-
|
|
52
|
+
<iframe title="Jak przetłumaczyć swoją aplikację Nuxt i Vue za pomocą Intlayer? Odkryj Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/nhUcUAVQ6eQ?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
53
53
|
|
|
54
54
|
</TabItem>
|
|
55
55
|
<TabItem label="Kod" value="code">
|
|
@@ -373,11 +373,11 @@ import { useIntlayer } from "vue-intlayer";
|
|
|
373
373
|
const content = useIntlayer("home-page");
|
|
374
374
|
|
|
375
375
|
useHead({
|
|
376
|
-
title: content.metaTitle.
|
|
376
|
+
title: content.metaTitle.raw,
|
|
377
377
|
meta: [
|
|
378
378
|
{
|
|
379
379
|
name: "description",
|
|
380
|
-
content: content.metaDescription.
|
|
380
|
+
content: content.metaDescription.raw,
|
|
381
381
|
},
|
|
382
382
|
],
|
|
383
383
|
});
|
|
@@ -93,7 +93,7 @@ pnpm add vite-intlayer --save-dev
|
|
|
93
93
|
<Tab defaultTab="video">
|
|
94
94
|
<TabItem label="Video" value="video">
|
|
95
95
|
|
|
96
|
-
<iframe title="How to translate your React Router v7 app using Intlayer" class="m-auto aspect-
|
|
96
|
+
<iframe title="How to translate your React Router v7 app using Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
97
97
|
|
|
98
98
|
</TabItem>
|
|
99
99
|
<TabItem label="Code" value="code">
|
|
@@ -56,7 +56,7 @@ Dzięki Intlayer możesz:
|
|
|
56
56
|
<Tab defaultTab="video">
|
|
57
57
|
<TabItem label="Video" value="video">
|
|
58
58
|
|
|
59
|
-
<iframe title="How to translate your React Router v7 (File-System Routes) app using Intlayer" class="m-auto aspect-
|
|
59
|
+
<iframe title="How to translate your React Router v7 (File-System Routes) app using Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
60
60
|
|
|
61
61
|
</TabItem>
|
|
62
62
|
<TabItem label="Code" value="code">
|
|
@@ -108,7 +108,7 @@ pnpm add @react-router/fs-routes --save-dev
|
|
|
108
108
|
<Tab defaultTab="video">
|
|
109
109
|
<TabItem label="Video" value="video">
|
|
110
110
|
|
|
111
|
-
<iframe title="How to translate your React Router v7 (File-System Routes) app using Intlayer" class="m-auto aspect-
|
|
111
|
+
<iframe title="How to translate your React Router v7 (File-System Routes) app using Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
112
112
|
|
|
113
113
|
</TabItem>
|
|
114
114
|
<TabItem label="Code" value="code">
|
|
@@ -60,7 +60,7 @@ Dzięki Intlayer możesz:
|
|
|
60
60
|
<Tab defaultTab="video">
|
|
61
61
|
<TabItem label="Video" value="video">
|
|
62
62
|
|
|
63
|
-
<iframe title="Najlepsze rozwiązanie i18n dla Tanstack Start? Odkryj Intlayer" class="m-auto aspect-
|
|
63
|
+
<iframe title="Najlepsze rozwiązanie i18n dla Tanstack Start? Odkryj Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/_XTdKVWaeqg?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
64
64
|
|
|
65
65
|
</TabItem>
|
|
66
66
|
<TabItem label="Code" value="code">
|
|
@@ -1505,8 +1505,7 @@ import { useLocale, useLocation, route } from "preact-intlayer"; // Zakładając
|
|
|
1505
1505
|
import type { JSX } from "preact"; // Dla HTMLAttributes
|
|
1506
1506
|
import { forwardRef } from "preact/compat"; // Dla przekazywania referencji
|
|
1507
1507
|
|
|
1508
|
-
export interface LocalizedLinkProps
|
|
1509
|
-
extends JSX.HTMLAttributes<HTMLAnchorElement> {
|
|
1508
|
+
export interface LocalizedLinkProps extends JSX.HTMLAttributes<HTMLAnchorElement> {
|
|
1510
1509
|
href: string;
|
|
1511
1510
|
replace?: boolean; // Opcjonalne: do zastąpienia stanu historii
|
|
1512
1511
|
}
|
|
@@ -47,7 +47,7 @@ Dzięki Intlayer możesz:
|
|
|
47
47
|
<Tab defaultTab="video">
|
|
48
48
|
<TabItem label="Wideo" value="video">
|
|
49
49
|
|
|
50
|
-
<iframe title="Najlepsze rozwiązanie i18n dla Vite i React? Odkryj Intlayer" class="m-auto aspect-
|
|
50
|
+
<iframe title="Najlepsze rozwiązanie i18n dla Vite i React? Odkryj Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?si=VaKmrYMmXjo3xpk2"/>
|
|
51
51
|
|
|
52
52
|
</TabItem>
|
|
53
53
|
<TabItem label="Kod" value="code">
|
|
@@ -46,7 +46,7 @@ Dzięki Intlayer możesz:
|
|
|
46
46
|
<Tab defaultTab="video">
|
|
47
47
|
<TabItem label="Wideo" value="video">
|
|
48
48
|
|
|
49
|
-
<iframe title="The best i18n solution for Vite and Vue? Discover Intlayer" class="m-auto aspect-
|
|
49
|
+
<iframe title="The best i18n solution for Vite and Vue? Discover Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/IE3XWkZ6a5U?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
50
50
|
|
|
51
51
|
</TabItem>
|
|
52
52
|
<TabItem label="Kod" value="code">
|
|
@@ -19,6 +19,9 @@ slugs:
|
|
|
19
19
|
- intlayer
|
|
20
20
|
- getLocaleName
|
|
21
21
|
history:
|
|
22
|
+
- version: 7.5.0
|
|
23
|
+
date: 2025-12-18
|
|
24
|
+
changes: Dodaj polyfills dla React Native i starszych środowisk
|
|
22
25
|
- version: 5.5.10
|
|
23
26
|
date: 2025-06-29
|
|
24
27
|
changes: Inicjalizacja historii
|
|
@@ -116,3 +119,17 @@ getLocaleName("unknown-locale"); // Wynik: "Unknown locale"
|
|
|
116
119
|
- Funkcja domyślnie zwraca własną nazwę `displayLocale`.
|
|
117
120
|
- **Brakujące tłumaczenia:**
|
|
118
121
|
- Jeśli `localeNameTranslations` nie zawiera wpisu dla `targetLocale` lub konkretnego `displayLocale`, funkcja korzysta z `ownLocalesName` lub zwraca `"Unknown locale"`.
|
|
122
|
+
|
|
123
|
+
## Polyfills dla React Native i starszych środowisk
|
|
124
|
+
|
|
125
|
+
Funkcja `getLocaleName` zależy od API `Intl.DisplayNames`, które nie jest dostępne w React Native lub starszych środowiskach JavaScript. Jeśli używasz `getLocaleName` w tych środowiskach, musisz dodać polyfills.
|
|
126
|
+
|
|
127
|
+
Zaimportuj polyfills wcześnie w swojej aplikacji, najlepiej w pliku punktu wejścia (np. `index.js`, `App.tsx` lub `main.tsx`):
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
import "intl";
|
|
131
|
+
import "@formatjs/intl-locale/polyfill";
|
|
132
|
+
import "@formatjs/intl-displaynames/polyfill";
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Aby uzyskać więcej szczegółów, zobacz [dokumentację polyfills FormatJS](https://formatjs.io/docs/polyfills/intl-displaynames/).
|
|
@@ -31,7 +31,7 @@ history:
|
|
|
31
31
|
|
|
32
32
|
# Sync JSON (mosty i18n) - Sync JSON z obsługą ICU / i18next
|
|
33
33
|
|
|
34
|
-
<iframe title="Jak zachować synchronizację tłumaczeń JSON z Intlayer" class="m-auto aspect-
|
|
34
|
+
<iframe title="Jak zachować synchronizację tłumaczeń JSON z Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
35
35
|
|
|
36
36
|
Użyj Intlayer jako dodatku do istniejącego stosu i18n. Ta wtyczka utrzymuje synchronizację Twoich komunikatów JSON ze słownikami Intlayer, dzięki czemu możesz:
|
|
37
37
|
|
|
@@ -25,7 +25,7 @@ history:
|
|
|
25
25
|
|
|
26
26
|
# Arquivo de Conteúdo
|
|
27
27
|
|
|
28
|
-
<iframe title="i18n, Markdown, JSON… uma única solução para gerenciar tudo | Intlayer" class="m-auto aspect-
|
|
28
|
+
<iframe title="i18n, Markdown, JSON… uma única solução para gerenciar tudo | Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/1VHgSY_j9_I?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
29
29
|
|
|
30
30
|
## O que é um Arquivo de Conteúdo?
|
|
31
31
|
|
package/docs/pt/intlayer_CMS.md
CHANGED
|
@@ -31,7 +31,7 @@ history:
|
|
|
31
31
|
|
|
32
32
|
# Documentação do Sistema de Gestão de Conteúdo (CMS) Intlayer
|
|
33
33
|
|
|
34
|
-
<iframe title="Editor Visual + CMS para sua Aplicação Web: Intlayer Explicado" class="m-auto aspect-
|
|
34
|
+
<iframe title="Editor Visual + CMS para sua Aplicação Web: Intlayer Explicado" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/UDDTnirwi_4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
35
35
|
|
|
36
36
|
O Intlayer CMS é uma aplicação que permite externalizar o conteúdo de um projeto Intlayer.
|
|
37
37
|
|
|
@@ -24,7 +24,7 @@ history:
|
|
|
24
24
|
|
|
25
25
|
# Documentação do Editor Visual Intlayer
|
|
26
26
|
|
|
27
|
-
<iframe title="Visual Editor + CMS for Your Web App: Intlayer Explained" class="m-auto aspect-
|
|
27
|
+
<iframe title="Visual Editor + CMS for Your Web App: Intlayer Explained" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/UDDTnirwi_4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
28
28
|
|
|
29
29
|
O Editor Visual Intlayer é uma ferramenta que envolverá seu site para interagir com seus arquivos de declaração de conteúdo usando um editor visual.
|
|
30
30
|
|
|
@@ -25,7 +25,7 @@ history:
|
|
|
25
25
|
|
|
26
26
|
# Traduza seu Next.js 15 com Intlayer | Internacionalização (i18n)
|
|
27
27
|
|
|
28
|
-
<iframe title="A melhor solução i18n para Next.js? Descubra o Intlayer" class="m-auto aspect-
|
|
28
|
+
<iframe title="A melhor solução i18n para Next.js? Descubra o Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
29
29
|
|
|
30
30
|
Veja o [Modelo de Aplicação](https://github.com/aymericzip/intlayer-next-15-template) no GitHub.
|
|
31
31
|
|
|
@@ -27,7 +27,7 @@ history:
|
|
|
27
27
|
<Tab defaultTab="video">
|
|
28
28
|
<TabItem label="Video" value="video">
|
|
29
29
|
|
|
30
|
-
<iframe title="A melhor solução i18n para Next.js? Descubra o Intlayer" class="m-auto aspect-
|
|
30
|
+
<iframe title="A melhor solução i18n para Next.js? Descubra o Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
31
31
|
|
|
32
32
|
</TabItem>
|
|
33
33
|
<TabItem label="Code" value="code">
|
|
@@ -49,7 +49,7 @@ Com o Intlayer, você pode:
|
|
|
49
49
|
<Tab defaultTab="video">
|
|
50
50
|
<TabItem label="Vídeo" value="video">
|
|
51
51
|
|
|
52
|
-
<iframe title="Como traduzir sua aplicação Nuxt e Vue usando Intlayer? Descubra o Intlayer" class="m-auto aspect-
|
|
52
|
+
<iframe title="Como traduzir sua aplicação Nuxt e Vue usando Intlayer? Descubra o Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/nhUcUAVQ6eQ?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
53
53
|
|
|
54
54
|
</TabItem>
|
|
55
55
|
<TabItem label="Código" value="code">
|
|
@@ -373,11 +373,11 @@ import { useIntlayer } from "vue-intlayer";
|
|
|
373
373
|
const content = useIntlayer("home-page");
|
|
374
374
|
|
|
375
375
|
useHead({
|
|
376
|
-
title: content.metaTitle.
|
|
376
|
+
title: content.metaTitle.raw,
|
|
377
377
|
meta: [
|
|
378
378
|
{
|
|
379
379
|
name: "description",
|
|
380
|
-
content: content.metaDescription.
|
|
380
|
+
content: content.metaDescription.raw,
|
|
381
381
|
},
|
|
382
382
|
],
|
|
383
383
|
});
|
|
@@ -83,7 +83,7 @@ pnpm add vite-intlayer --save-dev
|
|
|
83
83
|
<Tab defaultTab="video">
|
|
84
84
|
<TabItem label="Video" value="video">
|
|
85
85
|
|
|
86
|
-
<iframe title="How to translate your React Router v7 app using Intlayer" class="m-auto aspect-
|
|
86
|
+
<iframe title="How to translate your React Router v7 app using Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
87
87
|
|
|
88
88
|
</TabItem>
|
|
89
89
|
<TabItem label="Code" value="code">
|
|
@@ -54,7 +54,7 @@ Com o Intlayer, você pode:
|
|
|
54
54
|
<Tab defaultTab="video">
|
|
55
55
|
<TabItem label="Vídeo" value="video">
|
|
56
56
|
|
|
57
|
-
<iframe title="Como traduzir sua aplicação React Router v7 (File-System Routes) usando Intlayer" class="m-auto aspect-
|
|
57
|
+
<iframe title="Como traduzir sua aplicação React Router v7 (File-System Routes) usando Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
58
58
|
|
|
59
59
|
</TabItem>
|
|
60
60
|
<TabItem label="Código" value="code">
|
|
@@ -57,7 +57,7 @@ Com o Intlayer, você pode:
|
|
|
57
57
|
<Tab defaultTab="video">
|
|
58
58
|
<TabItem label="Video" value="video">
|
|
59
59
|
|
|
60
|
-
<iframe title="A melhor solução i18n para Tanstack Start? Descubra o Intlayer" class="m-auto aspect-
|
|
60
|
+
<iframe title="A melhor solução i18n para Tanstack Start? Descubra o Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/_XTdKVWaeqg?autoplay=0&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
61
61
|
|
|
62
62
|
</TabItem>
|
|
63
63
|
<TabItem label="Code" value="code">
|
|
@@ -47,7 +47,7 @@ Com o Intlayer, você pode:
|
|
|
47
47
|
<Tab defaultTab="video">
|
|
48
48
|
<TabItem label="Video" value="video">
|
|
49
49
|
|
|
50
|
-
<iframe title="The best i18n solution for Vite and React? Discover Intlayer" class="m-auto aspect-
|
|
50
|
+
<iframe title="The best i18n solution for Vite and React? Discover Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?si=VaKmrYMmXjo3xpk2"/>
|
|
51
51
|
|
|
52
52
|
</TabItem>
|
|
53
53
|
<TabItem label="Code" value="code">
|