From e08d970edd2bb1ab167fda5b0e40a6fcdffc4b3a Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Tue, 9 Jan 2024 19:44:29 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20WIP:=20Load=20preferred?= =?UTF-8?q?=20language=20strings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/Extensions/StringExtension.swift | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/phpmon/Common/Extensions/StringExtension.swift b/phpmon/Common/Extensions/StringExtension.swift index 1cf0061..27b24e2 100644 --- a/phpmon/Common/Extensions/StringExtension.swift +++ b/phpmon/Common/Extensions/StringExtension.swift @@ -8,6 +8,18 @@ import Foundation import SwiftUI struct Localization { + static var preferredLanguage: String? { + guard let language = Preferences.preferences[.languageOverride] as? String else { + return nil + } + + if language.isEmpty { + return nil + } + + return language + } + static var bundle: Bundle = { if !isRunningTests { return Bundle.main @@ -32,7 +44,15 @@ struct Localization { extension String { var localized: String { - let string = NSLocalizedString(self, tableName: nil, bundle: Localization.bundle, value: "", comment: "") + var preferredBundle: Bundle = Localization.bundle + + if let preferred = Localization.preferredLanguage, + let path = Localization.bundle.path(forResource: preferred, ofType: "lproj"), + let bundle = Bundle(path: path) { + preferredBundle = bundle + } + + let string = NSLocalizedString(self, tableName: nil, bundle: preferredBundle, value: "", comment: "") // Fallback to English translation if the localized value is equal to the key (should not happen) if string == self {