chore(brand): 앱 명칭을 소다라이브로 변경한다

This commit is contained in:
Yu Sung
2026-08-25 14:05:28 +09:00
parent 6820a18691
commit 670ae76c73
15 changed files with 58 additions and 58 deletions

View File

@@ -8918,7 +8918,7 @@
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = SodaLive/Resources/Info.plist; INFOPLIST_FILE = SodaLive/Resources/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "보이스온"; INFOPLIST_KEY_CFBundleDisplayName = "소다라이브";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.entertainment"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.entertainment";
INFOPLIST_KEY_NSCameraUsageDescription = "프로필 이미지 / 라이브 커버이미지 촬영을 위해 카메라 접근 권한이 필요합니다."; INFOPLIST_KEY_NSCameraUsageDescription = "프로필 이미지 / 라이브 커버이미지 촬영을 위해 카메라 접근 권한이 필요합니다.";
INFOPLIST_KEY_NSMicrophoneUsageDescription = "라이브 / 음성메시지 / 오디션 녹음을 위해 마이크 권한이 필요합니다."; INFOPLIST_KEY_NSMicrophoneUsageDescription = "라이브 / 음성메시지 / 오디션 녹음을 위해 마이크 권한이 필요합니다.";
@@ -8959,7 +8959,7 @@
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = SodaLive/Resources/Info.plist; INFOPLIST_FILE = SodaLive/Resources/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "보이스온"; INFOPLIST_KEY_CFBundleDisplayName = "소다라이브";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.entertainment"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.entertainment";
INFOPLIST_KEY_NSCameraUsageDescription = "프로필 이미지 / 라이브 커버이미지 촬영을 위해 카메라 접근 권한이 필요합니다."; INFOPLIST_KEY_NSCameraUsageDescription = "프로필 이미지 / 라이브 커버이미지 촬영을 위해 카메라 접근 권한이 필요합니다.";
INFOPLIST_KEY_NSMicrophoneUsageDescription = "라이브 / 음성메시지 / 오디션 녹음을 위해 마이크 권한이 필요합니다."; INFOPLIST_KEY_NSMicrophoneUsageDescription = "라이브 / 음성메시지 / 오디션 녹음을 위해 마이크 권한이 필요합니다.";
@@ -8999,7 +8999,7 @@
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "SodaLive/Resources/Debug/SodaLive-dev-Info.plist"; INFOPLIST_FILE = "SodaLive/Resources/Debug/SodaLive-dev-Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = "보이스온-테스트"; INFOPLIST_KEY_CFBundleDisplayName = "소다라이브-테스트";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.entertainment"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.entertainment";
INFOPLIST_KEY_NSCameraUsageDescription = "프로필 이미지 / 라이브 커버이미지 촬영을 위해 카메라 접근 권한이 필요합니다."; INFOPLIST_KEY_NSCameraUsageDescription = "프로필 이미지 / 라이브 커버이미지 촬영을 위해 카메라 접근 권한이 필요합니다.";
INFOPLIST_KEY_NSMicrophoneUsageDescription = "라이브 / 음성메시지 / 오디션 녹음을 위해 마이크 권한이 필요합니다."; INFOPLIST_KEY_NSMicrophoneUsageDescription = "라이브 / 음성메시지 / 오디션 녹음을 위해 마이크 권한이 필요합니다.";
@@ -9039,7 +9039,7 @@
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "SodaLive/Resources/Debug/SodaLive-dev-Info.plist"; INFOPLIST_FILE = "SodaLive/Resources/Debug/SodaLive-dev-Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = "보이스온-테스트"; INFOPLIST_KEY_CFBundleDisplayName = "소다라이브-테스트";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.entertainment"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.entertainment";
INFOPLIST_KEY_NSCameraUsageDescription = "프로필 이미지 / 라이브 커버이미지 촬영을 위해 카메라 접근 권한이 필요합니다."; INFOPLIST_KEY_NSCameraUsageDescription = "프로필 이미지 / 라이브 커버이미지 촬영을 위해 카메라 접근 권한이 필요합니다.";
INFOPLIST_KEY_NSMicrophoneUsageDescription = "라이브 / 음성메시지 / 오디션 녹음을 위해 마이크 권한이 필요합니다."; INFOPLIST_KEY_NSMicrophoneUsageDescription = "라이브 / 음성메시지 / 오디션 녹음을 위해 마이크 권한이 필요합니다.";

