String Catalog가 적용되지 않는 부분을 I18n 파일에 언어별로 하드코딩 하여 보완
This commit is contained in:
66
SodaLive/Sources/I18n/I18n.swift
Normal file
66
SodaLive/Sources/I18n/I18n.swift
Normal file
@@ -0,0 +1,66 @@
|
||||
//
|
||||
// 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 Common {
|
||||
// 기본 샘플들
|
||||
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 settings: String { pick(ko: "설정", en: "Settings", ja: "設定") }
|
||||
|
||||
static var commonError: String { pick(ko: "다시 시도해 주세요.\n계속 같은 문제가 발생할 경우 고객센터로 문의 주시기 바랍니다.", en: "Settings", 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: "Work", ja: "作品") }
|
||||
static var talk: String { pick(ko: "톡", en: "Talk", ja: "トーク") }
|
||||
}
|
||||
}
|
||||
|
||||
// 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 사용부는 그대로 유지합니다.
|
||||
*/
|
||||
Reference in New Issue
Block a user