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