From 8dec0fe2e5eef81abebb98c1f9b5b5308a279138 Mon Sep 17 00:00:00 2001 From: Klaus Date: Sun, 8 Feb 2026 22:18:50 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EC=96=B8?= =?UTF-8?q?=EC=96=B4=20=ED=83=9C=EA=B7=B8=EB=A5=BC=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EC=96=B8=EC=96=B4=EB=A1=9C=20=EB=B2=88=EC=97=AD=ED=95=B4=20?= =?UTF-8?q?=EB=85=B8=EC=B6=9C=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 라이브 목록/상세 응답의 언어 태그를 조회자 언어로 반환한다. 언어 코드를 메시지 키로 매핑해 ko/en/ja 번역값을 제공한다. --- .../sodalive/i18n/SodaMessageSource.kt | 15 +++++++++++ .../sodalive/live/room/LiveRoomService.kt | 26 +++++++++---------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/i18n/SodaMessageSource.kt b/src/main/kotlin/kr/co/vividnext/sodalive/i18n/SodaMessageSource.kt index 7f8e3c5e..8e78ce2d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/i18n/SodaMessageSource.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/i18n/SodaMessageSource.kt @@ -1578,6 +1578,21 @@ class SodaMessageSource { Lang.EN to "yyyy.MM.dd E hh:mm a", Lang.JA to "yyyy.MM.dd E hh:mm a" ), + "live.room.language_tag.korean" to mapOf( + Lang.KO to "한국어", + Lang.EN to "Korean", + Lang.JA to "韓国語" + ), + "live.room.language_tag.japanese" to mapOf( + Lang.KO to "일본어", + Lang.EN to "Japanese", + Lang.JA to "日本語" + ), + "live.room.language_tag.english" to mapOf( + Lang.KO to "영어", + Lang.EN to "English", + Lang.JA to "英語" + ), "live.room.fcm.message.started" to mapOf( Lang.KO to "라이브를 시작했습니다. - %s", Lang.EN to "Live started. - %s", diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt index 31da8afa..75e0bb5c 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt @@ -154,13 +154,7 @@ class LiveRoomService( .maxByOrNull { it.updatedAt ?: LocalDateTime.MIN } ?.languageCode - val languageTag = when (languageCode?.lowercase()?.take(2)) { - "ko" -> "한국어" - "ja" -> "일본어" - "en" -> "영어" - else -> null - } - return languageTag + return resolveLanguageTag(languageCode) } private fun buildLanguageTagMap(memberIds: List): Map { @@ -175,15 +169,21 @@ class LiveRoomService( } return latestTokenByMemberId.mapValues { (_, token) -> - when (token?.languageCode?.lowercase()?.take(2)) { - "ko" -> "한국어" - "ja" -> "일본어" - "en" -> "영어" - else -> null - } + resolveLanguageTag(token?.languageCode) } } + private fun resolveLanguageTag(languageCode: String?): String? { + val key = when (languageCode?.lowercase()?.take(2)) { + "ko" -> "live.room.language_tag.korean" + "ja" -> "live.room.language_tag.japanese" + "en" -> "live.room.language_tag.english" + else -> null + } ?: return null + + return messageSource.getMessage(key, langContext.lang) + } + @Transactional(readOnly = true) fun getRoomList( dateString: String?,