Files
sodalive-ios/SodaLive/Sources/I18n/I18n.swift
Yu Sung 0ddb5810b1 프로필 수정 화면 문자열 다국어 적용
마이페이지 프로필 수정에서 소셜 링크와 비밀번호 안내 문구를\n다국어로 제공한다.
2025-12-19 19:59:27 +09:00

550 lines
30 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// I18n.swift
// SodaLive
//
// Created by Junie (AI) on 2025/12/17.
//
import Foundation
// MARK: - I18n
// String Catalog i18n.
// LanguageHeaderProvider.current("ko"|"en"|"ja").
enum I18n {
//
enum Search {
// : 2
static var placeholderMin2: String {
pick(
ko: "검색어를 2글자 이상 입력하세요",
en: "Enter at least 2 characters",
ja: "2文字以上で入力してください"
)
}
}
enum ContentDetail {
static var creatorOtherContents: String {
pick(
ko: "크리에이터의 다른 콘텐츠",
en: "More from this creator",
ja: "このクリエイターの他のコンテンツ"
)
}
static var themeOtherContents: String {
pick(
ko: "테마의 다른 콘텐츠",
en: "More in this theme",
ja: "このテーマの他のコンテンツ"
)
}
}
enum Time {
static var justNow: String {
pick(ko: "방금 전", en: "Just now", ja: "たった今")
}
static func minutesAgo(_ minutes: Int) -> String {
pick(
ko: "\(minutes)분 전",
en: "\(minutes) minute\(minutes == 1 ? "" : "s") ago",
ja: "\(minutes)分前"
)
}
static func hoursAgo(_ hours: Int) -> String {
pick(
ko: "\(hours)시간 전",
en: "\(hours) hour\(hours == 1 ? "" : "s") ago",
ja: "\(hours)時間前"
)
}
static func daysAgo(_ days: Int) -> String {
pick(
ko: "\(days)일 전",
en: "\(days) day\(days == 1 ? "" : "s") ago",
ja: "\(days)日前"
)
}
static func monthsAgo(_ months: Int) -> String {
pick(
ko: "\(months)개월 전",
en: "\(months) month\(months == 1 ? "" : "s") ago",
ja: "\(months)か月前"
)
}
static func yearsAgo(_ years: Int) -> String {
pick(
ko: "\(years)년 전",
en: "\(years) year\(years == 1 ? "" : "s") ago",
ja: "\(years)年前"
)
}
}
enum Common {
static var viewAll: String { pick(ko: "전체보기", en: "View all", ja: "すべて見る") }
//
static var apply: String { pick(ko: "적용", en: "Apply", ja: "適用") }
static var confirm: String { pick(ko: "확인", en: "Confirm", ja: "確認") }
static var cancel: String { pick(ko: "취소", en: "Cancel", ja: "キャンセル") }
// /
static var delete: String { pick(ko: "삭제", en: "Delete", ja: "削除") }
//
static var settings: String { pick(ko: "설정", en: "Settings", ja: "設定") }
static var commonError: String { pick(ko: "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다.", en: "Please try again.\nIf the problem persists, please 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") }
static var roulette3: String { pick(ko: "룰렛 3", en: "Roulette 3", ja: "ルーレット3") }
static var confirmDeleteQuestion: String { pick(ko: "삭제하시겠습니까?", en: "Are you sure you want to delete?", ja: "削除しますか?") }
static var followers: String { pick(ko: "팔로워", en: "Followers", ja: "フォロワー") }
static var latestContent: String { pick(ko: "최신 콘텐츠", en: "Latest content", ja: "最新コンテンツ") }
static var openScheduled: String { pick(ko: "오픈예정", en: "Scheduled to open", ja: "オープン予定") }
static var points: String { pick(ko: "포인트", en: "Points", ja: "ポイント") }
}
// /
enum CanCoupon {
//
static var title: String {
pick(ko: "쿠폰등록", en: "Register coupon", ja: "クーポン登録")
}
//
static var inputTitle: String {
pick(ko: "쿠폰번호 입력", en: "Enter coupon code", ja: "クーポン番号入力")
}
static var inputPlaceholder: String {
pick(
ko: "쿠폰번호를 입력하세요",
en: "Enter coupon code",
ja: "クーポン番号を入力してください"
)
}
//
static var submit: String {
pick(ko: "등록하기", en: "Register", ja: "登録する")
}
//
static var guideHeader: String {
pick(ko: "[등록 및 사용안내]", en: "[Registration and usage]", ja: "[登録および利用案内]")
}
static var cautionHeader: String {
pick(ko: "[주의사항]", en: "[Notes]", ja: "[注意事項]")
}
//
static var guide1: String {
pick(
ko: "공백없이 쿠폰번호 12자리를 입력해주세요.",
en: "Enter 12 characters without spaces.",
ja: "スペースなしで12桁のクーポン番号を入力してください。"
)
}
static var guide2: String {
pick(
ko: "충전된 캔 또는 포인트는 해당 충전현황에서 확인할 수 있습니다",
en: "You can check charged cans or points in the charge status.",
ja: "チャージされた缶またはポイントはチャージ状況で確認できます。"
)
}
static var guide3: String {
pick(
ko: "쿠폰으로 충전된 캔은 사용 전까지 소멸되지 않으며, 포인트는 충전 후 72시간 이내에 사용하지 않으면 자동 소멸됩니다.",
en: "Cans charged by coupon do not expire before use. Points expire automatically if not used within 72 hours after charging.",
ja: "クーポンでチャージした缶は使用前に失効しません。ポイントはチャージ後72時間以内に使用しないと自動的に失効します。"
)
}
//
static var caution1: String {
pick(
ko: "이벤트 쿠폰을 통해 충전한 캔이나 포인트는 환불되지 않습니다.",
en: "Cans or points charged via event coupons are non-refundable.",
ja: "イベントクーポンでチャージした缶やポイントは返金できません。"
)
}
static var caution2: String {
pick(
ko: "쿠폰은 상업적 용도로 사용하거나 매매할 수 없습니다.",
en: "Coupons may not be used for commercial purposes or traded.",
ja: "クーポンを商用目的で使用したり売買したりすることはできません。"
)
}
static var caution3: String {
pick(
ko: "한번 등록한 쿠폰은 재사용이 불가합니다.",
en: "A coupon cant be used again once registered.",
ja: "一度登録したクーポンは再使用できません。"
)
}
static var caution4: String {
pick(
ko: "연령 제한 정책에 따라 쿠폰이용은 본인인증한 회원만 이용 가능합니다.",
en: "Due to age policy, only verified members can use coupons.",
ja: "年齢制限ポリシーにより、本人確認済みの会員のみクーポンを利用できます。"
)
}
static var contactHelp: String {
pick(
ko: "※ 쿠폰 등록 및 이용에 문제가 발생한 경우 '고객센터'로 문의주시기 바랍니다.",
en: "※ If you have issues with coupon registration or use, please contact Customer Service.",
ja: "※ クーポンの登録・利用に問題が発生した場合は『カスタマーセンター』までお問い合わせください。"
)
}
// /
static var useCompleted: String {
pick(
ko: "쿠폰 사용이 완료되었습니다.",
en: "Coupon use completed.",
ja: "クーポンの使用が完了しました。"
)
}
}
enum MissionMenu {
static var menu1: String { pick(ko: "메뉴 1", en: "Menu 1", ja: "メニュー1") }
static var menu2: String { pick(ko: "메뉴 2", en: "Menu 2", ja: "メニュー2") }
static var menu3: String { pick(ko: "메뉴 3", en: "Menu 3", ja: "メニュー3") }
static var needMenu1First: String { pick(ko: "메뉴 1을 먼저 설정하세요", en: "Please set Menu 1 first", ja: "まずメニュー1を設定してください") }
static var needMenu1And2First: String { pick(ko: "메뉴 1과 메뉴 2를 먼저 설정하세요", en: "Please set Menu 1 and Menu 2 first", ja: "まずメニュー1とメニュー2を設定してください") }
}
enum CreateLive {
//
static var noticePlaceholder: String {
pick(ko: "라이브 공지를 입력하세요", en: "Enter live notice", ja: "ライブのお知らせを入力してください")
}
//
static var startNow: String { pick(ko: "지금 즉시", en: "Start now", ja: "今すぐ開始") }
static var schedule: String { pick(ko: "예약 설정", en: "Schedule", ja: "予約設定") }
//
static var publicRoom: String { pick(ko: "공개", en: "Public", ja: "公開") }
static var privateRoom: String { pick(ko: "비공개", en: "Private", ja: "非公開") }
//
static var joinAllowed: String { pick(ko: "가능", en: "Allowed", ja: "可能") }
static var joinNotAllowed: String { pick(ko: "불가능", en: "Not allowed", ja: "不可") }
//
static var allAges: String { pick(ko: "전체 연령", en: "All ages", ja: "全年齢") }
static var over19: String { pick(ko: "19세 이상", en: "19+", ja: "19歳以上") }
// /
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 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 selectCoverImage: String { pick(ko: "커버이미지를 선택해주세요.", en: "Please select a cover image.", ja: "カバー画像を選択してください。") }
static var enterTitle: String { pick(ko: "제목을 입력해 주세요.", en: "Please enter a title.", ja: "タイトルを入力してください。") }
static var enterNoticeMin5: String { pick(ko: "공지를 5자 이상 입력해주세요.", en: "Please enter at least 5 characters for the notice.", ja: "お知らせは5文字以上で入力してください。") }
static var enterPeopleRange: String { pick(ko: "인원을 3~999명 사이로 입력해주세요.", en: "Please enter the number of people between 3 and 999.", ja: "参加人数は3〜999の範囲で入力してください。") }
static var enterPassword6: String { pick(ko: "방 입장 비밀번호 6자리를 입력해 주세요.", en: "Please enter a 6-digit room entry password.", ja: "入室パスワード6桁を入力してください。") }
}
enum CreateContent {
static var selectFile: String { pick(ko: "파일 선택", en: "Select file", ja: "ファイル選択") }
static var selectTheme: String { pick(ko: "테마 선택", en: "Select theme", ja: "テーマを選択") }
static var uploadContentDescriptionHint: String { pick(ko: "내용을 입력하세요", en: "Enter a description", ja: "内容を入力してください") }
// /
static var free: String { pick(ko: "무료", en: "Free", ja: "無料") }
static var paid: String { pick(ko: "유료", en: "Paid", ja: "有料") }
static var purchaseBoth: String { pick(ko: "소장/대여", en: "Buy/Rent", ja: "購入/レンタル") }
static var purchaseBuyOnly: String { pick(ko: "소장만", en: "Buy only", ja: "購入のみ") }
static var purchaseRentOnly: String { pick(ko: "대여만", en: "Rent only", ja: "レンタルのみ") }
static var unlimited: String { pick(ko: "무제한", en: "Unlimited", ja: "無制限") }
static var limitedEdition: String { pick(ko: "한정판", en: "Limited", ja: "限定版") }
//
static var available: String { pick(ko: "가능", en: "Available", ja: "可能") }
static var unavailable: String { pick(ko: "불가능", en: "Unavailable", ja: "不可") }
//
static var generate: String { pick(ko: "생성", en: "Generate", ja: "生成") }
static var doNotGenerate: String { pick(ko: "생성 안 함", en: "Do not generate", ja: "生成しない") }
//
static var allAges: String { pick(ko: "전체 연령", en: "All ages", ja: "全年齢") }
static var over19: String { pick(ko: "19세 이상", en: "19+", ja: "19歳以上") }
//
static var commentAllowed: String { pick(ko: "댓글 가능", en: "Comments allowed", ja: "コメント可") }
static var commentNotAllowed: String { pick(ko: "댓글 불가", en: "Comments not allowed", ja: "コメント不可") }
//
static var publishNow: String { pick(ko: "지금 공개", en: "Publish now", ja: "今すぐ公開") }
static var publishReserved: String { pick(ko: "예약 공개", en: "Scheduled", ja: "予約公開") }
}
enum Category {
static var all: String { pick(ko: "전체", en: "All", ja: "すべて") }
}
enum RankingSort {
// /
static var revenue: String { pick(ko: "매출", en: "Revenue", ja: "売上高") }
static var salesVolume: String { pick(ko: "판매량", en: "Sales", ja: "販売量") }
static var comments: String { pick(ko: "댓글", en: "Comments", ja: "コメント") }
static var likes: String { pick(ko: "좋아요", en: "Likes", ja: "いいね") }
}
enum Tab {
// /
static var character: String { pick(ko: "캐릭터", en: "Character", ja: "キャラクター") }
static var work: String { pick(ko: "작품별", en: "Works", ja: "作品別") }
static var talk: String { pick(ko: "", en: "Talk", ja: "トーク") }
static var workInfo: String { pick(ko: "작품정보", en: "Work info", ja: "作品情報") }
static var detail: String { pick(ko: "상세", en: "Details", ja: "詳細") }
static var gallery: String { pick(ko: "갤러리", en: "Gallery", ja: "ギャラリー") }
}
enum MemberChannel {
//
static var all: String { pick(ko: "모두 알림", en: "All notifications", ja: "すべて通知") }
static var none: String { pick(ko: "알림 없음", en: "No notifications", ja: "通知なし") }
static var unfollow: String { pick(ko: "팔로우 취소", en: "Unfollow", ja: "フォロー解除") }
static var liveOnNow: String { pick(ko: "현재 라이브 중입니다.", en: "Live is currently ongoing.", ja: "現在ライブ配信中です。") }
static var cannotReserveOwnLive: String { pick(ko: "내가 만든 라이브는 예약할 수 없습니다.", en: "You cannot reserve your own live.", ja: "自分が作成したライブは予約できません。") }
static var enterLiveFailed: String { pick(ko: "라이브에 입장하지 못했습니다.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다.", en: "Could not enter the live.\nIf the problem persists, please contact customer support.", ja: "ライブに入室できませんでした。\n問題が続く場合はカスタマーサポートにお問い合わせください。") }
static var fetchLiveInfoFailed: String { pick(ko: "라이브 정보를 가져오지 못했습니다.\n다시 시도해 주세요.", en: "Failed to fetch live information.\nPlease try again.", ja: "ライブ情報を取得できませんでした。\nもう一度お試しください。") }
static var userBlocked: String { pick(ko: "차단하였습니다.", en: "User has been blocked.", ja: "ブロックしました。") }
static var userUnblocked: String { pick(ko: "차단이 해제 되었습니다.", en: "User has been unblocked.", ja: "ブロックを解除しました。") }
static var shareLinkCreateFailed: String { pick(ko: "공유링크를 생성하지 못했습니다.\n다시 시도해 주세요.", en: "Failed to create a share link.\nPlease try again.", ja: "共有リンクを作成できませんでした。\nもう一度お試しください。") }
static var cheersDeleteTitle: String { pick(ko: "응원글 삭제", en: "Delete Cheer", ja: "応援メッセージを削除") }
static var liveHeader: String { pick(ko: "라이브", en: "Live", ja: "ライブ") }
static var rouletteSettings: String { pick(ko: "룰렛 설정", en: "Roulette settings", ja: "ルーレット設定") }
static var menuSettings: String { pick(ko: "메뉴 설정", en: "Menu settings", ja: "メニュー設定") }
static var communityHeader: String { pick(ko: "커뮤니티", en: "Community", ja: "コミュニティ") }
static var followersList: String { pick(ko: "팔로워 리스트", en: "Followers list", ja: "フォロワーリスト") }
static var followerCount: (Int) -> String = { count in
pick(ko: "팔로워 \(count)", en: "\(count) followers", ja: "フォロワー\(count)")
}
static func channelTitle(_ nickname: String) -> String {
pick(ko: "\(nickname)님의 채널", en: "\(nickname)'s channel", ja: "\(nickname)のチャンネル")
}
static func shareChannelMessage(_ nickname: String) -> String {
pick(ko: "보이스온 \(nickname)님의 채널입니다.", en: "This is \(nickname)'s channel on VoiceOn.", ja: "ボイスオンの\(nickname)さんのチャンネルです。")
}
static func reserveWithCansTitle(_ price: Int) -> String {
pick(ko: "\(price)캔으로 예약", en: "Reserve with \(price) cans", ja: "\(price)缶で予約")
}
static func reservePaymentDesc(_ title: String) -> String {
pick(ko: "'\(title)' 라이브에 참여하기 위해 결제합니다.", en: "Payment is required to join '\(title)' live.", ja: "\(title)』ライブに参加するには決済が必要です。")
}
static var reservePaymentConfirmTitle: String { pick(ko: "결제 후 예약하기", en: "Pay and reserve", ja: "決済して予約") }
static var paidLiveEnterTitle: String { pick(ko: "유료 라이브 입장", en: "Enter paid live", ja: "有料ライブに入場") }
static func paidLiveEnterDesc(_ price: Int) -> String {
pick(ko: "\(price)캔을 차감하고\n라이브에 입장 하시겠습니까?", en: "\(price) cans will be used.\nDo you want to enter the live?", ja: "\(price)缶が消費されます。\nライブに入場しますか?")
}
static var paidLiveConfirmTitle: String { pick(ko: "결제 후 참여하기", en: "Pay and join", ja: "決済して参加") }
static func elapsedLiveWarning(hours: Int, minutes: Int) -> String {
pick(
ko: "라이브를 시작한 지 \(hours)시간 \(minutes)분이 지났습니다. 라이브에 입장 후 30분 이내에 라이브가 종료될 수도 있습니다.",
en: "It has been \(hours) hour(s) and \(minutes) minute(s) since the live started. The live may end within 30 minutes after you enter.",
ja: "ライブ開始から\(hours)時間\(minutes)分が経過しています。入場後30分以内に終了する場合があります。"
)
}
}
enum Series {
static var new: String { pick(ko: "신작", en: "New", ja: "新作") }
static var complete: String { pick(ko: "완결", en: "Completed", ja: "完結") }
static var popular: String { pick(ko: "인기", en: "Popular", ja: "人気") }
static var totalEpisodes: (Int) -> String = { count in
pick(ko: "\(count)", en: "Total \(count) episodes", ja: "\(count)")
}
// ( )
static func viewAllByCreator(_ nickname: String) -> String {
pick(
ko: "\(nickname) 님의 시리즈 전체보기",
en: "All series by \(nickname)",
ja: "\(nickname) さんのシリーズ一覧"
)
}
}
//
enum SeriesDetail {
//
static var home: String { pick(ko: "", en: "Home", ja: "ホーム") }
static var introduction: String { pick(ko: "작품소개", en: "Introduction", ja: "作品紹介") }
//
static var keywords: String { pick(ko: "키워드", en: "Keywords", ja: "キーワード") }
static var workIntro: String { pick(ko: "작품소개", en: "Introduction", ja: "作品紹介") }
static var details: String { pick(ko: "상세정보", en: "Details", ja: "詳細情報") }
static var price: String { pick(ko: "가격", en: "Price", ja: "価格") }
//
static var genre: String { pick(ko: "장르", en: "Genre", ja: "ジャンル") }
static var ageLimit: String { pick(ko: "연령제한", en: "Age rating", ja: "年齢制限") }
static var writer: String { pick(ko: "작가", en: "Writer", ja: "作家") }
static var studio: String { pick(ko: "제작사", en: "Studio", ja: "制作会社") }
static var schedule: String { pick(ko: "연재", en: "Schedule", ja: "連載") }
static var releaseDate: String { pick(ko: "출시일", en: "Release date", ja: "リリース日") }
// ()
static var rentLabel: String { pick(ko: "대여", en: "Rent", ja: "レンタル") }
static var buyLabel: String { pick(ko: "소장", en: "Buy", ja: "購入") }
//
static var ageAll: String { pick(ko: "전체연령가", en: "All ages", ja: "全年齢") }
static var age19Plus: String { pick(ko: "19세 이상", en: "19+", ja: "19歳以上") }
static var random: String { pick(ko: "랜덤", en: "Random", ja: "ランダム") }
//
static func cansUnit(_ value: Int) -> String {
pick(ko: "\(value)", en: "\(value) cans", ja: "\(value)")
}
static func daysSuffix(_ days: Int) -> String {
pick(ko: "(\(days)일)", en: "(\(days) day\(days == 1 ? "" : "s"))", ja: "(\(days)日)")
}
// : min==max==0 -> , min==max>0 -> N, -> (|min) ~ max
static func priceInfo(min: Int, max: Int) -> String {
if min == max {
if max == 0 {
return CreateContent.free
} else {
return cansUnit(max)
}
} else {
let left = (min == 0) ? CreateContent.free : "\(min)"
//
return "\(left) ~ \(cansUnit(max))"
}
}
}
//
enum SeriesMain {
// : SeriesDetail.home
static var home: String { SeriesDetail.home }
static var dayOfWeek: String { pick(ko: "요일별", en: "By day", ja: "曜日別") }
static var byGenre: String { pick(ko: "장르별", en: "By genre", ja: "ジャンル別") }
}
// /
enum Purchase {
static var rent: String { pick(ko: "대여하기", en: "Rent", ja: "レンタルする") }
static var buy: String { pick(ko: "소장하기", en: "Buy", ja: "購入する") }
static var purchase: String { pick(ko: "구매하기", en: "Purchase", ja: "購入する") }
}
// >
enum ProfileUpdate {
//
static var instagram: String { pick(ko: "인스타그램", en: "Instagram", ja: "インスタグラム") }
static var youtube: String { pick(ko: "유튜브", en: "YouTube", ja: "YouTube") }
static var website: String { pick(ko: "웹사이트", en: "Website", ja: "ウェブサイト") }
static var blog: String { pick(ko: "블로그", en: "Blog", ja: "ブログ") }
//
static var instagramUrlPlaceholder: String {
pick(ko: "인스타그램 URL", en: "Instagram URL", ja: "インスタグラムURL")
}
static var youtubeUrlPlaceholder: String {
pick(ko: "유튜브 URL", en: "YouTube URL", ja: "YouTubeのURL")
}
static var websiteUrlPlaceholder: String {
pick(ko: "웹사이트 URL", en: "Website URL", ja: "ウェブサイトのURL")
}
static var blogUrlPlaceholder: String {
pick(ko: "블로그 URL", en: "Blog URL", ja: "ブログのURL")
}
//
static var introductionPlaceholder: String {
pick(ko: "소개글을 입력하세요", en: "Enter your introduction", ja: "自己紹介を入力してください")
}
// / /
static var profileUpdated: String {
pick(ko: "프로필이 변경되었습니다.", en: "Profile has been updated.", ja: "プロフィールが更新されました。")
}
static var passwordCurrentRequired: String {
pick(ko: "현재 비밀번호를 입력하세요.", en: "Please enter your current password.", ja: "現在のパスワードを入力してください。")
}
static var passwordNewRequired: String {
pick(ko: "변경할 비밀번호를 입력하세요.", en: "Please enter a new password.", ja: "新しいパスワードを入力してください。")
}
static var passwordNotMatch: String {
pick(ko: "비밀번호가 일치하지 않습니다.", en: "Passwords do not match.", ja: "パスワードが一致しません。")
}
static var passwordRuleHint: String {
pick(ko: "영문, 숫자 포함 8자 이상의 비밀번호를 입력해 주세요.", en: "Enter a password of at least 8 characters with letters and numbers.", ja: "英字と数字を含む8文字以上のパスワードを入力してください。")
}
static var passwordUpdated: String {
pick(ko: "비밀번호가 변경되었습니다.", en: "Password has been changed.", ja: "パスワードが変更されました。")
}
static var profileImageUpdateFailed: String {
pick(
ko: "프로필 이미지를 업데이트 하지 못했습니다.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다.",
en: "Could not update the profile image.\nIf the problem persists, please contact customer support.",
ja: "プロフィール画像を更新できませんでした。\n問題が続く場合はカスタマーサポートにお問い合わせください。"
)
}
}
}
// MARK: -
@inline(__always)
private func pick(ko: String, en: String, ja: String) -> String {
switch LanguageHeaderProvider.current {
case "ko": return ko
case "ja": return ja
default: return en
}
}
/*
(ViewModel, Service Text ):
// ViewModel
let title = I18n.Common.all
// View (Text UI )
let menuLabel = I18n.Common.settings
: Text("...") String Catalog .
*/