diff options
| author | joonhoekim <26rote@gmail.com> | 2025-10-17 15:36:45 +0900 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-10-17 15:36:45 +0900 |
| commit | 741429f518e4fc1404b225516f70568036ebb5f2 (patch) | |
| tree | d5171fe451ec80592c3fb94b517a9dafd8199902 | |
| parent | fb2c82eda27ef783f98b8567be820bec1f140fa6 (diff) | |
(김준회) 로그인화면 변경에 따른 i18n 추가 적용, json 내 중복 키 삭제
| -rw-r--r-- | components/login/login-form.tsx | 40 | ||||
| -rw-r--r-- | i18n/locales/en/login.json | 17 | ||||
| -rw-r--r-- | i18n/locales/ko/login.json | 17 |
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 |
