diff --git a/web/classic/src/components/settings/OtherSetting.jsx b/web/classic/src/components/settings/OtherSetting.jsx index f8e0b537..56049093 100644 --- a/web/classic/src/components/settings/OtherSetting.jsx +++ b/web/classic/src/components/settings/OtherSetting.jsx @@ -82,6 +82,7 @@ const OtherSetting = () => { About: false, Footer: false, CheckUpdate: false, + FrontendTheme: false, }); const handleInputChange = async (value, e) => { const name = e.target.id; @@ -278,6 +279,45 @@ const OtherSetting = () => { })); } }; + + const switchToDefaultFrontend = () => { + Modal.confirm({ + title: t('切换到新版前端'), + content: t('切换后页面会自动刷新,并进入新版前端。是否继续?'), + okText: t('确认切换'), + cancelText: t('取消'), + onOk: async () => { + try { + setLoadingInput((loadingInput) => ({ + ...loadingInput, + FrontendTheme: true, + })); + const res = await API.put('/api/option/', { + key: 'theme.frontend', + value: 'default', + }); + const { success, message } = res.data; + if (!success) { + showError(message); + return; + } + showSuccess(t('已切换到新版前端,正在刷新页面')); + setTimeout(() => { + window.location.reload(); + }, 600); + } catch (error) { + console.error('切换新版前端失败', error); + showError(t('切换失败,请稍后重试')); + } finally { + setLoadingInput((loadingInput) => ({ + ...loadingInput, + FrontendTheme: false, + })); + } + }, + }); + }; + const getOptions = async () => { const res = await API.get('/api/option/'); const { success, message, data } = res.data; @@ -342,6 +382,12 @@ const OtherSetting = () => { > {t('检查更新')} + diff --git a/web/classic/src/i18n/locales/en.json b/web/classic/src/i18n/locales/en.json index 6755b627..829a9e4b 100644 --- a/web/classic/src/i18n/locales/en.json +++ b/web/classic/src/i18n/locales/en.json @@ -928,6 +928,9 @@ "取消": "Cancel", "取消全选": "Deselect all", "取消选择": "Deselect", + "切换到新版前端": "Switch to new frontend", + "切换后页面会自动刷新,并进入新版前端。是否继续?": "The page will refresh and open the new frontend. Continue?", + "切换失败,请稍后重试": "Switch failed, please try again later", "变换": "Transform", "变更": "Change", "变焦": "zoom", @@ -1357,6 +1360,7 @@ "已发起支付": "Payment initiated", "已发送到 Fluent": "Sent to Fluent", "已取消 Passkey 注册": "Passkey registration cancelled", + "已切换到新版前端,正在刷新页面": "Switched to the new frontend, refreshing page", "已同步到渠道": "Synced to Channel", "已启用": "Enabled", "已启用 Passkey,无需密码即可登录": "Passkey enabled, login without password", @@ -2525,6 +2529,7 @@ "确认删除该规则?": "Confirm delete this rule?", "确认取消密码登录": "Confirm cancel password login", "确认启用": "Confirm Enable", + "确认切换": "Confirm switch", "确认密码": "Confirm Password", "确认导入配置": "Confirm import configuration", "确认延长": "Confirm Extension", diff --git a/web/classic/src/i18n/locales/fr.json b/web/classic/src/i18n/locales/fr.json index 77a6c332..e433dc8f 100644 --- a/web/classic/src/i18n/locales/fr.json +++ b/web/classic/src/i18n/locales/fr.json @@ -926,6 +926,9 @@ "取消": "Annuler", "取消全选": "Annuler la sélection", "取消选择": "Deselect", + "切换到新版前端": "Passer au nouveau frontend", + "切换后页面会自动刷新,并进入新版前端。是否继续?": "La page sera actualisée et ouvrira le nouveau frontend. Continuer ?", + "切换失败,请稍后重试": "Le changement a échoué, veuillez réessayer plus tard", "变换": "Variation", "变更": "Modification", "变焦": "Zoom", @@ -1358,6 +1361,7 @@ "已发起支付": "Paiement initié", "已发送到 Fluent": "Envoyé à Fluent", "已取消 Passkey 注册": "Enregistrement du Passkey annulé", + "已切换到新版前端,正在刷新页面": "Passage au nouveau frontend effectué, actualisation de la page", "已同步到渠道": "Synced to Channel", "已启用": "Activé", "已启用 Passkey,无需密码即可登录": "Passkey activé. Connexion sans mot de passe disponible.", @@ -2513,6 +2517,7 @@ "确认删除该规则?": "Confirm delete this rule?", "确认取消密码登录": "Confirmer l'annulation de la connexion par mot de passe", "确认启用": "Confirmer l'activation", + "确认切换": "Confirmer le changement", "确认密码": "Confirmer le mot de passe", "确认导入配置": "Confirmer l'importation de la configuration", "确认延长": "Confirm Extension", diff --git a/web/classic/src/i18n/locales/ja.json b/web/classic/src/i18n/locales/ja.json index 07b57d01..5cfa0a26 100644 --- a/web/classic/src/i18n/locales/ja.json +++ b/web/classic/src/i18n/locales/ja.json @@ -913,6 +913,9 @@ "取消": "キャンセル", "取消全选": "すべての選択を解除", "取消选择": "Deselect", + "切换到新版前端": "新しいフロントエンドに切り替え", + "切换后页面会自动刷新,并进入新版前端。是否继续?": "ページを更新して新しいフロントエンドを開きます。続行しますか?", + "切换失败,请稍后重试": "切り替えに失敗しました。しばらくしてからもう一度お試しください", "变换": "バリエーション", "变更": "変更", "变焦": "ズーム", @@ -1337,6 +1340,7 @@ "已发起支付": "支払いを開始しました", "已发送到 Fluent": "Fluentに送信されました", "已取消 Passkey 注册": "Passkeyの登録がキャンセルされました", + "已切换到新版前端,正在刷新页面": "新しいフロントエンドに切り替えました。ページを更新しています", "已同步到渠道": "Synced to Channel", "已启用": "有効", "已启用 Passkey,无需密码即可登录": "Passkeyが有効になり、パスワードなしでログインできます", @@ -2482,6 +2486,7 @@ "确认删除该规则?": "このルールを削除しますか?", "确认取消密码登录": "パスワードログイン無効化の確認", "确认启用": "有効化を確認", + "确认切换": "切り替えを確認", "确认密码": "パスワード(確認用)", "确认导入配置": "設定インポートの確認", "确认延长": "Confirm Extension", diff --git a/web/classic/src/i18n/locales/ru.json b/web/classic/src/i18n/locales/ru.json index f6064146..f4950bfe 100644 --- a/web/classic/src/i18n/locales/ru.json +++ b/web/classic/src/i18n/locales/ru.json @@ -934,6 +934,9 @@ "取消": "Отмена", "取消全选": "Отменить выбор всех", "取消选择": "Deselect", + "切换到新版前端": "Переключиться на новый интерфейс", + "切换后页面会自动刷新,并进入新版前端。是否继续?": "Страница обновится и откроет новый интерфейс. Продолжить?", + "切换失败,请稍后重试": "Не удалось переключиться, повторите попытку позже", "变换": "Трансформация", "变更": "Изменение", "变焦": "Масштабирование", @@ -1371,6 +1374,7 @@ "已发起支付": "Оплата инициирована", "已发送到 Fluent": "Отправлено в Fluent", "已取消 Passkey 注册": "Регистрация Passkey отменена", + "已切换到新版前端,正在刷新页面": "Переключено на новый интерфейс, страница обновляется", "已同步到渠道": "Synced to Channel", "已启用": "Включено", "已启用 Passkey,无需密码即可登录": "Passkey включен, вход без пароля", @@ -2533,6 +2537,7 @@ "确认删除该规则?": "Confirm delete this rule?", "确认取消密码登录": "Подтвердить отмену входа по паролю", "确认启用": "Подтвердить включение", + "确认切换": "Подтвердить переключение", "确认密码": "Подтвердить пароль", "确认导入配置": "Подтвердить импорт конфигурации", "确认延长": "Confirm Extension", diff --git a/web/classic/src/i18n/locales/vi.json b/web/classic/src/i18n/locales/vi.json index daf9fd45..1d83bf6b 100644 --- a/web/classic/src/i18n/locales/vi.json +++ b/web/classic/src/i18n/locales/vi.json @@ -914,6 +914,9 @@ "取消": "Hủy", "取消全选": "Bỏ chọn tất cả", "取消选择": "Deselect", + "切换到新版前端": "Chuyển sang frontend mới", + "切换后页面会自动刷新,并进入新版前端。是否继续?": "Trang sẽ được làm mới và mở frontend mới. Tiếp tục?", + "切换失败,请稍后重试": "Chuyển đổi thất bại, vui lòng thử lại sau", "变换": "Biến đổi", "变更": "Thay đổi", "变焦": "thu phóng", @@ -1338,6 +1341,7 @@ "已发起支付": "Đã khởi tạo thanh toán", "已发送到 Fluent": "Đã gửi đến Fluent", "已取消 Passkey 注册": "Đã hủy đăng ký Passkey", + "已切换到新版前端,正在刷新页面": "Đã chuyển sang frontend mới, đang làm mới trang", "已同步到渠道": "Synced to Channel", "已启用": "Đã bật", "已启用 Passkey,无需密码即可登录": "Đã bật Passkey, đăng nhập không cần mật khẩu", @@ -2710,6 +2714,7 @@ "确认删除该规则?": "Confirm delete this rule?", "确认取消密码登录": "Xác nhận hủy đăng nhập mật khẩu", "确认启用": "Xác nhận bật", + "确认切换": "Xác nhận chuyển đổi", "确认密码": "Xác nhận mật khẩu", "确认导入配置": "Xác nhận nhập cấu hình", "确认延长": "Confirm Extension", diff --git a/web/classic/src/i18n/locales/zh-CN.json b/web/classic/src/i18n/locales/zh-CN.json index 2217d0cb..2156b46d 100644 --- a/web/classic/src/i18n/locales/zh-CN.json +++ b/web/classic/src/i18n/locales/zh-CN.json @@ -761,6 +761,9 @@ "分组速率配置优先级高于全局速率限制。": "分组速率配置优先级高于全局速率限制。", "分组速率限制": "分组速率限制", "分钟": "分钟", + "切换到新版前端": "切换到新版前端", + "切换后页面会自动刷新,并进入新版前端。是否继续?": "切换后页面会自动刷新,并进入新版前端。是否继续?", + "切换失败,请稍后重试": "切换失败,请稍后重试", "切换为Assistant角色": "切换为Assistant角色", "切换为System角色": "切换为System角色", "切换为单密钥模式": "切换为单密钥模式", @@ -1307,6 +1310,7 @@ "已停止批量测试": "已停止批量测试", "已关闭后续提醒": "已关闭后续提醒", "已分配内存": "已分配内存", + "已切换到新版前端,正在刷新页面": "已切换到新版前端,正在刷新页面", "已切换为Assistant角色": "已切换为Assistant角色", "已切换为System角色": "已切换为System角色", "已切换至最优倍率视图,每个模型使用其最低倍率分组": "已切换至最优倍率视图,每个模型使用其最低倍率分组", @@ -2482,6 +2486,7 @@ "确认删除该规则?": "确认删除该规则?", "确认取消密码登录": "确认取消密码登录", "确认启用": "确认启用", + "确认切换": "确认切换", "确认密码": "确认密码", "确认导入配置": "确认导入配置", "确认延长": "确认延长", diff --git a/web/classic/src/i18n/locales/zh-TW.json b/web/classic/src/i18n/locales/zh-TW.json index 61f24657..98d8e892 100644 --- a/web/classic/src/i18n/locales/zh-TW.json +++ b/web/classic/src/i18n/locales/zh-TW.json @@ -911,6 +911,9 @@ "取消": "取消", "取消全选": "取消全選", "取消选择": "取消選擇", + "切换到新版前端": "切換到新版前端", + "切换后页面会自动刷新,并进入新版前端。是否继续?": "切換後頁面會自動重新整理,並進入新版前端。是否繼續?", + "切换失败,请稍后重试": "切換失敗,請稍後重試", "变换": "變換", "变更": "變更", "变焦": "變焦", @@ -1334,6 +1337,7 @@ "已发起支付": "已發起支付", "已发送到 Fluent": "已發送到 Fluent", "已取消 Passkey 注册": "已取消 Passkey 註冊", + "已切换到新版前端,正在刷新页面": "已切換到新版前端,正在重新整理頁面", "已同步到渠道": "已同步到管道", "已启用": "已啟用", "已启用 Passkey,无需密码即可登录": "已啟用 Passkey,無需密碼即可登錄", @@ -2492,6 +2496,7 @@ "确认删除该规则?": "確認刪除該規則?", "确认取消密码登录": "確認取消密碼登錄", "确认启用": "", + "确认切换": "確認切換", "确认密码": "確認密碼", "确认导入配置": "確認導入設定", "确认延长": "確認延長", diff --git a/web/classic/src/i18n/locales/zh.json b/web/classic/src/i18n/locales/zh.json index ca6f3166..e23930f5 100644 --- a/web/classic/src/i18n/locales/zh.json +++ b/web/classic/src/i18n/locales/zh.json @@ -617,6 +617,9 @@ "取消": "取消", "取消全选": "取消全选", "取消选择": "取消选择", + "切换到新版前端": "切换到新版前端", + "切换后页面会自动刷新,并进入新版前端。是否继续?": "切换后页面会自动刷新,并进入新版前端。是否继续?", + "切换失败,请稍后重试": "切换失败,请稍后重试", "变换": "变换", "变焦": "变焦", "变量值": "变量值", @@ -903,6 +906,7 @@ "已删除消息及其回复": "已删除消息及其回复", "已发送到 Fluent": "已发送到 Fluent", "已取消 Passkey 注册": "已取消 Passkey 注册", + "已切换到新版前端,正在刷新页面": "已切换到新版前端,正在刷新页面", "已同步到渠道": "已同步到渠道", "已启用": "已启用", "已启用 Passkey,无需密码即可登录": "已启用 Passkey,无需密码即可登录", @@ -1729,6 +1733,7 @@ "确认删除": "确认删除", "确认删除模型": "确认删除模型", "确认取消密码登录": "确认取消密码登录", + "确认切换": "确认切换", "确认密码": "确认密码", "确认导入配置": "确认导入配置", "确认延长": "确认延长",