- Add next-intl v4.13.2 with cookie-based locale (no i18n routing) - Create src/i18n/request.ts reading NEXT_LOCALE cookie - Merge zh-CN/en messages from teacher-portal + add shell.dev.templates namespace - Wrap next.config.js with withNextIntl plugin (Turbopack resolveAlias) - Refactor RootLayout to async + NextIntlClientProvider + getLocale/getMessages - Replace ThemeI18nProvider with ThemeProvider (theme-only, i18n removed) - Remove locale/setLocale from PluginStore - Rework locale-switcher to useLocale/useTranslations + router.refresh - Update dev/templates page to use getTranslations (Server Component) - Fix WorkbenchPageShell test (loading prop + center instead of children) Verified: locale switch via NEXT_LOCALE cookie changes <html lang> and messages zh-CN: 保存/取消/切换侧栏 | en: Save/Cancel/Toggle sidebar typecheck 0 errors | lint 0 errors 2 warnings (generated) | vitest 231 passed
21 lines
607 B
TypeScript
21 lines
607 B
TypeScript
/**
|
||
* locale-switcher 插件清单(topbar)
|
||
*
|
||
* 语言切换器,插入 top slot。通过 next-intl useLocale() 读写 locale。
|
||
*/
|
||
import type { PluginManifest } from "@/lib/types";
|
||
|
||
export const manifestMeta: Omit<PluginManifest, "Component"> = {
|
||
pluginId: "locale-switcher",
|
||
version: "0.1.0",
|
||
requiredShellVersion: "^1.0.0",
|
||
metadata: {
|
||
displayName: "语言切换",
|
||
description: "切换界面语言(zh-CN / en)",
|
||
category: "topbar",
|
||
requiredRoles: ["teacher", "student", "parent", "admin"],
|
||
defaultSlot: "top",
|
||
defaultSize: { colSpan: 1, rowSpan: 1 },
|
||
},
|
||
};
|