From 3f7d8952282cedf2db9633b1a9486baf58bcd867 Mon Sep 17 00:00:00 2001 From: Andrea Filice Date: Mon, 21 Apr 2025 19:16:05 +0200 Subject: [PATCH] Fixing bugs --- StosVPN/ContentView.swift | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/StosVPN/ContentView.swift b/StosVPN/ContentView.swift index 3207967..a9b6d05 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() -} +} \ No newline at end of file