Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit d0f8d7a

Browse files
keianhzobluemarvin
authored andcommitted
Use system language as default content language (#2518)
* Use system language as default content language * Fix checked available language when resetting
1 parent e9e6260 commit d0f8d7a

File tree

4 files changed

+53
-15
lines changed

4 files changed

+53
-15
lines changed

app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/ContentLanguageOptionsView.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ private void refreshLanguages() {
129129

130130
@Override
131131
protected boolean reset() {
132-
SettingsStore.getInstance(getContext()).setContentLocales(Collections.singletonList(LocaleUtils.getSystemLocale()));
133-
SessionStore.get().setLocales(Collections.singletonList(LocaleUtils.getSystemLocale()));
132+
SettingsStore.getInstance(getContext()).setContentLocales(Collections.singletonList(LocaleUtils.getDeviceLanguage().getId()));
133+
SessionStore.get().setLocales(Collections.singletonList(LocaleUtils.getDeviceLanguage().getId()));
134134
LocaleUtils.resetLanguages();
135135
refreshLanguages();
136136

app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/DisplayLanguageOptionsView.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,15 @@ private void initialize(Context aContext) {
5757

5858
@Override
5959
protected boolean reset() {
60-
String systemLocale = LocaleUtils.getSystemLocale();
60+
String systemLocale = LocaleUtils.getClosestSupportedLocale(getContext(), LocaleUtils.getDeviceLanguage().getId());
6161
String currentLocale = LocaleUtils.getCurrentLocale();
62-
if (!currentLocale.equalsIgnoreCase(systemLocale)) {
63-
setLanguage(LocaleUtils.getIndexForSupportedLocale(systemLocale), true);
64-
return true;
65-
66-
} else {
62+
if (currentLocale.equalsIgnoreCase(systemLocale)) {
6763
setLanguage(LocaleUtils.getIndexForSupportedLocale(systemLocale), false);
6864
return false;
65+
66+
} else {
67+
setLanguage(LocaleUtils.getIndexForSupportedLocale(systemLocale), true);
68+
return true;
6969
}
7070
}
7171

app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/VoiceSearchLanguageOptionsView.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,9 @@ private void initialize(Context aContext) {
5757

5858
@Override
5959
protected boolean reset() {
60+
String systemLocale = LocaleUtils.getClosestSupportedLocale(getContext(), LocaleUtils.getDeviceLanguage().getId());
6061
String value = LocaleUtils.getSupportedLocaleForIndex(mBinding.languageRadio.getCheckedRadioButtonId());
61-
if (!value.equals(LocaleUtils.getSystemLocale())) {
62+
if (!value.equals(systemLocale)) {
6263
setLanguage(LocaleUtils.getIndexForSupportedLocale(LocaleUtils.getSystemLocale()), true);
6364
}
6465

app/src/common/shared/org/mozilla/vrbrowser/utils/LocaleUtils.java

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,18 @@ private static HashMap<String, Language> getAllLanguages() {
6464
}
6565

6666
public static void resetLanguages() {
67-
String currentLocale = getCurrentLocale();
68-
mLanguagesCache.values().stream().forEach((language) -> {
69-
language.setPreferred(language.getId().equals(currentLocale));
67+
mLanguagesCache.values().forEach((language) -> {
68+
if (language == getDeviceLanguage()) {
69+
language.setPreferred(true);
70+
71+
} else {
72+
language.setPreferred(false);
73+
}
7074
});
7175
}
7276

73-
public static Language getCurrentLocaleLanguage() {
74-
return mLanguagesCache.get(getCurrentLocale());
77+
public static Language getDeviceLanguage() {
78+
return mLanguagesCache.get(Resources.getSystem().getConfiguration().getLocales().get(0).toLanguageTag());
7579
}
7680

7781
public static List<String> getLocalesFromLanguages(@NonNull final List<Language> languages) {
@@ -99,7 +103,7 @@ public static List<Language> getPreferredLanguages(@NonNull Context aContext) {
99103
}
100104

101105
} else {
102-
Language currentLanguage = getCurrentLocaleLanguage();
106+
Language currentLanguage = getDeviceLanguage();
103107
currentLanguage.setPreferred(true);
104108
preferredLanguages.add(currentLanguage);
105109
}
@@ -262,4 +266,37 @@ public static String getDefaultSupportedLocale() {
262266
return locale;
263267
}
264268

269+
public static String getClosestSupportedLocale(@NonNull Context context, @NonNull String languageTag) {
270+
Locale locale = Locale.forLanguageTag(languageTag);
271+
Optional<LocalizedLanguage> language = LocaleUtils.localizedSupportedLanguages.stream().filter(item ->
272+
item.locale.equals(locale)
273+
).findFirst();
274+
275+
if (!language.isPresent()) {
276+
language = LocaleUtils.localizedSupportedLanguages.stream().filter(item ->
277+
item.locale.getLanguage().equals(locale.getLanguage()) &&
278+
item.locale.getScript().equals(locale.getScript()) &&
279+
item.locale.getCountry().equals(locale.getCountry())
280+
).findFirst();
281+
}
282+
if (!language.isPresent()) {
283+
language = LocaleUtils.localizedSupportedLanguages.stream().filter(item ->
284+
item.locale.getLanguage().equals(locale.getLanguage()) &&
285+
item.locale.getCountry().equals(locale.getCountry())
286+
).findFirst();
287+
}
288+
if (!language.isPresent()) {
289+
language = LocaleUtils.localizedSupportedLanguages.stream().filter(item ->
290+
item.locale.getLanguage().equals(locale.getLanguage())
291+
).findFirst();
292+
}
293+
294+
if (language.isPresent()) {
295+
return language.get().locale.toLanguageTag();
296+
297+
} else {
298+
return getDisplayLocale(context);
299+
}
300+
}
301+
265302
}

0 commit comments

Comments
 (0)