IceCubesApp/Packages/Models/Sources/Models/Language.swift
2023-02-27 06:39:07 +01:00

23 lines
781 B
Swift

import Foundation
public struct Language: Identifiable, Equatable, Hashable {
public var id: String { isoCode }
public let isoCode: String
public let nativeName: String?
public let localizedName: String?
public static var allAvailableLanguages: [Language] = Locale.LanguageCode.isoLanguageCodes
.filter { $0.identifier.count == 2 }
.map { lang in
let nativeLocale = Locale(languageComponents: Locale.Language.Components(languageCode: lang))
return Language(
isoCode: lang.identifier,
nativeName: nativeLocale.localizedString(forLanguageCode: lang.identifier)?.capitalized,
localizedName: Locale.current.localizedString(forLanguageCode: lang.identifier)?.localizedCapitalized
)
}
}
extension Language: Sendable {}