View File

@@ -5,7 +5,7 @@
Created by klaus on 12/5/25. Created by klaus on 12/5/25.
*/ */
"CFBundleDisplayName" = "VoiceOn-Test"; "CFBundleDisplayName" = "SodaLive-Test";
"NSPhotoLibraryUsageDescription" = "Allow access to your photo library to select photos."; "NSPhotoLibraryUsageDescription" = "Allow access to your photo library to select photos.";
"NSMicrophoneUsageDescription" = "Allow access to your microphone to record audio."; "NSMicrophoneUsageDescription" = "Allow access to your microphone to record audio.";
"NSUserTrackingUsageDescription" = "Allow tracking to deliver personalized ads."; "NSUserTrackingUsageDescription" = "Allow tracking to deliver personalized ads.";

View File

@@ -5,7 +5,7 @@
Created by klaus on 12/5/25. Created by klaus on 12/5/25.
*/ */
"CFBundleDisplayName" = "ボイスオン-テスト"; "CFBundleDisplayName" = "ソーダライブ-テスト";
"NSPhotoLibraryUsageDescription" = "写真を選択するために写真ライブラリへのアクセスが必要です。"; "NSPhotoLibraryUsageDescription" = "写真を選択するために写真ライブラリへのアクセスが必要です。";
"NSMicrophoneUsageDescription" = "音声を録音するためにマイクへのアクセスが必要です。"; "NSMicrophoneUsageDescription" = "音声を録音するためにマイクへのアクセスが必要です。";
"NSUserTrackingUsageDescription" = "パーソナライズされた広告のためにトラッキングを許可してください。"; "NSUserTrackingUsageDescription" = "パーソナライズされた広告のためにトラッキングを許可してください。";

View File

@@ -5,7 +5,7 @@
Created by klaus on 12/5/25. Created by klaus on 12/5/25.
*/ */
"CFBundleDisplayName" = "보이스온-테스트"; "CFBundleDisplayName" = "소다라이브-테스트";
"NSPhotoLibraryUsageDescription" = "사진을 선택하려면 사진 라이브러리 접근이 필요합니다."; "NSPhotoLibraryUsageDescription" = "사진을 선택하려면 사진 라이브러리 접근이 필요합니다.";
"NSMicrophoneUsageDescription" = "음성 녹음을 위해 마이크 접근이 필요합니다."; "NSMicrophoneUsageDescription" = "음성 녹음을 위해 마이크 접근이 필요합니다.";
"NSUserTrackingUsageDescription" = "맞춤형 광고 제공을 위해 추적을 허용해 주세요."; "NSUserTrackingUsageDescription" = "맞춤형 광고 제공을 위해 추적을 허용해 주세요.";

View File

@@ -5,7 +5,7 @@
Created by klaus on 12/5/25. Created by klaus on 12/5/25.
*/ */
"CFBundleDisplayName" = "VoiceOn"; "CFBundleDisplayName" = "SodaLive";
"NSPhotoLibraryUsageDescription" = "Allow access to your photo library to select photos."; "NSPhotoLibraryUsageDescription" = "Allow access to your photo library to select photos.";
"NSMicrophoneUsageDescription" = "Allow access to your microphone to record audio."; "NSMicrophoneUsageDescription" = "Allow access to your microphone to record audio.";
"NSUserTrackingUsageDescription" = "Allow tracking to deliver personalized ads."; "NSUserTrackingUsageDescription" = "Allow tracking to deliver personalized ads.";

View File

@@ -5,7 +5,7 @@
Created by klaus on 12/5/25. Created by klaus on 12/5/25.
*/ */
"CFBundleDisplayName" = "ボイスオン"; "CFBundleDisplayName" = "ソーダライブ";
"NSPhotoLibraryUsageDescription" = "写真を選択するために写真ライブラリへのアクセスが必要です。"; "NSPhotoLibraryUsageDescription" = "写真を選択するために写真ライブラリへのアクセスが必要です。";
"NSMicrophoneUsageDescription" = "音声を録音するためにマイクへのアクセスが必要です。"; "NSMicrophoneUsageDescription" = "音声を録音するためにマイクへのアクセスが必要です。";
"NSUserTrackingUsageDescription" = "パーソナライズされた広告のためにトラッキングを許可してください。"; "NSUserTrackingUsageDescription" = "パーソナライズされた広告のためにトラッキングを許可してください。";

