49 lines
958 B
Swift
49 lines
958 B
Swift
import Foundation
|
|
import SwiftUI
|
|
|
|
/// A simple container for localized text
|
|
|
|
final class LocalizedText: ObservableObject {
|
|
|
|
@Published
|
|
var en: String
|
|
|
|
@Published
|
|
var de: String
|
|
|
|
init(en: String, de: String) {
|
|
self.en = en
|
|
self.de = de
|
|
}
|
|
|
|
var id: String {
|
|
en
|
|
}
|
|
|
|
func set(text: String, for language: ContentLanguage) {
|
|
switch language {
|
|
case .english: self.en = text
|
|
case .german: self.de = text
|
|
}
|
|
}
|
|
|
|
func getText(for language: ContentLanguage) -> String {
|
|
switch language {
|
|
case .english: return en
|
|
case .german: return de
|
|
}
|
|
}
|
|
|
|
@MainActor
|
|
func text(for language: ContentLanguage) -> Binding<String> {
|
|
Binding(
|
|
get: {
|
|
self.getText(for: language)
|
|
},
|
|
set: { newValue in
|
|
self.set(text: newValue, for: language)
|
|
}
|
|
)
|
|
}
|
|
}
|