diff --git a/SodaLive/Resources/Localizable.xcstrings b/SodaLive/Resources/Localizable.xcstrings index 020afad..b22d4e2 100644 --- a/SodaLive/Resources/Localizable.xcstrings +++ b/SodaLive/Resources/Localizable.xcstrings @@ -172,7 +172,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": " 缶" + "value": " Cans" } } } @@ -931,7 +931,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "%lld缶" + "value": "%lldCAN" } } } @@ -1059,7 +1059,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "%lld缶" + "value": "%lld can" } } } @@ -1075,7 +1075,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "%lld缶で投稿を閲覧" + "value": "%lldcanで投稿を閲覧" } } } @@ -1091,7 +1091,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "%lld缶でニックネーム変更" + "value": "%lldcanでニックネーム変更" } } } @@ -1107,7 +1107,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "%lld缶でルーレットを回す" + "value": "%lldcanでルーレットを回す" } } } @@ -1123,7 +1123,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "%lld缶で見る" + "value": "%lldcanで見る" } } } @@ -1219,7 +1219,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "無効にするとチャンネル内に後援ランキングが表示されず、ライブ中もランキングに基づくバッジが反映されません。" + "value": "無効にするとチャンネル内にギフトランキングが表示されず、\nライブ中もランキングバッジが反映されません。" } } } @@ -1667,7 +1667,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "1缶以上入力してください" + "value": "1can以上入力してください" } } } @@ -1731,7 +1731,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "10缶以上入力してください" + "value": "10can以上入力してください" } } } @@ -2067,7 +2067,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "価格を入力してください(5缶以上)" + "value": "価格を入力してください(5can以上)" } } } @@ -2275,7 +2275,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "決済は支払い後7日以内のみキャンセルできます。缶を一部でも使用した場合はキャンセルできません。" + "value": "決済は支払い後7日以内のみキャンセルできます。canを一部でも使用した場合はキャンセルできません。" } } } @@ -2403,7 +2403,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "決済した%lld缶が払い戻しされました。" + "value": "決済した%lldcanが払い戻しされました。" } } } @@ -2429,7 +2429,7 @@ "en": { "stringUnit": { "state": "translated", - "value": "Select the reason for deleting your account. We will use it to improve the service." + "value": "choose why you want to delete your account.\nWe use this to improve the service." } }, "ja": { @@ -2451,7 +2451,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "アカウントを削除すると、すべてのコンテンツ・活動、キャンチャージや積立、利用履歴などの記録が削除されます。削除データは復元できないため慎重に決定してください。\nキャンチャージで獲得した缶はアカウント削除時に返金できません。返金申請後に処理前でアカウントを削除した場合、利用履歴を確認できず返金もできません。" + "value": "アカウントを削除すると、すべてのコンテンツ・活動、キャンチャージや積立、利用履歴などの記録が削除されます。削除データは復元できないため慎重に決定してください。\nキャンチャージで獲得したcanはアカウント削除時に返金できません。返金申請後に処理前でアカウントを削除した場合、利用履歴を確認できず返金もできません。" } } } @@ -3795,7 +3795,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "ルーレット金額を入力してください(最小5缶)" + "value": "ルーレット金額を入力してください(最小5can)" } } } @@ -3891,7 +3891,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "リワード缶" + "value": "リワードcan" } } } @@ -3917,7 +3917,7 @@ "en": { "stringUnit": { "state": "translated", - "value": "Verify your identity on My Page\nor schedule and join a live stream." + "value": "Verify your identity in My Page or reserve a live broadcast and join." } }, "ja": { @@ -4061,7 +4061,7 @@ "en": { "stringUnit": { "state": "translated", - "value": "No messages yet.\nChat with your friends!" + "value": "No messages yet. Start chatting with your friends!" } }, "ja": { @@ -4083,7 +4083,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "メッセージを保存するには\n%lld缶が必要です。\n保存しますか?" + "value": "メッセージを保存するには\n%lldcanが必要です。\n保存しますか?" } } } @@ -4733,7 +4733,7 @@ "en": { "stringUnit": { "state": "translated", - "value": "This content is unavailable for users under 19.\nPlease verify your identity before using this content." + "value": "This content is not available to users under 19.\nverify your identity to continue." } }, "ja": { @@ -6157,7 +6157,7 @@ "en": { "stringUnit": { "state": "translated", - "value": "Cancel" + "value": "Cancel " } }, "ja": { @@ -6653,7 +6653,7 @@ "en": { "stringUnit": { "state": "translated", - "value": "Original" + "value": "Original " } }, "ja": { @@ -7213,7 +7213,7 @@ "en": { "stringUnit": { "state": "translated", - "value": "Log in with the temporary password,\nthen change it under My Page > Profile settings\nbefore continuing." + "value": "Log in with the temporary password, then change your password in My Page > Profile Settings." } }, "ja": { @@ -8115,7 +8115,7 @@ "ja": { "stringUnit": { "state": "translated", - "value": "リスナー" + "value": "リスナー " } } } @@ -8493,7 +8493,7 @@ "en": { "stringUnit": { "state": "translated", - "value": "Recommended" + "value": "Recommended " } }, "ja": { @@ -9725,7 +9725,7 @@ "en": { "stringUnit": { "state": "translated", - "value": "Current" + "value": "Current " } }, "ja": { @@ -9821,7 +9821,7 @@ "en": { "stringUnit": { "state": "translated", - "value": "A temporary password will be sent\nto your registered email address." + "value": "A temporary password will be sent to your registered email address" } }, "ja": { diff --git a/SodaLive/Sources/I18n/I18n.swift b/SodaLive/Sources/I18n/I18n.swift index 4336f2e..9b65279 100644 --- a/SodaLive/Sources/I18n/I18n.swift +++ b/SodaLive/Sources/I18n/I18n.swift @@ -180,7 +180,13 @@ enum I18n { static var noticeTitle: String { pick(ko: "안내", en: "Notice", ja: "お知らせ") } static var pointGrantTitle: String { pick(ko: "포인트 지급", en: "Points granted", ja: "ポイント付与") } - static var commonError: String { pick(ko: "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다.", en: "Please try again.\nIf the problem persists, please contact customer support.", ja: "恐れ入りますが再度お試しください。\n問題が続く場合はカスタマーセンターにお問い合わせください。") } + static var commonError: String { + pick( + ko: "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다.", + en: "try again.\nIf the issue persists, contact customer support.", + ja: "恐れ入りますが再度お試しください。\n問題が続く場合はカスタマーセンターにお問い合わせください。" + ) + } static var roulette1: String { pick(ko: "룰렛 1", en: "Roulette 1", ja: "ルーレット1") } static var roulette2: String { pick(ko: "룰렛 2", en: "Roulette 2", ja: "ルーレット2") } @@ -225,7 +231,7 @@ enum I18n { static var updateDesc: String { pick( ko: "최신 업데이트가 있습니다.\n업데이트 하시겠습니까?", - en: "A new update is available.\nWould you like to update now?", + en: "A new update is available. Would you like to update now?", ja: "最新のアップデートがあります。\nアップデートしますか?" ) } @@ -241,7 +247,7 @@ enum I18n { static var forcedUpdateDesc: String { pick( ko: "필수 업데이트가 있습니다.\n업데이트 후 사용가능합니다.", - en: "A required update is available.\nPlease update to continue.", + en: "A required update is available. Please update to continue.", ja: "必須アップデートがあります。\nアップデート後に利用できます。" ) } @@ -544,7 +550,7 @@ enum I18n { // 최근 데이터 관련 토스트/알림 static var recentDataLoaded: String { pick(ko: "최근데이터를 불러왔습니다.", en: "Recent data has been loaded.", ja: "最新データを読み込みました。") } - static var recentDataLoadFailed: String { pick(ko: "최근데이터를 불러오지 못했습니다.\n다시 시도해 주세요.", en: "Failed to load recent data.\nPlease try again.", ja: "最近のデータを読み込めませんでした。\n恐れ入りますが、もう一度お試しください。") } + static var recentDataLoadFailed: String { pick(ko: "최근데이터를 불러오지 못했습니다.\n다시 시도해 주세요.", en: "Failed to load recent data.\ntry again.", ja: "最近のデータを読み込めませんでした。\n恐れ入りますが、もう一度お試しください。") } static var createLiveFailedGeneric: String { pick(ko: "라이브를 만들지 못했습니다.\n다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다.", en: "Could not create the live.\nPlease try again.\nIf the problem persists, please contact customer support.", ja: "ライブを作成できませんでした。\nもう一度お試しください。\n問題が続く場合はカスタマーサポートにお問い合わせください。") } // 검증 에러 메시지 @@ -580,12 +586,24 @@ enum I18n { pick( ko: "라이브를 종료하시겠습니까?\n라이브를 종료하면 대화내용은\n저장되지 않고 사라집니다.\n참여자들 또한 라이브가 종료되어\n강제퇴장 됩니다.", en: "Do you want to end the live?\nEnding the live will erase the chat history.\nParticipants will also be removed.", - ja: "ライブを終了しますか?\nライブを終了すると会話内容は保存されず消去されます。\n参加者も終了に伴い強制退場となります。" + ja: "ライブを終了しますか?\n終了するとチャット内容は保存されず消えます。\nリスナーもライブ終了とともに\n強制退出されます。" ) } static var kickOutTitle: String { pick(ko: "내보내기", en: "Kick out", ja: "退場させる") } static var kickOutConfirm: String { pick(ko: "내보내기", en: "Kick out", ja: "退場させる") } + + static var leaveButton: String { pick(ko: "나가기", en: "Leave", ja: "退出") } + static var endButton: String { pick(ko: "라이브 종료", en: "End live", ja: "ライブ終了") } + static var changeListenerButton: String { pick(ko: "리스너 변경", en: "Switch to listener", ja: "リスナーへ変更") } + + static var signatureOn: String { pick(ko: "시그 ON", en: "Sign ON", ja: "シグ ON") } + static var signatureOff: String { pick(ko: "시그 OFF", en: "Sign OFF", ja: "シグ OFF") } + static var backgroundOn: String { pick(ko: "배경 ON", en: "Back ON", ja: "背景 ON") } + static var backgroundOff: String { pick(ko: "배경 OFF", en: "Back OFF", ja: "背景 OFF") } + static var notice: String { pick(ko: "공지", en: "Notice", ja: "お知らせ") } + static var menuPan: String { pick(ko: "메뉴판", en: "Menu", ja: "メニュー") } + static var participants: String { pick(ko: "참여자", en: "Participants", ja: "リスナー ") } } enum LiveCancel { @@ -600,7 +618,7 @@ enum I18n { static var reservationCanceled: String { pick( ko: "예약이 취소되었습니다.", - en: "The reservation has been canceled.", + en: "Reservation has been canceled.", ja: "予約がキャンセルされました。" ) } diff --git a/SodaLive/Sources/Live/Room/V2/Component/View/LiveRoomInfoGuestView.swift b/SodaLive/Sources/Live/Room/V2/Component/View/LiveRoomInfoGuestView.swift index 62c845b..d7d6255 100644 --- a/SodaLive/Sources/Live/Room/V2/Component/View/LiveRoomInfoGuestView.swift +++ b/SodaLive/Sources/Live/Room/V2/Component/View/LiveRoomInfoGuestView.swift @@ -46,7 +46,7 @@ struct LiveRoomInfoGuestView: View { VStack(spacing: 13.3) { HStack(spacing: 5.3) { LiveRoomOverlayStrokeTextButton( - text: "나가기", + text: I18n.LiveRoom.leaveButton, textColor: Color.red, strokeColor: Color.red, strokeWidth: 1, @@ -57,7 +57,7 @@ struct LiveRoomInfoGuestView: View { if speakerList.contains(where: { $0.id == UserDefaults.int(forKey: .userId)}) { LiveRoomOverlayStrokeTextButton( - text: "리스너 변경", + text: I18n.LiveRoom.changeListenerButton, textColor: Color.grayee, strokeColor: Color.graybb, strokeWidth: 1, @@ -67,10 +67,10 @@ struct LiveRoomInfoGuestView: View { LiveRoomOverlayStrokeTextToggleButton( isOn: isOnSignature, - onText: "시그 ON", + onText: I18n.LiveRoom.signatureOn, onTextColor: Color.button, onStrokeColor: Color.button, - offText: "시그 OFF", + offText: I18n.LiveRoom.signatureOff, offTextColor: Color.graybb, offStrokeColor: Color.graybb, strokeWidth: 1, @@ -79,10 +79,10 @@ struct LiveRoomInfoGuestView: View { LiveRoomOverlayStrokeTextToggleButton( isOn: isOnBg, - onText: "배경 ON", + onText: I18n.LiveRoom.backgroundOn, onTextColor: Color.button, onStrokeColor: Color.button, - offText: "배경 OFF", + offText: I18n.LiveRoom.backgroundOff, offTextColor: Color.graybb, offStrokeColor: Color.graybb, strokeWidth: 1, @@ -137,7 +137,7 @@ struct LiveRoomInfoGuestView: View { HStack(spacing: 5.3) { LiveRoomOverlayStrokeTextToggleButton( isOn: isOnNotice, - onText: "공지", + onText: I18n.LiveRoom.notice, onTextColor: .button, onStrokeColor: .button, offText: nil, @@ -151,7 +151,7 @@ struct LiveRoomInfoGuestView: View { if isShowMenuPanButton { LiveRoomOverlayStrokeTextToggleButton( isOn: isOnMenuPan, - onText: "메뉴판", + onText: I18n.LiveRoom.menuPan, onTextColor: .button, onStrokeColor: .button, offText: nil, diff --git a/SodaLive/Sources/Live/Room/V2/Component/View/LiveRoomInfoHostView.swift b/SodaLive/Sources/Live/Room/V2/Component/View/LiveRoomInfoHostView.swift index 7d2e072..2981ccc 100644 --- a/SodaLive/Sources/Live/Room/V2/Component/View/LiveRoomInfoHostView.swift +++ b/SodaLive/Sources/Live/Room/V2/Component/View/LiveRoomInfoHostView.swift @@ -47,7 +47,7 @@ struct LiveRoomInfoHostView: View { VStack(alignment: .leading, spacing: 13.3) { HStack(spacing: 5.3) { LiveRoomOverlayStrokeTextButton( - text: "라이브 종료", + text: I18n.LiveRoom.endButton, textColor: Color.red, strokeColor: Color.red, strokeWidth: 1, @@ -58,10 +58,10 @@ struct LiveRoomInfoHostView: View { LiveRoomOverlayStrokeTextToggleButton( isOn: isOnSignature, - onText: "시그 ON", + onText: I18n.LiveRoom.signatureOn, onTextColor: Color.button, onStrokeColor: Color.button, - offText: "시그 OFF", + offText: I18n.LiveRoom.signatureOff, offTextColor: Color.graybb, offStrokeColor: Color.graybb, strokeWidth: 1, @@ -70,10 +70,10 @@ struct LiveRoomInfoHostView: View { LiveRoomOverlayStrokeTextToggleButton( isOn: isOnBg, - onText: "배경 ON", + onText: I18n.LiveRoom.backgroundOn, onTextColor: Color.button, onStrokeColor: Color.button, - offText: "배경 OFF", + offText: I18n.LiveRoom.backgroundOff, offTextColor: Color.graybb, offStrokeColor: Color.graybb, strokeWidth: 1, @@ -135,7 +135,7 @@ struct LiveRoomInfoHostView: View { HStack(spacing: 5.3) { LiveRoomOverlayStrokeTextToggleButton( isOn: isOnNotice, - onText: "공지", + onText: I18n.LiveRoom.notice, onTextColor: .button, onStrokeColor: .button, offText: nil, @@ -149,7 +149,7 @@ struct LiveRoomInfoHostView: View { if isShowMenuPanButton { LiveRoomOverlayStrokeTextToggleButton( isOn: isOnMenuPan, - onText: "메뉴판", + onText: I18n.LiveRoom.menuPan, onTextColor: .button, onStrokeColor: .button, offText: nil, @@ -198,7 +198,7 @@ struct LiveRoomInfoHostView: View { .onTapGesture { onClickTotalDonation() } HStack(spacing: 6.7) { - Text("참여자") + Text(I18n.LiveRoom.participants) .font(.custom(Font.medium.rawValue, size: 12)) .foregroundColor(.graybb)