Skip to content

Commit 6713ceb

Browse files
Fixing bugs
Fixed bugs for selecting language from dropdown and fallback if is not supported Signed-off-by: Play Epik Incorporation <[email protected]>
1 parent 83e7c2b commit 6713ceb

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

StosVPN/ContentView.swift

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ struct StatItemView: View {
615615
// MARK: - Updated SettingsView
616616
struct SettingsView: View {
617617
@Environment(\.dismiss) private var dismiss
618-
@State private var selectedLanguage = 0
618+
@AppStorage("selectedLanguage") private var selectedLanguage = Locale.current.languageCode ?? "en"
619619
@AppStorage("TunnelDeviceIP") private var deviceIP = "10.7.0.0"
620620
@AppStorage("TunnelFakeIP") private var fakeIP = "10.7.0.1"
621621
@AppStorage("TunnelSubnetMask") private var subnetMask = "255.255.255.0"
@@ -680,11 +680,14 @@ struct SettingsView: View {
680680

681681
Section(header: Text("language")) {
682682
Picker("language", selection: $selectedLanguage) {
683-
Text("english").tag(0)
684-
Text("spanish").tag(1)
685-
Text("italian").tag(2)
683+
Text("English").tag(0)
684+
Text("Spanish").tag(1)
685+
Text("Italian").tag(2)
686+
}
687+
.onChange(of: selectedLanguage) { newValue in
688+
let languageCode = ["en", "es", "it"][newValue]
689+
LanguageManager().updateLanguage(to: languageCode)
686690
}
687-
.pickerStyle(MenuPickerStyle())
688691
}
689692
}
690693
.navigationTitle(Text("settings"))
@@ -967,6 +970,24 @@ struct SetupPageView: View {
967970
}
968971
}
969972

973+
class LanguageManager: ObservableObject {
974+
@Published var currentLanguage: String = Locale.current.languageCode ?? "en"
975+
976+
private let supportedLanguages = ["en", "es", "it"]
977+
978+
func updateLanguage(to languageCode: String) {
979+
if supportedLanguages.contains(languageCode) {
980+
currentLanguage = languageCode
981+
UserDefaults.standard.set([languageCode], forKey: "AppleLanguages")
982+
UserDefaults.standard.synchronize()
983+
} else {
984+
currentLanguage = "en" //FALLBACK TO DEFAULT LANGUAGE
985+
UserDefaults.standard.set(["en"], forKey: "AppleLanguages")
986+
UserDefaults.standard.synchronize()
987+
}
988+
}
989+
}
990+
970991
#Preview {
971992
ContentView()
972993
}

0 commit comments

Comments
 (0)