48 lines
1.4 KiB
Swift
48 lines
1.4 KiB
Swift
//
|
|
// System.swift
|
|
// Localized
|
|
//
|
|
// Created by david-swift on 28.02.2024.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
/// The type system contains a function for parsing the system language.
|
|
public enum System {
|
|
|
|
/// Remembers the system language after the first request.
|
|
static var systemLanguage: String?
|
|
|
|
/// Get the system language.
|
|
/// - Returns: The system language.
|
|
public static func getLanguage() -> String {
|
|
if systemLanguage == nil {
|
|
#if os(Linux)
|
|
guard let lang = ProcessInfo.processInfo.environment["LANG"] else {
|
|
return "en"
|
|
}
|
|
systemLanguage = lang
|
|
#endif
|
|
#if os(macOS)
|
|
systemLanguage = Locale.preferredLanguages.first
|
|
#endif
|
|
#if os(Windows)
|
|
let process = Process()
|
|
process.executableURL = .init(
|
|
fileURLWithPath: "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
|
|
)
|
|
process.arguments = ["-Command", "[System.Globalization.CultureInfo]::CurrentUICulture.Name"]
|
|
|
|
let pipe = Pipe()
|
|
process.standardOutput = pipe
|
|
try? process.run()
|
|
|
|
let data = pipe.fileHandleForReading.readDataToEndOfFile()
|
|
systemLanguage = .init(data: data, encoding: .utf8)?.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
#endif
|
|
}
|
|
return systemLanguage ?? "en"
|
|
}
|
|
|
|
}
|