@@ -615,7 +615,7 @@ struct StatItemView: View {
615615// MARK: - Updated SettingsView
616616struct 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 ( )
972- }
993+ }
0 commit comments