From 6fa0667120b8f4e8f1124c4763453c3ce49be931 Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 19 Dec 2025 23:54:25 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B1=84=ED=8C=85=EB=B0=A9=20=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4=EC=97=90=20=EC=96=B8=EC=96=B4=20=EC=BB=A8?= =?UTF-8?q?=ED=85=8D=EC=8A=A4=ED=8A=B8=EC=97=90=20=EB=94=B0=EB=9D=BC=20?= =?UTF-8?q?=EC=BA=90=EB=A6=AD=ED=84=B0=EB=AA=85=20=EB=B2=88=EC=97=AD?= =?UTF-8?q?=EC=9D=84=20=EC=A0=81=EC=9A=A9=ED=95=98=EB=8A=94=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=EC=9D=B4=20=EC=B6=94=EA=B0=80=EB=90=98=EC=96=B4,=20?= =?UTF-8?q?=EC=98=81=EC=96=B4=EC=99=80=20=EC=9D=BC=EB=B3=B8=EC=96=B4=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=8B=9C=20=EB=B2=88=EC=97=AD=EB=90=9C=20?= =?UTF-8?q?=EC=BA=90=EB=A6=AD=ED=84=B0=EB=AA=85=EC=9D=B4=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chat/room/service/ChatRoomService.kt | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/service/ChatRoomService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/service/ChatRoomService.kt index abd21c4..bf745f2 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/service/ChatRoomService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/chat/room/service/ChatRoomService.kt @@ -5,6 +5,7 @@ import kr.co.vividnext.sodalive.can.use.CanUsage import kr.co.vividnext.sodalive.chat.character.image.CharacterImage import kr.co.vividnext.sodalive.chat.character.image.CharacterImageService import kr.co.vividnext.sodalive.chat.character.service.ChatCharacterService +import kr.co.vividnext.sodalive.chat.character.translate.AiCharacterTranslationRepository import kr.co.vividnext.sodalive.chat.quota.room.ChatRoomQuotaService import kr.co.vividnext.sodalive.chat.room.ChatMessage import kr.co.vividnext.sodalive.chat.room.ChatMessageType @@ -26,6 +27,8 @@ import kr.co.vividnext.sodalive.chat.room.repository.ChatMessageRepository import kr.co.vividnext.sodalive.chat.room.repository.ChatParticipantRepository import kr.co.vividnext.sodalive.chat.room.repository.ChatRoomRepository import kr.co.vividnext.sodalive.common.SodaException +import kr.co.vividnext.sodalive.i18n.Lang +import kr.co.vividnext.sodalive.i18n.LangContext import kr.co.vividnext.sodalive.member.Member import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Value @@ -50,6 +53,8 @@ class ChatRoomService( private val messageRepository: ChatMessageRepository, private val characterService: ChatCharacterService, private val characterImageService: CharacterImageService, + private val langContext: LangContext, + private val aiCharacterTranslationRepository: AiCharacterTranslationRepository, private val canPaymentService: kr.co.vividnext.sodalive.can.payment.CanPaymentService, private val imageCloudFront: kr.co.vividnext.sodalive.aws.cloudfront.ImageContentCloudFront, private val chatQuotaService: kr.co.vividnext.sodalive.chat.quota.ChatQuotaService, @@ -270,10 +275,22 @@ class ChatRoomService( val time = latest?.createdAt ?: q.lastActivityAt val timeLabel = formatRelativeTime(time) + // 언어 컨텍스트(en/ja)에서 번역본이 존재하면 번역된 캐릭터명을 사용 + val localizedTitle = when (langContext.lang) { + Lang.EN, Lang.JA -> { + val tr = aiCharacterTranslationRepository + .findByCharacterIdAndLocale(q.characterId, langContext.lang.code) + val name = tr?.renderedPayload?.name + if (!name.isNullOrBlank()) name else q.title + } + + else -> q.title + } + ChatRoomListItemDto( chatRoomId = q.chatRoomId, characterId = q.characterId, - title = q.title, + title = localizedTitle, imageUrl = imageUrl, opponentType = opponentType, lastMessagePreview = preview,