From 6d6bbf26712060f2aca484792eb40e825a634923 Mon Sep 17 00:00:00 2001 From: Benedek Kozma Date: Wed, 21 May 2025 18:14:47 +0200 Subject: [PATCH] Use the LANG environment variable on Linux --- .../Locale/Locale_Cache.swift | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Sources/FoundationEssentials/Locale/Locale_Cache.swift b/Sources/FoundationEssentials/Locale/Locale_Cache.swift index 004ac1ae8..62db5e693 100644 --- a/Sources/FoundationEssentials/Locale/Locale_Cache.swift +++ b/Sources/FoundationEssentials/Locale/Locale_Cache.swift @@ -287,6 +287,30 @@ struct LocaleCache : Sendable, ~Copyable { } return preferredLocaleID } +#elseif os(Linux) + func preferences() -> (LocalePreferences, Bool) { + var prefs = LocalePreferences() + // TODO: Fill other preference values from LC_* and LANGUAGE variables: https://github.com/swiftlang/swift-foundation/issues/717 + if let lang = ProcessInfo.processInfo.environment["LANG"], + !lang.isEmpty + { + prefs.locale = lang + prefs.languages = [fixed(lang).languageCode ?? "en-001"] + } else { + prefs.locale = "en_001" + prefs.languages = ["en-001"] + } + return (prefs, true) + } + + func preferredLanguages(forCurrentUser: Bool) -> [String] { + // TODO: Override with LANGUAGE variable: https://github.com/swiftlang/swift-foundation/issues/717 + [Locale.canonicalLanguageIdentifier(from: current.languageCode ?? "en-001")] + } + + func preferredLocale() -> String? { + current.identifier + } #else func preferences() -> (LocalePreferences, Bool) { var prefs = LocalePreferences()