캐릭터 상세 - 언어 설정에 따라 번역 데이터를 표시하도록 수정

This commit is contained in:
Yu Sung
2025-12-17 00:16:29 +09:00
parent 96df4c1f1b
commit b61f432b72
2 changed files with 30 additions and 10 deletions

View File

@@ -22,6 +22,7 @@ struct CharacterDetailResponse: Decodable {
let others: [OtherCharacter]
let latestComment: CharacterCommentResponse?
let totalComments: Int
let translated: TranslatedAiCharacterDetail?
}
enum CharacterType: String, Decodable {
@@ -44,3 +45,22 @@ struct CharacterBackgroundResponse: Decodable {
let topic: String
let description: String
}
struct TranslatedAiCharacterDetail: Decodable {
let name: String?
let description: String?
let gender: String?
let personality: TranslatedAiCharacterPersonality?
let background: TranslatedAiCharacterBackground?
let tags: String?
}
struct TranslatedAiCharacterPersonality: Decodable {
let trait: String?
let description: String?
}
struct TranslatedAiCharacterBackground: Decodable {
let topic: String?
let description: String?
}

View File

@@ -59,7 +59,7 @@ struct CharacterDetailView: View {
//
if let backgrounds = viewModel.characterDetail?.backgrounds {
worldViewSection(backgrounds: backgrounds)
worldViewSection(backgrounds: viewModel.characterDetail?.translated?.background?.description ?? backgrounds.description)
}
//
@@ -70,7 +70,7 @@ struct CharacterDetailView: View {
//
if let personalities = viewModel.characterDetail?.personalities {
personalitySection(personalities: personalities)
personalitySection(personalities: viewModel.characterDetail?.translated?.personality?.description ?? personalities.description)
}
//
@@ -204,7 +204,7 @@ extension CharacterDetailView {
{
HStack(spacing: 4) {
if let gender = viewModel.characterDetail?.gender {
Text(gender)
Text(viewModel.characterDetail?.translated?.gender ?? gender)
.font(.custom(Font.preRegular.rawValue, size: 14))
.foregroundColor(
gender == "남성" ?
@@ -262,7 +262,7 @@ extension CharacterDetailView {
//
HStack(spacing: 8) {
Text(viewModel.characterDetail?.name ?? "")
Text(viewModel.characterDetail?.translated?.name ?? viewModel.characterDetail?.name ?? "")
.font(.custom(Font.preBold.rawValue, size: 26))
.foregroundColor(.white)
.lineLimit(1)
@@ -282,11 +282,11 @@ extension CharacterDetailView {
}
//
Text(viewModel.characterDetail?.description ?? "")
Text(viewModel.characterDetail?.translated?.description ?? viewModel.characterDetail?.description ?? "")
.font(.custom(Font.preRegular.rawValue, size: 18))
.foregroundColor(Color(hex: "B0BEC5"))
Text(viewModel.characterDetail?.tags ?? "")
Text(viewModel.characterDetail?.translated?.tags ?? viewModel.characterDetail?.tags ?? "")
.font(.custom(Font.preRegular.rawValue, size: 14))
.foregroundColor(Color(hex: "3BB9F1"))
.multilineTextAlignment(.leading)
@@ -297,7 +297,7 @@ extension CharacterDetailView {
// MARK: - World View Section
extension CharacterDetailView {
private func worldViewSection(backgrounds: CharacterBackgroundResponse) -> some View {
private func worldViewSection(backgrounds: String) -> some View {
VStack(alignment: .leading, spacing: 8) {
HStack {
Text("[세계관 및 작품 소개]")
@@ -307,7 +307,7 @@ extension CharacterDetailView {
Spacer()
}
CharacterExpandableTextView(text: backgrounds.description)
CharacterExpandableTextView(text: backgrounds)
}
.padding(.horizontal, 24)
}
@@ -357,7 +357,7 @@ extension CharacterDetailView {
// MARK: - Personality Section
extension CharacterDetailView {
private func personalitySection(personalities: CharacterPersonalityResponse) -> some View {
private func personalitySection(personalities: String) -> some View {
VStack(alignment: .leading, spacing: 8) {
HStack {
Text("[성격 및 특징]")
@@ -367,7 +367,7 @@ extension CharacterDetailView {
Spacer()
}
CharacterExpandableTextView(text: personalities.description)
CharacterExpandableTextView(text: personalities)
//
VStack(alignment: .leading, spacing: 16) {