summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--components/login/login-form.tsx40
-rw-r--r--i18n/locales/en/login.json17
-rw-r--r--i18n/locales/ko/login.json17
3 files changed, 50 insertions, 24 deletions
diff --git a/components/login/login-form.tsx b/components/login/login-form.tsx
index 0e047cc7..36687096 100644
--- a/components/login/login-form.tsx
+++ b/components/login/login-form.tsx
@@ -281,13 +281,13 @@ export function LoginForm() {
if (result.success) {
setMfaCountdown(60);
toast({
- title: '이메일 인증번호 전송',
- description: `${targetEmail}로 인증번호가 전송되었습니다.`,
+ title: t('emailOtpSentTitle'),
+ description: t('emailOtpSentTo', { email: targetEmail }),
});
} else {
toast({
title: t('errorTitle'),
- description: result.error || '이메일 전송에 실패했습니다.',
+ description: result.error || t('emailOtpSendFailed'),
variant: 'destructive',
});
}
@@ -295,7 +295,7 @@ export function LoginForm() {
console.error('Email OTP send error:', error);
toast({
title: t('errorTitle'),
- description: '이메일 전송 중 오류가 발생했습니다.',
+ description: t('emailOtpSendError'),
variant: 'destructive',
});
} finally {
@@ -398,7 +398,7 @@ export function LoginForm() {
if (!emailInput) {
toast({
title: t('errorTitle'),
- description: '이메일을 입력해주세요.',
+ description: t('pleaseEnterEmail'),
variant: 'destructive',
});
return;
@@ -435,8 +435,8 @@ export function LoginForm() {
setShowMfaForm(true);
toast({
- title: '이메일 인증',
- description: `${emailInput}로 인증번호가 전송되었습니다.`,
+ title: t('emailVerification'),
+ description: t('emailOtpSentTo', { email: emailInput }),
});
} else {
// 일반 이메일: 패스워드 입력 필요
@@ -445,8 +445,8 @@ export function LoginForm() {
setShowPasswordInput(true);
toast({
- title: '패스워드 입력',
- description: '패스워드를 입력해주세요.',
+ title: t('passwordInput'),
+ description: t('pleaseEnterPassword'),
});
}
} catch (error: unknown) {
@@ -454,7 +454,7 @@ export function LoginForm() {
toast({
title: t('errorTitle'),
- description: '이메일 확인 중 오류가 발생했습니다.',
+ description: t('emailVerificationError'),
variant: 'destructive',
});
} finally {
@@ -469,7 +469,7 @@ export function LoginForm() {
if (!password) {
toast({
title: t('errorTitle'),
- description: '패스워드를 입력해주세요.',
+ description: t('pleaseEnterPassword'),
variant: 'destructive',
});
return;
@@ -736,19 +736,19 @@ export function LoginForm() {
{mfaType === 'email' ? '📧' : '🔐'}
</div>
<h1 className="text-2xl font-bold">
- {mfaType === 'email' ? '이메일 인증' : t('smsVerification')}
+ {mfaType === 'email' ? t('emailVerification') : t('smsVerification')}
</h1>
<p className="text-sm text-muted-foreground mt-2">
{selectedOtpUser
? t('firstAuthCompleteForSgips', { name: selectedOtpUser.name, email: mfaUserEmail })
: mfaType === 'email'
- ? `${mfaUserEmail}로 인증번호가 전송되었습니다.`
+ ? t('emailOtpSentTo', { email: mfaUserEmail })
: t('firstAuthCompleteFor', { email: mfaUserEmail })
}
</p>
<p className="text-xs text-muted-foreground mt-1">
- {mfaType === 'email'
- ? '이메일에서 받은 6자리 인증번호를 입력해주세요.'
+ {mfaType === 'email'
+ ? t('enterSixDigitEmailCode')
: t('enterSixDigitCodeInstructions')}
</p>
</>
@@ -814,7 +814,7 @@ export function LoginForm() {
variant="samsung"
disabled={isFirstAuthLoading || !emailInput}
>
- {isFirstAuthLoading ? t('authenticating') : '다음'}
+ {isFirstAuthLoading ? t('authenticating') : t('next')}
</Button>
</form>
) : (
@@ -836,7 +836,7 @@ export function LoginForm() {
{/* 이메일 표시 */}
<div className="bg-gray-50 p-3 rounded-lg">
- <p className="text-sm text-gray-600 mb-1">로그인 이메일</p>
+ <p className="text-sm text-gray-600 mb-1">{t('loginEmail')}</p>
<p className="text-sm font-medium text-gray-900">{emailInput}</p>
</div>
@@ -958,8 +958,8 @@ export function LoginForm() {
{t('resendCode')}
</h3>
<p className="text-xs text-gray-600 mb-3">
- {mfaType === 'email'
- ? '이메일을 받지 못하셨나요?'
+ {mfaType === 'email'
+ ? t('didNotReceiveEmail')
: t('didNotReceiveCode')}
</p>
<Button
@@ -981,7 +981,7 @@ export function LoginForm() {
) : mfaCountdown > 0 ? (
t('resendAvailable', { seconds: mfaCountdown })
) : (
- mfaType === 'email' ? '인증번호 재전송' : t('resendCode')
+ mfaType === 'email' ? t('resendEmailOtp') : t('resendCode')
)}
</Button>
</div>
diff --git a/i18n/locales/en/login.json b/i18n/locales/en/login.json
index 95f5cf04..087ea227 100644
--- a/i18n/locales/en/login.json
+++ b/i18n/locales/en/login.json
@@ -97,7 +97,6 @@
"mfaAuthError": "An error occurred during MFA authentication.",
"resetPasswordTitle": "Set New Password",
"resetPasswordDescription": "Please set a strong password for your account security.",
- "invalidCredentials": "Please check your email or password.",
"sgipsInvalidCredentials": "Please check your S-GIPS account information.",
"accountLocked": "Account is temporarily locked. Please try again later.",
"accountDeactivated": "Account has been deactivated. Please contact administrator.",
@@ -124,5 +123,19 @@
"passwordsMatch": "Passwords match",
"passwordsNotMatch": "Passwords do not match",
"validating": "Validating...",
- "changePassword": "Change Password"
+ "changePassword": "Change Password",
+ "emailOtpSentTitle": "Email Verification Code Sent",
+ "emailOtpSendFailed": "Email sending failed.",
+ "emailOtpSendError": "An error occurred while sending email.",
+ "pleaseEnterEmail": "Please enter your email.",
+ "emailVerification": "Email Verification",
+ "passwordInput": "Password Input",
+ "pleaseEnterPassword": "Please enter your password.",
+ "emailVerificationError": "An error occurred while verifying email.",
+ "next": "Next",
+ "loginEmail": "Login Email",
+ "emailOtpSentTo": "Verification code has been sent to {{email}}.",
+ "enterSixDigitEmailCode": "Please enter the 6-digit verification code received in your email.",
+ "didNotReceiveEmail": "Didn't receive the email?",
+ "resendEmailOtp": "Resend Verification Code"
} \ No newline at end of file
diff --git a/i18n/locales/ko/login.json b/i18n/locales/ko/login.json
index 9b66ac83..bd0bc9d0 100644
--- a/i18n/locales/ko/login.json
+++ b/i18n/locales/ko/login.json
@@ -97,7 +97,6 @@
"mfaAuthError": "MFA 인증 중 오류가 발생했습니다.",
"resetPasswordTitle": "새 비밀번호 설정",
"resetPasswordDescription": "계정 보안을 위해 강력한 비밀번호를 설정해주세요.",
- "invalidCredentials": "이메일 또는 비밀번호를 확인해주세요.",
"sgipsInvalidCredentials": "S-GIPS 계정 정보를 확인해주세요.",
"accountLocked": "계정이 일시적으로 잠겼습니다. 잠시 후 다시 시도해주세요.",
"accountDeactivated": "비활성화된 계정입니다. 관리자에게 문의해주세요.",
@@ -124,5 +123,19 @@
"passwordsMatch": "비밀번호가 일치합니다",
"passwordsNotMatch": "비밀번호가 일치하지 않습니다",
"validating": "검증 중...",
- "changePassword": "비밀번호 변경하기"
+ "changePassword": "비밀번호 변경하기",
+ "emailOtpSentTitle": "이메일 인증번호 전송",
+ "emailOtpSendFailed": "이메일 전송에 실패했습니다.",
+ "emailOtpSendError": "이메일 전송 중 오류가 발생했습니다.",
+ "pleaseEnterEmail": "이메일을 입력해주세요.",
+ "emailVerification": "이메일 인증",
+ "passwordInput": "패스워드 입력",
+ "pleaseEnterPassword": "패스워드를 입력해주세요.",
+ "emailVerificationError": "이메일 확인 중 오류가 발생했습니다.",
+ "next": "다음",
+ "loginEmail": "로그인 이메일",
+ "emailOtpSentTo": "{{email}}로 인증번호가 전송되었습니다.",
+ "enterSixDigitEmailCode": "이메일에서 받은 6자리 인증번호를 입력해주세요.",
+ "didNotReceiveEmail": "이메일을 받지 못하셨나요?",
+ "resendEmailOtp": "인증번호 재전송"
} \ No newline at end of file