채팅 화면과 비밀번호 재설정 현지화 추가

채팅방 잠금 및 초기화 안내 문구와 설정, 비밀번호 재설정\n제목을 다국어 문자열로 제공한다.
This commit is contained in:
Yu Sung
2025-12-19 22:12:41 +09:00
parent 3220f300b5
commit dbc4e40904
6 changed files with 121 additions and 33 deletions

View File

@@ -227,13 +227,13 @@ struct ChatRoomView: View {
if let message = viewModel.selectedMessage, viewModel.selectedMessageIndex >= 0 {
SodaDialog(
title: "잠금된 메시지",
desc: "이 메시지를 \(message.price ?? 5)캔으로 잠금해제 하시겠습니까?",
confirmButtonTitle: "잠금해제",
title: I18n.ChatRoom.lockedMessageTitle,
desc: I18n.ChatRoom.unlockMessageDescription(message.price ?? 5),
confirmButtonTitle: I18n.ChatRoom.unlock,
confirmButtonAction: {
viewModel.purchaseChatMessage()
},
cancelButtonTitle: "취소"
cancelButtonTitle: I18n.Common.cancel
) {
viewModel.selectedMessage = nil
viewModel.selectedMessageIndex = -1
@@ -265,14 +265,14 @@ struct ChatRoomView: View {
Color.black.opacity(0.7)
SodaDialog(
title: "대화 초기화",
desc: "지금까지의 대화가 모두 초기화 되고 새롭게 대화를 시작합니다.",
confirmButtonTitle: "30캔으로 초기화",
title: I18n.ChatRoom.resetTitle,
desc: I18n.ChatRoom.resetDescription,
confirmButtonTitle: I18n.ChatRoom.resetWithCans(30),
confirmButtonAction: {
viewModel.resetChatRoom()
viewModel.isShowingChatResetConfirmDialog = false
},
cancelButtonTitle: "취소",
cancelButtonTitle: I18n.Common.cancel,
cancelButtonAction: {
viewModel.isShowingChatResetConfirmDialog = false
}

View File

@@ -26,7 +26,7 @@ struct ChatBgSelectionView: View {
var body: some View {
BaseView(isLoading: $viewModel.isLoading) {
VStack(spacing: 0) {
DetailNavigationBar(title: "배경 이미지 선택") {
DetailNavigationBar(title: String(localized: "배경 이미지 선택")) {
isShowing = false
}
//

View File

@@ -17,7 +17,7 @@ struct ChatSettingsView: View {
var body: some View {
VStack(spacing: 0) {
DetailNavigationBar(title: "대화 설정") {
DetailNavigationBar(title: String(localized: "대화 설정")) {
isShowing = false
}

View File

@@ -11,6 +11,46 @@ import Foundation
// String Catalog i18n.
// LanguageHeaderProvider.current("ko"|"en"|"ja").
enum I18n {
// ( )
enum ChatRoom {
//
static var lockedMessageTitle: String {
pick(ko: "잠금된 메시지", en: "Locked message", ja: "ロックされたメッセージ")
}
static func unlockMessageDescription(_ price: Int) -> String {
pick(
ko: "이 메시지를 \(price)캔으로 잠금해제 하시겠습니까?",
en: "Do you want to unlock this message for \(price) cans?",
ja: "このメッセージを\(price)缶で解除しますか?"
)
}
static var unlock: String {
pick(ko: "잠금해제", en: "Unlock", ja: "解除する")
}
//
static var resetTitle: String {
pick(ko: "대화 초기화", en: "Reset conversation", ja: "会話をリセット")
}
static var resetDescription: String {
pick(
ko: "지금까지의 대화가 모두 초기화 되고 새롭게 대화를 시작합니다.",
en: "All previous messages will be cleared and a new conversation will begin.",
ja: "これまでの会話がすべて初期化され、新しい会話を開始します。"
)
}
static func resetWithCans(_ cans: Int) -> String {
pick(
ko: "\(cans)캔으로 초기화",
en: "Reset with \(cans) cans",
ja: "\(cans)缶でリセット"
)
}
}
//
enum Search {
// : 2

View File

@@ -17,7 +17,7 @@ struct FindPasswordView: View {
BaseView(isLoading: $viewModel.isLoading) {
GeometryReader { proxy in
VStack(spacing: 0) {
DetailNavigationBar(title: "비밀번호 재설정")
DetailNavigationBar(title: String(localized: "비밀번호 재설정"))
ScrollView(.vertical, showsIndicators: false) {
VStack(spacing: 0) {