콘텐츠 전체 문자열 번역 추가

This commit is contained in:
Yu Sung
2025-12-17 14:27:25 +09:00
parent ad9f26c8a0
commit 619870e1de
4 changed files with 176 additions and 128 deletions

View File

@@ -4068,22 +4068,6 @@
}
}
},
"모집완료" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Recruitment closed"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "募集終了"
}
}
}
},
"목" : {
"localizations" : {
"en" : {
@@ -4100,6 +4084,22 @@
}
}
},
"모집완료" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Recruitment closed"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "募集終了"
}
}
}
},
"모집중" : {
"localizations" : {
"en" : {
@@ -4148,6 +4148,22 @@
}
}
},
"무료 콘텐츠 전체" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "All free content"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "無料コンテンツ一覧"
}
}
}
},
"문자" : {
"localizations" : {
"en" : {
@@ -6724,102 +6740,6 @@
}
}
},
"이벤트 참여하기" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Join the event"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "イベントに参加する"
}
}
}
},
"이용약관" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Terms of service"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "利用規約"
}
}
}
},
"인기" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Popular"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "人気"
}
}
}
},
"인기순" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "By popularity"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "人気順"
}
}
}
},
"인증완료" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Verification completed"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "認証完了"
}
}
}
},
"일" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Sun"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "日"
}
}
}
},
"이메일" : {
"localizations" : {
"en" : {
@@ -6900,6 +6820,38 @@
}
}
},
"이벤트 참여하기" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Join the event"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "イベントに参加する"
}
}
}
},
"이용약관" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Terms of service"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "利用規約"
}
}
}
},
"이전화" : {
"localizations" : {
"en" : {
@@ -6916,6 +6868,22 @@
}
}
},
"인기" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Popular"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "人気"
}
}
}
},
"인기 시리즈" : {
"localizations" : {
"en" : {
@@ -6996,6 +6964,54 @@
}
}
},
"인기순" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "By popularity"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "人気順"
}
}
}
},
"인증완료" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Verification completed"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "認証完了"
}
}
}
},
"일" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Sun"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "日"
}
}
}
},
"일간 랭킹" : {
"localizations" : {
"en" : {
@@ -8676,6 +8692,22 @@
}
}
},
"콘텐츠 전체" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "All content"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "コンテンツ一覧"
}
}
}
},
"콘텐츠 전체보기" : {
"localizations" : {
"en" : {
@@ -9124,6 +9156,22 @@
}
}
},
"포인트 대여 전체" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "All point rentals"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "ポイントレンタル一覧"
}
}
}
},
"포인트 대여 콘텐츠" : {
"localizations" : {
"en" : {
@@ -9638,4 +9686,4 @@
}
},
"version" : "1.1"
}
}

View File

@@ -18,7 +18,7 @@ struct ContentAllView: View {
NavigationView {
BaseView(isLoading: $viewModel.isLoading) {
VStack(spacing: 0) {
DetailNavigationBar(title: isFree ? "무료 콘텐츠 전체" : isPointAvailableOnly ? "포인트 대여 전체" : "콘텐츠 전체")
DetailNavigationBar(title: isFree ? String(localized: "무료 콘텐츠 전체") : isPointAvailableOnly ? String(localized: "포인트 대여 전체") : String(localized: "콘텐츠 전체"))
if !viewModel.themeList.isEmpty {
ContentMainContentThemeView(

View File

@@ -32,7 +32,7 @@ final class ContentAllViewModel: ObservableObject {
}
}
@Published var selectedTheme = "전체" {
@Published var selectedTheme = I18n.Category.all {
didSet {
page = 1
isLast = false
@@ -52,7 +52,7 @@ final class ContentAllViewModel: ObservableObject {
if !isLast && !isLoading {
isLoading = true
repository.getAllAudioContents(page: page, size: pageSize, isFree: isFree, isPointAvailableOnly: isPointAvailableOnly, sortType: sort, theme: selectedTheme == "전체" ? nil : selectedTheme)
repository.getAllAudioContents(page: page, size: pageSize, isFree: isFree, isPointAvailableOnly: isPointAvailableOnly, sortType: sort, theme: selectedTheme == I18n.Category.all ? nil : selectedTheme)
.sink { result in
switch result {
case .finished:
@@ -84,13 +84,13 @@ final class ContentAllViewModel: 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
}
@@ -118,18 +118,18 @@ final class ContentAllViewModel: ObservableObject {
self.isLoading = false
if let data = decoded.data, decoded.success {
self.themeList = ["전체"] + data
self.themeList = [I18n.Category.all] + data
} else {
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
}

View File

@@ -20,7 +20,7 @@ final class ContentNewAllViewModel: ObservableObject {
@Published var themeList = [String]()
@Published var newContentList = [GetAudioContentMainItem]()
@Published var selectedTheme = "전체" {
@Published var selectedTheme = I18n.Category.all {
didSet {
page = 1
isLast = false
@@ -41,7 +41,7 @@ final class ContentNewAllViewModel: ObservableObject {
repository.getNewContentAllOfTheme(
isFree: isFree,
theme: selectedTheme == "전체" ? "" : selectedTheme,
theme: selectedTheme == I18n.Category.all ? "" : selectedTheme,
page: page,
size: pageSize
)
@@ -78,13 +78,13 @@ final class ContentNewAllViewModel: 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
}
@@ -113,19 +113,19 @@ final class ContentNewAllViewModel: ObservableObject {
if let data = decoded.data, decoded.success {
self.themeList.removeAll()
self.themeList.append("전체")
self.themeList.append(I18n.Category.all)
self.themeList.append(contentsOf: data)
} else {
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
}
}