IceCubesApp/Packages/Models/Sources/Models/Language.swift

23 lines
781 B
Swift
Raw Normal View History

2023-02-01 18:17:03 +00:00
import Foundation
2023-02-24 07:24:51 +00:00
public struct Language: Identifiable, Equatable, Hashable {
public var id: String { isoCode }
2023-02-01 18:17:03 +00:00
2023-02-24 07:24:51 +00:00
public let isoCode: String
public let nativeName: String?
public let localizedName: String?
2023-02-04 16:17:38 +00:00
2023-02-24 07:24:51 +00:00
public static var allAvailableLanguages: [Language] = Locale.LanguageCode.isoLanguageCodes
2023-02-04 16:17:38 +00:00
.filter { $0.identifier.count == 2 }
.map { lang in
let nativeLocale = Locale(languageComponents: Locale.Language.Components(languageCode: lang))
2023-02-24 07:24:51 +00:00
return Language(
2023-02-04 16:17:38 +00:00
isoCode: lang.identifier,
nativeName: nativeLocale.localizedString(forLanguageCode: lang.identifier)?.capitalized,
localizedName: Locale.current.localizedString(forLanguageCode: lang.identifier)?.localizedCapitalized
)
}
2023-02-01 18:17:03 +00:00
}
extension Language: Sendable {}