feat(i18n): 라이브 모듈 하드코딩 문구를 I18n 키로 통일한다
This commit is contained in:
@@ -19,7 +19,7 @@ struct LiveCancelDialog: View {
|
||||
|
||||
var body: some View {
|
||||
VStack(spacing: 0) {
|
||||
Text("예약취소")
|
||||
Text(I18n.LiveCancel.title)
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "bbbbbb"))
|
||||
.padding(.top, 40)
|
||||
@@ -39,7 +39,7 @@ struct LiveCancelDialog: View {
|
||||
.padding(.top, 13.3)
|
||||
|
||||
HStack(spacing: 13.3) {
|
||||
Text("취소")
|
||||
Text(I18n.LiveCancel.cancelButton)
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "3bb9f1"))
|
||||
.padding(.vertical, 16)
|
||||
@@ -54,7 +54,7 @@ struct LiveCancelDialog: View {
|
||||
isShowCancelPopup = false
|
||||
}
|
||||
|
||||
Text("확인")
|
||||
Text(I18n.LiveCancel.confirmButton)
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 16)
|
||||
|
||||
@@ -19,7 +19,7 @@ struct LiveReplayListView: View {
|
||||
var body: some View {
|
||||
VStack(spacing: 14) {
|
||||
HStack(spacing: 0) {
|
||||
Text("라이브 다시 듣기")
|
||||
Text(I18n.LiveMain.replaySectionTitle)
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@ struct LiveView: View {
|
||||
.resizable()
|
||||
.frame(width: 20, height: 20)
|
||||
|
||||
Text("라이브 만들기")
|
||||
Text(I18n.LiveMain.createLiveButton)
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ final class LiveViewModel: ObservableObject {
|
||||
@Published var liveStartDate: String? = nil
|
||||
@Published var nowDate: String? = nil
|
||||
|
||||
let paymentDialogCancelTitle = "취소"
|
||||
let paymentDialogCancelTitle = I18n.Common.cancel
|
||||
|
||||
var page = 1
|
||||
var isLast = false
|
||||
@@ -104,13 +104,13 @@ final class LiveViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "라이브에 입장하지 못했습니다.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.MemberChannel.enterLiveFailed
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "라이브에 입장하지 못했습니다.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.MemberChannel.enterLiveFailed
|
||||
self.isShowPopup = true
|
||||
}
|
||||
}
|
||||
@@ -151,13 +151,13 @@ final class LiveViewModel: ObservableObject {
|
||||
if let message = decoded.message {
|
||||
self.errorMessage = message
|
||||
} else {
|
||||
self.errorMessage = "라이브에 입장하지 못했습니다.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.MemberChannel.enterLiveFailed
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "라이브에 입장하지 못했습니다.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다."
|
||||
self.errorMessage = I18n.MemberChannel.enterLiveFailed
|
||||
self.isShowPopup = true
|
||||
}
|
||||
}
|
||||
@@ -189,13 +189,13 @@ final class LiveViewModel: 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
|
||||
}
|
||||
}
|
||||
@@ -245,13 +245,13 @@ final class LiveViewModel: 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
|
||||
}
|
||||
}
|
||||
@@ -297,13 +297,13 @@ final class LiveViewModel: 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
|
||||
}
|
||||
}
|
||||
@@ -314,7 +314,7 @@ final class LiveViewModel: ObservableObject {
|
||||
func reservationLiveRoom(roomId: Int) {
|
||||
getRoomDetail(roomId: roomId) { [unowned self] in
|
||||
if ($0.manager.id == UserDefaults.int(forKey: .userId)) {
|
||||
self.errorMessage = "내가 만든 라이브는 예약할 수 없습니다."
|
||||
self.errorMessage = I18n.MemberChannel.cannotReserveOwnLive
|
||||
self.isShowPopup = true
|
||||
} else {
|
||||
if $0.isPrivateRoom {
|
||||
@@ -326,9 +326,9 @@ final class LiveViewModel: ObservableObject {
|
||||
if ($0.price == 0 || $0.isPaid) {
|
||||
self.reservation(roomId: roomId)
|
||||
} else {
|
||||
self.paymentDialogTitle = "\($0.price)캔으로 예약"
|
||||
self.paymentDialogDesc = "'\($0.title)' 라이브에 참여하기 위해 결제합니다."
|
||||
self.paymentDialogConfirmTitle = "결제 후 예약하기"
|
||||
self.paymentDialogTitle = I18n.MemberChannel.reserveWithCansTitle($0.price)
|
||||
self.paymentDialogDesc = I18n.MemberChannel.reservePaymentDesc($0.title)
|
||||
self.paymentDialogConfirmTitle = I18n.MemberChannel.reservePaymentConfirmTitle
|
||||
self.paymentDialogConfirmAction = { [unowned self] in
|
||||
hidePopup()
|
||||
reservation(roomId: roomId)
|
||||
@@ -375,13 +375,13 @@ final class LiveViewModel: ObservableObject {
|
||||
if hours >= 1 {
|
||||
self.liveStartDate = beginDate.convertDateFormat(dateFormat: "yyyy-MM-dd, HH:mm")
|
||||
self.nowDate = now.convertDateFormat(dateFormat: "yyyy-MM-dd, HH:mm")
|
||||
self.paymentDialogDesc2 = "라이브를 시작한 지 \(hours)시간 \(minutes)분이 지났습니다. 라이브에 입장 후 30분 이내에 라이브가 종료될 수도 있습니다."
|
||||
self.paymentDialogDesc2 = I18n.MemberChannel.elapsedLiveWarning(hours: hours, minutes: minutes)
|
||||
}
|
||||
}
|
||||
|
||||
self.paymentDialogTitle = "유료 라이브 입장"
|
||||
self.paymentDialogDesc = "\($0.price)캔을 차감하고\n라이브에 입장 하시겠습니까?"
|
||||
self.paymentDialogConfirmTitle = "결제 후 참여하기"
|
||||
self.paymentDialogTitle = I18n.MemberChannel.paidLiveEnterTitle
|
||||
self.paymentDialogDesc = I18n.MemberChannel.paidLiveEnterDesc($0.price)
|
||||
self.paymentDialogConfirmTitle = I18n.MemberChannel.paidLiveConfirmTitle
|
||||
self.paymentDialogConfirmAction = { [unowned self] in
|
||||
hidePopup()
|
||||
self.enterRoom(roomId: roomId)
|
||||
@@ -425,18 +425,18 @@ final class LiveViewModel: ObservableObject {
|
||||
} else {
|
||||
if let message = decoded.message {
|
||||
if message.contains("종료") {
|
||||
self.errorMessage = "이미 종료된 라이브 입니다."
|
||||
self.errorMessage = I18n.MemberChannel.alreadyEndedLive
|
||||
} else {
|
||||
self.errorMessage = message
|
||||
}
|
||||
} else {
|
||||
self.errorMessage = "라이브 정보를 가져오지 못했습니다.\n다시 시도해 주세요."
|
||||
self.errorMessage = I18n.MemberChannel.fetchLiveInfoFailed
|
||||
}
|
||||
|
||||
self.isShowPopup = true
|
||||
}
|
||||
} catch {
|
||||
self.errorMessage = "라이브 정보를 가져오지 못했습니다.\n다시 시도해 주세요."
|
||||
self.errorMessage = I18n.MemberChannel.fetchLiveInfoFailed
|
||||
self.isShowPopup = true
|
||||
}
|
||||
|
||||
@@ -471,13 +471,13 @@ final class LiveViewModel: 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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,15 +105,14 @@ struct LiveNowAllView: View {
|
||||
|
||||
if isShowAuthConfirmView {
|
||||
SodaDialog(
|
||||
title: "본인인증",
|
||||
desc: "청소년 보호를 위해\n본인인증을 완료한\n성인만 라이브 입장이 가능합니다.\n" +
|
||||
"라이브 입장을 위해\n본인인증을 진행해 주세요.",
|
||||
confirmButtonTitle: "본인인증 하러가기",
|
||||
title: I18n.Main.Auth.dialogTitle,
|
||||
desc: I18n.Main.Auth.liveEntryVerificationDescription,
|
||||
confirmButtonTitle: I18n.Main.Auth.goToVerification,
|
||||
confirmButtonAction: {
|
||||
isShowAuthConfirmView = false
|
||||
isShowAuthView = true
|
||||
},
|
||||
cancelButtonTitle: "취소",
|
||||
cancelButtonTitle: I18n.Common.cancel,
|
||||
cancelButtonAction: {
|
||||
isShowAuthConfirmView = false
|
||||
pendingAction = nil
|
||||
@@ -142,7 +141,7 @@ struct LiveNowAllView: View {
|
||||
isShowAuthView = false
|
||||
}
|
||||
.onError { _ in
|
||||
AppState.shared.errorMessage = "본인인증 중 오류가 발생했습니다."
|
||||
AppState.shared.errorMessage = I18n.Main.Auth.authenticationError
|
||||
AppState.shared.isShowErrorPopup = true
|
||||
isShowAuthView = false
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ struct LiveNowItemView: View {
|
||||
.padding(.horizontal, 2)
|
||||
.padding(.bottom, 2)
|
||||
} else {
|
||||
Text("무료")
|
||||
Text(I18n.LiveReservation.Item.free)
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "#263238"))
|
||||
.padding(.vertical, 4)
|
||||
|
||||
@@ -19,14 +19,14 @@ struct SectionLiveNowView: View {
|
||||
var body: some View {
|
||||
LazyVStack(spacing: 13.3) {
|
||||
HStack(spacing: 0) {
|
||||
Text("지금 라이브중")
|
||||
Text(I18n.LiveNow.sectionTitle)
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
if items.count > 0 {
|
||||
Text("전체보기")
|
||||
Text(I18n.Common.viewAll)
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "78909C"))
|
||||
.onTapGesture { AppState.shared.setAppStep(step: .liveNowAll(onClickParticipant: onClickParticipant)) }
|
||||
@@ -54,7 +54,7 @@ struct SectionLiveNowView: View {
|
||||
.resizable()
|
||||
.frame(width: 60, height: 60)
|
||||
|
||||
Text("마이페이지에서 본인인증을 하거나\n라이브를 예약하고 참여해보세요.")
|
||||
Text(I18n.LiveNow.emptyStateMessage)
|
||||
.appFont(size: 13, weight: .medium)
|
||||
.foregroundColor(Color(hex: "bbbbbb"))
|
||||
.fixedSize(horizontal: false, vertical: true)
|
||||
@@ -72,7 +72,7 @@ struct SectionLiveNowView: View {
|
||||
HStack(spacing: 8) {
|
||||
Image("ic_refresh")
|
||||
|
||||
Text("새로고침")
|
||||
Text(I18n.LiveNow.refreshButton)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color.grayd2)
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ struct SectionRecommendChannelView: View {
|
||||
var body: some View {
|
||||
VStack(spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text("팔로잉 채널")
|
||||
Text(I18n.LiveNow.followingChannelsTitle)
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
@@ -55,7 +55,7 @@ struct SectionRecommendChannelView: View {
|
||||
)
|
||||
|
||||
if item.isOnAir {
|
||||
Text("Live")
|
||||
Text(I18n.LiveNow.liveBadge)
|
||||
.appFont(size: 8.7, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 2.7)
|
||||
@@ -87,7 +87,7 @@ struct SectionRecommendChannelView: View {
|
||||
.resizable()
|
||||
.frame(width: screenSize().width * 0.18, height: screenSize().width * 0.18, alignment: .center)
|
||||
|
||||
Text("더보기")
|
||||
Text(I18n.LiveNow.moreButton)
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.frame(width: screenSize().width * 0.18)
|
||||
|
||||
@@ -55,7 +55,7 @@ struct LiveReservationAllItemView: View {
|
||||
Spacer()
|
||||
|
||||
if item.isReservation {
|
||||
Text("예약완료")
|
||||
Text(I18n.LiveReservation.Item.reservationCompleted)
|
||||
.appFont(size: 11.3, weight: .medium)
|
||||
.foregroundColor(Color(hex: "d2d2d2"))
|
||||
.padding(.horizontal, 7)
|
||||
@@ -63,7 +63,7 @@ struct LiveReservationAllItemView: View {
|
||||
.background(Color(hex: "533d89"))
|
||||
.cornerRadius(10)
|
||||
} else {
|
||||
Text(item.price > 0 ? "\(item.price)캔" : "무료")
|
||||
Text(item.price > 0 ? I18n.LiveReservation.Item.priceWithCan(item.price) : I18n.LiveReservation.Item.free)
|
||||
.appFont(size: 12, weight: .medium)
|
||||
.foregroundColor(Color(hex: "e2e2e2").opacity(0.49))
|
||||
.padding(.bottom, 6.7)
|
||||
|
||||
@@ -21,7 +21,7 @@ struct LiveReservationAllView: View {
|
||||
BaseView(isLoading: $viewModel.isLoading) {
|
||||
GeometryReader { proxy in
|
||||
VStack(spacing: 0) {
|
||||
DetailNavigationBar(title: "라이브, 예약 캘린더")
|
||||
DetailNavigationBar(title: I18n.LiveReservation.All.title)
|
||||
|
||||
WeekCalendarView { date in
|
||||
viewModel.selectedDateString = date
|
||||
@@ -57,7 +57,7 @@ struct LiveReservationAllView: View {
|
||||
.resizable()
|
||||
.frame(width: 60, height: 60)
|
||||
|
||||
Text("지금 예약중인 라이브가 없습니다.\n다른 날짜의 라이브를 예약하고 참여해 보세요.")
|
||||
Text(I18n.LiveReservation.All.emptyStateMessage)
|
||||
.appFont(size: 13, weight: .medium)
|
||||
.foregroundColor(Color(hex: "bbbbbb"))
|
||||
.multilineTextAlignment(.center)
|
||||
|
||||
@@ -14,13 +14,13 @@ struct LiveReservationCompleteView: View {
|
||||
var body: some View {
|
||||
BaseView {
|
||||
VStack(spacing: 0) {
|
||||
DetailNavigationBar(title: "라이브 예약 완료") {
|
||||
DetailNavigationBar(title: I18n.LiveReservation.Complete.title) {
|
||||
AppState.shared.setAppStep(step: .main)
|
||||
}
|
||||
|
||||
ScrollView(.vertical, showsIndicators: false) {
|
||||
VStack(spacing: 0) {
|
||||
Text("예약이 완료되었습니다.")
|
||||
Text(I18n.LiveReservation.Complete.completedMessage)
|
||||
.appFont(size: 20, weight: .bold)
|
||||
.foregroundColor(Color(hex: "a285eb"))
|
||||
.frame(width: screenSize().width - 26.7, alignment: .leading)
|
||||
@@ -33,14 +33,14 @@ struct LiveReservationCompleteView: View {
|
||||
.padding(.top, 16.7)
|
||||
.padding(.bottom, 26.7)
|
||||
|
||||
Text("라이브 예약정보")
|
||||
Text(I18n.LiveReservation.Complete.reservationInfoTitle)
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.frame(width: screenSize().width - 53.4, alignment: .leading)
|
||||
|
||||
VStack(spacing: 6.7) {
|
||||
HStack(spacing: 26.7) {
|
||||
Text("채널")
|
||||
Text(I18n.LiveReservation.Complete.channelLabel)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color(hex: "777777"))
|
||||
|
||||
@@ -51,7 +51,7 @@ struct LiveReservationCompleteView: View {
|
||||
.frame(width: screenSize().width - 53.4, alignment: .leading)
|
||||
|
||||
HStack(spacing: 26.7) {
|
||||
Text("구매내역")
|
||||
Text(I18n.LiveReservation.Complete.purchaseDetailLabel)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color(hex: "777777"))
|
||||
|
||||
@@ -62,7 +62,7 @@ struct LiveReservationCompleteView: View {
|
||||
.frame(width: screenSize().width - 53.4, alignment: .leading)
|
||||
|
||||
HStack(spacing: 26.7) {
|
||||
Text("예약일자")
|
||||
Text(I18n.LiveReservation.Complete.reservationDateLabel)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color(hex: "777777"))
|
||||
|
||||
@@ -77,7 +77,7 @@ struct LiveReservationCompleteView: View {
|
||||
.frame(width: screenSize().width - 53.4, alignment: .leading)
|
||||
|
||||
HStack(spacing: 26.7) {
|
||||
Text("라이브 비용")
|
||||
Text(I18n.LiveReservation.Complete.liveCostLabel)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color(hex: "777777"))
|
||||
|
||||
@@ -94,14 +94,14 @@ struct LiveReservationCompleteView: View {
|
||||
.foregroundColor(Color(hex: "232323"))
|
||||
.padding(.vertical, 20)
|
||||
|
||||
Text("결제정보")
|
||||
Text(I18n.LiveReservation.Complete.paymentInfoTitle)
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.frame(width: screenSize().width - 53.4, alignment: .leading)
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
HStack(spacing: 0) {
|
||||
Text("보유캔")
|
||||
Text(I18n.LiveReservation.Complete.ownedCanLabel)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color(hex: "777777"))
|
||||
|
||||
@@ -111,14 +111,14 @@ struct LiveReservationCompleteView: View {
|
||||
.appFont(size: 15.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Text(" 캔")
|
||||
Text(I18n.LiveReservation.Complete.canSuffix)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
}
|
||||
.frame(width: screenSize().width - 53.4, alignment: .leading)
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("결제캔")
|
||||
Text(I18n.LiveReservation.Complete.paymentCanLabel)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color(hex: "777777"))
|
||||
|
||||
@@ -128,14 +128,14 @@ struct LiveReservationCompleteView: View {
|
||||
.appFont(size: 15.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Text(" 캔")
|
||||
Text(I18n.LiveReservation.Complete.canSuffix)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
}
|
||||
.frame(width: screenSize().width - 53.4, alignment: .leading)
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("잔여캔")
|
||||
Text(I18n.LiveReservation.Complete.remainingCanLabel)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color(hex: "777777"))
|
||||
|
||||
@@ -145,7 +145,7 @@ struct LiveReservationCompleteView: View {
|
||||
.appFont(size: 15.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Text(" 캔")
|
||||
Text(I18n.LiveReservation.Complete.canSuffix)
|
||||
.appFont(size: 14.7, weight: .medium)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
}
|
||||
@@ -154,7 +154,7 @@ struct LiveReservationCompleteView: View {
|
||||
.padding(.top, 20)
|
||||
|
||||
HStack(spacing: 13.3) {
|
||||
Text("홈으로 이동")
|
||||
Text(I18n.LiveReservation.Complete.goHome)
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "9970ff"))
|
||||
.padding(.vertical, 16)
|
||||
@@ -170,7 +170,7 @@ struct LiveReservationCompleteView: View {
|
||||
AppState.shared.setAppStep(step: .main)
|
||||
}
|
||||
|
||||
Text("예약 내역 이동")
|
||||
Text(I18n.LiveReservation.Complete.goReservationList)
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 16)
|
||||
|
||||
@@ -67,7 +67,7 @@ struct LiveReservationItemView: View {
|
||||
|
||||
VStack(alignment: .trailing, spacing: 8) {
|
||||
VStack(spacing: 0) {
|
||||
Text("\(dateDic["month"] ?? "")월")
|
||||
Text(I18n.LiveReservation.Item.month(dateDic["month"] ?? ""))
|
||||
.appFont(size: 14, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 6)
|
||||
@@ -100,7 +100,7 @@ struct LiveReservationItemView: View {
|
||||
.background(Color(hex: "3b5ff1"))
|
||||
.cornerRadius(4)
|
||||
} else {
|
||||
Text("무료")
|
||||
Text(I18n.LiveReservation.Item.free)
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "#263238"))
|
||||
.padding(4)
|
||||
|
||||
@@ -21,7 +21,7 @@ struct MyLiveReservationItemView: View {
|
||||
HStack(spacing: 8) {
|
||||
Image("ic_mic_colored")
|
||||
|
||||
Text("내가 개설한 라이브")
|
||||
Text(I18n.LiveReservation.Item.ownCreatedLive)
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(Color(hex: "80D8FF"))
|
||||
}
|
||||
@@ -79,7 +79,7 @@ struct MyLiveReservationItemView: View {
|
||||
|
||||
VStack(alignment: .trailing, spacing: 8) {
|
||||
VStack(spacing: 4) {
|
||||
Text("\(dateDic["month"] ?? "")월")
|
||||
Text(I18n.LiveReservation.Item.month(dateDic["month"] ?? ""))
|
||||
.appFont(size: 14, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 6)
|
||||
@@ -112,7 +112,7 @@ struct MyLiveReservationItemView: View {
|
||||
.background(Color(hex: "3b5ff1"))
|
||||
.cornerRadius(4)
|
||||
} else {
|
||||
Text("무료")
|
||||
Text(I18n.LiveReservation.Item.free)
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "#263238"))
|
||||
.padding(4)
|
||||
|
||||
@@ -20,14 +20,14 @@ struct SectionLiveReservationView: View {
|
||||
var body: some View {
|
||||
VStack(spacing: 13.3) {
|
||||
HStack(spacing: 0) {
|
||||
Text("라이브 예약중")
|
||||
Text(I18n.LiveReservation.Section.title)
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
if items.count > 0 {
|
||||
Text("전체보기")
|
||||
Text(I18n.Common.viewAll)
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "78909C"))
|
||||
.onTapGesture {
|
||||
@@ -101,7 +101,7 @@ struct SectionLiveReservationView: View {
|
||||
.resizable()
|
||||
.frame(width: 60, height: 60)
|
||||
|
||||
Text("지금 예약중인 라이브가 없습니다.\n채널을 팔로잉 하고 라이브 알림을 받아 보세요.")
|
||||
Text(I18n.LiveReservation.Section.emptyStateMessage)
|
||||
.appFont(size: 13, weight: .medium)
|
||||
.foregroundColor(Color(hex: "bbbbbb"))
|
||||
.fixedSize(horizontal: false, vertical: true)
|
||||
|
||||
@@ -104,7 +104,7 @@ struct LiveRoomChatItemView: View {
|
||||
VStack(alignment: .leading, spacing: 6.7) {
|
||||
HStack(spacing: 5) {
|
||||
if chatMessage.rank == -3 {
|
||||
Text("스탭")
|
||||
Text(I18n.LiveChat.staffBadge)
|
||||
.appFont(size: 10)
|
||||
.foregroundColor(.white)
|
||||
.padding(2)
|
||||
|
||||
@@ -40,17 +40,17 @@ struct LiveRoomDonationChatItemView: View {
|
||||
.appFont(size: 12)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Text("님이")
|
||||
Text(I18n.LiveChat.donationMemberSuffix)
|
||||
.appFont(size: 12, weight: .light)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("\(chatMessage.can)캔")
|
||||
Text(I18n.LiveChat.canWithUnit(chatMessage.can))
|
||||
.appFont(size: 15)
|
||||
.foregroundColor(Color(hex: "fdca2f"))
|
||||
|
||||
Text(chatMessage.chat.contains("비밀") ? "으로 비밀미션을 보냈습니다.🤫" : "을 후원하셨습니다.💰🪙")
|
||||
Text(chatMessage.chat.contains("비밀") ? I18n.LiveChat.secretMissionDonationSuffix : I18n.LiveChat.donationSuffix)
|
||||
.appFont(size: 15)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ struct LiveRoomHeartDonationChatItemView: View {
|
||||
.appFont(size: 12, weight: .bold)
|
||||
.foregroundColor(Color(hex: "ec3aa6"))
|
||||
|
||||
Text("'님이 마음을 전했습니다 : 💕")
|
||||
Text(I18n.LiveChat.heartDonationSuffix)
|
||||
.appFont(size: 12)
|
||||
.foregroundColor(Color.gray11)
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ struct LiveRoomJoinChatItemView: View {
|
||||
.appFont(size: 12, weight: .bold)
|
||||
.foregroundColor(Color.mainYellow)
|
||||
|
||||
Text("'님이 입장하셨습니다.")
|
||||
Text(I18n.LiveChat.joinSuffix)
|
||||
.appFont(size: 12)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user