This commit is contained in:
Adith 2024-10-16 15:39:14 +11:00
parent bd436422dc
commit bdda18223e
7 changed files with 57 additions and 12 deletions

View file

@ -223,7 +223,9 @@ public class LoginActivity extends AccountAuthenticatorActivity {
final String twoFactorCode = Objects.requireNonNull(binding.loginTwoFactor.getText()).toString();
showLoggingProgressBar();
loginClient.doLogin(username, password, twoFactorCode, Locale.getDefault().getLanguage(),
String fullCode = Locale.getDefault().getLanguage();
String mainCode = fullCode.contains(",") ? fullCode.substring(0, fullCode.indexOf(',')).trim() : fullCode;
loginClient.doLogin(username, password, twoFactorCode, mainCode,
new LoginCallback() {
@Override
public void success(@NonNull LoginResult loginResult) {

View file

@ -490,7 +490,7 @@ public class MainActivity extends BaseActivity
Activity.MODE_PRIVATE);
final String language = preferences.getString("language", "");
final SettingsFragment settingsFragment = new SettingsFragment();
settingsFragment.setLocale(this, language);
settingsFragment.setLocale(this, language, true);
}
public NavTabLayout.OnNavigationItemSelectedListener getNavListener() {

View file

@ -345,6 +345,8 @@ public class NetworkingModule {
@Singleton
@Named(NAMED_LANGUAGE_WIKI_PEDIA_WIKI_SITE)
public WikiSite provideLanguageWikipediaSite() {
return WikiSite.forLanguageCode(Locale.getDefault().getLanguage());
String fullCode = Locale.getDefault().getLanguage();
String mainCode = fullCode.contains(",") ? fullCode.substring(0, fullCode.indexOf(',')).trim() : fullCode;
return WikiSite.forLanguageCode(mainCode);
}
}

View file

@ -707,7 +707,8 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment implements
*/
private void buildDepictionList(List<IdAndCaptions> idAndCaptions) {
binding.mediaDetailDepictionContainer.removeAllViews();
String locale = Locale.getDefault().getLanguage();
String fullCode = Locale.getDefault().getLanguage();
String locale = fullCode.contains(",") ? fullCode.substring(0, fullCode.indexOf(',')).trim() : fullCode;
for (IdAndCaptions idAndCaption : idAndCaptions) {
binding.mediaDetailDepictionContainer.addView(buildDepictLabel(
getDepictionCaption(idAndCaption, locale),

View file

@ -56,6 +56,8 @@ public class NearbyController extends MapController {
Timber.d("Loading attractions nearby, but currentLatLng is null");
return null;
}
String fullCode = Locale.getDefault().getLanguage();
String mainCode = fullCode.contains(",") ? fullCode.substring(0, fullCode.indexOf(',')).trim() : fullCode;
List<Place> places = nearbyPlaces
.radiusExpander(searchLatLng, Locale.getDefault().getLanguage(), returnClosestResult,
customQuery);

View file

@ -373,9 +373,11 @@ public class UploadRepository {
@Nullable
public Place checkNearbyPlaces(final double decLatitude, final double decLongitude) {
try {
String fullCode = Locale.getDefault().getLanguage();
String mainCode = fullCode.contains(",") ? fullCode.substring(0, fullCode.indexOf(',')).trim() : fullCode;
final List<Place> fromWikidataQuery = nearbyPlaces.getFromWikidataQuery(new LatLng(
decLatitude, decLongitude, 0.0f),
Locale.getDefault().getLanguage(),
mainCode,
NEARBY_RADIUS_IN_KILO_METERS, null);
return (fromWikidataQuery != null && fromWikidataQuery.size() > 0) ? fromWikidataQuery
.get(0) : null;

View file

@ -327,7 +327,9 @@ public class SettingsFragment extends PreferenceFragmentCompat {
System.out.println(languageCode);
HashMap<Integer, String> selectedLanguages = new HashMap<>();
assert languageCode != null;
selectedLanguages.put(0, Locale.getDefault().getLanguage());
String fullCode = Locale.getDefault().getLanguage();
String mainCode = fullCode.contains(",") ? fullCode.substring(0, fullCode.indexOf(',')).trim() : fullCode;
selectedLanguages.put(0, mainCode);
// Deserializing saved language codes to Language objects
ArrayList<Language> Saved_Languages = new ArrayList<>();
@ -422,6 +424,10 @@ public class SettingsFragment extends PreferenceFragmentCompat {
}
descriptionSecondaryLanguageListPreference.setSummary(getCurrentLanguageCode("descriptionSecondaryLanguagePref"));
});
dialog.setOnDismissListener(dialogInterface -> {
setLocale(requireActivity(), languageCode, false);
});
}
@ -448,7 +454,9 @@ public class SettingsFragment extends PreferenceFragmentCompat {
assert languageCode != null;
if (languageCode.equals("")) {
selectedLanguages.put(0, Locale.getDefault().getLanguage());
String fullCode = Locale.getDefault().getLanguage();
String mainCode = fullCode.contains(",") ? fullCode.substring(0, fullCode.indexOf(',')).trim() : fullCode;
selectedLanguages.put(0, mainCode);
} else {
selectedLanguages.put(0, languageCode);
}
@ -456,7 +464,9 @@ public class SettingsFragment extends PreferenceFragmentCompat {
assert languageCode != null;
if (languageCode.equals("")) {
selectedLanguages.put(0, Locale.getDefault().getLanguage());
String fullCode = Locale.getDefault().getLanguage();
String mainCode = fullCode.contains(",") ? fullCode.substring(0, fullCode.indexOf(',')).trim() : fullCode;
selectedLanguages.put(0, mainCode);
} else {
selectedLanguages.put(0, languageCode);
@ -465,7 +475,9 @@ public class SettingsFragment extends PreferenceFragmentCompat {
assert languageCode != null;
if (languageCode.equals("")) {
selectedLanguages.put(0, Locale.getDefault().getLanguage());
String fullCode = Locale.getDefault().getLanguage();
String mainCode = fullCode.contains(",") ? fullCode.substring(0, fullCode.indexOf(',')).trim() : fullCode;
selectedLanguages.put(0, mainCode);
} else {
selectedLanguages.put(0, languageCode);
@ -535,7 +547,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
Locale defLocale = createLocale(languageCode);
if(keyListPreference.equals("appUiDefaultLanguagePref")) {
appUiLanguageListPreference.setSummary(defLocale.getDisplayLanguage(defLocale));
setLocale(requireActivity(), languageCode);
setLocale(requireActivity(), languageCode, true);
getActivity().recreate();
final Intent intent = new Intent(getActivity(), MainActivity.class);
startActivity(intent);
@ -603,7 +615,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
final Locale defLocale = createLocale(recentLanguageCode);
if (keyListPreference.equals("appUiDefaultLanguagePref")) {
appUiLanguageListPreference.setSummary(defLocale.getDisplayLanguage(defLocale));
setLocale(requireActivity(), recentLanguageCode);
setLocale(requireActivity(), recentLanguageCode, true);
getActivity().recreate();
final Intent intent = new Intent(getActivity(), MainActivity.class);
startActivity(intent);
@ -622,13 +634,37 @@ public class SettingsFragment extends PreferenceFragmentCompat {
separator.setVisibility(View.GONE);
}
private String reSerialise(ArrayList<String> languageCodes) {
// Join the elements of the list into a single string, separated by a comma and a space
return String.join(", ", languageCodes);
}
/**
* Changing the default app language with selected one and save it to SharedPreferences
*/
public void setLocale(final Activity activity, String userSelectedValue) {
public void setLocale(final Activity activity, String userSelectedValue, boolean appUI) {
if (userSelectedValue.equals("")) {
userSelectedValue = Locale.getDefault().getLanguage();
}
String current = Locale.getDefault().getLanguage();
ArrayList<String> languageCodes = deSerialise(current);
if(appUI) {
languageCodes.set(0, userSelectedValue);
userSelectedValue = reSerialise(languageCodes);
}
else{
ArrayList<String> newLanguageCodes = new ArrayList<>();
ArrayList<String> userSelctedCode = deSerialise(userSelectedValue);
newLanguageCodes.add(languageCodes.get(0));
for(String code : userSelctedCode){
newLanguageCodes.add(code);
}
userSelectedValue = reSerialise(newLanguageCodes);
}
final Locale locale = createLocale(userSelectedValue);
Locale.setDefault(locale);
final Configuration configuration = new Configuration();