feat(i18n): 콘텐츠 상세/댓글 하드코딩 문구를 I18n 키로 통일한다
This commit is contained in:
@@ -69,14 +69,14 @@ final class ContentDetailViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
print(error)
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
@@ -110,13 +110,13 @@ final class ContentDetailViewModel: 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
|
||||
}
|
||||
}
|
||||
@@ -148,13 +148,13 @@ final class ContentDetailViewModel: 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
|
||||
}
|
||||
}
|
||||
@@ -186,13 +186,13 @@ final class ContentDetailViewModel: 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
|
||||
}
|
||||
}
|
||||
@@ -212,7 +212,7 @@ final class ContentDetailViewModel: ObservableObject {
|
||||
self.shareMessage = shareUrl
|
||||
self.isShowShareView = true
|
||||
} else {
|
||||
self.errorMessage = "공유링크를 생성하지 못했습니다.\n다시 시도해 주세요."
|
||||
self.errorMessage = I18n.ContentDetail.shareLinkCreateFailed
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
@@ -248,13 +248,13 @@ final class ContentDetailViewModel: 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
|
||||
}
|
||||
}
|
||||
@@ -286,26 +286,26 @@ final class ContentDetailViewModel: ObservableObject {
|
||||
AppState.shared.purchasedContentOrderType = .KEEP
|
||||
|
||||
self.orderType = nil
|
||||
self.errorMessage = orderType == .RENTAL ? "대여가 완료되었습니다." : "구매가 완료되었습니다."
|
||||
self.errorMessage = orderType == .RENTAL ? I18n.ContentDetail.rentalCompleted : I18n.ContentDetail.purchaseCompleted
|
||||
self.isShowPopup = true
|
||||
self.getAudioContentDetail()
|
||||
ContentPlayManager.shared.conditionalStopAudio(contentId: contentId)
|
||||
} else {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
if message.contains("캔이 부족합니다") {
|
||||
if isInsufficientCanError(message: message, errorProperty: decoded.errorProperty) {
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
|
||||
AppState.shared.setAppStep(step: .canCharge(refresh: {}, afterCompletionToGoBack: true))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.Common.commonError
|
||||
self.isShowPopup = true
|
||||
}
|
||||
}
|
||||
@@ -335,12 +335,12 @@ final class ContentDetailViewModel: 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
|
||||
}
|
||||
}
|
||||
@@ -368,20 +368,20 @@ final class ContentDetailViewModel: ObservableObject {
|
||||
|
||||
if decoded.success {
|
||||
self.orderType = nil
|
||||
self.errorMessage = "삭제되었습니다"
|
||||
self.errorMessage = I18n.ContentDetail.deleteCompleted
|
||||
self.isShowPopup = true
|
||||
onSuccess()
|
||||
} 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
|
||||
}
|
||||
}
|
||||
@@ -390,10 +390,10 @@ final class ContentDetailViewModel: ObservableObject {
|
||||
|
||||
func donation(can: Int, comment: String) {
|
||||
if can <= 0 {
|
||||
self.errorMessage = "1캔 이상 후원하실 수 있습니다."
|
||||
self.errorMessage = I18n.LiveRoom.atLeastOneCanDonationMessage
|
||||
self.isShowPopup = true
|
||||
} else if comment.trimmingCharacters(in: .whitespaces).isEmpty {
|
||||
self.errorMessage = "함께 보낼 메시지를 입력하세요."
|
||||
self.errorMessage = I18n.ContentDetail.donationMessageRequired
|
||||
self.isShowPopup = true
|
||||
} else {
|
||||
isLoading = true
|
||||
@@ -415,7 +415,7 @@ final class ContentDetailViewModel: ObservableObject {
|
||||
|
||||
if decoded.success {
|
||||
UserDefaults.set(UserDefaults.int(forKey: .can) - can, forKey: .can)
|
||||
self.errorMessage = "\(can)캔을 후원하셨습니다."
|
||||
self.errorMessage = I18n.ContentDetail.donationCompleted(can)
|
||||
self.isShowPopup = true
|
||||
|
||||
self.getAudioContentDetail()
|
||||
@@ -423,13 +423,13 @@ final class ContentDetailViewModel: 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
|
||||
}
|
||||
}
|
||||
@@ -456,7 +456,7 @@ final class ContentDetailViewModel: ObservableObject {
|
||||
let decoded = try jsonDecoder.decode(ApiResponseWithoutData.self, from: responseData)
|
||||
|
||||
if decoded.success {
|
||||
self.errorMessage = "고정되었습니다"
|
||||
self.errorMessage = I18n.ContentDetail.pinCompleted
|
||||
self.isShowPopup = true
|
||||
|
||||
self.getAudioContentDetail()
|
||||
@@ -464,13 +464,13 @@ final class ContentDetailViewModel: 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
|
||||
}
|
||||
}
|
||||
@@ -496,7 +496,7 @@ final class ContentDetailViewModel: ObservableObject {
|
||||
let decoded = try jsonDecoder.decode(ApiResponseWithoutData.self, from: responseData)
|
||||
|
||||
if decoded.success {
|
||||
self.errorMessage = "해제되었습니다"
|
||||
self.errorMessage = I18n.ContentDetail.unpinCompleted
|
||||
self.isShowPopup = true
|
||||
|
||||
self.getAudioContentDetail()
|
||||
@@ -504,16 +504,40 @@ final class ContentDetailViewModel: 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
|
||||
}
|
||||
}
|
||||
.store(in: &subscription)
|
||||
}
|
||||
|
||||
private func isInsufficientCanError(message: String, errorProperty: String?) -> Bool {
|
||||
let normalizedErrorProperty = errorProperty?.lowercased() ?? ""
|
||||
|
||||
if normalizedErrorProperty.contains("not_enough_can") ||
|
||||
normalizedErrorProperty.contains("insufficient_can") ||
|
||||
normalizedErrorProperty.contains("lack_of_can")
|
||||
{
|
||||
return true
|
||||
}
|
||||
|
||||
let normalizedMessage = message.lowercased()
|
||||
let insufficientCanPatterns = [
|
||||
"캔이 부족",
|
||||
"캔 부족",
|
||||
"not enough can",
|
||||
"insufficient can",
|
||||
"not enough cans",
|
||||
"insufficient cans",
|
||||
"canが不足"
|
||||
]
|
||||
|
||||
return insufficientCanPatterns.contains { normalizedMessage.contains($0) }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user