feat(i18n): 시리즈/재생목록 하드코딩 문구를 I18n 키로 통일한다

This commit is contained in:
Yu Sung
2026-04-01 17:33:13 +09:00
parent c039931f34
commit 1ec56a1f15
27 changed files with 253 additions and 160 deletions

View File

@@ -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)
}

View File

@@ -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
}

View File

@@ -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)
}

View File

@@ -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)

View File

@@ -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
}

View File

@@ -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)
}

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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)

View File

@@ -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 {

View File

@@ -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)

View File

@@ -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"))
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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),
]
//

View File

@@ -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
}

View File

@@ -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)

View File

@@ -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
}

View File

@@ -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)

View File

@@ -28,7 +28,7 @@ struct SeriesMainView: View {
Group {
BaseView {
VStack(spacing: 0) {
DetailNavigationBar(title: "시리즈 전체보기")
DetailNavigationBar(title: I18n.Series.title)
// ( / )
HStack(spacing: 0) {
ChatInnerTab(

View File

@@ -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)

View File

@@ -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 ?? ""))
}

View File

@@ -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
}