From 4c47f337eae5998c2e959ecbab1e9b6c4731b104 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 22 Dec 2025 10:46:39 -0500 Subject: [PATCH] Restart the app to apply the new language setting. --- .../settings/app/appearance/AppearanceSettingsFragment.kt | 7 ++++++- .../settings/app/appearance/AppearanceSettingsViewModel.kt | 3 +++ .../thoughtcrime/securesms/util/TextSecurePreferences.java | 2 +- app/src/main/res/values/strings.xml | 2 ++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/AppearanceSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/AppearanceSettingsFragment.kt index 8ad6d7647b..cce14aeaa3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/AppearanceSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/AppearanceSettingsFragment.kt @@ -17,6 +17,7 @@ import androidx.compose.ui.res.vectorResource import androidx.fragment.app.viewModels import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.fragment.findNavController +import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.signal.core.ui.compose.DayNightPreviews import org.signal.core.ui.compose.Previews import org.signal.core.ui.compose.Rows @@ -60,7 +61,11 @@ class AppearanceSettingsFragment : ComposeFragment() { } override fun onLanguageSelected(selection: String) { - viewModel.setLanguage(selection) + MaterialAlertDialogBuilder(requireContext()) + .setMessage(R.string.preferences_language_change_confirmation_message) + .setPositiveButton(android.R.string.ok) { _, _ -> viewModel.setLanguage(selection) } + .setNegativeButton(android.R.string.cancel, null) + .show() } override fun onThemeSelected(selection: String) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/AppearanceSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/AppearanceSettingsViewModel.kt index 481de9b2cb..b8d0f12674 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/AppearanceSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/appearance/AppearanceSettingsViewModel.kt @@ -5,6 +5,8 @@ import androidx.lifecycle.ViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.update +import org.signal.core.util.AppUtil +import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.jobs.EmojiSearchIndexDownloadJob import org.thoughtcrime.securesms.keyvalue.SettingsValues.Theme import org.thoughtcrime.securesms.keyvalue.SignalStore @@ -28,6 +30,7 @@ class AppearanceSettingsViewModel : ViewModel() { store.update { it.copy(language = language) } SignalStore.settings.language = language EmojiSearchIndexDownloadJob.scheduleImmediately() + AppUtil.restart(AppDependencies.application) } fun setMessageFontSize(size: Int) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java b/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java index 4e298c23f3..1c289dff2f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java @@ -599,7 +599,7 @@ public class TextSecurePreferences { */ @Deprecated public static void setLanguage(Context context, String language) { - setStringPreference(context, LANGUAGE_PREF, language); + getSharedPreferences(context).edit().putString(LANGUAGE_PREF, language).commit(); } @Deprecated diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 084430803c..eb52b15d34 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4189,6 +4189,8 @@ Normal Compact + + The app will restart to apply the new language setting. Customize option