View File

@@ -5,7 +5,7 @@
Created by klaus on 12/5/25. Created by klaus on 12/5/25.
*/ */
"CFBundleDisplayName" = "보이스온"; "CFBundleDisplayName" = "소다라이브";
"NSPhotoLibraryUsageDescription" = "사진을 선택하려면 사진 라이브러리 접근이 필요합니다."; "NSPhotoLibraryUsageDescription" = "사진을 선택하려면 사진 라이브러리 접근이 필요합니다.";
"NSMicrophoneUsageDescription" = "음성 녹음을 위해 마이크 접근이 필요합니다."; "NSMicrophoneUsageDescription" = "음성 녹음을 위해 마이크 접근이 필요합니다.";
"NSUserTrackingUsageDescription" = "맞춤형 광고 제공을 위해 추적을 허용해 주세요."; "NSUserTrackingUsageDescription" = "맞춤형 광고 제공을 위해 추적을 허용해 주세요.";

View File

@@ -95,7 +95,7 @@ struct OriginalWorkDetailHeaderView: View {
contentType: "웹소설", contentType: "웹소설",
category: "로맨스", category: "로맨스",
isAdult: true, isAdult: true,
description: "작품설명입니다.보이스온의 오픈월드 캐릭터톡은 청소년 보호를 위해 본인인증한성인만 이용이 가능합니다.캐릭터톡 서비스를 이용하시려면 본인인증을 하고 이용해주세요.", description: "작품설명입니다.소다라이브의 오픈월드 캐릭터톡은 청소년 보호를 위해 본인인증한성인만 이용이 가능합니다.캐릭터톡 서비스를 이용하시려면 본인인증을 하고 이용해주세요.",
originalWork: nil, originalWork: nil,
originalLink: "https://apple.com", originalLink: "https://apple.com",
writer: nil, writer: nil,

View File

@@ -25,7 +25,7 @@ struct SeriesListAllView: View {
if isCompleted { if isCompleted {
DetailNavigationBar(title: I18n.Series.completedSectionTitle) DetailNavigationBar(title: I18n.Series.completedSectionTitle)
} else if isOriginal { } else if isOriginal {
DetailNavigationBar(title: I18n.Series.voiceOnOnlyTitle) DetailNavigationBar(title: I18n.Series.sodaLiveOnlyTitle)
} else { } else {
DetailNavigationBar(title: I18n.Series.viewAllByCreator(creatorNickname ?? "")) DetailNavigationBar(title: I18n.Series.viewAllByCreator(creatorNickname ?? ""))
} }

View File

@@ -212,7 +212,7 @@ struct HomeTabView: View {
if !viewModel.originalAudioDramaList.isEmpty { if !viewModel.originalAudioDramaList.isEmpty {
VStack(alignment: .leading, spacing: 16) { VStack(alignment: .leading, spacing: 16) {
HStack(spacing: 0) { HStack(spacing: 0) {
Text(I18n.Home.onlyOnVoiceOnSectionTitle) Text(I18n.Home.onlyOnSodaLiveSectionTitle)
.appFont(size: 24, weight: .bold) .appFont(size: 24, weight: .bold)
.foregroundColor(.white) .foregroundColor(.white)

View File

@@ -90,9 +90,9 @@ enum I18n {
static var dialogDescription: String { static var dialogDescription: String {
pick( pick(
ko: "보이스온의 오픈월드 캐릭터톡은\n청소년 보호를 위해 본인인증한\n성인만 이용이 가능합니다.\n캐릭터톡 서비스를 이용하시려면\n본인인증을 하고 이용해주세요.", ko: "소다라이브의 오픈월드 캐릭터톡은\n청소년 보호를 위해 본인인증한\n성인만 이용이 가능합니다.\n캐릭터톡 서비스를 이용하시려면\n본인인증을 하고 이용해주세요.",
en: "VoiceOn Open World Character Talk is available only to adults who complete identity verification for youth protection.\nPlease complete identity verification to use Character Talk.", en: "SodaLive Open World Character Talk is available only to adults who complete identity verification for youth protection.\nPlease complete identity verification to use Character Talk.",
ja: "VoiceOnオープンワールドキャラクタートークは、青少年保護のため本人認証を完了した成人のみ利用できます。\nキャラクタートークを利用するには本人認証を完了してください。" ja: "SodaLiveオープンワールドキャラクタートークは、青少年保護のため本人認証を完了した成人のみ利用できます。\nキャラクタートークを利用するには本人認証を完了してください。"
) )
} }
@@ -164,9 +164,9 @@ enum I18n {
static var detailConversationGuideDescription1: String { static var detailConversationGuideDescription1: String {
pick( pick(
ko: "보이스온의 오픈월드 캐릭터톡은 대화의 자유도가 높아 대화에 참여하는 당신은 누구든 될 수 있습니다. 세계관 속 연관 캐릭터가 되어 대화를 하거나 완전히 새로운 인물이 되어 캐릭터와 당신만의 스토리를 만들어 갈 수 있습니다.", ko: "소다라이브의 오픈월드 캐릭터톡은 대화의 자유도가 높아 대화에 참여하는 당신은 누구든 될 수 있습니다. 세계관 속 연관 캐릭터가 되어 대화를 하거나 완전히 새로운 인물이 되어 캐릭터와 당신만의 스토리를 만들어 갈 수 있습니다.",
en: "VoiceOn Open World Character Talk gives you high conversational freedom. You can become a related character in the world or a completely new persona and build your own story with the character.", en: "SodaLive Open World Character Talk gives you high conversational freedom. You can become a related character in the world or a completely new persona and build your own story with the character.",
ja: "VoiceOnオープンワールドキャラクタートークは会話の自由度が高く、世界観の関連キャラクターとして会話したり、まったく新しい人物になってキャラクターとあなただけの物語を作れます。" ja: "SodaLiveオープンワールドキャラクタートークは会話の自由度が高く、世界観の関連キャラクターとして会話したり、まったく新しい人物になってキャラクターとあなただけの物語を作れます。"
) )
} }
@@ -254,9 +254,9 @@ enum I18n {
enum Room { enum Room {
static var noticeForCharacter: String { static var noticeForCharacter: String {
pick( pick(
ko: "보이스온 AI캐릭터톡은 대화의 자유도가 높아 대화에 참여하는 당신은 누구든 될 수 있습니다.\n세계관 속 캐릭터로 대화를 하거나 새로운 인물로 캐릭터와 당신만의 스토리를 만들어보세요.\n※ AI캐릭터톡은 오픈베타 서비스 중이며, 캐릭터의 대화가 어색하거나 불완전할 수 있습니다.", ko: "소다라이브 AI캐릭터톡은 대화의 자유도가 높아 대화에 참여하는 당신은 누구든 될 수 있습니다.\n세계관 속 캐릭터로 대화를 하거나 새로운 인물로 캐릭터와 당신만의 스토리를 만들어보세요.\n※ AI캐릭터톡은 오픈베타 서비스 중이며, 캐릭터의 대화가 어색하거나 불완전할 수 있습니다.",
en: "VoiceOn AI Character Talk offers a high degree of conversational freedom.\nTalk as a character in the world or as a new persona and create your own story with the character.\n※ AI Character Talk is in open beta, so responses may be awkward or incomplete.", en: "SodaLive AI Character Talk offers a high degree of conversational freedom.\nTalk as a character in the world or as a new persona and create your own story with the character.\n※ AI Character Talk is in open beta, so responses may be awkward or incomplete.",
ja: "VoiceOn AIキャラクタートークは会話の自由度が高く、会話に参加するあなたは誰にでもなれます。\n世界観のキャラクターとして会話したり、新しい人物としてキャラクターとあなただけの物語を作ってみてください。\n※ AIキャラクタートークはオープンベータ中のため、会話が不自然または不完全な場合があります。" ja: "SodaLive AIキャラクタートークは会話の自由度が高く、会話に参加するあなたは誰にでもなれます。\n世界観のキャラクターとして会話したり、新しい人物としてキャラクターとあなただけの物語を作ってみてください。\n※ AIキャラクタートークはオープンベータ中のため、会話が不自然または不完全な場合があります。"
) )
} }
@@ -954,15 +954,15 @@ enum I18n {
} }
static var defaultTitle: String { static var defaultTitle: String {
pick(ko: "보이스온", en: "VoiceOn", ja: "ボイスオン") pick(ko: "소다라이브", en: "SodaLive", ja: "ソーダライブ")
} }
enum List { enum List {
static var usageGuide: String { static var usageGuide: String {
pick( pick(
ko: "보이스온 오디션 이용방법", ko: "소다라이브 오디션 이용방법",
en: "How to use VoiceOn Audition", en: "How to use SodaLive Audition",
ja: "ボイスオンオーディション利用方法" ja: "ソーダライブオーディション利用方法"
) )
} }
@@ -1036,9 +1036,9 @@ enum I18n {
static var privacyAgreement: String { static var privacyAgreement: String {
pick( pick(
ko: "보이스온 오디오 드라마 오디션 합격시 개인 연락을 위한 개인 정보(연락처) 수집 및 활용에 동의합니다.\n오디션 지원자는 개인정보 수집 및 활용 동의에 거부할 권리가 있으며 비동의시 오디션 지원은 취소 됩니다.", ko: "소다라이브 오디오 드라마 오디션 합격시 개인 연락을 위한 개인 정보(연락처) 수집 및 활용에 동의합니다.\n오디션 지원자는 개인정보 수집 및 활용 동의에 거부할 권리가 있으며 비동의시 오디션 지원은 취소 됩니다.",
en: "I agree to the collection and use of personal information (contact) for personal contact if selected for the VoiceOn audio drama audition.\nApplicants have the right to refuse consent to the collection and use of personal information, and if they do not consent, the audition application will be canceled.", en: "I agree to the collection and use of personal information (contact) for personal contact if selected for the SodaLive audio drama audition.\nApplicants have the right to refuse consent to the collection and use of personal information, and if they do not consent, the audition application will be canceled.",
ja: "ボイスオンオーディオドラマオーディション合格時の個別連絡のため、個人情報(連絡先)の収集および利用に同意します。\n応募者は個人情報の収集および利用への同意を拒否する権利があり、同意しない場合はオーディション応募が取り消されます。" ja: "ソーダライブオーディオドラマオーディション合格時の個別連絡のため、個人情報(連絡先)の収集および利用に同意します。\n応募者は個人情報の収集および利用への同意を拒否する権利があり、同意しない場合はオーディション応募が取り消されます。"
) )
} }
@@ -2316,16 +2316,16 @@ enum I18n {
static var releasedStaffByHostMessage: String { pick(ko: "방장님이 스탭에서 해제했습니다.", en: "Host removed your staff role.", ja: "配信者があなたのスタッフ権限を解除しました。") } static var releasedStaffByHostMessage: String { pick(ko: "방장님이 스탭에서 해제했습니다.", en: "Host removed your staff role.", ja: "配信者があなたのスタッフ権限を解除しました。") }
static func invitePrivateLiveMessage(_ nickname: String, _ shareUrl: String, _ password: String) -> String { static func invitePrivateLiveMessage(_ nickname: String, _ shareUrl: String, _ password: String) -> String {
pick( pick(
ko: "\(nickname)님이 귀하를 보이스온 비공개라이브에 초대하였습니다.\n※ 라이브 참여: \(shareUrl)\n(입장 비밀번호: \(password))", ko: "\(nickname)님이 귀하를 소다라이브 비공개라이브에 초대하였습니다.\n※ 라이브 참여: \(shareUrl)\n(입장 비밀번호: \(password))",
en: "\(nickname) invited you to a private VoiceOn live.\n※ Join live: \(shareUrl)\n(Entry password: \(password))", en: "\(nickname) invited you to a private SodaLive live.\n※ Join live: \(shareUrl)\n(Entry password: \(password))",
ja: "\(nickname)さんがあなたをVoiceOn非公開ライブに招待しました。\n※ ライブ参加: \(shareUrl)\n(入場パスワード: \(password))" ja: "\(nickname)さんがあなたをSodaLive非公開ライブに招待しました。\n※ ライブ参加: \(shareUrl)\n(入場パスワード: \(password))"
) )
} }
static func invitePublicLiveMessage(_ nickname: String, _ shareUrl: String) -> String { static func invitePublicLiveMessage(_ nickname: String, _ shareUrl: String) -> String {
pick( pick(
ko: "\(nickname)님이 귀하를 보이스온 공개라이브에 초대하였습니다.\n※ 라이브 참여: \(shareUrl)", ko: "\(nickname)님이 귀하를 소다라이브 공개라이브에 초대하였습니다.\n※ 라이브 참여: \(shareUrl)",
en: "\(nickname) invited you to a public VoiceOn live.\n※ Join live: \(shareUrl)", en: "\(nickname) invited you to a public SodaLive live.\n※ Join live: \(shareUrl)",
ja: "\(nickname)さんがあなたをVoiceOn公開ライブに招待しました。\n※ ライブ参加: \(shareUrl)" ja: "\(nickname)さんがあなたをSodaLive公開ライブに招待しました。\n※ ライブ参加: \(shareUrl)"
) )
} }
@@ -2879,7 +2879,7 @@ If you block this user, the following features will be restricted.
} }
static func shareChannelMessage(_ nickname: String) -> String { static func shareChannelMessage(_ nickname: String) -> String {
pick(ko: "보이스온 \(nickname)님의 채널입니다.", en: "This is \(nickname)'s channel on VoiceOn.", ja: "ボイスオン\(nickname)さんのチャンネルです。") pick(ko: "소다라이브 \(nickname)님의 채널입니다.", en: "This is \(nickname)'s channel on SodaLive.", ja: "ソーダライブ\(nickname)さんのチャンネルです。")
} }
static func reserveWithCansTitle(_ price: Int) -> String { static func reserveWithCansTitle(_ price: Int) -> String {
@@ -3100,8 +3100,8 @@ If you block this user, the following features will be restricted.
pick(ko: "New&Hot", en: "New&Hot", ja: "New&Hot") pick(ko: "New&Hot", en: "New&Hot", ja: "New&Hot")
} }
static var voiceOnOnlySectionTitle: String { static var sodaLiveOnlySectionTitle: String {
pick(ko: "오직 보이스온에서만!", en: "Only on VoiceOn!", ja: "VOICE ON限定") pick(ko: "오직 소다라이브에서만!", en: "Only on SodaLive!", ja: "SODALIVE限定")
} }
static var freeAudioSectionTitle: String { static var freeAudioSectionTitle: String {
@@ -3222,8 +3222,8 @@ If you block this user, the following features will be restricted.
pick(ko: "인기 크리에이터", en: "Popular creators", ja: "人気クリエイター") pick(ko: "인기 크리에이터", en: "Popular creators", ja: "人気クリエイター")
} }
static var onlyOnVoiceOnSectionTitle: String { static var onlyOnSodaLiveSectionTitle: String {
pick(ko: "오직 보이스온에서만", en: "Only on VoiceOn", ja: "VoiceOnだけで") pick(ko: "오직 소다라이브에서만", en: "Only on SodaLive", ja: "SodaLiveだけで")
} }
static var popularCharacterChatSectionTitle: String { static var popularCharacterChatSectionTitle: String {
@@ -3247,7 +3247,7 @@ If you block this user, the following features will be restricted.
} }
static var weeklyChartSectionTitle: String { static var weeklyChartSectionTitle: String {
pick(ko: "보온 주간 차트", en: "VoiceOn weekly chart", ja: "ボイスオン週間チャート") pick(ko: "보온 주간 차트", en: "SodaLive weekly chart", ja: "ソーダライブ週間チャート")
} }
enum RecommendChannel { enum RecommendChannel {
@@ -4031,9 +4031,9 @@ If you block this user, the following features will be restricted.
enum ApplyAuditionComplete { enum ApplyAuditionComplete {
static var thankYouDescription: String { static var thankYouDescription: String {
pick( pick(
ko: "보이스온 오디션에 지원해 주셔서 감사합니다.", ko: "소다라이브 오디션에 지원해 주셔서 감사합니다.",
en: "Thank you for applying to the VoiceOn audition.", en: "Thank you for applying to the SodaLive audition.",
ja: "VoiceOnオーディションにご応募いただきありがとうございます。" ja: "SodaLiveオーディションにご応募いただきありがとうございます。"
) )
} }
} }
@@ -4343,7 +4343,7 @@ If you block this user, the following features will be restricted.
static var completedSectionTitle: String { pick(ko: "완결 시리즈", en: "Completed series", ja: "完結シリーズ") } static var completedSectionTitle: String { pick(ko: "완결 시리즈", en: "Completed series", ja: "完結シリーズ") }
static var recommendedSectionTitle: String { pick(ko: "추천 시리즈", en: "Recommended series", ja: "おすすめシリーズ") } static var recommendedSectionTitle: String { pick(ko: "추천 시리즈", en: "Recommended series", ja: "おすすめシリーズ") }
static var byDaySectionTitle: String { pick(ko: "요일별 시리즈", en: "Series by day", ja: "曜日別シリーズ") } static var byDaySectionTitle: String { pick(ko: "요일별 시리즈", en: "Series by day", ja: "曜日別シリーズ") }
static var voiceOnOnlyTitle: String { pick(ko: "오직 보이스온에서만", en: "Only on VoiceOn", ja: "VoiceOn限定") } static var sodaLiveOnlyTitle: String { pick(ko: "오직 소다라이브에서만", en: "Only on SodaLive", ja: "SodaLive限定") }
static var allEpisodesListen: String { pick(ko: "전체회차 듣기", en: "Listen to all episodes", ja: "全話を聴く") } static var allEpisodesListen: String { pick(ko: "전체회차 듣기", en: "Listen to all episodes", ja: "全話を聴く") }
static func allEpisodesTitle(_ seriesTitle: String) -> String { pick(ko: "\(seriesTitle) - 전체회차 듣기", en: "\(seriesTitle) - All episodes", ja: "\(seriesTitle) - 全話を聴く") } static func allEpisodesTitle(_ seriesTitle: String) -> String { pick(ko: "\(seriesTitle) - 전체회차 듣기", en: "\(seriesTitle) - All episodes", ja: "\(seriesTitle) - 全話を聴く") }
static var registeredOrder: String { pick(ko: "등록순", en: "Oldest", ja: "登録順") } static var registeredOrder: String { pick(ko: "등록순", en: "Oldest", ja: "登録順") }
@@ -4721,9 +4721,9 @@ If you block this user, the following features will be restricted.
static var noticeTermsReference: String { static var noticeTermsReference: String {
pick( pick(
ko: "자세한 내용은 보이스온 이용약관에서 확인할 수 있습니다.", ko: "자세한 내용은 소다라이브 이용약관에서 확인할 수 있습니다.",
en: "For details, please check the VoiceOn Terms of Service.", en: "For details, please check the SodaLive Terms of Service.",
ja: "詳細はVoiceOn利用規約をご確認ください。" ja: "詳細はSodaLive利用規約をご確認ください。"
) )
} }
@@ -5091,7 +5091,7 @@ If you block this user, the following features will be restricted.
enum ServiceCenter { enum ServiceCenter {
static var buttonTitle: String { static var buttonTitle: String {
pick(ko: "보이스온 고객센터", en: "VoiceOn customer center", ja: "VoiceOnカスタマーセンター") pick(ko: "소다라이브 고객센터", en: "SodaLive customer center", ja: "SodaLiveカスタマーセンター")
} }
static var talkInquiry: String { static var talkInquiry: String {
@@ -5236,7 +5236,7 @@ If you block this user, the following features will be restricted.
} }
static var signUpPrompt: String { static var signUpPrompt: String {
pick(ko: "보이스온 회원이 아닌가요? 지금 가입하세요.", en: "Not a VoiceOn member? Sign up now.", ja: "VoiceOnの会員ではありませんか?今すぐ登録してください。") pick(ko: "소다라이브 회원이 아닌가요? 지금 가입하세요.", en: "Not a SodaLive member? Sign up now.", ja: "SodaLiveの会員ではありませんか?今すぐ登録してください。")
} }
static var appleAuthorizationFailed: String { static var appleAuthorizationFailed: String {

View File

@@ -136,7 +136,7 @@ struct MyPageView: View {
if let url = URL(string: "https://bit.ly/4h7pVks"), if let url = URL(string: "https://bit.ly/4h7pVks"),
UIApplication.shared.canOpenURL(url) { UIApplication.shared.canOpenURL(url) {
// Voice On Banner // SodaLive Banner
Image("img_apply_creator") Image("img_apply_creator")
.resizable() .resizable()
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)
@@ -148,7 +148,7 @@ struct MyPageView: View {
if let url = URL(string: "https://blog.naver.com/sodalive_official"), if let url = URL(string: "https://blog.naver.com/sodalive_official"),
UIApplication.shared.canOpenURL(url) { UIApplication.shared.canOpenURL(url) {
// Voice On Banner // SodaLive Banner
Image("img_introduce_voiceon") Image("img_introduce_voiceon")
.resizable() .resizable()
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)

View File

@@ -49,7 +49,7 @@ struct MainContentView: View {
onTapSeries: onTapSeries, onTapSeries: onTapSeries,
onTapLatestAudioAll: { applyAllTab(type: .audio, sort: .latest) }, onTapLatestAudioAll: { applyAllTab(type: .audio, sort: .latest) },
onTapNewAndHotAll: onTapNewAndHotAll, onTapNewAndHotAll: onTapNewAndHotAll,
onTapVoiceOnOnlyAll: { applyAllTab(type: .original, sort: .latest) }, onTapSodaLiveOnlyAll: { applyAllTab(type: .original, sort: .latest) },
onTapFreeAudioAll: { applyAllTab(type: .free, sort: .popular) }, onTapFreeAudioAll: { applyAllTab(type: .free, sort: .popular) },
onTapPointAudioAll: { applyAllTab(type: .point, sort: .popular) } onTapPointAudioAll: { applyAllTab(type: .point, sort: .popular) }
) )

View File

@@ -6,7 +6,7 @@ struct MainContentRecommendationView: View {
let onTapSeries: (Int) -> Void let onTapSeries: (Int) -> Void
let onTapLatestAudioAll: () -> Void let onTapLatestAudioAll: () -> Void
let onTapNewAndHotAll: () -> Void let onTapNewAndHotAll: () -> Void
let onTapVoiceOnOnlyAll: () -> Void let onTapSodaLiveOnlyAll: () -> Void
let onTapFreeAudioAll: () -> Void let onTapFreeAudioAll: () -> Void
let onTapPointAudioAll: () -> Void let onTapPointAudioAll: () -> Void
@@ -31,9 +31,9 @@ struct MainContentRecommendationView: View {
) )
MainContentVoiceOnOnlySection( MainContentVoiceOnOnlySection(
title: I18n.MainContentRecommendation.voiceOnOnlySectionTitle, title: I18n.MainContentRecommendation.sodaLiveOnlySectionTitle,
items: recommendations.originalSeries, items: recommendations.originalSeries,
action: onTapVoiceOnOnlyAll, action: onTapSodaLiveOnlyAll,
onTapSeries: onTapSeries onTapSeries: onTapSeries
) )

View File

@@ -27,7 +27,7 @@
,아직 팔로우한 크리에이터가 없어요. 관심 있는 크리에이터를 팔로우해 보세요.,"まだフォローしているクリエイターがいません。 ,아직 팔로우한 크리에이터가 없어요. 관심 있는 크리에이터를 팔로우해 보세요.,"まだフォローしているクリエイターがいません。
気になるクリエイターをフォローしてみましょう。",,,, 気になるクリエイターをフォローしてみましょう。",,,,
,찾아보기,探す,,,, ,찾아보기,探す,,,,
,오직 보이스온에서만!,VOICE ON限定,,,, ,오직 소다라이브에서만!,SodaLive限定,,,,
,새로 올라온 오디오,新着オーディオ,,,, ,새로 올라온 오디오,新着オーディオ,,,,
,추천 시리즈,おすすめシリーズ,,,, ,추천 시리즈,おすすめシリーズ,,,,
,무료 오디오,無料オーディオ,,,, ,무료 오디오,無料オーディオ,,,,
1 KR JP
27 아직 팔로우한 크리에이터가 없어요. 관심 있는 크리에이터를 팔로우해 보세요. まだフォローしているクリエイターがいません。 気になるクリエイターをフォローしてみましょう。
28 찾아보기 探す
29 오직 보이스온에서만! 오직 소다라이브에서만! VOICE ON限定 SodaLive限定
30 새로 올라온 오디오 新着オーディオ
31 추천 시리즈 おすすめシリーズ
32 무료 오디오 無料オーディオ
33 포인트 오디오 ポイントオーディオ