From f06d89423183c31439d4ad77f0cb86fbcc0f0fd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karan=20Mi=C5=9Bra?= Date: Fri, 23 May 2025 09:09:14 -0700 Subject: [PATCH] Introduce preferredLocales API --- Sources/FoundationEssentials/Locale/Locale.swift | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Sources/FoundationEssentials/Locale/Locale.swift b/Sources/FoundationEssentials/Locale/Locale.swift index 3eb780564..3c0620674 100644 --- a/Sources/FoundationEssentials/Locale/Locale.swift +++ b/Sources/FoundationEssentials/Locale/Locale.swift @@ -554,15 +554,24 @@ public struct Locale : Hashable, Equatable, Sendable { // MARK: - // - /// Returns a list of the user's preferred languages. + /// Returns a list of the user's preferred languages, as specified in Language & Region settings, taking into account any per-app language overrides. /// /// - note: `Bundle` is responsible for determining the language that your application will run in, based on the result of this API and combined with the languages your application supports. /// - seealso: `Bundle.preferredLocalizations(from:)` /// - seealso: `Bundle.preferredLocalizations(from:forPreferences:)` + /// - seealso: `Locale.preferredLocales` public static var preferredLanguages: [String] { LocaleCache.cache.preferredLanguages(forCurrentUser: false) } + /// Returns a list of the user’s preferred locales, as specified in Language & Region settings, taking into account any per-app language overrides. + @available(FoundationPreview 6.2, *) + public static var preferredLocales: [Locale] { + return self.preferredLanguages.compactMap { + Locale(identifier: $0) + } + } + private static let languageCodeKey = "kCFLocaleLanguageCodeKey" private static let scriptCodeKey = "kCFLocaleScriptCodeKey" private static let countryCodeKey = "kCFLocaleCountryCodeKey"