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,