feat(i18n): 라이브 룸 하드코딩 문구를 I18n 키로 통일한다
This commit is contained in:
@@ -19,14 +19,14 @@ struct RouletteSettingsOptionView: View {
|
||||
var body: some View {
|
||||
VStack(spacing: 6.7) {
|
||||
HStack(spacing: 0) {
|
||||
Text("옵션 \(index + 1)")
|
||||
Text(I18n.CreateLive.rouletteOptionTitle(index))
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Spacer()
|
||||
|
||||
if index > 1 {
|
||||
Text("삭제")
|
||||
Text(I18n.CreateLive.rouletteDeleteAction)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color(hex: "ff5c49"))
|
||||
.onTapGesture { onClickDelete() }
|
||||
@@ -34,7 +34,7 @@ struct RouletteSettingsOptionView: View {
|
||||
}
|
||||
|
||||
HStack(spacing: 8) {
|
||||
TextField("옵션을 입력하세요", text: $option.title)
|
||||
TextField(I18n.CreateLive.rouletteOptionPlaceholder, text: $option.title)
|
||||
.autocapitalization(.none)
|
||||
.disableAutocorrection(true)
|
||||
.appFont(size: 13.3, weight: .medium)
|
||||
|
||||
@@ -28,7 +28,7 @@ struct RouletteSettingsView: View {
|
||||
GeometryReader { proxy in
|
||||
BaseView(isLoading: $viewModel.isLoading) {
|
||||
VStack(spacing: 0) {
|
||||
DetailNavigationBar(title: String(localized: "룰렛 설정")) {
|
||||
DetailNavigationBar(title: I18n.CreateLive.rouletteSettingsTitle) {
|
||||
isShowing = false
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ struct RouletteSettingsView: View {
|
||||
|
||||
if availableActive {
|
||||
HStack(spacing: 0) {
|
||||
Text("룰렛을 활성화 하시겠습니까?")
|
||||
Text(I18n.CreateLive.rouletteActivatePrompt)
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
@@ -90,12 +90,12 @@ struct RouletteSettingsView: View {
|
||||
}
|
||||
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
Text("룰렛 금액 설정")
|
||||
Text(I18n.CreateLive.rouletteCanSettingTitle)
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
HStack(spacing: 8) {
|
||||
TextField("룰렛 금액을 입력해 주세요 (최소 5캔)", text: Binding(
|
||||
TextField(I18n.CreateLive.rouletteCanPlaceholder, text: Binding(
|
||||
get: {
|
||||
self.viewModel.canText
|
||||
},
|
||||
@@ -117,7 +117,7 @@ struct RouletteSettingsView: View {
|
||||
|
||||
Spacer()
|
||||
|
||||
Text("캔")
|
||||
Text(I18n.CreateLive.canUnit)
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
@@ -126,12 +126,12 @@ struct RouletteSettingsView: View {
|
||||
.id("roulette_can_input")
|
||||
|
||||
VStack(alignment: .leading, spacing: 21.3) {
|
||||
Text("룰렛 옵션 설정")
|
||||
Text(I18n.CreateLive.rouletteOptionSettingTitle)
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("※ 룰렛 옵션은 최소 2개,\n최대 10개까지 설정할 수 있습니다.")
|
||||
Text(I18n.CreateLive.rouletteOptionLimitNotice)
|
||||
.appFont(size: 13.3, weight: .medium)
|
||||
.foregroundColor(Color.mainRed)
|
||||
|
||||
@@ -144,7 +144,7 @@ struct RouletteSettingsView: View {
|
||||
.padding(.top, 26.7)
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("옵션 확률 합계")
|
||||
Text(I18n.CreateLive.rouletteProbabilitySum)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
@@ -186,7 +186,7 @@ struct RouletteSettingsView: View {
|
||||
Spacer()
|
||||
|
||||
HStack(spacing: 13.3) {
|
||||
Text("미리보기")
|
||||
Text(I18n.CreateLive.roulettePreviewAction)
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.padding(.vertical, 16)
|
||||
@@ -200,7 +200,7 @@ struct RouletteSettingsView: View {
|
||||
viewModel.onClickPreview()
|
||||
}
|
||||
|
||||
Text("설정완료")
|
||||
Text(I18n.CreateLive.rouletteCompleteAction)
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 16)
|
||||
@@ -232,7 +232,7 @@ struct RouletteSettingsView: View {
|
||||
if let preview = viewModel.previewData, viewModel.isShowPreview {
|
||||
RoulettePreviewDialog(
|
||||
isShowing: $viewModel.isShowPreview,
|
||||
title: "룰렛 미리보기",
|
||||
title: I18n.CreateLive.roulettePreviewTitle,
|
||||
onClickSpin: nil,
|
||||
previewList: [preview]
|
||||
)
|
||||
|
||||
@@ -86,11 +86,11 @@ final class RouletteSettingsViewModel: ObservableObject {
|
||||
rouletteList.append(contentsOf: data)
|
||||
selectRoulette(selectedRoulette: .ROULETTE_1)
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowErrorPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowErrorPopup = true
|
||||
}
|
||||
}
|
||||
@@ -104,7 +104,7 @@ final class RouletteSettingsViewModel: ObservableObject {
|
||||
for option in options {
|
||||
if option.title.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
|
||||
isLoading = false
|
||||
errorMessage = "옵션은 빈칸일 수 없습니다."
|
||||
errorMessage = I18n.CreateLive.rouletteOptionEmptyError
|
||||
isShowErrorPopup = true
|
||||
return
|
||||
}
|
||||
@@ -137,7 +137,7 @@ final class RouletteSettingsViewModel: ObservableObject {
|
||||
for option in options {
|
||||
if option.title.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
|
||||
isLoading = false
|
||||
errorMessage = "옵션은 빈칸일 수 없습니다."
|
||||
errorMessage = I18n.CreateLive.rouletteOptionEmptyError
|
||||
isShowErrorPopup = true
|
||||
return false
|
||||
}
|
||||
@@ -149,7 +149,7 @@ final class RouletteSettingsViewModel: ObservableObject {
|
||||
|
||||
if totalPercentage > Float(100.1) || totalPercentage <= Float(99.99) {
|
||||
isLoading = false
|
||||
errorMessage = "확률이 100%가 아닙니다"
|
||||
errorMessage = I18n.CreateLive.rouletteProbabilityInvalidError
|
||||
isShowErrorPopup = true
|
||||
return false
|
||||
}
|
||||
@@ -170,23 +170,23 @@ final class RouletteSettingsViewModel: ObservableObject {
|
||||
|
||||
switch (self.selectedRoulette) {
|
||||
case .ROULETTE_2:
|
||||
selectedRouletteTitle = "룰렛 2"
|
||||
selectedRouletteTitle = I18n.Common.roulette2
|
||||
|
||||
case .ROULETTE_3:
|
||||
selectedRouletteTitle = "룰렛 3"
|
||||
selectedRouletteTitle = I18n.Common.roulette3
|
||||
|
||||
default:
|
||||
selectedRouletteTitle = "룰렛 1"
|
||||
selectedRouletteTitle = I18n.Common.roulette1
|
||||
}
|
||||
|
||||
if availableActive {
|
||||
if isActive {
|
||||
successMessage = "\(selectedRouletteTitle)로 설정하였습니다."
|
||||
successMessage = I18n.CreateLive.rouletteSetAsSuccess(selectedRouletteTitle)
|
||||
} else {
|
||||
successMessage = "\(selectedRouletteTitle)을 설정했습니다."
|
||||
successMessage = I18n.CreateLive.rouletteSetSuccess(selectedRouletteTitle)
|
||||
}
|
||||
} else {
|
||||
successMessage = "\(selectedRouletteTitle)을 생성했습니다."
|
||||
successMessage = I18n.CreateLive.rouletteCreatedSuccess(selectedRouletteTitle)
|
||||
}
|
||||
|
||||
let request = CreateRouletteRequest(can: can, isActive: isActive, items: items)
|
||||
@@ -209,11 +209,11 @@ final class RouletteSettingsViewModel: ObservableObject {
|
||||
if decoded.success {
|
||||
onSuccess(isActive, successMessage)
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowErrorPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowErrorPopup = true
|
||||
}
|
||||
}
|
||||
@@ -230,7 +230,7 @@ final class RouletteSettingsViewModel: ObservableObject {
|
||||
|
||||
let selectedRoulette = rouletteList[selectedRoulette!.rawValue]
|
||||
if selectedRoulette.isActive == isActive && selectedRoulette.can == can && selectedRoulette.items == items {
|
||||
self.errorMessage = "변동사항이 없습니다."
|
||||
self.errorMessage = I18n.CreateLive.rouletteNoChangesMessage
|
||||
self.isShowErrorPopup = true
|
||||
self.isLoading = false
|
||||
return
|
||||
@@ -241,23 +241,23 @@ final class RouletteSettingsViewModel: ObservableObject {
|
||||
|
||||
switch (self.selectedRoulette) {
|
||||
case .ROULETTE_2:
|
||||
selectedRouletteTitle = "룰렛 2"
|
||||
selectedRouletteTitle = I18n.Common.roulette2
|
||||
|
||||
case .ROULETTE_3:
|
||||
selectedRouletteTitle = "룰렛 3"
|
||||
selectedRouletteTitle = I18n.Common.roulette3
|
||||
|
||||
default:
|
||||
selectedRouletteTitle = "룰렛 1"
|
||||
selectedRouletteTitle = I18n.Common.roulette1
|
||||
}
|
||||
|
||||
if availableActive {
|
||||
if isActive {
|
||||
successMessage = "\(selectedRouletteTitle)을 활성화 했습니다."
|
||||
successMessage = I18n.CreateLive.rouletteActivatedSuccess(selectedRouletteTitle)
|
||||
} else {
|
||||
successMessage = "\(selectedRouletteTitle)을 비활성화 했습니다."
|
||||
successMessage = I18n.CreateLive.rouletteDeactivatedSuccess(selectedRouletteTitle)
|
||||
}
|
||||
} else {
|
||||
successMessage = "\(selectedRouletteTitle)을 변경했습니다."
|
||||
successMessage = I18n.CreateLive.rouletteChangedSuccess(selectedRouletteTitle)
|
||||
}
|
||||
|
||||
let request = UpdateRouletteRequest(id: rouletteId, can: can, isActive: isActive, items: items)
|
||||
@@ -280,11 +280,11 @@ final class RouletteSettingsViewModel: ObservableObject {
|
||||
if decoded.success {
|
||||
onSuccess(isActive, successMessage)
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowErrorPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowErrorPopup = true
|
||||
}
|
||||
}
|
||||
@@ -293,13 +293,13 @@ final class RouletteSettingsViewModel: ObservableObject {
|
||||
|
||||
func selectRoulette(selectedRoulette: SelectedRoulette) {
|
||||
if rouletteList.isEmpty && (selectedRoulette == .ROULETTE_2 || selectedRoulette == .ROULETTE_3) {
|
||||
errorMessage = "룰렛 1을 먼저 설정하세요"
|
||||
errorMessage = I18n.CreateLive.rouletteNeedFirstMessage
|
||||
isShowErrorPopup = true
|
||||
return
|
||||
}
|
||||
|
||||
if rouletteList.count == 1 && selectedRoulette == .ROULETTE_3 {
|
||||
errorMessage = "룰렛 1과 룰렛 2를 먼저 설정하세요"
|
||||
errorMessage = I18n.CreateLive.rouletteNeedFirstAndSecondMessage
|
||||
isShowErrorPopup = true
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user