@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
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-12-18
|
|
3
|
+
updatedAt: 2025-11-06
|
|
4
|
+
title: Alternativa alla piattaforma L10n
|
|
5
|
+
description: Trova la migliore alternativa a una piattaforma L10n per le tue esigenze
|
|
6
|
+
keywords:
|
|
7
|
+
- L10n
|
|
8
|
+
- TMS
|
|
9
|
+
- Crowdin
|
|
10
|
+
slugs:
|
|
11
|
+
- blog
|
|
12
|
+
- l10n-platform-alternative
|
|
13
|
+
- crowdin
|
|
14
|
+
history:
|
|
15
|
+
- version: 7.5.0
|
|
16
|
+
date: 2025-12-18
|
|
17
|
+
changes: Versione iniziale
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Un'alternativa open-source a Crowdin (TMS) per L10n
|
|
21
|
+
|
|
22
|
+
## Indice
|
|
23
|
+
|
|
24
|
+
<TOC/>
|
|
25
|
+
|
|
26
|
+
# Sistema di gestione delle traduzioni (TMS)
|
|
27
|
+
|
|
28
|
+
Un Translation Management System (TMS) è una piattaforma software progettata per automatizzare e semplificare il processo di traduzione e localizzazione (L10n). Tradizionalmente, un TMS funge da hub centralizzato dove i contenuti vengono caricati, organizzati e assegnati a traduttori umani. Gestisce i workflow, memorizza le translation memories (per evitare di tradurre due volte la stessa frase) e si occupa della consegna dei file tradotti agli sviluppatori o ai content manager.
|
|
29
|
+
|
|
30
|
+
In sostanza, storicamente un TMS è stato il ponte tra il codice tecnico (dove risiedono le stringhe) e i linguisti umani (che comprendono la cultura).
|
|
31
|
+
|
|
32
|
+
# Sistema di gestione delle traduzioni (TMS)
|
|
33
|
+
|
|
34
|
+
Un Translation Management System (TMS) è una piattaforma software progettata per automatizzare e snellire il processo di traduzione e localizzazione (L10n). Tradizionalmente, un TMS funge da hub centralizzato dove i contenuti vengono caricati, organizzati e assegnati a traduttori umani. Gestisce i flussi di lavoro, conserva memorie di traduzione (per evitare di tradurre due volte la stessa frase) e si occupa della consegna dei file tradotti agli sviluppatori o ai responsabili dei contenuti.
|
|
35
|
+
|
|
36
|
+
In sostanza, storicamente un TMS è stato il ponte tra il codice tecnico (dove risiedono le stringhe) e i linguisti umani (che comprendono la cultura).
|
|
37
|
+
|
|
38
|
+
# Crowdin
|
|
39
|
+
|
|
40
|
+
Crowdin è un veterano in questo settore. Fondata nel 2009, è emersa in un periodo in cui la sfida principale della localizzazione era la connettività. La sua missione era chiara: mettere copywriter, traduttori e responsabili di progetto in relazione tra loro in modo efficace.
|
|
41
|
+
|
|
42
|
+
Per oltre un decennio, Crowdin è stato lo standard del settore per la gestione della localizzazione. Ha risolto il problema della frammentazione permettendo ai team di caricare file `.po`, `.xml` o `.yaml` e consentendo ai traduttori di lavorarci tramite un'interfaccia cloud. Ha costruito la sua reputazione su una solida automazione dei workflow, permettendo alle aziende di scalare da una lingua a dieci senza affogare nei fogli di calcolo.
|
|
43
|
+
|
|
44
|
+
# Intlayer
|
|
45
|
+
|
|
46
|
+
Intlayer è noto principalmente come soluzione per l'i18n, ma integra anche un CMS. A differenza di Crowdin, che si limita ad agire come wrapper attorno alla tua attuale configurazione i18n, Intlayer controlla l'intero stack — dallo strato di bundling alla distribuzione remota dei contenuti — risultando in un flusso di contenuti più fluido ed efficiente.
|
|
47
|
+
|
|
48
|
+
## Perché i paradigmi sono cambiati dall'avvento dell'AI?
|
|
49
|
+
|
|
50
|
+
Mentre Crowdin ottimizzava il flusso di lavoro umano, l'arrivo dei Large Language Models (LLMs) ha cambiato fondamentalmente i paradigmi della localizzazione. Il ruolo del copywriter non è più quello di creare la traduzione da zero, ma di revisionare i contenuti generati dall'AI.
|
|
51
|
+
|
|
52
|
+
Perché? Perché l'AI è 1.000 volte più economica e infinitamente più veloce.
|
|
53
|
+
|
|
54
|
+
Tuttavia, c'è una limitazione. Il copywriting non riguarda solo la traduzione; riguarda l'adattamento del messaggio a culture e contesti diversi. Non vendiamo un iPhone a tua nonna nello stesso modo in cui lo vendiamo a un dirigente d'azienda cinese. Il tono, gli idiomi e i marcatori culturali devono differire.
|
|
55
|
+
|
|
56
|
+
Oggi, il flusso di lavoro più efficiente è tradurre e posizionare le tue pagine a livello globale usando prima l'AI. Poi, in una seconda fase, si utilizzano copywriter umani per ottimizzare contenuti specifici ad alto traffico e aumentare la conversione una volta che il prodotto sta già generando ricavi.
|
|
57
|
+
|
|
58
|
+
Sebbene i ricavi di Crowdin — trainati principalmente dalle sue soluzioni legacy ben collaudate — continuino a performare bene, ritengo che il settore tradizionale della localizzazione sarà fortemente impattato entro un orizzonte di 5-10 anni. Il modello di pagamento per parola o per seat per uno strumento di gestione sta diventando obsoleto.
|
|
59
|
+
|
|
60
|
+
## Perché Intlayer è una buona alternativa a Crowdin?
|
|
61
|
+
|
|
62
|
+
Intlayer è una soluzione nata nell'era dell'AI. È stata progettata con il principio che, nel 2026, la traduzione grezza non possieda più un valore intrinseco. È una commodity.
|
|
63
|
+
|
|
64
|
+
Perciò, Intlayer non si posiziona semplicemente come un TMS, ma come una soluzione di **Content Management** che integra profondamente un editor visuale e la logica di internazionalizzazione.
|
|
65
|
+
|
|
66
|
+
Con Intlayer, generi le tue traduzioni al costo delle tue inferenze. Non sei vincolato al modello di pricing di una piattaforma; scegli il provider (OpenAI, Anthropic, Mistral, ecc.), scegli il modello e traduci tramite CI (Continuous Integration), CLI o direttamente attraverso il CMS integrato. Trasferisce il valore dall'accesso ai traduttori alla gestione del contesto.
|
|
67
|
+
|
|
68
|
+
# Confronto fianco a fianco
|
|
69
|
+
|
|
70
|
+
| Funzionalità | Crowdin (Legacy TMS) | Intlayer (AI-Native) |
|
|
71
|
+
| :--------------------- | :------------------------------------------------------------ | :-------------------------------------------------------- |
|
|
72
|
+
| **Filosofia di base** | Collega le persone alle stringhe. | Gestisce la logica dei contenuti e la generazione AI. |
|
|
73
|
+
| **Modello di pricing** | Per seat / piano ospitato. | Paghi per le tue inferenze (BYO Key). |
|
|
74
|
+
| **Integrazione** | Scambio basato su file (Upload/Download). | Integrazione profonda nel codice (Dichiarativa). |
|
|
75
|
+
| **Aggiornamenti** | Spesso richiede ricostruzioni CI/CD per distribuire il testo. | Sincronizzazione istantanea con la codebase o l'app live. |
|
|
76
|
+
| **Formati file** | Diversi (.po, .xml, .yaml, ecc.). | Web moderno (JSON, JS, TS). |
|
|
77
|
+
| **Test** | Limitato. | CI / CLI. |
|
|
78
|
+
| **Hosting** | SaaS (per lo più). | Open Source e auto-ospitabile (Docker). |
|
|
79
|
+
|
|
80
|
+
Intlayer offre una soluzione i18n completa e all-in-one che consente una profonda integrazione dei tuoi contenuti. I contenuti remoti possono essere sincronizzati direttamente con la tua codebase o con la tua applicazione live. In confronto, Crowdin richiede spesso una ricostruzione della tua applicazione nella pipeline CI/CD per aggiornare i contenuti, creando attrito tra il team di traduzione e il processo di deployment.
|
|
81
|
+
|
|
82
|
+
Inoltre, Intlayer può essere utilizzato come Feature Flag o strumento di A/B testing, permettendoti di testare dinamicamente diverse varianti di contenuto — cosa che gli strumenti TMS standard come Crowdin non supportano nativamente.
|
|
83
|
+
|
|
84
|
+
Crowdin supporta un'ampia gamma di formati di file — inclusi formati legacy come `.po`, `.xml` e `.yaml`, che possono essere utili per progetti con workflow consolidati o sistemi più datati. Intlayer, al contrario, lavora principalmente con formati moderni orientati al web come `.json`, `.js` e `.ts`. Ciò significa che Intlayer potrebbe non essere compatibile con tutti i formati legacy, un aspetto da considerare per i team che migrano da piattaforme più vecchie.
|
|
85
|
+
|
|
86
|
+
Infine, per chi dà priorità alla sovranità e al controllo dei dati, Intlayer è open-source e può essere self-hosted. I file Docker sono disponibili direttamente nel repository, permettendoti di avere la piena proprietà della tua infrastruttura di localizzazione.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-12-18
|
|
3
|
+
updatedAt: 2025-11-06
|
|
4
|
+
title: Piattaforma L10n alternativa a Phrase
|
|
5
|
+
description: Trova la migliore piattaforma L10n alternativa a Phrase per le tue esigenze
|
|
6
|
+
keywords:
|
|
7
|
+
- L10n
|
|
8
|
+
- TMS
|
|
9
|
+
- Phrase
|
|
10
|
+
slugs:
|
|
11
|
+
- blog
|
|
12
|
+
- l10n-platform-alternative
|
|
13
|
+
- phrase
|
|
14
|
+
history:
|
|
15
|
+
- version: 7.5.0
|
|
16
|
+
date: 2025-12-18
|
|
17
|
+
changes: Initial version
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Un'alternativa open-source L10n a Phrase (TMS)
|
|
21
|
+
|
|
22
|
+
## Indice
|
|
23
|
+
|
|
24
|
+
<TOC/>
|
|
25
|
+
|
|
26
|
+
# Sistema di gestione delle traduzioni (TMS)
|
|
27
|
+
|
|
28
|
+
Un Translation Management System (TMS) è una piattaforma software progettata per automatizzare e snellire il processo di traduzione e localizzazione (L10n). Tradizionalmente, un TMS funge da hub centralizzato dove i contenuti vengono caricati, organizzati e assegnati a traduttori umani. Gestisce i workflow, conserva le translation memories (per evitare di tradurre due volte la stessa frase) e si occupa della consegna dei file tradotti agli sviluppatori o ai responsabili dei contenuti.
|
|
29
|
+
|
|
30
|
+
In sostanza, storicamente un TMS è stato il ponte tra il codice tecnico (dove risiedono le stringhe) e i linguisti umani (che comprendono la cultura).
|
|
31
|
+
|
|
32
|
+
Un Translation Management System (TMS) è una piattaforma software progettata per automatizzare e snellire il processo di traduzione e localizzazione (L10n). Tradizionalmente, un TMS funge da hub centralizzato dove i contenuti vengono caricati, organizzati e assegnati a traduttori umani. Gestisce i flussi di lavoro, conserva le memorie di traduzione (per evitare di tradurre due volte la stessa frase) e si occupa della consegna dei file tradotti agli sviluppatori o ai responsabili dei contenuti.
|
|
33
|
+
|
|
34
|
+
In sostanza, un TMS è storicamente il ponte tra il codice tecnico (dove risiedono le stringhe) e i linguisti umani (che comprendono la cultura).
|
|
35
|
+
|
|
36
|
+
# Phrase (precedentemente PhraseApp)
|
|
37
|
+
|
|
38
|
+
Phrase è un attore di primo piano nel settore della localizzazione enterprise. Originariamente conosciuto come PhraseApp, è cresciuto significativamente, soprattutto dopo la fusione con Memsource. Si propone come una Localization Suite completa progettata per la localizzazione del software, offrendo robuste funzionalità API e un ampio supporto di formati.
|
|
39
|
+
|
|
40
|
+
Phrase è pensato per operare su larga scala. È la scelta di riferimento per le grandi imprese che devono gestire workflow complessi, vaste translation memories e rigidi processi di assicurazione della qualità distribuiti su diversi team. La sua forza risiede nella capacità di gestire attività di localizzazione "heavy duty", offrendo un ecosistema tutto-in-uno sia per le stringhe software sia per la traduzione di documenti.
|
|
41
|
+
|
|
42
|
+
# Intlayer
|
|
43
|
+
|
|
44
|
+
Intlayer è conosciuto principalmente come soluzione i18n, ma integra anche un headless CMS. A differenza di Phrase, che funziona come una vasta suite enterprise esterna, Intlayer agisce come uno strato agile e integrato nel codice. Controlla l'intero stack — dal livello di bundling alla delivery remota dei contenuti — risultando in un flusso di contenuti più fluido ed efficiente per le moderne applicazioni web.
|
|
45
|
+
|
|
46
|
+
## Perché i paradigmi sono cambiati con l'arrivo dell'AI?
|
|
47
|
+
|
|
48
|
+
Phrase è stato costruito per risolvere i problemi del decennio precedente: gestire enormi team di traduttori umani e standardizzare i flussi di lavoro attraverso reparti enterprise frammentati. Eccelle nella governance dei workflow.
|
|
49
|
+
|
|
50
|
+
Tuttavia, l'arrivo dei Large Language Models (LLMs) ha modificato radicalmente i paradigmi della localizzazione. La sfida non è più "how do we manage 50 translators?" ma "how do we validate AI-generated content efficiently?"
|
|
51
|
+
|
|
52
|
+
Sebbene Phrase abbia integrato funzionalità AI, queste sono spesso sovrapposte a un'architettura legacy progettata per workflow incentrati sull'uomo e per licenze basate sui posti. Nell'era moderna, l'attrito del "pushing to TMS" e del "pulling from TMS" sta diventando obsoleto. Gli sviluppatori si aspettano che i contenuti siano fluidi come il codice.
|
|
53
|
+
|
|
54
|
+
Oggi il workflow più efficiente è tradurre e posizionare le tue pagine globalmente usando prima l'AI. Poi, in una seconda fase, si ricorre a copywriter umani per ottimizzare contenuti specifici ad alto traffico e aumentare la conversione una volta che il prodotto sta già generando ricavi.
|
|
55
|
+
|
|
56
|
+
## Perché Intlayer è una buona alternativa a Phrase?
|
|
57
|
+
|
|
58
|
+
Intlayer è una soluzione nata nell'era dell'AI, progettata specificamente per l'ecosistema moderno JavaScript/TypeScript. Sfida il modello enterprise pesante di Phrase con agilità e trasparenza.
|
|
59
|
+
|
|
60
|
+
1. **Trasparenza dei prezzi:** Phrase è noto per i suoi prezzi Enterprise, che possono essere opachi e costosi per le aziende in crescita. Intlayer ti permette di utilizzare le tue chiavi API (OpenAI, Anthropic, ecc.), assicurando che paghi i prezzi di mercato per i servizi di AI piuttosto che un sovrapprezzo sull'abbonamento alla piattaforma.
|
|
61
|
+
2. **Esperienza sviluppatore (DX):** Phrase si basa fortemente su strumenti CLI e chiamate API per sincronizzare i file. Intlayer si integra direttamente nel bundler e nel runtime. Questo significa che le tue definizioni sono strettamente tipizzate (TypeScript), e le chiavi mancanti vengono individuate al compile time, non in produzione.
|
|
62
|
+
3. **Velocità di rilascio (Speed to Market):** Intlayer elimina la "scatola nera" del TMS. Non invii file altrove e aspetti che tornino. Generi traduzioni istantaneamente tramite AI nella tua pipeline CI o nell'ambiente locale, mantenendo il ciclo di sviluppo snello.
|
|
63
|
+
|
|
64
|
+
# Confronto fianco a fianco
|
|
65
|
+
|
|
66
|
+
| Funzionalità | Phrase (Enterprise TMS) | Intlayer (AI-Native) |
|
|
67
|
+
| :----------------------- | :-------------------------------------------------- | :--------------------------------------------------------- |
|
|
68
|
+
| **Filosofia principale** | Governance aziendale e workflow. | Gestisce la logica dei contenuti e la generazione AI. |
|
|
69
|
+
| **Modello di pricing** | Enterprise personalizzato / basato sui seat (alto). | Paga per la tua inferenza (porta la tua chiave - BYO Key). |
|
|
70
|
+
| **Integrazione** | Uso intensivo di API / CLI. | Integrazione profonda nel codice (dichiarativa). |
|
|
71
|
+
| **Aggiornamenti** | Richiede sincronizzazione / Dipende dalla pipeline. | Sincronizzazione istantanea con il codebase o l'app live. |
|
|
72
|
+
| **Formati di file** | Estremamente ampio (Legacy e documenti). | Web moderno (JSON, JS, TS). |
|
|
73
|
+
| **Testing** | Controlli QA / fasi LQA. | CI / CLI / A/B Testing. |
|
|
74
|
+
| **Hosting** | SaaS (esclusivamente Enterprise). | Open Source e autoinstallabile (Docker). |
|
|
75
|
+
|
|
76
|
+
Intlayer offre una soluzione i18n completa e all-in-one che consente un'integrazione profonda dei tuoi contenuti. I tuoi contenuti remoti possono essere sincronizzati direttamente con la tua codebase o con la tua applicazione live. In confronto, Phrase è una dipendenza esterna potente ma complessa che spesso richiede manager dedicati alla localizzazione per operare efficacemente.
|
|
77
|
+
|
|
78
|
+
Inoltre, Intlayer può essere utilizzato come Feature Flag o strumento di A/B testing, permettendoti di testare dinamicamente diverse varianti di contenuto. Phrase è progettato per garantire coerenza linguistica, mentre Intlayer ti aiuta a ottimizzare la conversione e l'esperienza utente tramite dati dinamici.
|
|
79
|
+
|
|
80
|
+
Sebbene Phrase sia indiscutibile per esigenze aziendali complesse e multi-formato (ad es., tradurre PDF, sottotitoli e software simultaneamente), Intlayer è la scelta superiore per i team di prodotto che sviluppano applicazioni web e che vogliono piena proprietà, type safety e un workflow moderno guidato dall'AI senza l'overhead tipico delle soluzioni enterprise.
|
|
81
|
+
|
|
82
|
+
Infine, per chi privilegia la sovranità e il controllo dei dati, Intlayer è open-source e può essere self-hosted. I file Docker sono disponibili direttamente nel repository, consentendoti la piena proprietà della tua infrastruttura di localizzazione — qualcosa di impossibile con l'ecosistema SaaS chiuso di Phrase.
|
|
@@ -31,7 +31,7 @@ history:
|
|
|
31
31
|
|
|
32
32
|
# Intlayerを使ってi18nextのJSON翻訳を自動化する方法
|
|
33
33
|
|
|
34
|
-
<iframe title="Intlayerを使ってi18nextのJSON翻訳を自動化する方法" class="m-auto aspect-
|
|
34
|
+
<iframe title="Intlayerを使ってi18nextの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"/>
|
|
35
35
|
|
|
36
36
|
## Intlayerとは何ですか?
|
|
37
37
|
|
|
@@ -27,7 +27,7 @@ history:
|
|
|
27
27
|
|
|
28
28
|
# next-i18next と Intlayer を使った Next.js の国際化 (i18n)
|
|
29
29
|
|
|
30
|
-
<iframe title="Intlayerを使ってnext-i18nextのJSON翻訳を自動化する方法" class="m-auto aspect-
|
|
30
|
+
<iframe title="Intlayerを使ってnext-i18nextの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"/>
|
|
31
31
|
|
|
32
32
|
## 目次
|
|
33
33
|
|
|
@@ -26,7 +26,7 @@ history:
|
|
|
26
26
|
|
|
27
27
|
# Intlayerを使ってnext-intlのJSON翻訳を自動化する方法
|
|
28
28
|
|
|
29
|
-
<iframe title="Intlayerを使ってnext-intlのJSON翻訳を自動化する方法" class="m-auto aspect-
|
|
29
|
+
<iframe title="Intlayerを使ってnext-intlの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"/>
|
|
30
30
|
|
|
31
31
|
## Intlayerとは?
|
|
32
32
|
|
|
@@ -29,7 +29,7 @@ history:
|
|
|
29
29
|
|
|
30
30
|
# Intlayerを使ってreact-i18nextのJSON翻訳を自動化する方法
|
|
31
31
|
|
|
32
|
-
<iframe title="Intlayerを使ってreact-i18nextのJSON翻訳を自動化する方法" class="m-auto aspect-
|
|
32
|
+
<iframe title="Intlayerを使ってreact-i18nextの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"/>
|
|
33
33
|
|
|
34
34
|
## Intlayerとは何ですか?
|
|
35
35
|
|
|
@@ -27,7 +27,7 @@ history:
|
|
|
27
27
|
|
|
28
28
|
# Intlayerを使ってreact-intlのJSON翻訳を自動化する方法
|
|
29
29
|
|
|
30
|
-
<iframe title="Intlayerを使ってreact-intlのJSON翻訳を自動化する方法" class="m-auto aspect-
|
|
30
|
+
<iframe title="Intlayerを使ってreact-intlの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"/>
|
|
31
31
|
|
|
32
32
|
## 目次
|
|
33
33
|
|
|
@@ -27,7 +27,7 @@ history:
|
|
|
27
27
|
|
|
28
28
|
# vue-i18n と Intlayer を使った Vue.js の国際化 (i18n)
|
|
29
29
|
|
|
30
|
-
<iframe title="Intlayerを使ってvue-i18nのJSON翻訳を自動化する方法" class="m-auto aspect-
|
|
30
|
+
<iframe title="Intlayerを使ってvue-i18nの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"/>
|
|
31
31
|
|
|
32
32
|
## 目次
|
|
33
33
|
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-12-18
|
|
3
|
+
updatedAt: 2025-11-06
|
|
4
|
+
title: Lokalise の代替となる L10n プラットフォーム
|
|
5
|
+
description: ニーズに合った Lokalise の L10n プラットフォームの代替を見つける
|
|
6
|
+
keywords:
|
|
7
|
+
- L10n
|
|
8
|
+
- TMS
|
|
9
|
+
- Lokalise
|
|
10
|
+
slugs:
|
|
11
|
+
- blog
|
|
12
|
+
- l10n-platform-alternative
|
|
13
|
+
- lokalise
|
|
14
|
+
history:
|
|
15
|
+
- version: 7.5.0
|
|
16
|
+
date: 2025-12-18
|
|
17
|
+
changes: 初期バージョン
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Lokalise のオープンソース L10n 代替(TMS)
|
|
21
|
+
|
|
22
|
+
## 目次
|
|
23
|
+
|
|
24
|
+
<TOC/>
|
|
25
|
+
|
|
26
|
+
# 翻訳管理システム
|
|
27
|
+
|
|
28
|
+
Translation Management System (TMS) は、翻訳とローカリゼーション(L10n)のプロセスを自動化し、合理化するために設計されたソフトウェアプラットフォームです。従来、TMSはコンテンツがアップロードされ、整理され、人間の翻訳者に割り当てられる中央ハブとして機能します。ワークフローを管理し、翻訳メモリ(同じ文を何度も翻訳するのを避けるため)を保存し、翻訳済みファイルを開発者やコンテンツマネージャーに返却する処理を行います。
|
|
29
|
+
|
|
30
|
+
本質的に、TMSは歴史的に技術的なコード(文字列が存在する場所)と文化を理解する人間の翻訳者との間の橋渡しでした。
|
|
31
|
+
|
|
32
|
+
# Lokalise
|
|
33
|
+
|
|
34
|
+
Lokaliseは現代のTMS領域で重要なプレーヤーです。2017年に設立され、developer experience(DX)とデザイン統合に強く注力することで市場を変革しました。従来の競合と異なり、Lokaliseは洗練されたUI、強力なAPI、FigmaやGitHubのようなツールとの統合を優先し、ファイルの往復に伴う摩擦を減らしました。
|
|
35
|
+
|
|
36
|
+
「developer-friendly」なTMSとして成功を築き、文字列の抽出と挿入を自動化してエンジニアの工数を削減しました。手作業のスプレッドシートやメールを廃したいスピード重視のテックチームに対して、_continuous localization_(継続的ローカリゼーション)の問題を効果的に解決しました。
|
|
37
|
+
|
|
38
|
+
# Intlayer
|
|
39
|
+
|
|
40
|
+
Intlayerは主にi18nソリューションとして知られていますが、ヘッドレスCMSも統合しています。Lokaliseが主に文字列の外部同期ツールとして機能するのとは異なり、Intlayerはコードにより近い位置で動作します。バンドル層からリモートコンテンツ配信までスタック全体を制御することで、コンテンツのフローがよりスムーズかつ効率的になります。
|
|
41
|
+
|
|
42
|
+
## AI以降、なぜパラダイムは変わったのか?
|
|
43
|
+
|
|
44
|
+
Lokaliseはローカリゼーションの「DevOps」側、つまり文字列を自動的に移動する仕組みを完成させました。しかし、Large Language Models(LLMs)の到来により、ローカリゼーションのパラダイムは根本的に変化しました。ボトルネックはもはや*文字列を移動すること*ではなく、*それらを生成すること*です。
|
|
45
|
+
|
|
46
|
+
LLMの登場により、翻訳コストは急落し、速度は飛躍的に向上しました。ローカリゼーションチームの役割は「翻訳者の管理」から「コンテキストとレビューの管理」へと移行しています。
|
|
47
|
+
|
|
48
|
+
LokaliseはAI機能を追加していますが、根本的には人間のワークフローを管理し、シート数やキー数で課金するよう設計されたプラットフォームのままです。AIファーストの世界では、価値は単に人間のエージェンシーにタスクを割り当てやすいかどうかではなく、いかにAIモデルをオーケストレーションしてコンテキストに配慮したコンテンツを生成できるかにあります。
|
|
49
|
+
|
|
50
|
+
現時点で最も効率的なワークフローは、まずAIを用いてページをグローバルに翻訳・配置することです。その後、第2フェーズとして、プロダクトが既に収益を上げ始めた段階で、特定の高トラフィックコンテンツを人間のコピーライターが最適化してコンバージョンを向上させます。
|
|
51
|
+
|
|
52
|
+
/// なぜ Intlayer は Lokalise の良い代替となるのか?
|
|
53
|
+
|
|
54
|
+
Intlayer は AI 時代に生まれたソリューションです。設計原則として、生の翻訳はコモディティであり、しかしコンテキストが最重要である、という考えに基づいて構築されています。
|
|
55
|
+
|
|
56
|
+
Lokalise はその急激な価格設定階層が批判されることが多く、スタートアップがスケールするにつれて手が届かなくなることがあります。Intlayer は異なるアプローチを採用しています:
|
|
57
|
+
|
|
58
|
+
1. **コスト効率:** 成長を罰する「per key」や「per seat」といった料金モデルに縛られません。Intlayer では自分の推論(BYO Key)に対して支払うため、費用はプラットフォームのマージンではなく実際の利用量に応じて直接スケールします。
|
|
59
|
+
2. **ワークフロー統合:** Lokalise はファイルの同期(自動化されていても)を要求しますが、Intlayer はコンポーネントファイル(React、Next.js 等)内で Declarative Content を直接定義できるようにします。これによりコンテキストが UI の直近に保持され、エラーが減少します。
|
|
60
|
+
3. **ビジュアル管理:** Intlayer は実行中のアプリケーションと直接連携するビジュアルエディタを提供し、編集が完全な視覚的コンテキスト内で行われることを保証します。これは従来の TMS のファイル一覧では切り離されがちな点です。
|
|
61
|
+
|
|
62
|
+
# 並べて比較
|
|
63
|
+
|
|
64
|
+
| 機能 | Lokalise(モダンTMS) | Intlayer(AIネイティブ) |
|
|
65
|
+
| :--------------- | :--------------------------------------------------- | :------------------------------------------- |
|
|
66
|
+
| **コア哲学** | 自動化とデザイン段階でのローカリゼーション(L10n)。 | コンテンツロジックとAI生成の管理。 |
|
|
67
|
+
| **料金モデル** | 席数/MAU/キー数に基づく(高コスト)。 | 推論コストは自己負担(BYOキー)。 |
|
|
68
|
+
| **統合** | APIベースの同期/Figmaプラグイン。 | コードに深く統合(宣言型)。 |
|
|
69
|
+
| **更新** | 同期の遅延/PR作成が必要。 | コードベースやライブアプリと即時同期。 |
|
|
70
|
+
| **ファイル形式** | 汎用(モバイル、Web、ドキュメント)。 | モダンWeb(JSON、JS、TS)。 |
|
|
71
|
+
| **テスト** | レビューのワークフロー。 | CI/CLI/A/Bテスト。 |
|
|
72
|
+
| **ホスティング** | SaaS(クローズドソース)。 | オープンソース&セルフホスト可能(Docker)。 |
|
|
73
|
+
|
|
74
|
+
Intlayerは、コンテンツの深い統合を可能にする完全なオールインワンのi18nソリューションを提供します。リモートのコンテンツはコードベースやライブアプリケーションと直接同期できます。これに対して、Lokaliseは一般的にリポジトリ内のコンテンツを更新するためにプルリクエストの作成に依存しており、「コンテンツの状態」と「アプリケーションの状態」が分離されたままになります。
|
|
75
|
+
|
|
76
|
+
さらに、IntlayerはFeature FlagやA/Bテストツールとして利用でき、異なるコンテンツバリエーションを動的にテストできます。Lokaliseが文言の正確さに注力するのに対し、Intlayerは動的なデータ配信を通じて*ユーザーエクスペリエンス*を重視します。
|
|
77
|
+
|
|
78
|
+
Lokaliseはモバイルアプリ(iOS/Android)やデザイン主導のワークフローに優れています。しかし、Next.jsやReactのようなフレームワークを使用するモダンなウェブアプリケーションにおいては、Intlayerが`.js`、`.ts`、およびJSON辞書をネイティブに扱うことで、コンテンツに対する完全なTypeScriptサポートを備えた優れた開発体験(DX)を提供し、翻訳キーの欠落を二度と出荷しないことを保証します。
|
|
79
|
+
|
|
80
|
+
最後に、データ主権と管理を優先する方のために、Intlayerはオープンソースでセルフホストが可能です。Dockerファイルがリポジトリに直接用意されており、ローカライゼーションインフラストラクチャの完全な所有権を保持できます。これはLokaliseのクローズドなSaaSモデルとは対照的です。
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-12-18
|
|
3
|
+
updatedAt: 2025-11-06
|
|
4
|
+
title: L10n プラットフォームの代替
|
|
5
|
+
description: ニーズに合った最適な L10n プラットフォームの代替を見つける
|
|
6
|
+
keywords:
|
|
7
|
+
- L10n
|
|
8
|
+
- TMS
|
|
9
|
+
- Crowdin
|
|
10
|
+
slugs:
|
|
11
|
+
- blog
|
|
12
|
+
- l10n-platform-alternative
|
|
13
|
+
- crowdin
|
|
14
|
+
history:
|
|
15
|
+
- version: 7.5.0
|
|
16
|
+
date: 2025-12-18
|
|
17
|
+
changes: 初期バージョン
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Crowdin(TMS)への L10N オープンソース代替
|
|
21
|
+
|
|
22
|
+
## 目次
|
|
23
|
+
|
|
24
|
+
<TOC/>
|
|
25
|
+
|
|
26
|
+
# 翻訳管理システム
|
|
27
|
+
|
|
28
|
+
A Translation Management System (TMS) は、翻訳およびローカリゼーション(L10n)プロセスを自動化し、効率化するために設計されたソフトウェアプラットフォームです。従来、TMS はコンテンツをアップロード、整理し、人間の翻訳者に割り当てる中央ハブとして機能します。ワークフローを管理し、翻訳メモリ(同じ文を再翻訳しないため)を保存し、翻訳済みファイルを開発者やコンテンツマネージャーへ返送する処理を扱います。
|
|
29
|
+
|
|
30
|
+
本質的に、TMS は技術的なコード(文字列が存在する場所)と文化を理解する人間の言語専門家との間の橋渡しでした。
|
|
31
|
+
|
|
32
|
+
# Crowdin
|
|
33
|
+
|
|
34
|
+
Crowdinはこの分野の老舗です。2009年に設立され、ローカリゼーションの主要な課題が接続性であった時代に登場しました。その使命は明確でした:コピーライター、翻訳者、プロジェクトオーナーを効果的に結びつけること。
|
|
35
|
+
|
|
36
|
+
10年以上にわたり、Crowdinはローカリゼーション管理の業界標準でした。チームが`.po`、`.xml`、または`.yaml`ファイルをアップロードし、翻訳者がクラウドインターフェース上で作業できるようにすることで断片化の問題を解決しました。堅牢なワークフロー自動化により評判を築き、企業がスプレッドシートに埋もれることなく1言語から10言語へとスケールすることを可能にしました。
|
|
37
|
+
|
|
38
|
+
# Intlayer
|
|
39
|
+
|
|
40
|
+
Intlayerは主にi18nソリューションとして知られていますが、CMSも統合しています。既存のi18nセットアップのラッパーとしてしか機能しないCrowdinとは異なり、Intlayerはバンドリング層からリモートコンテンツ配信までスタック全体を制御するため、よりスムーズで効率的なコンテンツフローを実現します。
|
|
41
|
+
|
|
42
|
+
## AI以降、なぜパラダイムが変わったのか?
|
|
43
|
+
|
|
44
|
+
Crowdinが人的ワークフローを最適化していた一方で、Large Language Models (LLMs) の登場はローカライゼーションのパラダイムを根本的にシフトさせました。コピーライターの役割はもはや翻訳をゼロから作ることではなく、AI生成コンテンツをレビューすることになっています。
|
|
45
|
+
|
|
46
|
+
なぜか? なぜならAIは1,000倍安価で、無限に速いからです。
|
|
47
|
+
|
|
48
|
+
ただし、限界があります。コピーライティングは単なる翻訳ではなく、メッセージを異なる文化やコンテキストに合わせて適応させることです。あなたのおばあちゃんにiPhoneを売るのと、中国のビジネスエグゼクティブに売るのでは同じやり方にはなりません。トーン、イディオム、文化的な指標は異なる必要があります。
|
|
49
|
+
|
|
50
|
+
今日、最も効率的なワークフローは、まずAIを使ってページをグローバルに翻訳・配置することです。その後、第2フェーズとして、プロダクトが既に収益を生み出している段階で、人間のコピーライターが特定のトラフィックの多いコンテンツを最適化し、コンバージョンを高めます。
|
|
51
|
+
|
|
52
|
+
Crowdinの収益は、その実績あるレガシーソリューションによって主に支えられており引き続き好調ですが、従来のローカリゼーション業界は今後5〜10年の間に大きな影響を受けると私は考えています。管理ツールに対して単語単位や席数単位で支払うというモデルは時代遅れになりつつあります。
|
|
53
|
+
|
|
54
|
+
## なぜIntlayerはCrowdinの良い代替なのか?
|
|
55
|
+
|
|
56
|
+
IntlayerはAI時代に生まれたソリューションです。2026年には、生の翻訳そのものがもはや本質的な価値を持たないという原則で設計されました。それ自体はコモディティです。
|
|
57
|
+
|
|
58
|
+
したがって、Intlayerは単にTMSとして位置づけられるのではなく、ビジュアルエディタと国際化ロジックを深く統合した**Content Management**ソリューションとして位置づけられています。
|
|
59
|
+
|
|
60
|
+
Intlayerでは、翻訳は推論コストで生成されます。プラットフォームの料金体系に縛られることはありません。プロバイダー(OpenAI、Anthropic、Mistralなど)とモデルを選択し、CI(Continuous Integration)、CLI、または統合されたCMSから直接翻訳を行えます。価値は翻訳者へのアクセスから、コンテキスト管理へと移行します。
|
|
61
|
+
|
|
62
|
+
# 比較(サイドバイサイド)
|
|
63
|
+
|
|
64
|
+
| Feature | Crowdin(レガシーTMS) | Intlayer(AIネイティブ) |
|
|
65
|
+
| :---------------- | :-------------------------------------------------------- | :-------------------------------------------- |
|
|
66
|
+
| **コア哲学** | 人を文字列へと結びつける。 | コンテンツロジックとAI生成を管理する。 |
|
|
67
|
+
| **Pricing Model** | 席単位 / ホスト型の階層。 | 自分の推論の費用を支払う(BYO Key)。 |
|
|
68
|
+
| **Integration** | ファイルベースのやり取り(アップロード/ダウンロード)。 | コードへの高度な統合(宣言的)。 |
|
|
69
|
+
| **Updates** | テキストをデプロイするにはしばしばCI/CDの再ビルドが必要。 | コードベースやライブアプリと即時同期。 |
|
|
70
|
+
| **File Formats** | 多様なフォーマット(.po、.xml、.yaml 等)。 | モダンWeb(JSON、JS、TS)。 |
|
|
71
|
+
| **Testing** | 限定的。 | CI / CLI。 |
|
|
72
|
+
| **Hosting** | 主にSaaS。 | オープンソース & セルフホスト可能(Docker)。 |
|
|
73
|
+
|
|
74
|
+
Intlayerはコンテンツと深く統合できる、完全なオールインワンのi18nソリューションを提供します。リモートのコンテンツはコードベースやライブアプリケーションと直接同期できます。これに対してCrowdinは、コンテンツを更新するためにCI/CDパイプラインでアプリケーションの再ビルドを必要とすることが多く、翻訳チームとデプロイプロセスの間に摩擦を生じさせます。
|
|
75
|
+
|
|
76
|
+
さらに、IntlayerはFeature FlagやA/Bテストツールとしても利用でき、異なるコンテンツのバリエーションを動的にテストすることが可能です。これはCrowdinのような標準的なTMSツールがネイティブにサポートしていない機能です。
|
|
77
|
+
|
|
78
|
+
Crowdin は幅広いファイル形式をサポートしており、`.po`、`.xml`、`.yaml` といったレガシー形式も含まれます。これは確立されたワークフローや旧システムを持つプロジェクトにとって有益です。対照的に Intlayer は主に `.json`、`.js`、`.ts` のようなモダンなウェブ向けフォーマットを扱います。つまり、Intlayer はすべてのレガシー形式と互換性があるとは限らず、古いプラットフォームから移行するチームはこの点を考慮する必要があります。
|
|
79
|
+
|
|
80
|
+
最後に、データ主権やコントロールを重視する場合、Intlayer はオープンソースでセルフホスティング可能です。Docker ファイルはリポジトリに直接用意されており、ローカリゼーションインフラストラクチャの完全な所有権を得ることができます。
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2025-12-18
|
|
3
|
+
updatedAt: 2025-11-06
|
|
4
|
+
title: Phrase の代替となる L10n プラットフォーム
|
|
5
|
+
description: ニーズに合った Phrase の L10n プラットフォーム代替を見つける
|
|
6
|
+
keywords:
|
|
7
|
+
- L10n
|
|
8
|
+
- TMS
|
|
9
|
+
- Phrase
|
|
10
|
+
slugs:
|
|
11
|
+
- blog
|
|
12
|
+
- l10n-platform-alternative
|
|
13
|
+
- phrase
|
|
14
|
+
history:
|
|
15
|
+
- version: 7.5.0
|
|
16
|
+
date: 2025-12-18
|
|
17
|
+
changes: Initial version
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Phrase(TMS)に代わるオープンソースの L10N
|
|
21
|
+
|
|
22
|
+
## 目次
|
|
23
|
+
|
|
24
|
+
<TOC/>
|
|
25
|
+
|
|
26
|
+
# 翻訳管理システム
|
|
27
|
+
|
|
28
|
+
翻訳管理システム(TMS)は、翻訳およびローカリゼーション(L10n)プロセスを自動化・効率化するためのソフトウェアプラットフォームです。従来、TMSはコンテンツがアップロードされ、整理され、人間の翻訳者に割り当てられる集中型ハブとして機能してきました。ワークフローを管理し、翻訳メモリを保存して(同じ文を何度も翻訳するのを避け)、翻訳済みファイルを開発者やコンテンツ管理者へ返却する役割を担います。
|
|
29
|
+
|
|
30
|
+
本質的に、TMSは技術的なコード(文字列が格納される場所)と、文化を理解する人間の言語専門家との間の橋渡しであり続けてきました。
|
|
31
|
+
|
|
32
|
+
# Phrase(旧称 PhraseApp)
|
|
33
|
+
|
|
34
|
+
Phraseはエンタープライズ向けローカリゼーション領域のヘビー級プレイヤーです。元々はPhraseAppとして知られており、特にMemsourceとの合併以降、大きく成長しました。ソフトウェアローカリゼーション向けに設計された包括的なLocalization Suiteとして位置付けられ、強力なAPI機能と幅広いフォーマットサポートを提供します。
|
|
35
|
+
|
|
36
|
+
Phraseはスケールを前提に構築されています。複雑なワークフロー、膨大な翻訳メモリ、そして多数のチームにまたがる厳格な品質保証プロセスを管理する必要がある大企業にとっての定番の選択肢です。強みは「ヘビーデューティ」なローカリゼーション作業を扱える点にあり、ソフトウェアの文字列とドキュメント翻訳の両方をカバーするオールインワンのエコシステムを提供します。
|
|
37
|
+
|
|
38
|
+
# Intlayer
|
|
39
|
+
|
|
40
|
+
Intlayerは主にi18nソリューションとして知られていますが、ヘッドレスCMSも統合しています。大規模で外部のエンタープライズスイートとして機能するPhraseとは異なり、Intlayerは軽快でコードに統合されたレイヤーとして動作します。バンドル層からリモートコンテンツ配信に至るまでスタック全体を制御し、モダンなウェブアプリケーションにおいてよりスムーズで効率的なコンテンツフローを実現します。
|
|
41
|
+
|
|
42
|
+
## AI以降、なぜパラダイムは変わったのか?
|
|
43
|
+
|
|
44
|
+
Phraseは前の十年の問題、すなわち大量の人間翻訳者チームの管理や分断された企業部門間でのワークフローの標準化を解決するために構築されました。ワークフローのガバナンスに非常に優れています。
|
|
45
|
+
|
|
46
|
+
しかし、Large Language Models(LLMs)の到来により、ローカリゼーションのパラダイムは根本的に変化しました。もはや課題は「50人の翻訳者をどのように管理するか?」ではなく、「AIが生成したコンテンツをいかに効率的に検証するか?」です。
|
|
47
|
+
|
|
48
|
+
PhraseはAI機能を組み込んでいますが、それらはしばしば人間中心のワークフローと席ベースのライセンスを前提としたレガシーなアーキテクチャの上に重ねられているに過ぎません。現代では「TMSへプッシュする」「TMSからプルする」といった摩擦は時代遅れになりつつあります。開発者はコンテンツがコードのように流動的であることを期待しています。
|
|
49
|
+
|
|
50
|
+
今日、最も効率的なワークフローは、まずAIを使ってページをグローバルに翻訳・配置することです。その後、第2フェーズとして、プロダクトが既に収益を上げ始めた段階で、特定の高トラフィックコンテンツを人間のコピーライターが最適化してコンバージョンを向上させます。
|
|
51
|
+
|
|
52
|
+
## なぜ Intlayer は Phrase の優れた代替となるのか?
|
|
53
|
+
|
|
54
|
+
Intlayer は AI 時代に生まれ、特に現代の JavaScript/TypeScript エコシステム向けに設計されたソリューションです。Intlayer は、Phrase の重厚なエンタープライズモデルに対して、機敏性と透明性で挑戦します。
|
|
55
|
+
|
|
56
|
+
1. **Pricing Transparency(料金の透明性):** Phrase は Enterprise 向けの料金体系で知られており、成長中の企業にとって不透明で高額になりがちです。Intlayer は独自の API キー(OpenAI、Anthropic など)を持ち込むことを許可し、プラットフォームのサブスクリプションへの上乗せではなく、インテリジェンスに対して市場価格を支払うことを可能にします。
|
|
57
|
+
2. **Developer Experience (DX):** Phraseはファイル同期にCLIツールやAPI呼び出しを多用します。Intlayerはバンドラーとランタイムに直接統合されます。つまり、あなたの定義は厳密に型付けされ(TypeScript)、欠落したキーは本番ではなくコンパイル時に検出されます。
|
|
58
|
+
3. **Speed to Market:** IntlayerはTMSの「ブラックボックス」を取り除きます。ファイルを外部に送って返ってくるのを待つ必要はありません。CIパイプラインやローカル環境でAIを使って即座に翻訳を生成でき、開発ループを短く保てます。
|
|
59
|
+
|
|
60
|
+
# 横並び比較
|
|
61
|
+
|
|
62
|
+
| 機能 | Phrase(Enterprise TMS) | Intlayer(AIネイティブ) |
|
|
63
|
+
| :--------------- | :-------------------------------------------- | :-------------------------------------------- |
|
|
64
|
+
| **コア哲学** | エンタープライズのガバナンス & ワークフロー。 | コンテンツロジック & AI生成を管理。 |
|
|
65
|
+
| **料金モデル** | カスタムエンタープライズ / 席ベース(高額)。 | 推論は自己負担(BYO Key)。 |
|
|
66
|
+
| **統合** | API / CLIを多用。 | コードとの深い統合(宣言型)。 |
|
|
67
|
+
| **更新** | 同期が必要 / パイプライン依存。 | コードベースやライブアプリと即時同期。 |
|
|
68
|
+
| **ファイル形式** | 非常に幅広い(レガシー & ドキュメント)。 | モダンなWeb(JSON, JS, TS)。 |
|
|
69
|
+
| **テスト** | QAチェック / LQA工程。 | CI / CLI / A/Bテスト。 |
|
|
70
|
+
| **ホスティング** | SaaS(エンタープライズ限定)。 | オープンソース & セルフホスト可能(Docker)。 |
|
|
71
|
+
|
|
72
|
+
Intlayerは、コンテンツを深く統合できる完全なオールインワンのi18nソリューションを提供します。リモートコンテンツはコードベースやライブアプリケーションと直接同期できます。比較すると、Phraseは強力ですが複雑な外部依存であり、効果的に運用するには専任のローカリゼーションマネージャーが必要になることが多いです。
|
|
73
|
+
|
|
74
|
+
さらに、IntlayerはFeature FlagやA/B testingツールとしても利用でき、異なるコンテンツのバリエーションを動的にテストできます。Phraseは言語的一貫性を担保するよう設計されていますが、Intlayerは動的データを通じてコンバージョンやユーザー体験の最適化を支援します。
|
|
75
|
+
|
|
76
|
+
PDFや字幕、ソフトウェアを同時に翻訳するような複雑でマルチフォーマットな企業向けニーズにおいてPhraseが有力であることは否定できませんが、ウェブアプリケーションを構築するプロダクトチームで、フルオーナーシップ、型安全性、そして企業向けのオーバーヘッドなしに利用できるモダンなAI駆動ワークフローを求めるのであれば、Intlayerの方が優れた選択です。
|
|
77
|
+
|
|
78
|
+
最後に、データ主権と制御を重視する場合、Intlayerはオープンソースでセルフホスト可能です。Dockerファイルはリポジトリ内に直接用意されており、ローカリゼーションインフラを完全に所有できます—PhraseのクローズドなSaaSエコシステムでは不可能なことです。
|
|
@@ -31,7 +31,7 @@ history:
|
|
|
31
31
|
|
|
32
32
|
# Intlayer를 사용하여 i18next JSON 번역 자동화하는 방법
|
|
33
33
|
|
|
34
|
-
<iframe title="Intlayer를 사용하여 i18next JSON 번역 자동화하는 방법" class="m-auto aspect-
|
|
34
|
+
<iframe title="Intlayer를 사용하여 i18next 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"/>
|
|
35
35
|
|
|
36
36
|
## Intlayer란 무엇인가요?
|
|
37
37
|
|
|
@@ -27,7 +27,7 @@ history:
|
|
|
27
27
|
|
|
28
28
|
# next-i18next와 Intlayer를 활용한 Next.js 국제화(i18n)
|
|
29
29
|
|
|
30
|
-
<iframe title="Intlayer를 사용하여 next-i18next JSON 번역 자동화하는 방법" class="m-auto aspect-
|
|
30
|
+
<iframe title="Intlayer를 사용하여 next-i18next 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"/>
|
|
31
31
|
|
|
32
32
|
## 목차
|
|
33
33
|
|
|
@@ -26,7 +26,7 @@ history:
|
|
|
26
26
|
|
|
27
27
|
# Intlayer를 사용하여 next-intl JSON 번역 자동화하는 방법
|
|
28
28
|
|
|
29
|
-
<iframe title="Intlayer를 사용하여 next-intl JSON 번역 자동화하는 방법" class="m-auto aspect-
|
|
29
|
+
<iframe title="Intlayer를 사용하여 next-intl 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"/>
|
|
30
30
|
|
|
31
31
|
## Intlayer란 무엇인가요?
|
|
32
32
|
|
|
@@ -29,7 +29,7 @@ history:
|
|
|
29
29
|
|
|
30
30
|
# Intlayer를 사용하여 react-i18next JSON 번역 자동화하는 방법
|
|
31
31
|
|
|
32
|
-
<iframe title="Intlayer를 사용하여 react-i18next JSON 번역 자동화하는 방법" class="m-auto aspect-
|
|
32
|
+
<iframe title="Intlayer를 사용하여 react-i18next 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"/>
|
|
33
33
|
|
|
34
34
|
## Intlayer란 무엇인가요?
|
|
35
35
|
|
|
@@ -27,7 +27,7 @@ history:
|
|
|
27
27
|
|
|
28
28
|
# Intlayer를 사용하여 react-intl JSON 번역 자동화하는 방법
|
|
29
29
|
|
|
30
|
-
<iframe title="Intlayer를 사용하여 react-intl JSON 번역 자동화하는 방법" class="m-auto aspect-
|
|
30
|
+
<iframe title="Intlayer를 사용하여 react-intl 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"/>
|
|
31
31
|
|
|
32
32
|
## 목차
|
|
33
33
|
|
|
@@ -27,7 +27,7 @@ history:
|
|
|
27
27
|
|
|
28
28
|
# vue-i18n과 Intlayer를 활용한 Vue.js 국제화(i18n)
|
|
29
29
|
|
|
30
|
-
<iframe title="Intlayer를 사용하여 vue-i18n JSON 번역 자동화하는 방법" class="m-auto aspect-
|
|
30
|
+
<iframe title="Intlayer를 사용하여 vue-i18n 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"/>
|
|
31
31
|
|
|
32
32
|
## 목차
|
|
33
33
|
|