From fc99dedb5390e1291b063d9f558087d73ee99387 Mon Sep 17 00:00:00 2001 From: goapunk <goapunk@riseup.net> Date: Tue, 12 Jun 2018 16:23:32 +0200 Subject: [PATCH] Detect if system language changed --- .../org/briarproject/briar/android/Localizer.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/Localizer.java b/briar-android/src/main/java/org/briarproject/briar/android/Localizer.java index 1a419043d1..d2295409be 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/Localizer.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/Localizer.java @@ -21,8 +21,9 @@ public class Localizer { @Nullable private static Localizer INSTANCE; private final Locale systemLocale; + // Locking: this @Nullable - private volatile Locale locale; + private Locale locale; private Localizer(SharedPreferences sharedPreferences) { systemLocale = Locale.getDefault(); @@ -61,9 +62,8 @@ public class Localizer { return new Locale(tag); } + // Returns the localized version of context public Context setLocale(Context context) { - if (locale == null) - return context; Resources res = context.getResources(); Configuration conf = res.getConfiguration(); Locale currentLocale; @@ -71,6 +71,14 @@ public class Localizer { currentLocale = conf.getLocales().get(0); } else currentLocale = conf.locale; + synchronized (this) { + if (locale == null) { + // Detect if the user changed the system language + if (systemLocale.equals(currentLocale)) + return context; + locale = systemLocale; + } + } if (locale.equals(currentLocale)) return context; Locale.setDefault(locale); -- GitLab