채팅방 서비스에 언어 컨텍스트에 따라 캐릭터명 번역을 적용하는 기능이 추가되어, 영어와 일본어 설정 시 번역된 캐릭터명이 표시되도록 수정
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user