@@ -7,7 +7,6 @@ import android.view.View
77import android.view.ViewGroup
88import android.widget.Toast
99import androidx.appcompat.app.AppCompatDelegate
10- import androidx.core.os.LocaleListCompat
1110import androidx.fragment.app.Fragment
1211import androidx.lifecycle.lifecycleScope
1312import androidx.preference.PreferenceManager
@@ -90,64 +89,7 @@ class SettingsFragment : Fragment() {
9089 }
9190 }
9291
93- private fun setupLanguage () {
94- updateLanguageText()
95-
96- binding.itemLanguage.setOnClickListener {
97- val languages = arrayOf(
98- getString(R .string.language_system),
99- getString(R .string.language_english),
100- getString(R .string.language_indonesian)
101- )
102- val languageCodes = arrayOf(" system" , " en" , " id" )
103-
104- // Get current from prefs (more reliable)
105- val savedLang = prefs.getString(Constants .PREFS_LANGUAGE , " system" ) ? : " system"
106- val currentIndex = languageCodes.indexOf(savedLang).coerceAtLeast(0 )
107-
108- MaterialAlertDialogBuilder (requireContext())
109- .setTitle(R .string.settings_language)
110- .setSingleChoiceItems(languages, currentIndex) { dialog, which ->
111- val selectedLang = languageCodes[which]
112- applyLanguage(selectedLang)
113- dialog.dismiss()
114- }
115- .setNegativeButton(android.R .string.cancel, null )
116- .show()
117- }
118- }
119-
120- private fun updateLanguageText () {
121- // Check from prefs first (more reliable), then AppCompatDelegate
122- val savedLang = prefs.getString(Constants .PREFS_LANGUAGE , null )
123- val currentLocales = AppCompatDelegate .getApplicationLocales()
124- val langTag = savedLang ? : if (currentLocales.isEmpty) " system" else currentLocales.toLanguageTags()
125-
126- binding.tvCurrentLanguage.text = when {
127- langTag.startsWith(" en" ) -> getString(R .string.language_english)
128- langTag.startsWith(" id" ) -> getString(R .string.language_indonesian)
129- else -> getString(R .string.language_system)
130- }
131- }
132-
133- private fun applyLanguage (langCode : String ) {
134- // Save to prefs for persistence
135- prefs.edit().putString(Constants .PREFS_LANGUAGE , langCode).apply ()
136-
137- // Use AppCompatDelegate for proper locale handling (Android 13+ compatible)
138- val localeList = when (langCode) {
139- " en" -> LocaleListCompat .forLanguageTags(" en" )
140- " id" -> LocaleListCompat .forLanguageTags(" id" )
141- else -> LocaleListCompat .getEmptyLocaleList() // System default
142- }
143-
144- AppCompatDelegate .setApplicationLocales(localeList)
145-
146- // For older Android versions, we need to restart the app
147- if (android.os.Build .VERSION .SDK_INT < android.os.Build .VERSION_CODES .TIRAMISU ) {
148- restartApp()
149- }
150- }
92+
15193
15294 private fun setupCurrentMode () {
15395 updateModeDisplay()
0 commit comments