Implement multi-language support in user management and system management pages
- Integrated multi-language functionality across various user management components, including user list, roles list, and user authorization pages, enhancing accessibility for diverse users. - Updated UI elements to utilize translation keys, ensuring that all text is dynamically translated based on user preferences. - Improved error handling messages to be localized, providing a better user experience in case of issues. These changes significantly enhance the usability and internationalization of the user management features, making the application more inclusive.
This commit is contained in:
@@ -21,6 +21,7 @@ interface CompanyDeleteDialogProps {
|
||||
onClose: () => void;
|
||||
onConfirm: () => Promise<boolean>;
|
||||
onClearError: () => void;
|
||||
t?: (key: string, params?: Record<string, string | number>) => string;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -33,7 +34,21 @@ export function CompanyDeleteDialog({
|
||||
onClose,
|
||||
onConfirm,
|
||||
onClearError,
|
||||
t,
|
||||
}: CompanyDeleteDialogProps) {
|
||||
const _t = t || ((key: string) => {
|
||||
const defaults: Record<string, string> = {
|
||||
"company.delete.title": "회사 삭제 확인",
|
||||
"company.delete.description": "선택한 회사를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
|
||||
"company.delete.companyName": "회사명",
|
||||
"company.delete.companyCode": "회사 코드",
|
||||
"company.delete.writer": "등록자",
|
||||
"company.delete.regdate": "등록일",
|
||||
"company.delete.cancel": "취소",
|
||||
"company.delete.confirm": "삭제",
|
||||
};
|
||||
return defaults[key] || key;
|
||||
});
|
||||
const [isDeleting, setIsDeleting] = useState(false);
|
||||
|
||||
// 다이얼로그가 열려있지 않으면 렌더링하지 않음
|
||||
@@ -71,10 +86,10 @@ export function CompanyDeleteDialog({
|
||||
<DialogHeader>
|
||||
<DialogTitle className="text-destructive flex items-center gap-2">
|
||||
<AlertTriangle className="h-5 w-5" />
|
||||
회사 삭제 확인
|
||||
{_t("company.delete.title")}
|
||||
</DialogTitle>
|
||||
<DialogDescription className="text-left">
|
||||
선택한 회사를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.
|
||||
{_t("company.delete.description")}
|
||||
</DialogDescription>
|
||||
</DialogHeader>
|
||||
|
||||
@@ -83,19 +98,19 @@ export function CompanyDeleteDialog({
|
||||
<div className="border-destructive/20 bg-destructive/5 rounded-md border p-4">
|
||||
<div className="space-y-2">
|
||||
<div className="flex items-center justify-between">
|
||||
<span className="text-muted-foreground text-sm font-medium">회사명</span>
|
||||
<span className="text-muted-foreground text-sm font-medium">{_t("company.delete.companyName")}</span>
|
||||
<span className="font-medium">{targetCompany.company_name}</span>
|
||||
</div>
|
||||
<div className="flex items-center justify-between">
|
||||
<span className="text-muted-foreground text-sm font-medium">회사 코드</span>
|
||||
<span className="text-muted-foreground text-sm font-medium">{_t("company.delete.companyCode")}</span>
|
||||
<span className="font-mono text-sm">{targetCompany.company_code}</span>
|
||||
</div>
|
||||
<div className="flex items-center justify-between">
|
||||
<span className="text-muted-foreground text-sm font-medium">등록자</span>
|
||||
<span className="text-muted-foreground text-sm font-medium">{_t("company.delete.writer")}</span>
|
||||
<span className="text-sm">{targetCompany.writer}</span>
|
||||
</div>
|
||||
<div className="flex items-center justify-between">
|
||||
<span className="text-muted-foreground text-sm font-medium">등록일</span>
|
||||
<span className="text-muted-foreground text-sm font-medium">{_t("company.delete.regdate")}</span>
|
||||
<span className="text-sm">
|
||||
{new Date(targetCompany.regdate).toLocaleDateString("ko-KR", {
|
||||
year: "numeric",
|
||||
@@ -135,7 +150,7 @@ export function CompanyDeleteDialog({
|
||||
|
||||
<DialogFooter>
|
||||
<Button variant="outline" onClick={handleCancel} disabled={isLoading || isDeleting}>
|
||||
취소
|
||||
{_t("company.delete.cancel")}
|
||||
</Button>
|
||||
<Button
|
||||
variant="destructive"
|
||||
@@ -143,7 +158,7 @@ export function CompanyDeleteDialog({
|
||||
disabled={isLoading || isDeleting}
|
||||
className="min-w-[120px]"
|
||||
>
|
||||
{isLoading || isDeleting ? <LoadingSpinner className="mr-2 h-4 w-4" /> : "삭제"}
|
||||
{isLoading || isDeleting ? <LoadingSpinner className="mr-2 h-4 w-4" /> : _t("company.delete.confirm")}
|
||||
</Button>
|
||||
</DialogFooter>
|
||||
</DialogContent>
|
||||
|
||||
Reference in New Issue
Block a user