회원 메시지 다국어 처리

회원/인증 API 응답 메시지를 다국어 키로 분리함.
This commit is contained in:
2025-12-23 13:26:15 +09:00
parent 4dcf9f6ed1
commit 67b909daed
12 changed files with 338 additions and 115 deletions

View File

@@ -471,6 +471,197 @@ class SodaMessageSource {
)
)
private val memberAuthMessages = mapOf(
"member.auth.blocked_policy" to mapOf(
Lang.KO to "운영정책을 위반하여 이용을 제한합니다.",
Lang.EN to "Your access is restricted due to policy violations.",
Lang.JA to "運営ポリシー違反のため利用が制限されています。"
),
"member.auth.already_verified" to mapOf(
Lang.KO to "이미 인증된 계정입니다.",
Lang.EN to "This account is already verified.",
Lang.JA to "既に認証済みのアカウントです。"
),
"member.auth.certificate_invalid_retry" to mapOf(
Lang.KO to "인증정보에 오류가 있습니다.\n다시 시도해 주세요.",
Lang.EN to "There is an error with the verification information.\nPlease try again.",
Lang.JA to "認証情報にエラーがあります。\nもう一度お試しください。"
),
"member.auth.max_accounts" to mapOf(
Lang.KO to "이미 본인인증한 계정 %s개 이용중입니다.\n" +
"소다라이브의 본인인증은 최대 3개의 계정만 이용할 수 있습니다.",
Lang.EN to "You are already using %s verified account(s).\n" +
"Identity verification is limited to up to 3 accounts on Sodalive.",
Lang.JA to "本人認証済みのアカウントを%s件利用中です。\n" +
"ソダライブの本人認証は最大3アカウントまでです。"
),
"member.auth.age_limit" to mapOf(
Lang.KO to "%s년 1월 1일 이전 출생자만 본인인증이 가능합니다.",
Lang.EN to "Only users born on or before January 1, %s can be verified.",
Lang.JA to "%s年1月1日以前に生まれた方のみ本人認証が可能です。"
)
)
private val memberMessages = mapOf(
"member.signup.failed_retry" to mapOf(
Lang.KO to "회원가입을 하지 못했습니다.\n다시 시도해 주세요.",
Lang.EN to "Sign up failed.\nPlease try again.",
Lang.JA to "会員登録に失敗しました。\nもう一度お試しください。"
),
"member.signup.success" to mapOf(
Lang.KO to "회원가입을 축하드립니다.",
Lang.EN to "Congratulations on your sign up.",
Lang.JA to "ご登録おめでとうございます。"
),
"member.login.success" to mapOf(
Lang.KO to "로그인 되었습니다.",
Lang.EN to "You are logged in.",
Lang.JA to "ログインしました。"
),
"member.signout.success" to mapOf(
Lang.KO to "정상적으로 탈퇴 처리되었습니다.",
Lang.EN to "Your account has been successfully deleted.",
Lang.JA to "正常に退会処理されました。"
)
)
private val memberValidationMessages = mapOf(
"member.validation.invalid_request_retry" to mapOf(
Lang.KO to "잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.",
Lang.EN to "Invalid request.\nPlease close the app and try again.",
Lang.JA to "不正なリクエストです。\nアプリを終了して再度お試しください。"
),
"member.validation.agree_required" to mapOf(
Lang.KO to "약관에 동의하셔야 회원가입이 가능합니다.",
Lang.EN to "You must agree to the terms to sign up.",
Lang.JA to "会員登録には規約への同意が必要です。"
),
"member.validation.user_not_found" to mapOf(
Lang.KO to "없는 사용자 입니다.",
Lang.EN to "User not found.",
Lang.JA to "ユーザーが見つかりません。"
),
"member.validation.account_not_found" to mapOf(
Lang.KO to "없는 계정입니다.",
Lang.EN to "Account not found.",
Lang.JA to "アカウントが見つかりません。"
),
"member.validation.inactive_account" to mapOf(
Lang.KO to "탈퇴한 계정입니다.\n고객센터로 문의해 주시기 바랍니다.",
Lang.EN to "This account has been deleted.\nPlease contact customer support.",
Lang.JA to "退会したアカウントです。\nカスタマーサポートへお問い合わせください。"
),
"member.validation.creator_not_found" to mapOf(
Lang.KO to "크리에이터 정보를 확인해주세요.",
Lang.EN to "Please check the creator information.",
Lang.JA to "クリエイター情報を確認してください。"
),
"member.validation.nickname_min_length" to mapOf(
Lang.KO to "두 글자 이상 입력 하셔야 합니다.",
Lang.EN to "Please enter at least 2 characters.",
Lang.JA to "2文字以上入力してください。"
),
"member.validation.password_mismatch" to mapOf(
Lang.KO to "비밀번호가 일치하지 않습니다.",
Lang.EN to "Password does not match.",
Lang.JA to "パスワードが一致しません。"
),
"member.validation.signout_reason_required" to mapOf(
Lang.KO to "탈퇴하려는 이유를 입력해 주세요.",
Lang.EN to "Please enter a reason for deleting your account.",
Lang.JA to "退会理由を入力してください。"
),
"member.validation.email_available" to mapOf(
Lang.KO to "사용 가능한 이메일 입니다.",
Lang.EN to "This email is available.",
Lang.JA to "使用可能なメールアドレスです。"
),
"member.validation.nickname_available" to mapOf(
Lang.KO to "사용 가능한 닉네임 입니다.",
Lang.EN to "This nickname is available.",
Lang.JA to "使用可能なニックネームです。"
),
"member.validation.email_in_use" to mapOf(
Lang.KO to "이미 사용중인 이메일 입니다.",
Lang.EN to "This email is already in use.",
Lang.JA to "このメールアドレスは既に使用されています。"
),
"member.validation.nickname_in_use" to mapOf(
Lang.KO to "이미 사용중인 닉네임 입니다.",
Lang.EN to "This nickname is already in use.",
Lang.JA to "このニックネームは既に使用されています。"
),
"member.validation.email_registered_with_provider" to mapOf(
Lang.KO to "해당 이메일은 %s 계정으로 가입되어 있습니다. 해당 소셜 로그인을 사용해 주세요.",
Lang.EN to "This email is registered with a %s account. Please use that social login.",
Lang.JA to "このメールアドレスは%sアカウントで登録されています。該当のソーシャルログインをご利用ください。"
),
"member.validation.email_registered_with_provider_already" to mapOf(
Lang.KO to "해당 이메일은 %s 계정으로 이미 가입되어 있습니다. 해당 소셜 로그인을 사용해 주세요.",
Lang.EN to "This email is already registered with a %s account. Please use that social login.",
Lang.JA to "このメールアドレスは既に%sアカウントで登録されています。該当のソーシャルログインをご利用ください。"
),
"member.validation.unregistered_account_retry" to mapOf(
Lang.KO to "등록되지 않은 계정입니다.\n확인 후 다시 시도해 주세요.",
Lang.EN to "This account is not registered.\nPlease check and try again.",
Lang.JA to "登録されていないアカウントです。\n確認してもう一度お試しください。"
)
)
private val memberSocialMessages = mapOf(
"member.social.google_login_failed" to mapOf(
Lang.KO to "구글 로그인을 하지 못했습니다. 다시 시도해 주세요",
Lang.EN to "Google login failed. Please try again.",
Lang.JA to "Googleログインに失敗しました。もう一度お試しください。"
),
"member.social.kakao_login_failed" to mapOf(
Lang.KO to "카카오 로그인을 하지 못했습니다. 다시 시도해 주세요",
Lang.EN to "Kakao login failed. Please try again.",
Lang.JA to "カカオログインに失敗しました。もう一度お試しください。"
),
"member.social.email_consent_required" to mapOf(
Lang.KO to "이메일 제공에 동의하셔야 서비스 이용이 가능합니다.",
Lang.EN to "You must agree to provide your email to use the service.",
Lang.JA to "サービス利用にはメール提供への同意が必要です。"
)
)
private val memberProviderMessages = mapOf(
"member.provider.email" to mapOf(
Lang.KO to "이메일",
Lang.EN to "Email",
Lang.JA to "メール"
),
"member.provider.kakao" to mapOf(
Lang.KO to "카카오",
Lang.EN to "Kakao",
Lang.JA to "カカオ"
),
"member.provider.google" to mapOf(
Lang.KO to "구글",
Lang.EN to "Google",
Lang.JA to "Google"
),
"member.provider.apple" to mapOf(
Lang.KO to "애플",
Lang.EN to "Apple",
Lang.JA to "Apple"
)
)
private val memberGenderMessages = mapOf(
"member.gender.male" to mapOf(
Lang.KO to "",
Lang.EN to "Male",
Lang.JA to "男性"
),
"member.gender.female" to mapOf(
Lang.KO to "",
Lang.EN to "Female",
Lang.JA to "女性"
)
)
fun getMessage(key: String, lang: Lang): String? {
val messageGroups = listOf(
commonMessages,
@@ -496,7 +687,13 @@ class SodaMessageSource {
messageMessages,
noticeMessages,
reportMessages,
imageValidationMessages
imageValidationMessages,
memberAuthMessages,
memberMessages,
memberValidationMessages,
memberSocialMessages,
memberProviderMessages,
memberGenderMessages
)
for (messages in messageGroups) {
val translations = messages[key] ?: continue