From 14c67fd3fd5b70328a2018d2133cf72d41a4ca34 Mon Sep 17 00:00:00 2001
From: linshen <32978552+linshenkx@users.noreply.github.com>
Date: Thu, 30 Oct 2025 23:42:54 +0800
Subject: [PATCH] =?UTF-8?q?feat(i18n):=20=E5=AE=8C=E5=96=84=E6=A8=A1?=
=?UTF-8?q?=E5=9E=8B=E7=AE=A1=E7=90=86=E5=99=A8=E6=9C=AC=E5=9C=B0=E5=8C=96?=
=?UTF-8?q?=E5=92=8C=E6=96=87=E6=A1=A3=E6=A0=87=E9=A2=98=E5=8A=A8=E6=80=81?=
=?UTF-8?q?=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 新增 modelManager.provider 和 modelManager.model 配置项的国际化支持
- TextModelEditModal.vue 使用 i18n 替代硬编码文本
- 实现文档标题根据语言切换动态更新
- 添加 HTML lang 属性自动设置以改善 SEO 和可访问性
Co-authored-by: Foo Wei <25111723+fwten@users.noreply.github.com>
---
.../ui/src/components/TextModelEditModal.vue | 8 ++++----
packages/ui/src/i18n/locales/en-US.ts | 9 +++++++++
packages/ui/src/i18n/locales/zh-CN.ts | 9 +++++++++
packages/ui/src/i18n/locales/zh-TW.ts | 9 +++++++++
packages/web/src/main.ts | 18 ++++++++++++++++--
5 files changed, 47 insertions(+), 6 deletions(-)
diff --git a/packages/ui/src/components/TextModelEditModal.vue b/packages/ui/src/components/TextModelEditModal.vue
index 98ae774a..96c1571a 100644
--- a/packages/ui/src/components/TextModelEditModal.vue
+++ b/packages/ui/src/components/TextModelEditModal.vue
@@ -33,14 +33,14 @@
- 提供商配置
+ {{ t('modelManager.provider.section') }}
-
+
@@ -82,7 +82,7 @@
- 模型配置
+ {{ t('modelManager.model.section') }}
diff --git a/packages/ui/src/i18n/locales/en-US.ts b/packages/ui/src/i18n/locales/en-US.ts
index 29fa3cbb..7f8fd736 100644
--- a/packages/ui/src/i18n/locales/en-US.ts
+++ b/packages/ui/src/i18n/locales/en-US.ts
@@ -732,6 +732,15 @@ export default {
addModel: "Add",
addImageModel: "Add Image Model",
+ provider: {
+ section: "Provider Configuration",
+ label: "Provider",
+ placeholder: "Select Provider",
+ },
+ model: {
+ section: "Model Configuration",
+ },
+
// Advanced Parameters
advancedParameters: {
title: "Advanced Parameters",
diff --git a/packages/ui/src/i18n/locales/zh-CN.ts b/packages/ui/src/i18n/locales/zh-CN.ts
index 80745906..572d1053 100644
--- a/packages/ui/src/i18n/locales/zh-CN.ts
+++ b/packages/ui/src/i18n/locales/zh-CN.ts
@@ -713,6 +713,15 @@ export default {
addModel: "添加",
addImageModel: "添加图像模型",
+ provider: {
+ section: "提供商配置",
+ label: "提供商",
+ placeholder: "选择提供商",
+ },
+ model: {
+ section: "模型配置",
+ },
+
// 高级参数
advancedParameters: {
title: "高级参数",
diff --git a/packages/ui/src/i18n/locales/zh-TW.ts b/packages/ui/src/i18n/locales/zh-TW.ts
index 0130365d..460b5b5a 100644
--- a/packages/ui/src/i18n/locales/zh-TW.ts
+++ b/packages/ui/src/i18n/locales/zh-TW.ts
@@ -712,6 +712,15 @@ export default {
addModel: "新增",
addImageModel: "新增圖像模型",
+ provider: {
+ section: "提供商配置",
+ label: "提供商",
+ placeholder: "選擇提供商",
+ },
+ model: {
+ section: "模型配置",
+ },
+
// 進階參數
advancedParameters: {
title: "進階參數",
diff --git a/packages/web/src/main.ts b/packages/web/src/main.ts
index c3bab5f0..92eff129 100644
--- a/packages/web/src/main.ts
+++ b/packages/web/src/main.ts
@@ -15,8 +15,8 @@
* along with this program. If not, see .
*/
-import { createApp } from 'vue'
-import { installI18nOnly } from '@prompt-optimizer/ui'
+import { createApp, watch } from 'vue'
+import { installI18nOnly, i18n } from '@prompt-optimizer/ui'
import App from './App.vue'
import '@prompt-optimizer/ui/dist/style.css'
@@ -24,6 +24,20 @@ import '@prompt-optimizer/ui/dist/style.css'
const app = createApp(App)
// 只安装i18n插件,语言初始化将在App.vue中服务准备好后进行
installI18nOnly(app)
+
+// 同步文档标题和语言属性
+if (typeof document !== 'undefined') {
+ const syncDocumentTitle = () => {
+ document.title = i18n.global.t('common.appName')
+ const currentLocale = String(i18n.global.locale.value || '')
+ const htmlLang = currentLocale.startsWith('zh') ? 'zh' : 'en'
+ document.documentElement.setAttribute('lang', htmlLang)
+ }
+
+ syncDocumentTitle()
+ watch(i18n.global.locale, syncDocumentTitle)
+}
+
app.mount('#app')
// 只在Vercel环境中加载Analytics