라이브룸 버튼 문구 다국어 키 추가

I18n.LiveRoom에 라이브 종료/나가기 등 버튼 문구 키를
추가한다.
일부 안내 및 단위 문구의 영문/일문 표현을 다듬는다.
This commit is contained in:
Yu Sung
2026-01-05 15:38:49 +09:00
parent fa4483cd18
commit eb83d5e5e3
4 changed files with 68 additions and 50 deletions

View File

@@ -172,7 +172,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": " " "value": " Cans"
} }
} }
} }
@@ -931,7 +931,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "%lld" "value": "%lldCAN"
} }
} }
} }
@@ -1059,7 +1059,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "%lld" "value": "%lld can"
} }
} }
} }
@@ -1075,7 +1075,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "%lldで投稿を閲覧" "value": "%lldcanで投稿を閲覧"
} }
} }
} }
@@ -1091,7 +1091,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "%lldでニックネーム変更" "value": "%lldcanでニックネーム変更"
} }
} }
} }
@@ -1107,7 +1107,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "%lldでルーレットを回す" "value": "%lldcanでルーレットを回す"
} }
} }
} }
@@ -1123,7 +1123,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "%lldで見る" "value": "%lldcanで見る"
} }
} }
} }
@@ -1219,7 +1219,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "無効にするとチャンネル内に後援ランキングが表示されず、ライブ中もランキングに基づくバッジが反映されません。" "value": "無効にするとチャンネル内にギフトランキングが表示されず、\nライブ中もランキングバッジが反映されません。"
} }
} }
} }
@@ -1667,7 +1667,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "1以上入力してください" "value": "1can以上入力してください"
} }
} }
} }
@@ -1731,7 +1731,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "10以上入力してください" "value": "10can以上入力してください"
} }
} }
} }
@@ -2067,7 +2067,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "価格を入力してください(5以上)" "value": "価格を入力してください(5can以上)"
} }
} }
} }
@@ -2275,7 +2275,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "決済は支払い後7日以内のみキャンセルできます。を一部でも使用した場合はキャンセルできません。" "value": "決済は支払い後7日以内のみキャンセルできます。canを一部でも使用した場合はキャンセルできません。"
} }
} }
} }
@@ -2403,7 +2403,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "決済した%lldが払い戻しされました。" "value": "決済した%lldcanが払い戻しされました。"
} }
} }
} }
@@ -2429,7 +2429,7 @@
"en": { "en": {
"stringUnit": { "stringUnit": {
"state": "translated", "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": { "ja": {
@@ -2451,7 +2451,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "アカウントを削除すると、すべてのコンテンツ・活動、キャンチャージや積立、利用履歴などの記録が削除されます。削除データは復元できないため慎重に決定してください。\nキャンチャージで獲得したはアカウント削除時に返金できません。返金申請後に処理前でアカウントを削除した場合、利用履歴を確認できず返金もできません。" "value": "アカウントを削除すると、すべてのコンテンツ・活動、キャンチャージや積立、利用履歴などの記録が削除されます。削除データは復元できないため慎重に決定してください。\nキャンチャージで獲得したcanはアカウント削除時に返金できません。返金申請後に処理前でアカウントを削除した場合、利用履歴を確認できず返金もできません。"
} }
} }
} }
@@ -3795,7 +3795,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "ルーレット金額を入力してください最小5" "value": "ルーレット金額を入力してください最小5can"
} }
} }
} }
@@ -3891,7 +3891,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "リワード" "value": "リワードcan"
} }
} }
} }
@@ -3917,7 +3917,7 @@
"en": { "en": {
"stringUnit": { "stringUnit": {
"state": "translated", "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": { "ja": {
@@ -4061,7 +4061,7 @@
"en": { "en": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "No messages yet.\nChat with your friends!" "value": "No messages yet. Start chatting with your friends!"
} }
}, },
"ja": { "ja": {
@@ -4083,7 +4083,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "メッセージを保存するには\n%lldが必要です。\n保存しますか" "value": "メッセージを保存するには\n%lldcanが必要です。\n保存しますか"
} }
} }
} }
@@ -4733,7 +4733,7 @@
"en": { "en": {
"stringUnit": { "stringUnit": {
"state": "translated", "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": { "ja": {
@@ -6157,7 +6157,7 @@
"en": { "en": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Cancel" "value": "Cancel "
} }
}, },
"ja": { "ja": {
@@ -6653,7 +6653,7 @@
"en": { "en": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Original" "value": "Original "
} }
}, },
"ja": { "ja": {
@@ -7213,7 +7213,7 @@
"en": { "en": {
"stringUnit": { "stringUnit": {
"state": "translated", "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": { "ja": {
@@ -8115,7 +8115,7 @@
"ja": { "ja": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "リスナー" "value": "リスナー "
} }
} }
} }
@@ -8493,7 +8493,7 @@
"en": { "en": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Recommended" "value": "Recommended "
} }
}, },
"ja": { "ja": {
@@ -9725,7 +9725,7 @@
"en": { "en": {
"stringUnit": { "stringUnit": {
"state": "translated", "state": "translated",
"value": "Current" "value": "Current "
} }
}, },
"ja": { "ja": {
@@ -9821,7 +9821,7 @@
"en": { "en": {
"stringUnit": { "stringUnit": {
"state": "translated", "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": { "ja": {

View File

@@ -180,7 +180,13 @@ enum I18n {
static var noticeTitle: String { pick(ko: "안내", en: "Notice", ja: "お知らせ") } static var noticeTitle: String { pick(ko: "안내", en: "Notice", ja: "お知らせ") }
static var pointGrantTitle: String { pick(ko: "포인트 지급", en: "Points granted", 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 roulette1: String { pick(ko: "룰렛 1", en: "Roulette 1", ja: "ルーレット1") }
static var roulette2: String { pick(ko: "룰렛 2", en: "Roulette 2", ja: "ルーレット2") } static var roulette2: String { pick(ko: "룰렛 2", en: "Roulette 2", ja: "ルーレット2") }
@@ -225,7 +231,7 @@ enum I18n {
static var updateDesc: String { static var updateDesc: String {
pick( pick(
ko: "최신 업데이트가 있습니다.\n업데이트 하시겠습니까?", 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アップデートしますか?" ja: "最新のアップデートがあります。\nアップデートしますか?"
) )
} }
@@ -241,7 +247,7 @@ enum I18n {
static var forcedUpdateDesc: String { static var forcedUpdateDesc: String {
pick( pick(
ko: "필수 업데이트가 있습니다.\n업데이트 후 사용가능합니다.", ko: "필수 업데이트가 있습니다.\n업데이트 후 사용가능합니다.",
en: "A required update is available.\nPlease update to continue.", en: "A required update is available. Please update to continue.",
ja: "必須アップデートがあります。\nアップデート後に利用できます。" ja: "必須アップデートがあります。\nアップデート後に利用できます。"
) )
} }
@@ -544,7 +550,7 @@ enum I18n {
// / // /
static var recentDataLoaded: String { pick(ko: "최근데이터를 불러왔습니다.", en: "Recent data has been loaded.", ja: "最新データを読み込みました。") } 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問題が続く場合はカスタマーサポートにお問い合わせください。") } 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( pick(
ko: "라이브를 종료하시겠습니까?\n라이브를 종료하면 대화내용은\n저장되지 않고 사라집니다.\n참여자들 또한 라이브가 종료되어\n강제퇴장 됩니다.", 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.", 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 kickOutTitle: String { pick(ko: "내보내기", en: "Kick out", ja: "退場させる") }
static var kickOutConfirm: 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 { enum LiveCancel {
@@ -600,7 +618,7 @@ enum I18n {
static var reservationCanceled: String { static var reservationCanceled: String {
pick( pick(
ko: "예약이 취소되었습니다.", ko: "예약이 취소되었습니다.",
en: "The reservation has been canceled.", en: "Reservation has been canceled.",
ja: "予約がキャンセルされました。" ja: "予約がキャンセルされました。"
) )
} }

View File

@@ -46,7 +46,7 @@ struct LiveRoomInfoGuestView: View {
VStack(spacing: 13.3) { VStack(spacing: 13.3) {
HStack(spacing: 5.3) { HStack(spacing: 5.3) {
LiveRoomOverlayStrokeTextButton( LiveRoomOverlayStrokeTextButton(
text: "나가기", text: I18n.LiveRoom.leaveButton,
textColor: Color.red, textColor: Color.red,
strokeColor: Color.red, strokeColor: Color.red,
strokeWidth: 1, strokeWidth: 1,
@@ -57,7 +57,7 @@ struct LiveRoomInfoGuestView: View {
if speakerList.contains(where: { $0.id == UserDefaults.int(forKey: .userId)}) { if speakerList.contains(where: { $0.id == UserDefaults.int(forKey: .userId)}) {
LiveRoomOverlayStrokeTextButton( LiveRoomOverlayStrokeTextButton(
text: "리스너 변경", text: I18n.LiveRoom.changeListenerButton,
textColor: Color.grayee, textColor: Color.grayee,
strokeColor: Color.graybb, strokeColor: Color.graybb,
strokeWidth: 1, strokeWidth: 1,
@@ -67,10 +67,10 @@ struct LiveRoomInfoGuestView: View {
LiveRoomOverlayStrokeTextToggleButton( LiveRoomOverlayStrokeTextToggleButton(
isOn: isOnSignature, isOn: isOnSignature,
onText: "시그 ON", onText: I18n.LiveRoom.signatureOn,
onTextColor: Color.button, onTextColor: Color.button,
onStrokeColor: Color.button, onStrokeColor: Color.button,
offText: "시그 OFF", offText: I18n.LiveRoom.signatureOff,
offTextColor: Color.graybb, offTextColor: Color.graybb,
offStrokeColor: Color.graybb, offStrokeColor: Color.graybb,
strokeWidth: 1, strokeWidth: 1,
@@ -79,10 +79,10 @@ struct LiveRoomInfoGuestView: View {
LiveRoomOverlayStrokeTextToggleButton( LiveRoomOverlayStrokeTextToggleButton(
isOn: isOnBg, isOn: isOnBg,
onText: "배경 ON", onText: I18n.LiveRoom.backgroundOn,
onTextColor: Color.button, onTextColor: Color.button,
onStrokeColor: Color.button, onStrokeColor: Color.button,
offText: "배경 OFF", offText: I18n.LiveRoom.backgroundOff,
offTextColor: Color.graybb, offTextColor: Color.graybb,
offStrokeColor: Color.graybb, offStrokeColor: Color.graybb,
strokeWidth: 1, strokeWidth: 1,
@@ -137,7 +137,7 @@ struct LiveRoomInfoGuestView: View {
HStack(spacing: 5.3) { HStack(spacing: 5.3) {
LiveRoomOverlayStrokeTextToggleButton( LiveRoomOverlayStrokeTextToggleButton(
isOn: isOnNotice, isOn: isOnNotice,
onText: "공지", onText: I18n.LiveRoom.notice,
onTextColor: .button, onTextColor: .button,
onStrokeColor: .button, onStrokeColor: .button,
offText: nil, offText: nil,
@@ -151,7 +151,7 @@ struct LiveRoomInfoGuestView: View {
if isShowMenuPanButton { if isShowMenuPanButton {
LiveRoomOverlayStrokeTextToggleButton( LiveRoomOverlayStrokeTextToggleButton(
isOn: isOnMenuPan, isOn: isOnMenuPan,
onText: "메뉴판", onText: I18n.LiveRoom.menuPan,
onTextColor: .button, onTextColor: .button,
onStrokeColor: .button, onStrokeColor: .button,
offText: nil, offText: nil,

View File

@@ -47,7 +47,7 @@ struct LiveRoomInfoHostView: View {
VStack(alignment: .leading, spacing: 13.3) { VStack(alignment: .leading, spacing: 13.3) {
HStack(spacing: 5.3) { HStack(spacing: 5.3) {
LiveRoomOverlayStrokeTextButton( LiveRoomOverlayStrokeTextButton(
text: "라이브 종료", text: I18n.LiveRoom.endButton,
textColor: Color.red, textColor: Color.red,
strokeColor: Color.red, strokeColor: Color.red,
strokeWidth: 1, strokeWidth: 1,
@@ -58,10 +58,10 @@ struct LiveRoomInfoHostView: View {
LiveRoomOverlayStrokeTextToggleButton( LiveRoomOverlayStrokeTextToggleButton(
isOn: isOnSignature, isOn: isOnSignature,
onText: "시그 ON", onText: I18n.LiveRoom.signatureOn,
onTextColor: Color.button, onTextColor: Color.button,
onStrokeColor: Color.button, onStrokeColor: Color.button,
offText: "시그 OFF", offText: I18n.LiveRoom.signatureOff,
offTextColor: Color.graybb, offTextColor: Color.graybb,
offStrokeColor: Color.graybb, offStrokeColor: Color.graybb,
strokeWidth: 1, strokeWidth: 1,
@@ -70,10 +70,10 @@ struct LiveRoomInfoHostView: View {
LiveRoomOverlayStrokeTextToggleButton( LiveRoomOverlayStrokeTextToggleButton(
isOn: isOnBg, isOn: isOnBg,
onText: "배경 ON", onText: I18n.LiveRoom.backgroundOn,
onTextColor: Color.button, onTextColor: Color.button,
onStrokeColor: Color.button, onStrokeColor: Color.button,
offText: "배경 OFF", offText: I18n.LiveRoom.backgroundOff,
offTextColor: Color.graybb, offTextColor: Color.graybb,
offStrokeColor: Color.graybb, offStrokeColor: Color.graybb,
strokeWidth: 1, strokeWidth: 1,
@@ -135,7 +135,7 @@ struct LiveRoomInfoHostView: View {
HStack(spacing: 5.3) { HStack(spacing: 5.3) {
LiveRoomOverlayStrokeTextToggleButton( LiveRoomOverlayStrokeTextToggleButton(
isOn: isOnNotice, isOn: isOnNotice,
onText: "공지", onText: I18n.LiveRoom.notice,
onTextColor: .button, onTextColor: .button,
onStrokeColor: .button, onStrokeColor: .button,
offText: nil, offText: nil,
@@ -149,7 +149,7 @@ struct LiveRoomInfoHostView: View {
if isShowMenuPanButton { if isShowMenuPanButton {
LiveRoomOverlayStrokeTextToggleButton( LiveRoomOverlayStrokeTextToggleButton(
isOn: isOnMenuPan, isOn: isOnMenuPan,
onText: "메뉴판", onText: I18n.LiveRoom.menuPan,
onTextColor: .button, onTextColor: .button,
onStrokeColor: .button, onStrokeColor: .button,
offText: nil, offText: nil,
@@ -198,7 +198,7 @@ struct LiveRoomInfoHostView: View {
.onTapGesture { onClickTotalDonation() } .onTapGesture { onClickTotalDonation() }
HStack(spacing: 6.7) { HStack(spacing: 6.7) {
Text("참여자") Text(I18n.LiveRoom.participants)
.font(.custom(Font.medium.rawValue, size: 12)) .font(.custom(Font.medium.rawValue, size: 12))
.foregroundColor(.graybb) .foregroundColor(.graybb)