IceCubesApp/Packages/Models/Sources/Models/Language.swift
Thomas Ricouard 8a3c971402 Swiftformat
2023-09-16 14:15:03 +02:00

24 lines
804 B
Swift

import Foundation
@MainActor
public struct Language: Identifiable, Equatable, Hashable {
public nonisolated 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 <= 3 }
.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 {}