diff --git a/src/entities/account/ui/account-tab.tsx b/src/entities/account/ui/account-tab.tsx
index 601d3f2..8d69c75 100644
--- a/src/entities/account/ui/account-tab.tsx
+++ b/src/entities/account/ui/account-tab.tsx
@@ -1,13 +1,15 @@
+import { useTranslation } from 'react-i18next';
import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
-import {
- AccountTabKeys,
- AccountTabProps
+import {
+ AccountTabKeys,
+ AccountTabProps
} from '../model/types';
export const AccountTab = ({
activeTab
}: AccountTabProps) => {
+ const { t } = useTranslation();
const { navigate } = useNavigate();
const onClickToNavigation = (tab: AccountTabKeys) => {
@@ -23,14 +25,14 @@ export const AccountTab = ({
return(
<>
-
-
+
+ onClick={ () => onClickToNavigation(AccountTabKeys.PasswordManage) }
+ >{t('account.passwordManagement')}
>
);
diff --git a/src/entities/account/ui/account-user-tab.tsx b/src/entities/account/ui/account-user-tab.tsx
index 0ef154f..d5de9c4 100644
--- a/src/entities/account/ui/account-user-tab.tsx
+++ b/src/entities/account/ui/account-user-tab.tsx
@@ -1,8 +1,9 @@
+import { useTranslation } from 'react-i18next';
import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
-import {
+import {
AccountUserTabKeys,
- AccountUserTabProps
+ AccountUserTabProps
} from '../model/types';
export const AccountUserTab = ({
@@ -12,6 +13,7 @@ export const AccountUserTab = ({
idCL,
status,
}: AccountUserTabProps) => {
+ const { t } = useTranslation();
const { navigate } = useNavigate();
const onClickToNavigation = (tab: AccountUserTabKeys) => {
@@ -41,14 +43,14 @@ export const AccountUserTab = ({
return(
<>
-
-
+
+ onClick={ () => onClickToNavigation( AccountUserTabKeys.AccountAuth) }
+ >{t('account.accountPermission')}
>
);
diff --git a/src/entities/account/ui/password-manage-wrap.tsx b/src/entities/account/ui/password-manage-wrap.tsx
index c53c013..8a5b865 100644
--- a/src/entities/account/ui/password-manage-wrap.tsx
+++ b/src/entities/account/ui/password-manage-wrap.tsx
@@ -1,7 +1,9 @@
+import { useTranslation } from 'react-i18next';
import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
export const PasswordManageWrap = () => {
+ const { t } = useTranslation();
const { navigate } = useNavigate();
return (
@@ -9,16 +11,16 @@ export const PasswordManageWrap = () => {
-
-
+
+ >{t('account.changeCancelPassword')}
diff --git a/src/entities/account/ui/user-login-auth-info-wrap.tsx b/src/entities/account/ui/user-login-auth-info-wrap.tsx
index aeee3d7..cfd5d51 100644
--- a/src/entities/account/ui/user-login-auth-info-wrap.tsx
+++ b/src/entities/account/ui/user-login-auth-info-wrap.tsx
@@ -1,3 +1,4 @@
+import { useTranslation } from 'react-i18next';
import { UserFindAuthMethodParams, UserAuthMethodData, AuthMethodModifyItem } from '@/entities/user/model/types';
import { useUserFindAuthMethodMutation } from '@/entities/user/api/use-user-find-authmethod-mutation';
import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant';
@@ -13,6 +14,7 @@ export const UserLoginAuthInfoWrap = ({
idCL,
status,
}: UserFindAuthMethodParams) => {
+ const { t } = useTranslation();
const { navigate } = useNavigate();
const [pageParam] = useState(DEFAULT_PAGE_PARAM);
const [authMethodData, setAuthMethodData] = useState();
@@ -26,7 +28,7 @@ export const UserLoginAuthInfoWrap = ({
const { mutateAsync: userFindAuthMethod } = useUserFindAuthMethodMutation();
const { mutateAsync: userModifyAuthMethod } = useUserModifyAuthMethodMutation({
onSuccess: () => {
- snackBar('사용자 정보가 성공적으로 저장되었습니다.');
+ snackBar(t('account.userInfoSavedSuccessfully'));
navigate(PATHS.account.user.manage, {
state: {
mid: mid,
@@ -34,7 +36,7 @@ export const UserLoginAuthInfoWrap = ({
});
},
onError: (error) => {
- snackBar(error?.response?.data?.message || '사용자 정보 저장에 실패했습니다.');
+ snackBar(error?.response?.data?.message || t('account.userInfoSaveFailed'));
}
});
@@ -395,11 +397,11 @@ export const UserLoginAuthInfoWrap = ({
-
이메일 주소
+
{t('account.emailAddress')}
@@ -415,7 +417,7 @@ export const UserLoginAuthInfoWrap = ({
@@ -433,7 +435,7 @@ export const UserLoginAuthInfoWrap = ({
@@ -443,11 +445,11 @@ export const UserLoginAuthInfoWrap = ({
-
휴대폰 번호
+
{t('account.phoneNumber')}
@@ -457,13 +459,13 @@ export const UserLoginAuthInfoWrap = ({
@@ -474,20 +476,20 @@ export const UserLoginAuthInfoWrap = ({
handleNewPhoneChange(index, e.target.value)}
readOnly={readOnlyPhones.has(index) || index !== editablePhoneIndex}
/>
))}
-
※ 탭을 변경하면 미저장 내용은 초기화됩니다.
+
{t('account.tabChangeResetNotice')}
@@ -496,7 +498,7 @@ export const UserLoginAuthInfoWrap = ({
disabled={!isSaveButtonEnabled()}
onClick={handleSave}
>
- 저장
+ {t('common.save')}
diff --git a/src/entities/account/ui/user-manage-wrap.tsx b/src/entities/account/ui/user-manage-wrap.tsx
index ea27098..56c2dc7 100644
--- a/src/entities/account/ui/user-manage-wrap.tsx
+++ b/src/entities/account/ui/user-manage-wrap.tsx
@@ -1,4 +1,5 @@
import { ChangeEvent, useEffect, useState } from 'react';
+import { useTranslation } from 'react-i18next';
import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant';
@@ -8,6 +9,7 @@ import { UserListItem } from '@/entities/user/model/types';
import { useStore } from '@/shared/model/store';
export const UserManageWrap = () => {
+ const { t } = useTranslation();
const { navigate } = useNavigate();
const midOptions = useStore.getState().UserStore.selectOptionsMids;
const userMid = useStore.getState().UserStore.mid;
@@ -60,7 +62,7 @@ export const UserManageWrap = () => {
- 등록 현황
+ {t('account.registrationStatus')}
@@ -76,7 +78,7 @@ export const UserManageWrap = () => {
+ >{t('account.addUser')}
>
diff --git a/src/locales/en.json b/src/locales/en.json
index 576a899..6c01166 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -189,6 +189,56 @@
"logout": "Logout"
},
"account": {
+ "title": "Account Management",
+ "userManagement": "User Management",
+ "passwordManagement": "Password Management",
+ "userSettings": "User Settings",
+ "addUser": "Add User",
+ "addAccount": "Add Account",
+ "loginAuthInfo": "Login Authentication Info",
+ "accountPermission": "Account Permission",
+ "registrationStatus": "Registration Status",
+ "userId": "User ID",
+ "password": "Password",
+ "loginRange": "Login Range",
+ "merchant": "Merchant",
+ "currentPassword": "Current Password",
+ "newPassword": "New Password",
+ "reEnterNewPassword": "Re-enter New Password",
+ "changeLoginPassword": "Change Login Password",
+ "changeCancelPassword": "Change Cancel Password",
+ "identityVerificationInfo": "Identity Verification Information",
+ "identityVerificationNotice": "The information you provide will be used for login and sending merchant-related materials.",
+ "emailAddress": "Email Address",
+ "phoneNumber": "Phone Number",
+ "addEmail": "Add Email",
+ "addPhone": "Add Phone",
+ "pleaseEnterId": "Please enter ID",
+ "pleaseEnterPassword": "Please enter password",
+ "pleaseEnter8OrMoreCharacters": "Please enter 8 or more characters",
+ "enterPassword": "Enter password",
+ "reEnterPassword": "Re-enter password",
+ "enterPhoneNumber": "Enter phone number",
+ "checking": "Checking...",
+ "availableId": "This ID is available.",
+ "duplicateIdExists": "This ID already exists.",
+ "inputMismatch": "Input mismatch",
+ "processing": "Processing...",
+ "userAddedSuccessfully": "User added successfully.",
+ "userAddFailed": "Failed to add user.",
+ "userInfoSavedSuccessfully": "User information saved successfully.",
+ "userInfoSaveFailed": "Failed to save user information.",
+ "passwordChangedSuccessfully": "Password changed successfully.",
+ "passwordChangeFailed": "Failed to change password.",
+ "permissionSavedSuccessfully": "Permission saved successfully.",
+ "permissionSaveFailed": "Failed to save permission.",
+ "permissionSaved": "Permission saved.",
+ "setMenuPermissions": "Please set menu permissions.",
+ "permissionRestrictionsNotice": "Function usage will be restricted according to selected permissions.",
+ "save": "Save",
+ "execute": "Execute",
+ "download": "Download",
+ "tabChangeResetNotice": "※ Unsaved content will be reset when switching tabs.",
"accountStatus": "Account Status",
"active": "Active",
"inactive": "Inactive",
diff --git a/src/locales/ko.json b/src/locales/ko.json
index b9153e3..77a117c 100644
--- a/src/locales/ko.json
+++ b/src/locales/ko.json
@@ -194,6 +194,56 @@
"logout": "로그아웃"
},
"account": {
+ "title": "계정 관리",
+ "userManagement": "사용자 관리",
+ "passwordManagement": "비밀번호 관리",
+ "userSettings": "사용자 설정",
+ "addUser": "사용자 추가",
+ "addAccount": "계정 추가",
+ "loginAuthInfo": "로그인 인증정보",
+ "accountPermission": "계정권한",
+ "registrationStatus": "등록 현황",
+ "userId": "사용자ID",
+ "password": "비밀번호",
+ "loginRange": "로그인 범위",
+ "merchant": "가맹점",
+ "currentPassword": "기존 비밀번호",
+ "newPassword": "변경 비밀번호",
+ "reEnterNewPassword": "변경 비밀번호 재입력",
+ "changeLoginPassword": "로그인 비밀번호 변경",
+ "changeCancelPassword": "거래취소 비밀번호 변경",
+ "identityVerificationInfo": "본인인증용 정보 입력",
+ "identityVerificationNotice": "입력하신 정보는 이후 로그인 및 가맹점 관련 자료 발송에 이용됩니다.",
+ "emailAddress": "이메일 주소",
+ "phoneNumber": "휴대폰 번호",
+ "addEmail": "이메일 추가",
+ "addPhone": "휴대폰 추가",
+ "pleaseEnterId": "ID를 입력해 주세요",
+ "pleaseEnterPassword": "비밀번호를 입력해 주세요",
+ "pleaseEnter8OrMoreCharacters": "8자리 이상 입력해 주세요",
+ "enterPassword": "비밀번호를 입력하세요",
+ "reEnterPassword": "비밀번호를 다시 입력하세요",
+ "enterPhoneNumber": "휴대폰 번호 입력",
+ "checking": "확인 중...",
+ "availableId": "사용 가능한 ID입니다.",
+ "duplicateIdExists": "동일한 ID가 이미 존재합니다.",
+ "inputMismatch": "입력 정보 불일치",
+ "processing": "처리중...",
+ "userAddedSuccessfully": "사용자가 성공적으로 추가되었습니다.",
+ "userAddFailed": "사용자 추가에 실패했습니다.",
+ "userInfoSavedSuccessfully": "사용자 정보가 성공적으로 저장되었습니다.",
+ "userInfoSaveFailed": "사용자 정보 저장에 실패했습니다.",
+ "passwordChangedSuccessfully": "비밀번호가 성공적으로 변경되었습니다.",
+ "passwordChangeFailed": "비밀번호 변경에 실패했습니다.",
+ "permissionSavedSuccessfully": "권한이 성공적으로 저장되었습니다.",
+ "permissionSaveFailed": "권한 저장에 실패했습니다.",
+ "permissionSaved": "권한이 저장되었습니다.",
+ "setMenuPermissions": "메뉴별 사용 권한을 설정해 주세요.",
+ "permissionRestrictionsNotice": "선택한 권한에 따라 기능 이용이 제한됩니다.",
+ "save": "저장",
+ "execute": "실행",
+ "download": "다운로드",
+ "tabChangeResetNotice": "※ 탭을 변경하면 미저장 내용은 초기화됩니다.",
"accountStatus": "계정 상태",
"active": "사용",
"inactive": "미사용",
diff --git a/src/pages/account/password/manage-page.tsx b/src/pages/account/password/manage-page.tsx
index 70c5016..b997f28 100644
--- a/src/pages/account/password/manage-page.tsx
+++ b/src/pages/account/password/manage-page.tsx
@@ -1,11 +1,12 @@
import { useState } from 'react';
+import { useTranslation } from 'react-i18next';
import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { AccountTab } from '@/entities/account/ui/account-tab';
import { PasswordManageWrap } from '@/entities/account/ui/password-manage-wrap';
import { AccountTabKeys } from '@/entities/account/model/types';
import { HeaderType } from '@/entities/common/model/types';
-import {
+import {
useSetHeaderTitle,
useSetHeaderType,
useSetFooterMode,
@@ -13,10 +14,11 @@ import {
} from '@/widgets/sub-layout/use-sub-layout';
export const PasswordManagePage = () => {
+ const { t } = useTranslation();
const { navigate } = useNavigate();
const [activeTab, setActiveTab] = useState(AccountTabKeys.PasswordManage);
- useSetHeaderTitle(t('account.manage'));
+ useSetHeaderTitle(t('account.title'));
useSetHeaderType(HeaderType.LeftArrow);
useSetFooterMode(false);
useSetOnBack(() => {
diff --git a/src/pages/account/password/modify-cancel-password-page.tsx b/src/pages/account/password/modify-cancel-password-page.tsx
index 41a60dd..0218f1c 100644
--- a/src/pages/account/password/modify-cancel-password-page.tsx
+++ b/src/pages/account/password/modify-cancel-password-page.tsx
@@ -1,4 +1,5 @@
import { useState } from 'react';
+import { useTranslation } from 'react-i18next';
import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { HeaderType } from '@/entities/common/model/types';
@@ -13,6 +14,7 @@ import { useStore } from '@/shared/model/store';
import { snackBar } from '@/shared/lib/toast';
export const PasswordModifyCancelPasswordPage = () => {
+ const { t } = useTranslation();
const { navigate } = useNavigate();
const midOptions = useStore.getState().UserStore.selectOptionsMids;
const userMid = useStore.getState().UserStore.mid;
@@ -23,7 +25,7 @@ export const PasswordModifyCancelPasswordPage = () => {
const changeCancelPasswordMutation = useUserChangeCancelPasswordMutation({
onSuccess: () => {
- snackBar('비밀번호가 성공적으로 변경되었습니다.');
+ snackBar(t('account.passwordChangedSuccessfully'));
// Clear form
setPassword('');
setConfirmPassword('');
@@ -31,11 +33,11 @@ export const PasswordModifyCancelPasswordPage = () => {
navigate(PATHS.account.password.manage);
},
onError: (error) => {
- snackBar(error?.response?.data?.message || '비밀번호 변경에 실패했습니다.');
+ snackBar(error?.response?.data?.message || t('account.passwordChangeFailed'));
}
});
- useSetHeaderTitle('거래취소 비밀번호 변경');
+ useSetHeaderTitle(t('account.changeCancelPassword'));
useSetHeaderType(HeaderType.LeftArrow);
useSetFooterMode(false);
useSetOnBack(() => {
@@ -69,7 +71,7 @@ export const PasswordModifyCancelPasswordPage = () => {
-
가맹점 *
+
{t('account.merchant')} *
-
변경 비밀번호 *
+
{t('account.newPassword')} *
setPassword(e.target.value)}
/>
-
변경 비밀번호 재입력 *
+
{t('account.reEnterNewPassword')} *
setConfirmPassword(e.target.value)}
/>
{confirmPassword && password !== confirmPassword && (
-
입력 정보 불일치
+
{t('account.inputMismatch')}
)}
@@ -116,7 +118,7 @@ export const PasswordModifyCancelPasswordPage = () => {
type="button"
disabled={!isFormValid() || changeCancelPasswordMutation.isPending}
onClick={handleSave}
- >{changeCancelPasswordMutation.isPending ? '처리중...' : '저장'}
+ >{changeCancelPasswordMutation.isPending ? t('account.processing') : t('common.save')}
diff --git a/src/pages/account/password/modify-login-password-page.tsx b/src/pages/account/password/modify-login-password-page.tsx
index 7ef4e0e..7580932 100644
--- a/src/pages/account/password/modify-login-password-page.tsx
+++ b/src/pages/account/password/modify-login-password-page.tsx
@@ -1,4 +1,5 @@
import { useState } from 'react';
+import { useTranslation } from 'react-i18next';
import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { HeaderType } from '@/entities/common/model/types';
@@ -12,6 +13,7 @@ import { useUserChangePasswordMutation } from '@/entities/user/api/use-user-chan
import { snackBar } from '@/shared/lib/toast';
export const PasswordModifyLoginPasswordPage = () => {
+ const { t } = useTranslation();
const { navigate } = useNavigate();
const [currentPassword, setCurrentPassword] = useState('');
const [newPassword, setNewPassword] = useState('');
@@ -20,7 +22,7 @@ export const PasswordModifyLoginPasswordPage = () => {
const changePasswordMutation = useUserChangePasswordMutation({
onSuccess: () => {
- snackBar('비밀번호가 성공적으로 변경되었습니다.');
+ snackBar(t('account.passwordChangedSuccessfully'));
// Clear form
setCurrentPassword('');
setNewPassword('');
@@ -29,11 +31,11 @@ export const PasswordModifyLoginPasswordPage = () => {
navigate(PATHS.account.password.manage);
},
onError: (error) => {
- snackBar(error?.response?.data?.message || '비밀번호 변경에 실패했습니다.');
+ snackBar(error?.response?.data?.message || t('account.passwordChangeFailed'));
}
});
- useSetHeaderTitle('로그인 비밀번호 변경');
+ useSetHeaderTitle(t('account.changeLoginPassword'));
useSetHeaderType(HeaderType.LeftArrow);
useSetFooterMode(false);
useSetOnBack(() => {
@@ -70,7 +72,7 @@ export const PasswordModifyLoginPasswordPage = () => {
-
기존 비밀번호 *
+
{t('account.currentPassword')} *
{
/>
-
변경 비밀번호 *
+
{t('account.newPassword')} *
{
/>
-
변경 비밀번호 재입력 *
+
{t('account.reEnterNewPassword')} *
{
/>
{confirmPassword && newPassword !== confirmPassword && (
-
입력 정보 불일치
+
{t('account.inputMismatch')}
)}
@@ -110,7 +112,7 @@ export const PasswordModifyLoginPasswordPage = () => {
type="button"
disabled={!isFormValid() || changePasswordMutation.isPending}
onClick={handleSave}
- >{changePasswordMutation.isPending ? '처리중...' : '저장'}
+ >{changePasswordMutation.isPending ? t('account.processing') : t('common.save')}
diff --git a/src/pages/account/user/account-auth-page.tsx b/src/pages/account/user/account-auth-page.tsx
index 713c0eb..ccfe07c 100644
--- a/src/pages/account/user/account-auth-page.tsx
+++ b/src/pages/account/user/account-auth-page.tsx
@@ -1,12 +1,13 @@
import { useEffect, useState } from 'react';
import { useLocation } from 'react-router';
+import { useTranslation } from 'react-i18next';
import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { AccountUserTab } from '@/entities/account/ui/account-user-tab';
import { UserAccountAuthWrap } from '@/entities/account/ui/user-account-auth-wrap';
import { AccountUserTabKeys } from '@/entities/account/model/types';
import { HeaderType } from '@/entities/common/model/types';
-import {
+import {
useSetHeaderTitle,
useSetHeaderType,
useSetFooterMode,
@@ -14,12 +15,13 @@ import {
} from '@/widgets/sub-layout/use-sub-layout';
export const UserAccountAuthPage = () => {
+ const { t } = useTranslation();
const { navigate } = useNavigate();
const location = useLocation();
const { mid, usrid, idCL, status } = location.state || {};
const [activeTab, ] = useState(AccountUserTabKeys.AccountAuth);
- useSetHeaderTitle('사용자 설정');
+ useSetHeaderTitle(t('account.userSettings'));
useSetHeaderType(HeaderType.LeftArrow);
useSetFooterMode(false);
useSetOnBack(() => {
diff --git a/src/pages/account/user/add-account-page.tsx b/src/pages/account/user/add-account-page.tsx
index 611d05c..56b171c 100644
--- a/src/pages/account/user/add-account-page.tsx
+++ b/src/pages/account/user/add-account-page.tsx
@@ -1,3 +1,4 @@
+import { useTranslation } from 'react-i18next';
import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { HeaderType } from '@/entities/common/model/types';
@@ -15,16 +16,17 @@ import { useLocation } from 'react-router';
import { snackBar } from '@/shared/lib/toast';
export const UserAddAccountPage = () => {
+ const { t } = useTranslation();
const { navigate } = useNavigate();
const location = useLocation();
const { mid } = location.state || {};
const { mutateAsync: userCreate, isPending } = useUserCreateMutation({
onSuccess: () => {
- snackBar('사용자가 성공적으로 추가되었습니다.');
+ snackBar(t('account.userAddedSuccessfully'));
},
onError: (error) => {
- snackBar(error?.response?.data?.message || '사용자 추가에 실패했습니다.');
+ snackBar(error?.response?.data?.message || t('account.userAddFailed'));
}
});
@@ -67,13 +69,13 @@ export const UserAddAccountPage = () => {
if (userExistsData && shouldCheckUsrid) {
setIsCheckingUsrid(false);
if (userExistsData.exists) {
- setErrors(prev => ({ ...prev, usrid: '동일한 ID가 이미 존재합니다.' }));
+ setErrors(prev => ({ ...prev, usrid: t('account.duplicateIdExists') }));
} else {
setErrors(prev => ({ ...prev, usrid: '' }));
}
setShouldCheckUsrid(false);
}
- }, [userExistsData, shouldCheckUsrid]);
+ }, [userExistsData, shouldCheckUsrid, t]);
// 이메일/전화번호 관리 함수들 (user-login-auth-info-wrap 방식)
const handleAddEmail = () => {
@@ -159,9 +161,9 @@ export const UserAddAccountPage = () => {
// 비밀번호 검증 함수
const validatePassword = (password: string) => {
if (!password.trim()) {
- return '비밀번호를 입력해 주세요';
+ return t('account.pleaseEnterPassword');
} else if (password.length < 8) {
- return '8자리 이상 입력해 주세요';
+ return t('account.pleaseEnter8OrMoreCharacters');
}
return '';
};
@@ -317,16 +319,16 @@ export const UserAddAccountPage = () => {
// 사용자 ID 검증
if (!formData.usrid.trim()) {
- newErrors.usrid = 'ID를 입력해 주세요';
+ newErrors.usrid = t('account.pleaseEnterId');
isValid = false;
}
// 비밀번호 검증
if (!formData.password.trim()) {
- newErrors.password = '비밀번호를 입력해 주세요';
+ newErrors.password = t('account.pleaseEnterPassword');
isValid = false;
} else if (formData.password.length < 8) {
- newErrors.password = '8자리 이상 입력해 주세요';
+ newErrors.password = t('account.pleaseEnter8OrMoreCharacters');
isValid = false;
}
@@ -382,12 +384,12 @@ export const UserAddAccountPage = () => {
if (response.status) {
// 성공 시 사용자 관리 페이지로 이동
- snackBar('사용자가 성공적으로 추가되었습니다.');
+ snackBar(t('account.userAddedSuccessfully'));
navigate(PATHS.account.user.manage);
} else if (response.error) {
// 에러 처리
if (response.error.errKey === 'USER_DUPLICATE') {
- setErrors(prev => ({ ...prev, usrid: '동일한 ID가 이미 존재합니다.' }));
+ setErrors(prev => ({ ...prev, usrid: t('account.duplicateIdExists') }));
} else {
// 기타 에러 처리
console.error('User creation failed:', response.error.message);
@@ -398,7 +400,7 @@ export const UserAddAccountPage = () => {
}
};
- useSetHeaderTitle('사용자 추가');
+ useSetHeaderTitle(t('account.addUser'));
useSetHeaderType(HeaderType.LeftArrow);
useSetFooterMode(false);
useSetOnBack(() => {
@@ -413,12 +415,12 @@ export const UserAddAccountPage = () => {
-
사용자ID *
+
{t('account.userId')} *
handleInputChange('usrid', e.target.value)}
/>
@@ -431,22 +433,22 @@ export const UserAddAccountPage = () => {
fontSize: '12px',
color: '#666'
}}>
- 확인 중...
+ {t('account.checking')}
)}
{errors.usrid &&
{errors.usrid}
}
{!errors.usrid && formData.usrid && userExistsData && !userExistsData.exists && (
-
사용 가능한 ID입니다.
+
{t('account.availableId')}
)}
-
비밀번호 *
+
{t('account.password')} *
handleInputChange('password', e.target.value)}
onBlur={handlePasswordBlur}
@@ -455,7 +457,7 @@ export const UserAddAccountPage = () => {
{errors.password &&
{errors.password}
}
-
로그인 범위
+
{t('account.loginRange')}