Skip to content

Commit b8e4bb1

Browse files
committed
Align startup language with system locale in claims app
1 parent e530891 commit b8e4bb1

2 files changed

Lines changed: 52 additions & 1 deletion

File tree

claimManagement/src/main/java/org/openimis/imisclaims/ImisActivity.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.openimis.imisclaims.usecase.Login;
2222

2323
import java.util.ArrayList;
24+
import java.util.Locale;
2425

2526
public abstract class ImisActivity extends AppCompatActivity {
2627

@@ -48,7 +49,9 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
4849
super.onCreate(savedInstanceState);
4950

5051
global = (Global) getApplicationContext();
51-
global.setLanguage(this, global.getSavedLanguage());
52+
String systemLanguage = resolveStartupLanguage();
53+
global.setSavedLanguage(systemLanguage);
54+
global.setLanguage(this, systemLanguage);
5255

5356
actionBar = getSupportActionBar();
5457
if (actionBar != null) {
@@ -65,6 +68,15 @@ public void onReceive(Context context, Intent intent) {
6568
sqlHandler = new SQLHandler(this);
6669
}
6770

71+
private String resolveStartupLanguage() {
72+
Locale systemLocale = getResources().getConfiguration().locale;
73+
String language = systemLocale != null ? systemLocale.getLanguage() : "";
74+
if ("fr".equalsIgnoreCase(language)) {
75+
return "fr";
76+
}
77+
return "en";
78+
}
79+
6880
@Override
6981
protected void onDestroy() {
7082
super.onDestroy();
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.openimis.imisclaims;
2+
import static org.junit.Assert.*;
3+
import org.junit.Test;
4+
import org.junit.runner.RunWith;
5+
import org.robolectric.Robolectric;
6+
import org.robolectric.RobolectricTestRunner;
7+
import org.robolectric.annotation.Config;
8+
9+
@RunWith(RobolectricTestRunner.class)
10+
public class ImisActivityTest {
11+
12+
static class TestActivity extends ImisActivity {}
13+
14+
private String savedLanguage() {
15+
TestActivity activity = Robolectric.buildActivity(TestActivity.class)
16+
.create()
17+
.get();
18+
19+
return activity.global.getSavedLanguage();
20+
}
21+
22+
@Test
23+
@Config(qualifiers = "fr")
24+
public void french_locale_saves_fr() {
25+
assertEquals("fr", savedLanguage());
26+
}
27+
28+
@Test
29+
@Config(qualifiers = "en")
30+
public void english_locale_saves_en() {
31+
assertEquals("en", savedLanguage());
32+
}
33+
34+
@Test
35+
@Config(qualifiers = "es")
36+
public void unsupported_locale_defaults_en() {
37+
assertEquals("en", savedLanguage());
38+
}
39+
}

0 commit comments

Comments
 (0)