feat(i18n): 콘텐츠 모듈 그룹1 하드코딩 문구를 I18n 키로 통일한다

This commit is contained in:
Yu Sung
2026-04-01 15:36:39 +09:00
parent 038d66e363
commit 49e2487617
11 changed files with 173 additions and 41 deletions

View File

@@ -22,7 +22,7 @@ struct ContentAllByThemeView: View {
HStack(spacing: 13.3) {
Spacer()
Text("최신순")
Text(I18n.Content.Sort.newest)
.appFont(size: 13.3, weight: .medium)
.foregroundColor(
Color(hex: "e2e2e2")
@@ -34,7 +34,7 @@ struct ContentAllByThemeView: View {
}
}
Text("높은 가격순")
Text(I18n.Content.Sort.priceHigh)
.appFont(size: 13.3, weight: .medium)
.foregroundColor(
Color(hex: "e2e2e2")
@@ -46,7 +46,7 @@ struct ContentAllByThemeView: View {
}
}
Text("낮은 가격순")
Text(I18n.Content.Sort.priceLow)
.appFont(size: 13.3, weight: .medium)
.foregroundColor(
Color(hex: "e2e2e2")
@@ -64,7 +64,7 @@ struct ContentAllByThemeView: View {
.padding(.top, 13.3)
HStack(spacing: 0) {
Text("전체")
Text(I18n.Content.Count.totalPrefix)
.appFont(size: 13.3, weight: .medium)
.foregroundColor(Color(hex: "e2e2e2"))
@@ -73,7 +73,7 @@ struct ContentAllByThemeView: View {
.foregroundColor(Color(hex: "ff5c49"))
.padding(.leading, 8)
Text("")
Text(I18n.Content.Count.countUnit)
.appFont(size: 13.3, weight: .medium)
.foregroundColor(Color(hex: "e2e2e2"))
.padding(.leading, 2)

View File

@@ -78,13 +78,13 @@ final class ContentAllByThemeViewModel: 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

@@ -19,7 +19,11 @@ struct ContentAllView: View {
Group {
BaseView(isLoading: $viewModel.isLoading) {
VStack(spacing: 0) {
DetailNavigationBar(title: isFree ? String(localized: "무료 콘텐츠 전체") : isPointAvailableOnly ? String(localized: "포인트 대여 전체") : String(localized: "콘텐츠 전체"))
DetailNavigationBar(
title: isFree ?
I18n.Content.All.freeTitle :
isPointAvailableOnly ? I18n.Content.All.pointRentalTitle : I18n.Content.All.title
)
if !viewModel.themeList.isEmpty {
ContentMainContentThemeView(
@@ -32,7 +36,7 @@ struct ContentAllView: View {
HStack(spacing: 12) {
Spacer()
Text("최신순")
Text(I18n.Content.Sort.newest)
.appFont(size: 16, weight: .medium)
.foregroundColor(
Color(hex: "e2e2e2")
@@ -44,7 +48,7 @@ struct ContentAllView: View {
}
}
Text("인기순")
Text(I18n.Content.Sort.popularity)
.appFont(size: 16, weight: .medium)
.foregroundColor(
Color(hex: "e2e2e2")

View File

@@ -41,7 +41,7 @@ struct ContentNewAllItemView: View {
.appFont(size: 8.5, weight: .medium)
.foregroundColor(Color.white)
} else {
Text("무료")
Text(I18n.CreateContent.free)
.appFont(size: 8.5, weight: .medium)
.foregroundColor(Color.white)
}

View File

@@ -18,9 +18,9 @@ struct ContentNewAllView: View {
Group {
BaseView(isLoading: $viewModel.isLoading) {
VStack(alignment: .leading, spacing: 13.3) {
DetailNavigationBar(title: isFree ? "최신 무료 콘텐츠" : "최신 콘텐츠")
DetailNavigationBar(title: isFree ? I18n.Content.New.freeTitle : I18n.Content.New.title)
Text("※ 최근 2주간 등록된 새로운 콘텐츠 입니다.")
Text(I18n.Content.New.recentTwoWeeksNotice)
.appFont(size: 14.7, weight: .medium)
.foregroundColor(.graybb)
.padding(.horizontal, 13.3)
@@ -37,7 +37,7 @@ struct ContentNewAllView: View {
)
HStack(spacing: 0) {
Text("전체")
Text(I18n.Content.Count.totalPrefix)
.appFont(size: 13.3, weight: .medium)
.foregroundColor(Color(hex: "e2e2e2"))
@@ -46,7 +46,7 @@ struct ContentNewAllView: View {
.foregroundColor(Color(hex: "ff5c49"))
.padding(.leading, 8)
Text("")
Text(I18n.Content.Count.countUnit)
.appFont(size: 13.3, weight: .medium)
.foregroundColor(Color(hex: "e2e2e2"))
.padding(.leading, 2)

View File

@@ -17,14 +17,14 @@ struct ContentRankingAllView: View {
Group {
BaseView(isLoading: $viewModel.isLoading) {
VStack(spacing: 0) {
DetailNavigationBar(title: "인기 콘텐츠")
DetailNavigationBar(title: I18n.Content.Ranking.title)
VStack(spacing: 8) {
Text("\(viewModel.dateString)")
.appFont(size: 14.7, weight: .bold)
.foregroundColor(Color(hex: "eeeeee"))
Text("※ 인기 콘텐츠의 순위는 매주 업데이트됩니다.")
Text(I18n.Content.Ranking.weeklyUpdateNotice)
.appFont(size: 13.3, weight: .light)
.foregroundColor(Color(hex: "bbbbbb"))
}
@@ -82,7 +82,7 @@ struct ContentRankingAllView: View {
.cornerRadius(2.6)
if item.isPointAvailable {
Text("포인트")
Text(I18n.Common.points)
.appFont(size: 8, weight: .medium)
.foregroundColor(.white)
.padding(2.6)
@@ -116,7 +116,7 @@ struct ContentRankingAllView: View {
.foregroundColor(Color(hex: "909090"))
}
} else {
Text("무료")
Text(I18n.CreateContent.free)
.appFont(size: 12, weight: .medium)
.foregroundColor(Color(hex: "ffffff"))
.padding(.horizontal, 5.3)

View File

@@ -71,13 +71,13 @@ final class ContentRankingAllViewModel: 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
}
@@ -109,13 +109,13 @@ final class ContentRankingAllViewModel: 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

@@ -49,11 +49,11 @@ struct ContentListCategoryView: View {
ContentListCategoryView(
categoryList: [
GetCategoryListResponse(categoryId: 0, category: "전체"),
GetCategoryListResponse(categoryId: 0, category: I18n.Category.all),
GetCategoryListResponse(categoryId: 1, category: "test"),
GetCategoryListResponse(categoryId: 0, category: "test2")
],
selectCategory: { _ in },
selectedCategory: .constant("전체")
selectedCategory: .constant(I18n.Category.all)
)
}

View File

@@ -29,7 +29,7 @@ struct ContentListItemView: View {
VStack(alignment: .leading, spacing: 8) {
HStack(spacing: 8) {
if item.isScheduledToOpen {
Text("오픈예정")
Text(I18n.Common.openScheduled)
.appFont(size: 11, weight: .medium)
.foregroundColor(Color(hex: "3bb9f1"))
.padding(2.6)
@@ -52,7 +52,7 @@ struct ContentListItemView: View {
.cornerRadius(2.6)
if item.isPointAvailable {
Text("포인트")
Text(I18n.Common.points)
.appFont(size: 11, weight: .medium)
.foregroundColor(.white)
.padding(2.6)
@@ -98,7 +98,7 @@ struct ContentListItemView: View {
Spacer()
if item.isOwned {
Text("소장중")
Text(I18n.Content.Status.owned)
.appFont(size: 14, weight: .medium)
.foregroundColor(Color.gray11)
.padding(.horizontal, 5.3)
@@ -106,7 +106,7 @@ struct ContentListItemView: View {
.background(Color(hex: "b1ef2c"))
.cornerRadius(2.6)
} else if item.isRented {
Text("대여중")
Text(I18n.Content.Status.rented)
.appFont(size: 14, weight: .medium)
.foregroundColor(Color.white)
.padding(.horizontal, 5.3)
@@ -114,7 +114,7 @@ struct ContentListItemView: View {
.background(Color(hex: "660fd4"))
.cornerRadius(2.6)
} else if item.isSoldOut {
Text("Sold Out")
Text(I18n.Content.Status.soldOut)
.appFont(size: 14, weight: .medium)
.foregroundColor(Color.grayd2)
.padding(.horizontal, 5.3)
@@ -135,7 +135,7 @@ struct ContentListItemView: View {
.foregroundColor(.white)
}
} else {
Text("무료")
Text(I18n.CreateContent.free)
.appFont(size: 14, weight: .medium)
.foregroundColor(.white)
}