From bff10187696774bc6879431f3f37dad6c476cd6b Mon Sep 17 00:00:00 2001 From: paul sandjong Date: Wed, 20 May 2026 01:19:43 +0100 Subject: [PATCH] Align startup language with system locale in policies app --- .../openimis/imispolicies/MainActivity.java | 5 ++- .../imispolicies/tools/LanguageManager.java | 10 ++++- .../imispolicies/MainActivityTest.java | 43 +++++++++++++++++++ 3 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 app/src/test/java/org/openimis/imispolicies/MainActivityTest.java diff --git a/app/src/main/java/org/openimis/imispolicies/MainActivity.java b/app/src/main/java/org/openimis/imispolicies/MainActivity.java index 861f735b..5e281356 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); @@ -582,7 +583,7 @@ public void ShowDialogTex2() { finish(); }); - alertDialogBuilder.show(); + alertDialogBuilder.show(); } public String getMasterDataText2(String fileName, String password) { @@ -967,4 +968,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 new file mode 100644 index 00000000..f433f2b1 --- /dev/null +++ b/app/src/test/java/org/openimis/imispolicies/MainActivityTest.java @@ -0,0 +1,43 @@ +package org.openimis.imispolicies; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; + +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 + @Config(qualifiers = "fr") + public void french_locale_restored() { + createActivity(); + assertEquals("fr", Locale.getDefault().getLanguage()); + } + + @Test + @Config(qualifiers = "en") + public void english_locale_restored() { + createActivity(); + assertEquals("en", Locale.getDefault().getLanguage()); + } + + @Test + @Config(qualifiers = "es") + public void unsupported_locale_defaults_en() { + createActivity(); + assertEquals("en", Locale.getDefault().getLanguage()); + } +} \ No newline at end of file