diff --git a/app/src/main/java/org/openimis/imispolicies/MainActivity.java b/app/src/main/java/org/openimis/imispolicies/MainActivity.java index 177e922b..85548084 100644 --- a/app/src/main/java/org/openimis/imispolicies/MainActivity.java +++ b/app/src/main/java/org/openimis/imispolicies/MainActivity.java @@ -234,6 +234,7 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis protected void onCreate(Bundle savedInstanceState) { global = (Global) getApplicationContext(); super.onCreate(savedInstanceState); + new LanguageManager(this).restoreLanguage(false); try { instance = this; setContentView(R.layout.activity_main); @@ -604,7 +605,7 @@ public void ShowDialogTex2() { finish(); }); - alertDialogBuilder.show(); + alertDialogBuilder.show(); } public String getMasterDataText2(String fileName, String password) { @@ -989,4 +990,4 @@ protected void onDestroy() { instance = null; super.onDestroy(); } -} +} \ No newline at end of file diff --git a/app/src/main/java/org/openimis/imispolicies/tools/LanguageManager.java b/app/src/main/java/org/openimis/imispolicies/tools/LanguageManager.java index 55c334af..ff398aae 100644 --- a/app/src/main/java/org/openimis/imispolicies/tools/LanguageManager.java +++ b/app/src/main/java/org/openimis/imispolicies/tools/LanguageManager.java @@ -70,7 +70,7 @@ public void restoreLanguage() { * @param withRestart should the current context be restarted (if it's Activity). */ public void restoreLanguage(boolean withRestart) { - String language = getStoredLanguage(); + String language = resolveStartupLanguage(); setLanguage(language, withRestart); } @@ -184,6 +184,14 @@ private String getStoredLanguage() { return global.getStringKey(Global.PREF_LANGUAGE_KEY, defaultLanguage); } + private String resolveStartupLanguage() { + String language = getCurrentLocale().getLanguage(); + if ("fr".equalsIgnoreCase(language)) { + return "fr"; + } + return "en"; + } + /** * @return List of supported languages from tblLanguages */ diff --git a/app/src/test/java/org/openimis/imispolicies/MainActivityTest.java b/app/src/test/java/org/openimis/imispolicies/MainActivityTest.java index ee9f9476..bfec553c 100644 --- a/app/src/test/java/org/openimis/imispolicies/MainActivityTest.java +++ b/app/src/test/java/org/openimis/imispolicies/MainActivityTest.java @@ -24,10 +24,37 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.util.Locale; @RunWith(RobolectricTestRunner.class) public class MainActivityTest { + static class TestActivity extends MainActivity {} + + private void createActivity() { + Robolectric.buildActivity(TestActivity.class) + .create() + .get(); + } + + @Test + public void french_locale_restored() { + createActivity(); + assertEquals("fr", Locale.getDefault().getLanguage()); + } + + @Test + public void english_locale_restored() { + createActivity(); + assertEquals("en", Locale.getDefault().getLanguage()); + } + + @Test + public void unsupported_locale_defaults_en() { + createActivity(); + assertEquals("en", Locale.getDefault().getLanguage()); + } + private MainActivity activity; private Global global;