feat(i18n): 오디션 화면 하드코딩 문구를 I18n 키로 통일한다

This commit is contained in:
Yu Sung
2026-03-31 15:39:57 +09:00
parent 136bfc8eee
commit 222520d5e9
13 changed files with 406 additions and 87 deletions

View File

@@ -45,7 +45,7 @@ struct AuditionRoleDetailView: View {
HStack(spacing: 14) {
if let url = URL(string: roleDetail.originalWorkUrl), UIApplication.shared.canOpenURL(url) {
Text("원작 보러가기")
Text(I18n.Audition.Detail.viewOriginalWork)
.appFont(size: 16, weight: .bold)
.foregroundColor(Color.button)
.padding(.vertical, 12)
@@ -59,7 +59,7 @@ struct AuditionRoleDetailView: View {
}
if let url = URL(string: roleDetail.auditionScriptUrl), UIApplication.shared.canOpenURL(url) {
Text("오디션 대본 확인")
Text(I18n.Audition.Detail.checkScript)
.appFont(size: 16, weight: .bold)
.foregroundColor(Color.button)
.padding(.vertical, 12)
@@ -74,7 +74,7 @@ struct AuditionRoleDetailView: View {
}
VStack(alignment: .leading, spacing: 13.3) {
Text("오디션 캐릭터 정보")
Text(I18n.Audition.Detail.characterInfo)
.appFont(size: 14.7, weight: .bold)
.foregroundColor(Color.grayee)
@@ -83,13 +83,13 @@ struct AuditionRoleDetailView: View {
}
if viewModel.applicantList.isEmpty {
Text("지원자가 없습니다.")
Text(I18n.Audition.Detail.noApplicants)
.appFont(size: 13, weight: .medium)
.foregroundColor(Color.grayee)
.padding(.top, 15)
} else {
HStack(spacing: 0) {
Text("참여자")
Text(I18n.Audition.Detail.participants)
.appFont(size: 13.3, weight: .medium)
.foregroundColor(Color.graybb)
@@ -98,13 +98,13 @@ struct AuditionRoleDetailView: View {
.foregroundColor(Color.button)
.padding(.leading, 2.3)
Text("")
Text(I18n.Audition.Detail.personUnit)
.appFont(size: 13.3, weight: .medium)
.foregroundColor(Color.graybb)
Spacer()
Text("최신순")
Text(I18n.Audition.Detail.sortNewest)
.appFont(size: 13.3, weight: .medium)
.foregroundColor(
viewModel.sortType == .NEWEST ? Color.button : Color.graybb
@@ -113,7 +113,7 @@ struct AuditionRoleDetailView: View {
viewModel.setSortType(sortType: .NEWEST)
}
Text("좋아요순")
Text(I18n.Audition.Detail.sortLikes)
.appFont(size: 13.3, weight: .medium)
.foregroundColor(
viewModel.sortType == .LIKES ? Color.button : Color.graybb
@@ -161,7 +161,7 @@ struct AuditionRoleDetailView: View {
}
if let roleDetail = viewModel.auditionRoleDetail {
Text(roleDetail.isAlreadyApplicant ? "오디션 재지원" : "오디션 지원")
Text(roleDetail.isAlreadyApplicant ? I18n.Audition.Apply.reapply : I18n.Audition.Apply.apply)
.appFont(size: 15.3, weight: .bold)
.foregroundColor(Color.white)
.padding(14)
@@ -241,9 +241,9 @@ struct AuditionRoleDetailView: View {
if isShowNoticeReapply {
SodaDialog(
title: "재지원 안내",
desc: "재지원 시 이전 지원 내역은 삭제되며 받은 투표수는 무효 처리됩니다.",
confirmButtonTitle: "확인"
title: I18n.Audition.Apply.reapplyNoticeTitle,
desc: I18n.Audition.Apply.reapplyNoticeDesc,
confirmButtonTitle: I18n.Common.confirm
) {
isShowNoticeReapply = false
isShowApplyMethodView = true
@@ -252,9 +252,9 @@ struct AuditionRoleDetailView: View {
if isShowNoticeAuthView {
SodaDialog(
title: "- 본인인증 -",
desc: "마이페이지에서 '본인인증'을 하고 다시 오디션에 지원해 주세요.",
confirmButtonTitle: "확인"
title: I18n.Audition.Apply.authRequiredTitle,
desc: I18n.Audition.Apply.authRequiredDesc,
confirmButtonTitle: I18n.Common.confirm
) {
isShowNoticeAuthView = false
}
@@ -264,7 +264,7 @@ struct AuditionRoleDetailView: View {
SodaDialog(
title: viewModel.dialogTitle,
desc: viewModel.dialogDesc,
confirmButtonTitle: "확인"
confirmButtonTitle: I18n.Common.confirm
) {
viewModel.isShowVoteCompleteView = false
viewModel.isShowNotifyVote = false
@@ -300,17 +300,17 @@ struct AuditionRoleDetailView: View {
viewModel.fileName = fileUrl.lastPathComponent
isShowApplyView = true
} else {
viewModel.errorMessage = "콘텐츠 파일을 불러오지 못했습니다.\n다시 선택해 주세요"
viewModel.errorMessage = I18n.Audition.Apply.fileLoadFailed
viewModel.isShowPopup = true
}
} else {
viewModel.errorMessage = "콘텐츠 파일을 불러오지 못했습니다.\n다시 선택해 주세요"
viewModel.errorMessage = I18n.Audition.Apply.fileLoadFailed
viewModel.isShowPopup = true
}
case .failure(let error):
DEBUG_LOG("error: \(error.localizedDescription)")
viewModel.errorMessage = "콘텐츠 파일을 불러오지 못했습니다.\n다시 선택해 주세요"
viewModel.errorMessage = I18n.Audition.Apply.fileLoadFailed
viewModel.isShowPopup = true
}
}