feat: Add x-data-grid component localization (#2925)

thx
This commit is contained in:
0XE 2025-03-07 12:45:56 +08:00 committed by GitHub
parent c2b35fdaa5
commit a1944d1a90

View File

@ -4,14 +4,33 @@ import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow";
import { useSetThemeMode, useThemeMode } from "@/services/states"; import { useSetThemeMode, useThemeMode } from "@/services/states";
import { defaultTheme, defaultDarkTheme } from "@/pages/_theme"; import { defaultTheme, defaultDarkTheme } from "@/pages/_theme";
import { useVerge } from "@/hooks/use-verge"; import { useVerge } from "@/hooks/use-verge";
import { useTheme } from "@mui/material/styles"; import {
zhCN as zhXDataGrid,
enUS as enXDataGrid,
ruRU as ruXDataGrid,
faIR as faXDataGrid,
arSD as arXDataGrid,
} from "@mui/x-data-grid/locales";
import { useTranslation } from "react-i18next";
const appWindow = getCurrentWebviewWindow(); const appWindow = getCurrentWebviewWindow();
const languagePackMap: Record<string, any> = {
zh: { ...zhXDataGrid },
fa: { ...faXDataGrid },
ru: { ...ruXDataGrid },
ar: { ...arXDataGrid },
en: { ...enXDataGrid },
};
const getLanguagePackMap = (key: string) =>
languagePackMap[key] || languagePackMap.en;
/** /**
* custom theme * custom theme
*/ */
export const useCustomTheme = () => { export const useCustomTheme = () => {
const { verge } = useVerge(); const { verge } = useVerge();
const { i18n } = useTranslation();
const { theme_mode, theme_setting } = verge ?? {}; const { theme_mode, theme_setting } = verge ?? {};
const mode = useThemeMode(); const mode = useThemeMode();
const setMode = useSetThemeMode(); const setMode = useSetThemeMode();
@ -41,7 +60,8 @@ export const useCustomTheme = () => {
let theme: Theme; let theme: Theme;
try { try {
theme = createTheme({ theme = createTheme(
{
breakpoints: { breakpoints: {
values: { xs: 0, sm: 650, md: 900, lg: 1200, xl: 1536 }, values: { xs: 0, sm: 650, md: 900, lg: 1200, xl: 1536 },
}, },
@ -68,7 +88,9 @@ export const useCustomTheme = () => {
? `${setting.font_family}, ${dt.font_family}` ? `${setting.font_family}, ${dt.font_family}`
: dt.font_family, : dt.font_family,
}, },
}); },
getLanguagePackMap(i18n.language),
);
} catch { } catch {
// fix #294 // fix #294
theme = createTheme({ theme = createTheme({
@ -133,7 +155,7 @@ export const useCustomTheme = () => {
}, 0); }, 0);
return theme; return theme;
}, [mode, theme_setting]); }, [mode, theme_setting, i18n.language]);
return { theme }; return { theme };
}; };