refactor: 移除语言切换按钮
chrome.i18n 语言由浏览器设置决定,不支持运行时切换,移除 TopBar 中的语言切换按钮及相关逻辑。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
+1
-14
@@ -2,7 +2,6 @@ import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|||||||
import {
|
import {
|
||||||
ArrowLeft,
|
ArrowLeft,
|
||||||
ExternalLink,
|
ExternalLink,
|
||||||
Globe,
|
|
||||||
History,
|
History,
|
||||||
Monitor,
|
Monitor,
|
||||||
Moon,
|
Moon,
|
||||||
@@ -17,7 +16,6 @@ import { FeatureConfig, FEATURES } from '@/config/features';
|
|||||||
import { storageUtil } from '@/utils/chromeStorage';
|
import { storageUtil } from '@/utils/chromeStorage';
|
||||||
import { openExtensionPage } from '@/utils/chromeTabs';
|
import { openExtensionPage } from '@/utils/chromeTabs';
|
||||||
import { useI18n } from '@/utils/chromeI18n';
|
import { useI18n } from '@/utils/chromeI18n';
|
||||||
import { normalizeLanguage, SUPPORTED_LANGUAGES } from '@/utils/chromeI18n';
|
|
||||||
import { cn } from '@/lib/utils'; // 1. 引入 shadcn 核心工具函数
|
import { cn } from '@/lib/utils'; // 1. 引入 shadcn 核心工具函数
|
||||||
|
|
||||||
// 常量配置抽取(无需写在全局变量或 styles 对象里)
|
// 常量配置抽取(无需写在全局变量或 styles 对象里)
|
||||||
@@ -27,7 +25,7 @@ const SEARCH_HISTORY_DISPLAY = 5;
|
|||||||
export default function TopBar({ onOpenOptions }: { onOpenOptions: () => void }) {
|
export default function TopBar({ onOpenOptions }: { onOpenOptions: () => void }) {
|
||||||
const { currentPage, goBack, navigateTo } = useRouter();
|
const { currentPage, goBack, navigateTo } = useRouter();
|
||||||
const { mode, setMode } = useThemeMode();
|
const { mode, setMode } = useThemeMode();
|
||||||
const { t, i18n } = useI18n(['common', 'features']);
|
const { t } = useI18n(['common', 'features']);
|
||||||
|
|
||||||
const [searchQuery, setSearchQuery] = useState('');
|
const [searchQuery, setSearchQuery] = useState('');
|
||||||
const [showResults, setShowResults] = useState(false);
|
const [showResults, setShowResults] = useState(false);
|
||||||
@@ -99,14 +97,6 @@ export default function TopBar({ onOpenOptions }: { onOpenOptions: () => void })
|
|||||||
setShowResults(false);
|
setShowResults(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
const toggleLanguage = async () => {
|
|
||||||
const currentLng = normalizeLanguage(i18n.language);
|
|
||||||
const currentIndex = SUPPORTED_LANGUAGES.indexOf(currentLng);
|
|
||||||
const nextLng = SUPPORTED_LANGUAGES[(currentIndex + 1) % SUPPORTED_LANGUAGES.length];
|
|
||||||
await i18n.changeLanguage(nextLng);
|
|
||||||
await storageUtil.set('app/language', nextLng);
|
|
||||||
};
|
|
||||||
|
|
||||||
const cycleThemeMode = () => {
|
const cycleThemeMode = () => {
|
||||||
const nextMap = { light: 'dark', dark: 'system', system: 'light' } as const;
|
const nextMap = { light: 'dark', dark: 'system', system: 'light' } as const;
|
||||||
setMode(nextMap[mode]);
|
setMode(nextMap[mode]);
|
||||||
@@ -272,9 +262,6 @@ export default function TopBar({ onOpenOptions }: { onOpenOptions: () => void })
|
|||||||
|
|
||||||
{/* 右侧:操作区 */}
|
{/* 右侧:操作区 */}
|
||||||
<div className="flex items-center gap-1 shrink-0">
|
<div className="flex items-center gap-1 shrink-0">
|
||||||
<IconButton onClick={toggleLanguage} title={t('common:buttons.toggleLanguage')}>
|
|
||||||
<Globe className="h-4 w-4" />
|
|
||||||
</IconButton>
|
|
||||||
<IconButton onClick={cycleThemeMode} title={t(`common:buttons.themeMode.${mode}`)}>
|
<IconButton onClick={cycleThemeMode} title={t(`common:buttons.themeMode.${mode}`)}>
|
||||||
<ThemeIcon className="h-4 w-4" />
|
<ThemeIcon className="h-4 w-4" />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
|
|||||||
Reference in New Issue
Block a user