422 lines
19 KiB
Kotlin
422 lines
19 KiB
Kotlin
package kr.co.vividnext.sodalive.i18n
|
||
|
||
import org.springframework.stereotype.Component
|
||
|
||
@Component
|
||
class SodaMessageSource {
|
||
private val commonMessages = mapOf(
|
||
"common.error.unknown" to mapOf(
|
||
Lang.KO to "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.",
|
||
Lang.EN to "An unknown error occurred. Please try again.",
|
||
Lang.JA to "不明なエラーが発生しました。もう一度やり直してください。"
|
||
),
|
||
"common.error.access_denied" to mapOf(
|
||
Lang.KO to "권한이 없습니다.",
|
||
Lang.EN to "You do not have permission.",
|
||
Lang.JA to "権限がありません。"
|
||
),
|
||
"common.error.bad_credentials" to mapOf(
|
||
Lang.KO to "로그인 정보를 확인해주세요.",
|
||
Lang.EN to "Please check your login information.",
|
||
Lang.JA to "ログイン情報を確認してください。"
|
||
),
|
||
"common.error.max_upload_size" to mapOf(
|
||
Lang.KO to "파일용량은 최대 1024MB까지 저장할 수 있습니다.",
|
||
Lang.EN to "The file size can be saved up to 1024MB.",
|
||
Lang.JA to "ファイル容量は最大1024MBまで保存できます。"
|
||
),
|
||
"common.error.already_registered" to mapOf(
|
||
Lang.KO to "이미 등록되어 있습니다.",
|
||
Lang.EN to "It is already registered.",
|
||
Lang.JA to "すでに登録されています。"
|
||
),
|
||
"common.error.invalid_request" to mapOf(
|
||
Lang.KO to "잘못된 요청입니다.",
|
||
Lang.EN to "Invalid request.",
|
||
Lang.JA to "不正なリクエストです。"
|
||
),
|
||
"chat.error.room_not_found" to mapOf(
|
||
Lang.KO to "채팅방을 찾을 수 없습니다.",
|
||
Lang.EN to "Chat room not found.",
|
||
Lang.JA to "チャットルームが見つかりません。"
|
||
)
|
||
)
|
||
|
||
private val auditionMessages = mapOf(
|
||
"admin.audition.invalid_request_retry" to mapOf(
|
||
Lang.KO to "잘못된 요청입니다.\n다시 시도해 주세요.",
|
||
Lang.EN to "Invalid request. Please try again.",
|
||
Lang.JA to "不正なリクエストです。もう一度やり直してください。"
|
||
),
|
||
"admin.audition.status_cannot_revert" to mapOf(
|
||
Lang.KO to "모집전 상태로 변경할 수 없습니다.",
|
||
Lang.EN to "Cannot change to not-started status.",
|
||
Lang.JA to "募集前の状態に変更できません。"
|
||
)
|
||
)
|
||
|
||
private val auditionRequestMessages = mapOf(
|
||
"admin.audition.title_required" to mapOf(
|
||
Lang.KO to "오디션 제목을 입력하세요",
|
||
Lang.EN to "Please enter an audition title.",
|
||
Lang.JA to "オーディションのタイトルを入力してください。"
|
||
),
|
||
"admin.audition.information_min_length" to mapOf(
|
||
Lang.KO to "오디션 정보는 최소 10글자 입니다",
|
||
Lang.EN to "Audition information must be at least 10 characters.",
|
||
Lang.JA to "オーディション情報は最低10文字です。"
|
||
)
|
||
)
|
||
|
||
private val auditionNotificationMessages = mapOf(
|
||
"admin.audition.fcm.title.new" to mapOf(
|
||
Lang.KO to "새로운 오디션 등록!",
|
||
Lang.EN to "New audition posted!",
|
||
Lang.JA to "新しいオーディション登録!"
|
||
),
|
||
"admin.audition.fcm.message.new" to mapOf(
|
||
Lang.KO to "'%s'이 등록되었습니다. 지금 바로 오리지널 오디오 드라마 오디션에 지원해보세요!",
|
||
Lang.EN to "'%s' is now available. Apply for the original audio drama audition now!",
|
||
Lang.JA to "「%s」が登録されました。今すぐオリジナルオーディオドラマのオーディションに応募してみてください!"
|
||
)
|
||
)
|
||
|
||
private val auditionRoleMessages = mapOf(
|
||
"admin.audition.role.name_min_length" to mapOf(
|
||
Lang.KO to "배역 이름은 최소 2글자 입니다",
|
||
Lang.EN to "Role name must be at least 2 characters.",
|
||
Lang.JA to "役名は最低2文字です。"
|
||
),
|
||
"admin.audition.role.information_min_length" to mapOf(
|
||
Lang.KO to "오디션 배역 정보는 최소 10글자 입니다",
|
||
Lang.EN to "Audition role information must be at least 10 characters.",
|
||
Lang.JA to "オーディション役の情報は最低10文字です。"
|
||
),
|
||
"admin.audition.role.audition_required" to mapOf(
|
||
Lang.KO to "캐릭터가 등록될 오디션을 선택하세요",
|
||
Lang.EN to "Please select an audition for the character.",
|
||
Lang.JA to "キャラクターが登録されるオーディションを選択してください。"
|
||
),
|
||
"admin.audition.role.name_required" to mapOf(
|
||
Lang.KO to "캐릭터명을 입력하세요",
|
||
Lang.EN to "Please enter a character name.",
|
||
Lang.JA to "キャラクター名を入力してください。"
|
||
),
|
||
"admin.audition.role.script_url_required" to mapOf(
|
||
Lang.KO to "오디션 대본 URL을 입력하세요",
|
||
Lang.EN to "Please enter the audition script URL.",
|
||
Lang.JA to "オーディション台本のURLを入力してください。"
|
||
),
|
||
"admin.audition.role.information_required" to mapOf(
|
||
Lang.KO to "오디션 캐릭터 정보는 최소 10글자 입니다",
|
||
Lang.EN to "Audition character information must be at least 10 characters.",
|
||
Lang.JA to "オーディションキャラクター情報は最低10文字です。"
|
||
)
|
||
)
|
||
|
||
private val settlementRatioMessages = mapOf(
|
||
"admin.settlement_ratio.invalid_creator" to mapOf(
|
||
Lang.KO to "잘못된 크리에이터 입니다.",
|
||
Lang.EN to "Invalid creator.",
|
||
Lang.JA to "不正なクリエイターです。"
|
||
),
|
||
"admin.settlement_ratio.not_found" to mapOf(
|
||
Lang.KO to "해당 크리에이터의 정산 비율 설정이 없습니다.",
|
||
Lang.EN to "Settlement ratio settings not found for this creator.",
|
||
Lang.JA to "該当クリエイターの精算比率設定がありません。"
|
||
)
|
||
)
|
||
|
||
private val adminCanMessages = mapOf(
|
||
"admin.can.min_amount" to mapOf(
|
||
Lang.KO to "1 캔 이상 입력하세요.",
|
||
Lang.EN to "Please enter at least 1 can.",
|
||
Lang.JA to "1缶以上入力してください。"
|
||
),
|
||
"admin.can.method_required" to mapOf(
|
||
Lang.KO to "기록내용을 입력하세요.",
|
||
Lang.EN to "Please enter the record content.",
|
||
Lang.JA to "記録内容を入力してください。"
|
||
),
|
||
"admin.can.member_ids_required" to mapOf(
|
||
Lang.KO to "회원번호를 입력하세요.",
|
||
Lang.EN to "Please enter member IDs.",
|
||
Lang.JA to "会員番号を入力してください。"
|
||
),
|
||
"admin.can.invalid_member_ids" to mapOf(
|
||
Lang.KO to "잘못된 회원번호 입니다.",
|
||
Lang.EN to "Invalid member IDs.",
|
||
Lang.JA to "不正な会員番号です。"
|
||
)
|
||
)
|
||
|
||
private val adminChatBannerMessages = mapOf(
|
||
"admin.chat.banner.image_save_failed" to mapOf(
|
||
Lang.KO to "이미지 저장에 실패했습니다.",
|
||
Lang.EN to "Failed to save image.",
|
||
Lang.JA to "画像の保存に失敗しました。"
|
||
),
|
||
"admin.chat.banner.delete_success" to mapOf(
|
||
Lang.KO to "배너가 성공적으로 삭제되었습니다.",
|
||
Lang.EN to "Banner deleted successfully.",
|
||
Lang.JA to "バナーが削除されました。"
|
||
),
|
||
"admin.chat.banner.reorder_success" to mapOf(
|
||
Lang.KO to "배너 정렬 순서가 성공적으로 변경되었습니다.",
|
||
Lang.EN to "Banner order updated successfully.",
|
||
Lang.JA to "バナーの並び順が変更されました。"
|
||
)
|
||
)
|
||
|
||
private val adminChatCalculateMessages = mapOf(
|
||
"admin.chat.calculate.end_date_max_today" to mapOf(
|
||
Lang.KO to "끝 날짜는 오늘 날짜까지만 입력 가능합니다.",
|
||
Lang.EN to "End date can be at most today.",
|
||
Lang.JA to "終了日は本日まで指定できます。"
|
||
),
|
||
"admin.chat.calculate.start_date_after_end" to mapOf(
|
||
Lang.KO to "시작 날짜는 끝 날짜보다 이후일 수 없습니다.",
|
||
Lang.EN to "Start date cannot be after end date.",
|
||
Lang.JA to "開始日は終了日より後にできません。"
|
||
),
|
||
"admin.chat.calculate.max_period_6_months" to mapOf(
|
||
Lang.KO to "조회 가능 기간은 최대 6개월입니다.",
|
||
Lang.EN to "Maximum query period is 6 months.",
|
||
Lang.JA to "照会期間は最大6ヶ月です。"
|
||
)
|
||
)
|
||
|
||
private val adminChatCharacterMessages = mapOf(
|
||
"admin.chat.character.duplicate_name" to mapOf(
|
||
Lang.KO to "동일한 이름은 등록이 불가능합니다.",
|
||
Lang.EN to "A character with the same name already exists.",
|
||
Lang.JA to "同じ名前は登録できません。"
|
||
),
|
||
"admin.chat.character.register_failed_retry" to mapOf(
|
||
Lang.KO to "등록에 실패했습니다. 다시 시도해 주세요.",
|
||
Lang.EN to "Registration failed. Please try again.",
|
||
Lang.JA to "登録に失敗しました。もう一度お試しください。"
|
||
),
|
||
"admin.chat.character.register_failed_no_id" to mapOf(
|
||
Lang.KO to "등록에 실패했습니다. 응답에 ID가 없습니다.",
|
||
Lang.EN to "Registration failed. No ID in response.",
|
||
Lang.JA to "登録に失敗しました。応答にIDがありません。"
|
||
),
|
||
"admin.chat.character.image_save_failed" to mapOf(
|
||
Lang.KO to "이미지 저장에 실패했습니다.",
|
||
Lang.EN to "Failed to save image.",
|
||
Lang.JA to "画像の保存に失敗しました。"
|
||
),
|
||
"admin.chat.character.no_changes" to mapOf(
|
||
Lang.KO to "변경된 데이터가 없습니다.",
|
||
Lang.EN to "No changes detected.",
|
||
Lang.JA to "変更されたデータがありません。"
|
||
),
|
||
"admin.chat.character.not_found" to mapOf(
|
||
Lang.KO to "해당 캐릭터를 찾을 수 없습니다.",
|
||
Lang.EN to "Character not found.",
|
||
Lang.JA to "該当キャラクターが見つかりません。"
|
||
),
|
||
"admin.chat.character.update_failed_retry" to mapOf(
|
||
Lang.KO to "수정에 실패했습니다. 다시 시도해 주세요.",
|
||
Lang.EN to "Update failed. Please try again.",
|
||
Lang.JA to "更新に失敗しました。もう一度お試しください。"
|
||
)
|
||
)
|
||
|
||
private val adminChatCurationMessages = mapOf(
|
||
"admin.chat.curation.not_found" to mapOf(
|
||
Lang.KO to "큐레이션을 찾을 수 없습니다.",
|
||
Lang.EN to "Curation not found.",
|
||
Lang.JA to "キュレーションが見つかりません。"
|
||
),
|
||
"admin.chat.curation.character_ids_empty" to mapOf(
|
||
Lang.KO to "등록할 캐릭터 ID 리스트가 비어있습니다",
|
||
Lang.EN to "Character ID list to register is empty.",
|
||
Lang.JA to "登録するキャラクターIDリストが空です。"
|
||
),
|
||
"admin.chat.curation.inactive" to mapOf(
|
||
Lang.KO to "비활성화된 큐레이션입니다.",
|
||
Lang.EN to "Curation is inactive.",
|
||
Lang.JA to "無効化されたキュレーションです。"
|
||
),
|
||
"admin.chat.curation.invalid_character_ids" to mapOf(
|
||
Lang.KO to "유효한 캐릭터 ID가 없습니다",
|
||
Lang.EN to "No valid character IDs.",
|
||
Lang.JA to "有効なキャラクターIDがありません。"
|
||
),
|
||
"admin.chat.curation.mapping_not_found" to mapOf(
|
||
Lang.KO to "매핑을 찾을 수 없습니다.",
|
||
Lang.EN to "Mapping not found.",
|
||
Lang.JA to "マッピングが見つかりません。"
|
||
),
|
||
"admin.chat.curation.character_not_in_curation" to mapOf(
|
||
Lang.KO to "큐레이션에 포함되지 않은 캐릭터입니다.",
|
||
Lang.EN to "Character not included in this curation.",
|
||
Lang.JA to "このキュレーションに含まれていないキャラクターです。"
|
||
)
|
||
)
|
||
|
||
private val adminChatCharacterImageMessages = mapOf(
|
||
"admin.chat.character.image_deleted" to mapOf(
|
||
Lang.KO to "이미지가 삭제되었습니다.",
|
||
Lang.EN to "Image deleted.",
|
||
Lang.JA to "画像が削除されました。"
|
||
),
|
||
"admin.chat.character.character_id_required" to mapOf(
|
||
Lang.KO to "characterId는 필수입니다",
|
||
Lang.EN to "characterId is required.",
|
||
Lang.JA to "characterIdは必須です。"
|
||
),
|
||
"admin.chat.character.order_updated" to mapOf(
|
||
Lang.KO to "정렬 순서가 변경되었습니다.",
|
||
Lang.EN to "Order updated.",
|
||
Lang.JA to "並び順が変更されました。"
|
||
),
|
||
"admin.chat.character.image_format_invalid" to mapOf(
|
||
Lang.KO to "이미지 포맷을 인식할 수 없습니다.",
|
||
Lang.EN to "Unsupported image format.",
|
||
Lang.JA to "画像形式を認識できません。"
|
||
),
|
||
"admin.chat.character.blur_image_save_failed" to mapOf(
|
||
Lang.KO to "블러 이미지 저장에 실패했습니다.",
|
||
Lang.EN to "Failed to save blurred image.",
|
||
Lang.JA to "ぼかし画像の保存に失敗しました。"
|
||
)
|
||
)
|
||
|
||
private val adminChatOriginalWorkMessages = mapOf(
|
||
"admin.chat.original.image_save_failed" to mapOf(
|
||
Lang.KO to "이미지 저장에 실패했습니다.",
|
||
Lang.EN to "Failed to save image.",
|
||
Lang.JA to "画像の保存に失敗しました。"
|
||
),
|
||
"admin.chat.original.duplicate_title" to mapOf(
|
||
Lang.KO to "동일한 제목의 원작이 이미 존재합니다.",
|
||
Lang.EN to "An original work with the same title already exists.",
|
||
Lang.JA to "同じタイトルの原作が既に存在します。"
|
||
),
|
||
"admin.chat.original.not_found" to mapOf(
|
||
Lang.KO to "해당 원작을 찾을 수 없습니다.",
|
||
Lang.EN to "Original work not found.",
|
||
Lang.JA to "該当の原作が見つかりません。"
|
||
)
|
||
)
|
||
|
||
private val adminContentMessages = mapOf(
|
||
"admin.content.search_word_min_length" to mapOf(
|
||
Lang.KO to "2글자 이상 입력하세요.",
|
||
Lang.EN to "Please enter at least 2 characters.",
|
||
Lang.JA to "2文字以上入力してください。"
|
||
),
|
||
"admin.content.not_found" to mapOf(
|
||
Lang.KO to "없는 콘텐츠 입니다.",
|
||
Lang.EN to "Content not found.",
|
||
Lang.JA to "該当のコンテンツが見つかりません。"
|
||
)
|
||
)
|
||
|
||
private val adminContentBannerMessages = mapOf(
|
||
"admin.content.banner.creator_required" to mapOf(
|
||
Lang.KO to "크리에이터를 선택하세요.",
|
||
Lang.EN to "Please select a creator.",
|
||
Lang.JA to "クリエイターを選択してください。"
|
||
),
|
||
"admin.content.banner.series_required" to mapOf(
|
||
Lang.KO to "시리즈를 선택하세요.",
|
||
Lang.EN to "Please select a series.",
|
||
Lang.JA to "シリーズを選択してください。"
|
||
),
|
||
"admin.content.banner.link_required" to mapOf(
|
||
Lang.KO to "링크 url을 입력하세요.",
|
||
Lang.EN to "Please enter a link URL.",
|
||
Lang.JA to "リンクURLを入力してください。"
|
||
),
|
||
"admin.content.banner.event_required" to mapOf(
|
||
Lang.KO to "이벤트를 선택하세요.",
|
||
Lang.EN to "Please select an event.",
|
||
Lang.JA to "イベントを選択してください。"
|
||
)
|
||
)
|
||
|
||
private val adminHashTagCurationMessages = mapOf(
|
||
"admin.content.hash_tag.already_registered" to mapOf(
|
||
Lang.KO to "이미 등록된 태그 입니다.",
|
||
Lang.EN to "Tag already registered.",
|
||
Lang.JA to "既に登録されたタグです。"
|
||
)
|
||
)
|
||
|
||
private val adminContentSeriesMessages = mapOf(
|
||
"admin.content.series.random_days_conflict" to mapOf(
|
||
Lang.KO to "랜덤과 연재요일 동시에 선택할 수 없습니다.",
|
||
Lang.EN to "Random and published days cannot be selected together.",
|
||
Lang.JA to "ランダムと連載曜日を同時に選択できません。"
|
||
)
|
||
)
|
||
|
||
private val adminContentSeriesBannerMessages = mapOf(
|
||
"admin.content.series.banner.delete_success" to mapOf(
|
||
Lang.KO to "배너가 성공적으로 삭제되었습니다.",
|
||
Lang.EN to "Banner deleted successfully.",
|
||
Lang.JA to "バナーが削除されました。"
|
||
),
|
||
"admin.content.series.banner.reorder_success" to mapOf(
|
||
Lang.KO to "배너 정렬 순서가 성공적으로 변경되었습니다.",
|
||
Lang.EN to "Banner order updated successfully.",
|
||
Lang.JA to "バナーの並び順が変更されました。"
|
||
),
|
||
"admin.content.series.banner.image_save_failed" to mapOf(
|
||
Lang.KO to "이미지 저장에 실패했습니다.",
|
||
Lang.EN to "Failed to save image.",
|
||
Lang.JA to "画像の保存に失敗しました。"
|
||
)
|
||
)
|
||
|
||
private val adminContentSeriesGenreMessages = mapOf(
|
||
"admin.content.series.genre.no_changes" to mapOf(
|
||
Lang.KO to "변경사항이 없습니다.",
|
||
Lang.EN to "No changes to update.",
|
||
Lang.JA to "変更事項がありません。"
|
||
)
|
||
)
|
||
|
||
private val adminContentThemeMessages = mapOf(
|
||
"admin.content.theme.already_registered" to mapOf(
|
||
Lang.KO to "이미 등록된 테마 입니다.",
|
||
Lang.EN to "Theme already registered.",
|
||
Lang.JA to "既に登録されたテーマです。"
|
||
)
|
||
)
|
||
|
||
fun getMessage(key: String, lang: Lang): String? {
|
||
val messageGroups = listOf(
|
||
commonMessages,
|
||
auditionMessages,
|
||
auditionRequestMessages,
|
||
auditionNotificationMessages,
|
||
auditionRoleMessages,
|
||
settlementRatioMessages,
|
||
adminCanMessages,
|
||
adminChatBannerMessages,
|
||
adminChatCalculateMessages,
|
||
adminChatCharacterMessages,
|
||
adminChatCurationMessages,
|
||
adminChatCharacterImageMessages,
|
||
adminChatOriginalWorkMessages,
|
||
adminContentMessages,
|
||
adminContentBannerMessages,
|
||
adminHashTagCurationMessages,
|
||
adminContentSeriesMessages,
|
||
adminContentSeriesBannerMessages,
|
||
adminContentSeriesGenreMessages,
|
||
adminContentThemeMessages
|
||
)
|
||
for (messages in messageGroups) {
|
||
val translations = messages[key] ?: continue
|
||
return translations[lang] ?: translations[Lang.KO]
|
||
}
|
||
return null
|
||
}
|
||
}
|