From 6713cebf39d036d2b341fdbfa3d85dc52f92a965 Mon Sep 17 00:00:00 2001 From: Play Epik Incorporation Date: Mon, 21 Apr 2025 11:38:34 +0200 Subject: [PATCH] Fixing bugs Fixed bugs for selecting language from dropdown and fallback if is not supported Signed-off-by: Play Epik Incorporation --- StosVPN/ContentView.swift | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/StosVPN/ContentView.swift b/StosVPN/ContentView.swift index 3207967..9891fd2 100644 --- a/StosVPN/ContentView.swift +++ b/StosVPN/ContentView.swift @@ -615,7 +615,7 @@ struct StatItemView: View { // MARK: - Updated SettingsView struct SettingsView: View { @Environment(\.dismiss) private var dismiss - @State private var selectedLanguage = 0 + @AppStorage("selectedLanguage") private var selectedLanguage = Locale.current.languageCode ?? "en" @AppStorage("TunnelDeviceIP") private var deviceIP = "10.7.0.0" @AppStorage("TunnelFakeIP") private var fakeIP = "10.7.0.1" @AppStorage("TunnelSubnetMask") private var subnetMask = "255.255.255.0" @@ -680,11 +680,14 @@ struct SettingsView: View { Section(header: Text("language")) { Picker("language", selection: $selectedLanguage) { - Text("english").tag(0) - Text("spanish").tag(1) - Text("italian").tag(2) + Text("English").tag(0) + Text("Spanish").tag(1) + Text("Italian").tag(2) + } + .onChange(of: selectedLanguage) { newValue in + let languageCode = ["en", "es", "it"][newValue] + LanguageManager().updateLanguage(to: languageCode) } - .pickerStyle(MenuPickerStyle()) } } .navigationTitle(Text("settings")) @@ -967,6 +970,24 @@ struct SetupPageView: View { } } +class LanguageManager: ObservableObject { + @Published var currentLanguage: String = Locale.current.languageCode ?? "en" + + private let supportedLanguages = ["en", "es", "it"] + + func updateLanguage(to languageCode: String) { + if supportedLanguages.contains(languageCode) { + currentLanguage = languageCode + UserDefaults.standard.set([languageCode], forKey: "AppleLanguages") + UserDefaults.standard.synchronize() + } else { + currentLanguage = "en" //FALLBACK TO DEFAULT LANGUAGE + UserDefaults.standard.set(["en"], forKey: "AppleLanguages") + UserDefaults.standard.synchronize() + } + } +} + #Preview { ContentView() }