diff --git a/apps/src/components/layout/header.tsx b/apps/src/components/layout/header.tsx
index d24361cb6..48e81b290 100644
--- a/apps/src/components/layout/header.tsx
+++ b/apps/src/components/layout/header.tsx
@@ -246,7 +246,7 @@ export function Header() {
{canLogoutWebSession ? (
diff --git a/apps/src/components/layout/language-switcher.tsx b/apps/src/components/layout/language-switcher.tsx
index ebef8b3ea..29f744181 100644
--- a/apps/src/components/layout/language-switcher.tsx
+++ b/apps/src/components/layout/language-switcher.tsx
@@ -42,22 +42,28 @@ export function LanguageSwitcher({
className={cn("h-9 min-w-[116px] gap-2 text-xs", triggerClassName)}
aria-label={t("选择语言")}
>
-
+
-
-
+
+
{(value) => getLocaleLabel(normalizeLocale(value))}
-
- {localeOptions.map((item) => (
-
- {getLocaleLabel(item)}
-
- ))}
+
+ {localeOptions.map((item) => (
+
+ {getLocaleLabel(item)}
+
+ ))}
diff --git a/apps/tests/header-controls.test.mjs b/apps/tests/header-controls.test.mjs
index 7a58ffc06..2677232b4 100644
--- a/apps/tests/header-controls.test.mjs
+++ b/apps/tests/header-controls.test.mjs
@@ -20,7 +20,7 @@ test("管理员仪表盘保留服务开关和语言选择", async () => {
assert.match(source, /
/);
assert.match(source, /v\{serviceStatus\.version\}/);
diff --git a/apps/tests/ui-responsive-regressions.test.mjs b/apps/tests/ui-responsive-regressions.test.mjs
index 2019d6cc4..a5fc82719 100644
--- a/apps/tests/ui-responsive-regressions.test.mjs
+++ b/apps/tests/ui-responsive-regressions.test.mjs
@@ -23,8 +23,15 @@ test("mobile shell preserves page titles and compact controls", async () => {
);
assert.match(headerSource, /flex min-w-0 flex-1[\s\S]*overflow-hidden/);
assert.match(headerSource, /truncate text-lg[\s\S]*sm:text-\[21px\]/);
- assert.match(headerSource, /triggerClassName="w-9 min-w-9/);
- assert.match(languageSource, /compact \? "hidden min-w-0 sm:inline"/);
+ assert.match(
+ headerSource,
+ /triggerClassName="w-10 min-w-10 gap-1 px-0[\s\S]*?sm:w-\[124px\][\s\S]*?sm:gap-2/,
+ );
+ assert.match(
+ languageSource,
+ /flex min-w-0 flex-1 items-center justify-center gap-2 overflow-hidden/,
+ );
+ assert.match(languageSource, /
/);
assert.match(workspaceSource, /line-clamp-2[\s\S]*sm:line-clamp-1/);
});