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