fix: update language settings and improve model pricing editor for better clarity and functionality

This commit is contained in:
CaIon
2026-03-06 21:36:51 +08:00
parent fb76abb329
commit c0a0285f74
23 changed files with 2217 additions and 4422 deletions

View File

@@ -37,6 +37,7 @@ import {
import { UserContext } from '../../context/User';
import { StatusContext } from '../../context/Status';
import { useLocation } from 'react-router-dom';
import { normalizeLanguage } from '../../i18n/language';
const { Sider, Content, Header } = Layout;
const PageLayout = () => {
@@ -115,7 +116,11 @@ const PageLayout = () => {
}
const savedLang = localStorage.getItem('i18nextLng');
if (savedLang) {
i18n.changeLanguage(savedLang);
const normalizedLang = normalizeLanguage(savedLang);
if (normalizedLang !== savedLang) {
localStorage.setItem('i18nextLng', normalizedLang);
}
i18n.changeLanguage(normalizedLang);
}
}, [i18n]);

View File

@@ -95,19 +95,19 @@ const RatioSetting = () => {
return (
<Spin spinning={loading} size='large'>
{/* 模型倍率设置以及可视化编辑器 */}
{/* 模型倍率设置以及价格编辑器 */}
<Card style={{ marginTop: '10px' }}>
<Tabs type='card'>
<Tabs type='card' defaultActiveKey='visual'>
<Tabs.TabPane tab={t('模型倍率设置')} itemKey='model'>
<ModelRatioSettings options={inputs} refresh={onRefresh} />
</Tabs.TabPane>
<Tabs.TabPane tab={t('分组倍率设置')} itemKey='group'>
<Tabs.TabPane tab={t('分组相关设置')} itemKey='group'>
<GroupRatioSettings options={inputs} refresh={onRefresh} />
</Tabs.TabPane>
<Tabs.TabPane tab={t('可视化倍率设置')} itemKey='visual'>
<Tabs.TabPane tab={t('价格设置')} itemKey='visual'>
<ModelSettingsVisualEditor options={inputs} refresh={onRefresh} />
</Tabs.TabPane>
<Tabs.TabPane tab={t('未设置倍率模型')} itemKey='unset_models'>
<Tabs.TabPane tab={t('未设置价格模型')} itemKey='unset_models'>
<ModelRatioNotSetEditor options={inputs} refresh={onRefresh} />
</Tabs.TabPane>
<Tabs.TabPane tab={t('上游倍率同步')} itemKey='upstream_sync'>

View File

@@ -23,6 +23,7 @@ import { Languages } from "lucide-react";
import { useTranslation } from "react-i18next";
import { API, showSuccess, showError } from "../../../../helpers";
import { UserContext } from "../../../../context/User";
import { normalizeLanguage } from "../../../../i18n/language";
// Language options with native names
const languageOptions = [
@@ -39,7 +40,7 @@ const PreferencesSettings = ({ t }) => {
const { i18n } = useTranslation();
const [userState, userDispatch] = useContext(UserContext);
const [currentLanguage, setCurrentLanguage] = useState(
i18n.language || "zh-CN",
normalizeLanguage(i18n.language) || "zh-CN",
);
const [loading, setLoading] = useState(false);
@@ -49,8 +50,7 @@ const PreferencesSettings = ({ t }) => {
try {
const settings = JSON.parse(userState.user.setting);
if (settings.language) {
// Normalize legacy "zh" to "zh-CN" for backward compatibility
const lang = settings.language === "zh" ? "zh-CN" : settings.language;
const lang = normalizeLanguage(settings.language);
setCurrentLanguage(lang);
// Sync i18n with saved preference
if (i18n.language !== lang) {