71 lines
2.0 KiB
Swift
71 lines
2.0 KiB
Swift
import Foundation
|
|
|
|
enum RecognitionLanguage: String, CaseIterable {
|
|
case chineseSimplified = "zh-CN"
|
|
case english = "en-US"
|
|
case chineseTraditional = "zh-TW"
|
|
case japanese = "ja-JP"
|
|
case korean = "ko-KR"
|
|
|
|
var displayName: String {
|
|
switch self {
|
|
case .chineseSimplified: return "简体中文"
|
|
case .english: return "English"
|
|
case .chineseTraditional: return "繁體中文"
|
|
case .japanese: return "日本語"
|
|
case .korean: return "한국어"
|
|
}
|
|
}
|
|
}
|
|
|
|
struct Config {
|
|
static var shared = Config()
|
|
|
|
private let defaults = UserDefaults.standard
|
|
|
|
private enum Keys {
|
|
static let language = "recognition_language"
|
|
static let llmEnabled = "llm_enabled"
|
|
static let llmBaseURL = "llm_base_url"
|
|
static let llmAPIKey = "llm_api_key"
|
|
static let llmModel = "llm_model"
|
|
}
|
|
|
|
var language: RecognitionLanguage {
|
|
get {
|
|
guard let raw = defaults.string(forKey: Keys.language),
|
|
let lang = RecognitionLanguage(rawValue: raw) else {
|
|
return .chineseSimplified
|
|
}
|
|
return lang
|
|
}
|
|
set {
|
|
defaults.set(newValue.rawValue, forKey: Keys.language)
|
|
}
|
|
}
|
|
|
|
var llmEnabled: Bool {
|
|
get { defaults.bool(forKey: Keys.llmEnabled) }
|
|
set { defaults.set(newValue, forKey: Keys.llmEnabled) }
|
|
}
|
|
|
|
var llmBaseURL: String {
|
|
get { defaults.string(forKey: Keys.llmBaseURL) ?? "" }
|
|
set { defaults.set(newValue, forKey: Keys.llmBaseURL) }
|
|
}
|
|
|
|
var llmAPIKey: String {
|
|
get { defaults.string(forKey: Keys.llmAPIKey) ?? "" }
|
|
set { defaults.set(newValue, forKey: Keys.llmAPIKey) }
|
|
}
|
|
|
|
var llmModel: String {
|
|
get { defaults.string(forKey: Keys.llmModel) ?? "" }
|
|
set { defaults.set(newValue, forKey: Keys.llmModel) }
|
|
}
|
|
|
|
var isLLMConfigured: Bool {
|
|
!llmBaseURL.isEmpty && !llmAPIKey.isEmpty && !llmModel.isEmpty
|
|
}
|
|
}
|