Files
sodalive-ios/SodaLive/Sources/Settings/Language/Repository/LanguageRepository.swift
Yu Sung 0285f62ecb 언어 설정 화면 추가 및 언어 헤더 적용
설정에서 시스템/한국어/영어/일본어 선택을 지원한다.

선택 시 Accept-Language 헤더와 UI locale을 즉시 반영한다.

언어 변경 후 스플래시를 거쳐 메인으로 소프트 재시작한다.
2025-12-16 22:56:37 +09:00

34 lines
916 B
Swift

//
// LanguageRepository.swift
// SodaLive
//
// Created by Junie (AI) on 2025/12/16.
//
import Foundation
protocol LanguageRepository {
func load() async throws -> LanguageOption?
func save(_ option: LanguageOption) async throws
}
final class UserDefaultsLanguageRepository: LanguageRepository {
private let key = "app.language"
func load() async throws -> LanguageOption? {
try Task.checkCancellation()
return await withCheckedContinuation { cont in
let value = UserDefaults.standard.string(forKey: key)
cont.resume(returning: value.flatMap { LanguageOption(rawValue: $0) })
}
}
func save(_ option: LanguageOption) async throws {
try Task.checkCancellation()
return await withCheckedContinuation { cont in
UserDefaults.standard.set(option.rawValue, forKey: key)
cont.resume()
}
}
}