From e41081e860be83bff8cf15d2a7172c5f9331c9df Mon Sep 17 00:00:00 2001 From: 26wukongwudao <26wukongwudao@users.noreply.github.com> Date: Sat, 11 Apr 2026 09:12:45 +0800 Subject: [PATCH] feat(studio): add i18n infrastructure with zh-CN language pack MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add internationalization (i18n) support to AutoGen Studio frontend using react-i18next, enabling multi-language UI with a standard language pack system. Changes: - Add i18next + react-i18next dependencies - Create src/i18n/ with en-US and zh-CN translation files (143 keys) - Initialize i18n in gatsby-browser.js - Add LanguageSwitcher component (antd Select dropdown) - Migrate sidebar navigation to use t() translation calls - Migrate contentheader (Sign out) to i18n - Add antd locale support (zh_CN/en_US) via ConfigProvider - Language preference persisted in localStorage This is the first PR in a series to add full i18n support. Subsequent PRs will migrate remaining page components. 🤖 Generated with CodeArts Agent --- .../autogen-studio/frontend/gatsby-browser.js | 1 + .../autogen-studio/frontend/package.json | 2 + .../src/components/LanguageSwitcher.tsx | 24 +++ .../frontend/src/components/contentheader.tsx | 8 +- .../frontend/src/components/layout.tsx | 9 ++ .../frontend/src/components/sidebar.tsx | 101 ++++++------ .../autogen-studio/frontend/src/i18n/index.ts | 23 +++ .../src/i18n/locales/en-US/translation.json | 145 ++++++++++++++++++ .../src/i18n/locales/zh-CN/translation.json | 145 ++++++++++++++++++ 9 files changed, 407 insertions(+), 51 deletions(-) create mode 100644 python/packages/autogen-studio/frontend/src/components/LanguageSwitcher.tsx create mode 100644 python/packages/autogen-studio/frontend/src/i18n/index.ts create mode 100644 python/packages/autogen-studio/frontend/src/i18n/locales/en-US/translation.json create mode 100644 python/packages/autogen-studio/frontend/src/i18n/locales/zh-CN/translation.json diff --git a/python/packages/autogen-studio/frontend/gatsby-browser.js b/python/packages/autogen-studio/frontend/gatsby-browser.js index b28e798f0d41..df48995969f6 100644 --- a/python/packages/autogen-studio/frontend/gatsby-browser.js +++ b/python/packages/autogen-studio/frontend/gatsby-browser.js @@ -1,5 +1,6 @@ import "antd/dist/reset.css"; import "./src/styles/global.css"; +import "./src/i18n"; import AuthProvider from "./src/hooks/provider"; diff --git a/python/packages/autogen-studio/frontend/package.json b/python/packages/autogen-studio/frontend/package.json index 11abbe0c740c..0403e89f929b 100644 --- a/python/packages/autogen-studio/frontend/package.json +++ b/python/packages/autogen-studio/frontend/package.json @@ -44,6 +44,8 @@ "postcss": "^8.4.49", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-i18next": "^14.1.0", + "i18next": "^23.11.0", "react-markdown": "^9.0.1", "remark-gfm": "^4.0.1", "tailwindcss": "^3.4.14", diff --git a/python/packages/autogen-studio/frontend/src/components/LanguageSwitcher.tsx b/python/packages/autogen-studio/frontend/src/components/LanguageSwitcher.tsx new file mode 100644 index 000000000000..372e24d0602d --- /dev/null +++ b/python/packages/autogen-studio/frontend/src/components/LanguageSwitcher.tsx @@ -0,0 +1,24 @@ +import { useTranslation } from "react-i18next"; +import { Select } from "antd"; + +const languages = [ + { value: "en-US", label: "English" }, + { value: "zh-CN", label: "简体中文" }, +]; + +export const LanguageSwitcher = () => { + const { i18n } = useTranslation(); + return ( +