feat(i18n): 시리즈/재생목록 하드코딩 문구를 I18n 키로 통일한다
This commit is contained in:
@@ -26,14 +26,14 @@ struct ContentPlaylistCreateView: View {
|
||||
.resizable()
|
||||
.frame(width: 20, height: 20)
|
||||
|
||||
Text("새 재생목록 만들기")
|
||||
Text(I18n.Content.Playlist.createTitle)
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
|
||||
Spacer()
|
||||
|
||||
Text("저장")
|
||||
Text(I18n.Content.Playlist.createSave)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(minHeight: 48)
|
||||
@@ -50,7 +50,7 @@ struct ContentPlaylistCreateView: View {
|
||||
.background(Color.black)
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("재생목록 제목")
|
||||
Text(I18n.Content.Playlist.titleLabel)
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
@@ -83,7 +83,7 @@ struct ContentPlaylistCreateView: View {
|
||||
.padding(.horizontal, 13.3)
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("재생목록 설명을 입력해 주세요")
|
||||
Text(I18n.Content.Playlist.descriptionLabel)
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
@@ -118,7 +118,7 @@ struct ContentPlaylistCreateView: View {
|
||||
HStack(spacing: 8) {
|
||||
Image("btn_plus_round")
|
||||
|
||||
Text("새로운 콘텐츠 추가/제거")
|
||||
Text(I18n.Content.Playlist.addContentAction)
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
}
|
||||
|
||||
@@ -57,13 +57,13 @@ final class ContentPlaylistCreateViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
self.isLoading = false
|
||||
}
|
||||
@@ -74,13 +74,13 @@ final class ContentPlaylistCreateViewModel: ObservableObject {
|
||||
|
||||
private func validate() -> Bool {
|
||||
if (title.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty || title.count < 3) {
|
||||
errorMessage = "제목을 3자 이상 입력하세요"
|
||||
errorMessage = I18n.Content.Playlist.titleValidation
|
||||
isShowPopup = true
|
||||
return false
|
||||
}
|
||||
|
||||
if (contentList.isEmpty) {
|
||||
errorMessage = "콘텐츠를 1개 이상 추가하세요"
|
||||
errorMessage = I18n.Content.Playlist.contentValidation
|
||||
isShowPopup = true
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -17,14 +17,14 @@ struct PlaylistAddContentView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
ZStack {
|
||||
Text("새로운 콘텐츠 추가/제거")
|
||||
Text(I18n.Content.Playlist.addContentAction)
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Spacer()
|
||||
|
||||
Text("닫기")
|
||||
Text(I18n.Content.Playlist.close)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(minHeight: 48)
|
||||
@@ -36,11 +36,11 @@ struct PlaylistAddContentView: View {
|
||||
.background(Color.black)
|
||||
|
||||
HStack(alignment: .center, spacing: 5.3) {
|
||||
Text("전체")
|
||||
Text(I18n.Content.Playlist.totalLabel)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color.white)
|
||||
|
||||
Text("\(viewModel.totalCount)개")
|
||||
Text(I18n.Content.Playlist.selectionCount(viewModel.totalCount))
|
||||
.appFont(size: 12, weight: .medium)
|
||||
.foregroundColor(Color.gray90)
|
||||
}
|
||||
|
||||
@@ -125,13 +125,13 @@ struct ContentPlaylistDetailView: View {
|
||||
}
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("만든 날짜 \(response.createdDate)")
|
||||
Text(I18n.Content.Playlist.createdDate(response.createdDate))
|
||||
.appFont(size: 13.3, weight: .medium)
|
||||
.foregroundColor(Color.gray90)
|
||||
|
||||
Spacer()
|
||||
|
||||
Text("\(response.contentCount)개")
|
||||
Text(I18n.Content.Playlist.contentCount(response.contentCount))
|
||||
.appFont(size: 13.3, weight: .medium)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
@@ -141,7 +141,7 @@ struct ContentPlaylistDetailView: View {
|
||||
HStack(spacing: 5.3) {
|
||||
Image("ic_playlist_play")
|
||||
|
||||
Text("Play")
|
||||
Text(I18n.Content.Playlist.play)
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
}
|
||||
@@ -159,7 +159,7 @@ struct ContentPlaylistDetailView: View {
|
||||
HStack(spacing: 5.3) {
|
||||
Image("ic_playlist_shuffle")
|
||||
|
||||
Text("Shuffle")
|
||||
Text(I18n.Content.Playlist.shuffle)
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
}
|
||||
@@ -255,7 +255,7 @@ struct ContentPlaylistDetailView: View {
|
||||
Spacer()
|
||||
|
||||
HStack(spacing: 13.3) {
|
||||
Text("삭제")
|
||||
Text(I18n.Common.delete)
|
||||
.appFont(size: 13.3, weight: .medium)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
|
||||
@@ -50,13 +50,13 @@ final class ContentPlaylistDetailViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ final class ContentPlaylistDetailViewModel: ObservableObject {
|
||||
let decoded = try jsonDecoder.decode(ApiResponseWithoutData.self, from: responseData)
|
||||
|
||||
if decoded.success {
|
||||
self.errorMessage = "삭제되었습니다."
|
||||
self.errorMessage = I18n.Playlist.deleteCompleted
|
||||
self.isShowPopup = true
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
|
||||
@@ -94,13 +94,13 @@ final class ContentPlaylistDetailViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
|
||||
@@ -27,14 +27,14 @@ struct ContentPlaylistModifyView: View {
|
||||
.resizable()
|
||||
.frame(width: 20, height: 20)
|
||||
|
||||
Text("재생목록 수정")
|
||||
Text(I18n.Content.Playlist.modifyTitle)
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
|
||||
Spacer()
|
||||
|
||||
Text("수정")
|
||||
Text(I18n.Content.Playlist.modifyAction)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(minHeight: 48)
|
||||
@@ -51,7 +51,7 @@ struct ContentPlaylistModifyView: View {
|
||||
.background(Color.black)
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("재생목록 제목")
|
||||
Text(I18n.Content.Playlist.titleLabel)
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
@@ -84,7 +84,7 @@ struct ContentPlaylistModifyView: View {
|
||||
.padding(.horizontal, 13.3)
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("재생목록 설명을 입력해 주세요")
|
||||
Text(I18n.Content.Playlist.descriptionLabel)
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
@@ -119,7 +119,7 @@ struct ContentPlaylistModifyView: View {
|
||||
HStack(spacing: 8) {
|
||||
Image("btn_plus_round")
|
||||
|
||||
Text("새로운 콘텐츠 추가/제거")
|
||||
Text(I18n.Content.Playlist.addContentAction)
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
}
|
||||
|
||||
@@ -57,13 +57,13 @@ final class ContentPlaylistModifyViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
@@ -112,13 +112,13 @@ final class ContentPlaylistModifyViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
self.isLoading = false
|
||||
}
|
||||
@@ -129,13 +129,13 @@ final class ContentPlaylistModifyViewModel: ObservableObject {
|
||||
|
||||
private func validate() -> Bool {
|
||||
if (title.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty || title.count < 3) {
|
||||
errorMessage = "제목을 3자 이상 입력하세요"
|
||||
errorMessage = I18n.Content.Playlist.titleValidation
|
||||
isShowPopup = true
|
||||
return false
|
||||
}
|
||||
|
||||
if (contentList.isEmpty) {
|
||||
errorMessage = "콘텐츠를 1개 이상 추가하세요"
|
||||
errorMessage = I18n.Content.Playlist.contentValidation
|
||||
isShowPopup = true
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -18,12 +18,12 @@ struct SeriesContentAllView: View {
|
||||
VStack(spacing: 0) {
|
||||
BaseView(isLoading: $viewModel.isLoading) {
|
||||
VStack(spacing: 0) {
|
||||
DetailNavigationBar(title: "\(seriesTitle) - 전체회차 듣기")
|
||||
DetailNavigationBar(title: I18n.Series.allEpisodesTitle(seriesTitle))
|
||||
|
||||
HStack(spacing: 13.3) {
|
||||
Spacer()
|
||||
|
||||
Text("최신순")
|
||||
Text(I18n.Content.Sort.newest)
|
||||
.appFont(size: 13.3, weight: .medium)
|
||||
.foregroundColor(
|
||||
Color.graye2
|
||||
@@ -35,7 +35,7 @@ struct SeriesContentAllView: View {
|
||||
}
|
||||
}
|
||||
|
||||
Text("등록순")
|
||||
Text(I18n.Series.registeredOrder)
|
||||
.appFont(size: 13.3, weight: .medium)
|
||||
.foregroundColor(
|
||||
Color.graye2
|
||||
|
||||
@@ -66,13 +66,13 @@ final class SeriesContentAllViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ struct SeriesContentListItemView: View {
|
||||
.cornerRadius(2.6)
|
||||
|
||||
if item.isPointAvailable {
|
||||
Text("포인트")
|
||||
Text(I18n.Series.point)
|
||||
.appFont(size: 8, weight: .medium)
|
||||
.foregroundColor(.white)
|
||||
.padding(2.6)
|
||||
@@ -50,7 +50,7 @@ struct SeriesContentListItemView: View {
|
||||
Spacer()
|
||||
|
||||
if item.isOwned {
|
||||
Text("소장중")
|
||||
Text(I18n.Content.Status.owned)
|
||||
.appFont(size: 13.3, weight: .medium)
|
||||
.foregroundColor(Color.gray11)
|
||||
.padding(.horizontal, 5.3)
|
||||
@@ -58,7 +58,7 @@ struct SeriesContentListItemView: View {
|
||||
.background(Color(hex: "b1ef2c"))
|
||||
.cornerRadius(2.6)
|
||||
} else if item.isRented {
|
||||
Text("대여중")
|
||||
Text(I18n.Content.Status.rented)
|
||||
.appFont(size: 13.3, weight: .medium)
|
||||
.foregroundColor(Color.white)
|
||||
.padding(.horizontal, 5.3)
|
||||
@@ -74,7 +74,7 @@ struct SeriesContentListItemView: View {
|
||||
.foregroundColor(Color(hex: "909090"))
|
||||
}
|
||||
} else {
|
||||
Text("무료")
|
||||
Text(I18n.Series.free)
|
||||
.appFont(size: 13.3, weight: .medium)
|
||||
.foregroundColor(Color.white)
|
||||
.padding(.horizontal, 5.3)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
import SwiftUI
|
||||
|
||||
struct DayOfWeek {
|
||||
let dayOfWeekStr: LocalizedStringResource
|
||||
let dayOfWeekStr: String
|
||||
let dayOfWeek: SeriesPublishedDaysOfWeek
|
||||
}
|
||||
|
||||
@@ -20,14 +20,14 @@ struct DayOfWeekSeriesView: View {
|
||||
@State private var dayOfWeek: SeriesPublishedDaysOfWeek = .FRI
|
||||
|
||||
private let dayOfWeekItems: [DayOfWeek] = [
|
||||
DayOfWeek(dayOfWeekStr: "월", dayOfWeek: .MON),
|
||||
DayOfWeek(dayOfWeekStr: "화", dayOfWeek: .TUE),
|
||||
DayOfWeek(dayOfWeekStr: "수", dayOfWeek: .WED),
|
||||
DayOfWeek(dayOfWeekStr: "목", dayOfWeek: .THU),
|
||||
DayOfWeek(dayOfWeekStr: "금", dayOfWeek: .FRI),
|
||||
DayOfWeek(dayOfWeekStr: "토", dayOfWeek: .SAT),
|
||||
DayOfWeek(dayOfWeekStr: "일", dayOfWeek: .SUN),
|
||||
DayOfWeek(dayOfWeekStr: "랜덤", dayOfWeek: .RANDOM),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.monday, dayOfWeek: .MON),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.tuesday, dayOfWeek: .TUE),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.wednesday, dayOfWeek: .WED),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.thursday, dayOfWeek: .THU),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.friday, dayOfWeek: .FRI),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.saturday, dayOfWeek: .SAT),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.sunday, dayOfWeek: .SUN),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.random, dayOfWeek: .RANDOM),
|
||||
]
|
||||
|
||||
// 요일 숫자에 맞춰 배열
|
||||
@@ -45,13 +45,13 @@ struct DayOfWeekSeriesView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text("요일별 시리즈")
|
||||
Text(I18n.Series.byDaySectionTitle)
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
Text("전체보기")
|
||||
Text(I18n.Common.viewAll)
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(.init(hex: "78909C"))
|
||||
.onTapGesture {
|
||||
@@ -93,7 +93,7 @@ struct DayOfWeekSeriesView: View {
|
||||
}
|
||||
|
||||
struct DayOfWeekDayView: View {
|
||||
let dayOfWeek: LocalizedStringResource
|
||||
let dayOfWeek: String
|
||||
let isSelected: Bool
|
||||
|
||||
var body: some View {
|
||||
|
||||
@@ -17,7 +17,7 @@ struct SeriesDetailHomeView: View {
|
||||
var body: some View {
|
||||
VStack(spacing: 0) {
|
||||
HStack(spacing: 0) {
|
||||
Text("전체회차 듣기")
|
||||
Text(I18n.Series.allEpisodesListen)
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ struct SeriesDetailView: View {
|
||||
.cornerRadius(2.6)
|
||||
|
||||
if seriesDetail.isAdult {
|
||||
Text("19세")
|
||||
Text(I18n.Series.age19Badge)
|
||||
.appFont(size: 12, weight: .medium)
|
||||
.foregroundColor(Color(hex: "f1291c"))
|
||||
.padding(.horizontal, 5.3)
|
||||
@@ -98,7 +98,7 @@ struct SeriesDetailView: View {
|
||||
.background(Color(hex: "312827"))
|
||||
.cornerRadius(2.6)
|
||||
} else {
|
||||
Text("전체연령가")
|
||||
Text(I18n.SeriesDetail.ageAll)
|
||||
.appFont(size: 12, weight: .medium)
|
||||
.foregroundColor(Color(hex: "d2d2d2"))
|
||||
.padding(.horizontal, 5.3)
|
||||
@@ -107,7 +107,7 @@ struct SeriesDetailView: View {
|
||||
.cornerRadius(2.6)
|
||||
}
|
||||
|
||||
Text("\(seriesDetail.publishedDaysOfWeek) 연재")
|
||||
Text(I18n.Series.publishing(seriesDetail.publishedDaysOfWeek))
|
||||
.appFont(size: 12, weight: .medium)
|
||||
.foregroundColor(Color(hex: "909090"))
|
||||
}
|
||||
|
||||
@@ -50,13 +50,13 @@ final class SeriesDetailViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
@@ -91,13 +91,13 @@ final class SeriesDetailViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
@@ -131,13 +131,13 @@ final class SeriesDetailViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
|
||||
@@ -62,13 +62,13 @@ final class SeriesMainByGenreViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
}
|
||||
@@ -109,13 +109,13 @@ final class SeriesMainByGenreViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
|
||||
@@ -15,14 +15,14 @@ struct SeriesMainDayOfWeekView: View {
|
||||
@State private var dayOfWeek: SeriesPublishedDaysOfWeek = .SAT
|
||||
|
||||
private let dayOfWeekItems: [DayOfWeek] = [
|
||||
DayOfWeek(dayOfWeekStr: "월", dayOfWeek: .MON),
|
||||
DayOfWeek(dayOfWeekStr: "화", dayOfWeek: .TUE),
|
||||
DayOfWeek(dayOfWeekStr: "수", dayOfWeek: .WED),
|
||||
DayOfWeek(dayOfWeekStr: "목", dayOfWeek: .THU),
|
||||
DayOfWeek(dayOfWeekStr: "금", dayOfWeek: .FRI),
|
||||
DayOfWeek(dayOfWeekStr: "토", dayOfWeek: .SAT),
|
||||
DayOfWeek(dayOfWeekStr: "일", dayOfWeek: .SUN),
|
||||
DayOfWeek(dayOfWeekStr: "랜덤", dayOfWeek: .RANDOM),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.monday, dayOfWeek: .MON),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.tuesday, dayOfWeek: .TUE),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.wednesday, dayOfWeek: .WED),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.thursday, dayOfWeek: .THU),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.friday, dayOfWeek: .FRI),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.saturday, dayOfWeek: .SAT),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.sunday, dayOfWeek: .SUN),
|
||||
DayOfWeek(dayOfWeekStr: I18n.Series.random, dayOfWeek: .RANDOM),
|
||||
]
|
||||
|
||||
// 요일 숫자에 맞춰 배열
|
||||
|
||||
@@ -62,13 +62,13 @@ final class SeriesMainDayOfWeekViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
|
||||
@@ -24,13 +24,13 @@ struct SeriesMainHomeView: View {
|
||||
if !viewModel.completedSeriesList.isEmpty {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text("완결 시리즈")
|
||||
Text(I18n.Series.completedSectionTitle)
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
Text("전체보기")
|
||||
Text(I18n.Common.viewAll)
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(.init(hex: "78909C"))
|
||||
.onTapGesture {
|
||||
@@ -58,7 +58,7 @@ struct SeriesMainHomeView: View {
|
||||
if !viewModel.recommendSeriesList.isEmpty {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text("추천 시리즈")
|
||||
Text(I18n.Series.recommendedSectionTitle)
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
|
||||
@@ -45,13 +45,13 @@ final class SeriesMainHomeViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
@@ -83,13 +83,13 @@ final class SeriesMainHomeViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ struct SeriesMainItemView: View {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
HStack(spacing: 0) {
|
||||
if item.isPopular {
|
||||
Text("인기")
|
||||
Text(I18n.Series.popular)
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 10)
|
||||
@@ -37,7 +37,7 @@ struct SeriesMainItemView: View {
|
||||
}
|
||||
|
||||
if item.isNew {
|
||||
Text("신작")
|
||||
Text(I18n.Series.new)
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 10)
|
||||
@@ -56,7 +56,7 @@ struct SeriesMainItemView: View {
|
||||
}
|
||||
|
||||
if item.isComplete {
|
||||
Text("완결")
|
||||
Text(I18n.Series.complete)
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 10)
|
||||
@@ -71,7 +71,7 @@ struct SeriesMainItemView: View {
|
||||
HStack {
|
||||
Spacer()
|
||||
|
||||
Text("총 \(item.numberOfContent)화")
|
||||
Text(I18n.Series.totalEpisodes(item.numberOfContent))
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 10)
|
||||
|
||||
@@ -28,7 +28,7 @@ struct SeriesMainView: View {
|
||||
Group {
|
||||
BaseView {
|
||||
VStack(spacing: 0) {
|
||||
DetailNavigationBar(title: "시리즈 전체보기")
|
||||
DetailNavigationBar(title: I18n.Series.title)
|
||||
// 내부 탭 (캐릭터 / 톡)
|
||||
HStack(spacing: 0) {
|
||||
ChatInnerTab(
|
||||
|
||||
@@ -27,7 +27,7 @@ struct SeriesItemView: View {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
HStack(spacing: 0) {
|
||||
if item.isPopular {
|
||||
Text("인기")
|
||||
Text(I18n.Series.popular)
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 10)
|
||||
@@ -37,7 +37,7 @@ struct SeriesItemView: View {
|
||||
}
|
||||
|
||||
if item.isNew {
|
||||
Text("신작")
|
||||
Text(I18n.Series.new)
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 10)
|
||||
@@ -56,7 +56,7 @@ struct SeriesItemView: View {
|
||||
}
|
||||
|
||||
if item.isComplete {
|
||||
Text("완결")
|
||||
Text(I18n.Series.complete)
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 10)
|
||||
@@ -71,7 +71,7 @@ struct SeriesItemView: View {
|
||||
HStack {
|
||||
Spacer()
|
||||
|
||||
Text("총 \(item.numberOfContent)화")
|
||||
Text(I18n.Series.totalEpisodes(item.numberOfContent))
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 10)
|
||||
|
||||
@@ -23,9 +23,9 @@ struct SeriesListAllView: View {
|
||||
BaseView(isLoading: $viewModel.isLoading) {
|
||||
VStack(spacing: 0) {
|
||||
if isCompleted {
|
||||
DetailNavigationBar(title: "완결 시리즈")
|
||||
DetailNavigationBar(title: I18n.Series.completedSectionTitle)
|
||||
} else if isOriginal {
|
||||
DetailNavigationBar(title: "오직 보이스온에서만")
|
||||
DetailNavigationBar(title: I18n.Series.voiceOnOnlyTitle)
|
||||
} else {
|
||||
DetailNavigationBar(title: I18n.Series.viewAllByCreator(creatorNickname ?? ""))
|
||||
}
|
||||
|
||||
@@ -63,13 +63,13 @@ final class SeriesListAllViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user