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

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" : { "localizations" : {
"en" : { "en" : {
@@ -4100,6 +4084,22 @@
} }
} }
}, },
"모집완료" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Recruitment closed"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "募集終了"
}
}
}
},
"모집중" : { "모집중" : {
"localizations" : { "localizations" : {
"en" : { "en" : {
@@ -4148,6 +4148,22 @@
} }
} }
}, },
"무료 콘텐츠 전체" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "All free content"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "無料コンテンツ一覧"
}
}
}
},
"문자" : { "문자" : {
"localizations" : { "localizations" : {
"en" : { "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" : { "localizations" : {
"en" : { "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" : { "localizations" : {
"en" : { "en" : {
@@ -6916,6 +6868,22 @@
} }
} }
}, },
"인기" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Popular"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "人気"
}
}
}
},
"인기 시리즈" : { "인기 시리즈" : {
"localizations" : { "localizations" : {
"en" : { "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" : { "localizations" : {
"en" : { "en" : {
@@ -8676,6 +8692,22 @@
} }
} }
}, },
"콘텐츠 전체" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "All content"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "コンテンツ一覧"
}
}
}
},
"콘텐츠 전체보기" : { "콘텐츠 전체보기" : {
"localizations" : { "localizations" : {
"en" : { "en" : {
@@ -9124,6 +9156,22 @@
} }
} }
}, },
"포인트 대여 전체" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "All point rentals"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "ポイントレンタル一覧"
}
}
}
},
"포인트 대여 콘텐츠" : { "포인트 대여 콘텐츠" : {
"localizations" : { "localizations" : {
"en" : { "en" : {

View File

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

View File

@@ -32,7 +32,7 @@ final class ContentAllViewModel: ObservableObject {
} }
} }
@Published var selectedTheme = "전체" { @Published var selectedTheme = I18n.Category.all {
didSet { didSet {
page = 1 page = 1
isLast = false isLast = false
@@ -52,7 +52,7 @@ final class ContentAllViewModel: ObservableObject {
if !isLast && !isLoading { if !isLast && !isLoading {
isLoading = true 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 .sink { result in
switch result { switch result {
case .finished: case .finished:
@@ -84,13 +84,13 @@ final class ContentAllViewModel: ObservableObject {
if let message = decoded.message { if let message = decoded.message {
self.errorMessage = message self.errorMessage = message
} else { } else {
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." self.errorMessage = I18n.Common.commonError
} }
self.isShowPopup = true self.isShowPopup = true
} }
} catch { } catch {
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." self.errorMessage = I18n.Common.commonError
self.isShowPopup = true self.isShowPopup = true
self.isLoading = false self.isLoading = false
} }
@@ -118,18 +118,18 @@ final class ContentAllViewModel: ObservableObject {
self.isLoading = false self.isLoading = false
if let data = decoded.data, decoded.success { if let data = decoded.data, decoded.success {
self.themeList = ["전체"] + data self.themeList = [I18n.Category.all] + data
} else { } else {
if let message = decoded.message { if let message = decoded.message {
self.errorMessage = message self.errorMessage = message
} else { } else {
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." self.errorMessage = I18n.Common.commonError
} }
self.isShowPopup = true self.isShowPopup = true
} }
} catch { } catch {
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." self.errorMessage = I18n.Common.commonError
self.isShowPopup = true self.isShowPopup = true
self.isLoading = false self.isLoading = false
} }

View File

@@ -20,7 +20,7 @@ final class ContentNewAllViewModel: ObservableObject {
@Published var themeList = [String]() @Published var themeList = [String]()
@Published var newContentList = [GetAudioContentMainItem]() @Published var newContentList = [GetAudioContentMainItem]()
@Published var selectedTheme = "전체" { @Published var selectedTheme = I18n.Category.all {
didSet { didSet {
page = 1 page = 1
isLast = false isLast = false
@@ -41,7 +41,7 @@ final class ContentNewAllViewModel: ObservableObject {
repository.getNewContentAllOfTheme( repository.getNewContentAllOfTheme(
isFree: isFree, isFree: isFree,
theme: selectedTheme == "전체" ? "" : selectedTheme, theme: selectedTheme == I18n.Category.all ? "" : selectedTheme,
page: page, page: page,
size: pageSize size: pageSize
) )
@@ -78,13 +78,13 @@ final class ContentNewAllViewModel: ObservableObject {
if let message = decoded.message { if let message = decoded.message {
self.errorMessage = message self.errorMessage = message
} else { } else {
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." self.errorMessage = I18n.Common.commonError
} }
self.isShowPopup = true self.isShowPopup = true
} }
} catch { } catch {
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." self.errorMessage = I18n.Common.commonError
self.isShowPopup = true self.isShowPopup = true
self.isLoading = false self.isLoading = false
} }
@@ -113,19 +113,19 @@ final class ContentNewAllViewModel: ObservableObject {
if let data = decoded.data, decoded.success { if let data = decoded.data, decoded.success {
self.themeList.removeAll() self.themeList.removeAll()
self.themeList.append("전체") self.themeList.append(I18n.Category.all)
self.themeList.append(contentsOf: data) self.themeList.append(contentsOf: data)
} else { } else {
if let message = decoded.message { if let message = decoded.message {
self.errorMessage = message self.errorMessage = message
} else { } else {
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." self.errorMessage = I18n.Common.commonError
} }
self.isShowPopup = true self.isShowPopup = true
} }
} catch { } catch {
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다." self.errorMessage = I18n.Common.commonError
self.isShowPopup = true self.isShowPopup = true
} }
} }