채팅 화면과 비밀번호 재설정 현지화 추가
채팅방 잠금 및 초기화 안내 문구와 설정, 비밀번호 재설정\n제목을 다국어 문자열로 제공한다.
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
// 갤러리 그리드
|
||||
|
||||
@@ -17,7 +17,7 @@ struct ChatSettingsView: View {
|
||||
|
||||
var body: some View {
|
||||
VStack(spacing: 0) {
|
||||
DetailNavigationBar(title: "대화 설정") {
|
||||
DetailNavigationBar(title: String(localized: "대화 설정")) {
|
||||
isShowing = false
|
||||
}
|
||||
|
||||
|
||||
@@ -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글자 이상 안내
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user