Files
KissMe/KissMeConsole/Sources/LocalContext.swift
2023-06-10 13:21:51 +09:00

56 lines
1.3 KiB
Swift

//
// LocalContext.swift
// KissMeConsole
//
// Created by ened-book-m1 on 2023/06/10.
//
import Foundation
import KissMe
struct LocalName: Codable, PropertyIterable, ArrayDecodable {
let fieldName: String
let localizedName: String
init(array: [String]) throws {
guard array.count == 2 else {
throw GeneralError.incorrectArrayItems
}
fieldName = array[0]
localizedName = array[1]
}
}
struct LocalContext {
static var shared = LocalContext()
lazy var localNamesDic: [String: LocalName] = {
do {
let names = try [LocalName].readCsv(fromFile: KissConsole.localNamesUrl)
var nameDic = [String: LocalName]()
for name in names {
nameDic[name.fieldName] = name
if name.localizedName.isEmpty {
assertionFailure("Cannot load \(KissConsole.localNamesUrl.path) - no localized name for \(name.fieldName)")
}
}
return nameDic
} catch {
print(error)
assertionFailure("Cannot load \(KissConsole.localNamesUrl.path)")
return [:]
}
}()
}
func localizeString(_ str: String) -> String {
return LocalContext.shared.localNamesDic[str]?.localizedName ?? str
}
enum OnOff: String {
case on
case off
}