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