feat(i18n): add internationalization support across multiple components
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user