feat(i18n): add internationalization support across multiple components

This commit is contained in:
2025-10-29 16:40:20 +08:00
parent 184c232cc8
commit 9199ed7c29
34 changed files with 1455 additions and 761 deletions

View File

@@ -1,4 +1,5 @@
import React, { createContext, useContext, useState, useCallback, type PropsWithChildren } from 'react';
import { useTranslation } from 'react-i18next';
import type { IDialogConfig, IDialogInstance, IDialogContextValue } from '../../interfaces/common';
import DialogComponent from './DialogComponent';
@@ -10,6 +11,7 @@ const generateId = () => `dialog_${Date.now()}_${Math.random().toString(36).subs
export const DialogProvider: React.FC<PropsWithChildren> = ({ children }) => {
const [dialogs, setDialogs] = useState<IDialogInstance[]>([]);
const { t } = useTranslation();
// 打开对话框的通用方法
const openDialog = useCallback((config: IDialogConfig): Promise<boolean> => {
@@ -43,10 +45,10 @@ export const DialogProvider: React.FC<PropsWithChildren> = ({ children }) => {
...config,
type: 'confirm',
showCancel: true,
confirmText: config.confirmText || '确定',
cancelText: config.cancelText || '取消',
confirmText: config.confirmText || t('common.confirm'),
cancelText: config.cancelText || t('common.cancel'),
});
}, [openDialog]);
}, [openDialog, t]);
// 信息对话框
const info = useCallback((config: Omit<IDialogConfig, 'type'>): Promise<boolean> => {
@@ -54,9 +56,9 @@ export const DialogProvider: React.FC<PropsWithChildren> = ({ children }) => {
...config,
type: 'info',
showCancel: false,
confirmText: config.confirmText || '确定',
confirmText: config.confirmText || t('common.confirm'),
});
}, [openDialog]);
}, [openDialog, t]);
// 成功对话框
const success = useCallback((config: Omit<IDialogConfig, 'type'>): Promise<boolean> => {
@@ -64,9 +66,9 @@ export const DialogProvider: React.FC<PropsWithChildren> = ({ children }) => {
...config,
type: 'success',
showCancel: false,
confirmText: config.confirmText || '确定',
confirmText: config.confirmText || t('common.confirm'),
});
}, [openDialog]);
}, [openDialog, t]);
// 警告对话框
const warning = useCallback((config: Omit<IDialogConfig, 'type'>): Promise<boolean> => {
@@ -74,9 +76,9 @@ export const DialogProvider: React.FC<PropsWithChildren> = ({ children }) => {
...config,
type: 'warning',
showCancel: false,
confirmText: config.confirmText || '确定',
confirmText: config.confirmText || t('common.confirm'),
});
}, [openDialog]);
}, [openDialog, t]);
// 错误对话框
const error = useCallback((config: Omit<IDialogConfig, 'type'>): Promise<boolean> => {
@@ -84,9 +86,9 @@ export const DialogProvider: React.FC<PropsWithChildren> = ({ children }) => {
...config,
type: 'error',
showCancel: false,
confirmText: config.confirmText || '确定',
confirmText: config.confirmText || t('common.confirm'),
});
}, [openDialog]);
}, [openDialog, t]);
const contextValue: IDialogContextValue = {
dialogs,