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(); final String twoFactorCode = Objects.requireNonNull(binding.loginTwoFactor.getText()).toString();
showLoggingProgressBar(); 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() { new LoginCallback() {
@Override @Override
public void success(@NonNull LoginResult loginResult) { public void success(@NonNull LoginResult loginResult) {

View file

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

View file

@ -345,6 +345,8 @@ public class NetworkingModule {
@Singleton @Singleton
@Named(NAMED_LANGUAGE_WIKI_PEDIA_WIKI_SITE) @Named(NAMED_LANGUAGE_WIKI_PEDIA_WIKI_SITE)
public WikiSite provideLanguageWikipediaSite() { 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) { private void buildDepictionList(List<IdAndCaptions> idAndCaptions) {
binding.mediaDetailDepictionContainer.removeAllViews(); 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) { for (IdAndCaptions idAndCaption : idAndCaptions) {
binding.mediaDetailDepictionContainer.addView(buildDepictLabel( binding.mediaDetailDepictionContainer.addView(buildDepictLabel(
getDepictionCaption(idAndCaption, locale), getDepictionCaption(idAndCaption, locale),

View file

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

View file

@ -373,9 +373,11 @@ public class UploadRepository {
@Nullable @Nullable
public Place checkNearbyPlaces(final double decLatitude, final double decLongitude) { public Place checkNearbyPlaces(final double decLatitude, final double decLongitude) {
try { 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( final List<Place> fromWikidataQuery = nearbyPlaces.getFromWikidataQuery(new LatLng(
decLatitude, decLongitude, 0.0f), decLatitude, decLongitude, 0.0f),
Locale.getDefault().getLanguage(), mainCode,
NEARBY_RADIUS_IN_KILO_METERS, null); NEARBY_RADIUS_IN_KILO_METERS, null);
return (fromWikidataQuery != null && fromWikidataQuery.size() > 0) ? fromWikidataQuery return (fromWikidataQuery != null && fromWikidataQuery.size() > 0) ? fromWikidataQuery
.get(0) : null; .get(0) : null;

View file

@ -327,7 +327,9 @@ public class SettingsFragment extends PreferenceFragmentCompat {
System.out.println(languageCode); System.out.println(languageCode);
HashMap<Integer, String> selectedLanguages = new HashMap<>(); HashMap<Integer, String> selectedLanguages = new HashMap<>();
assert languageCode != null; 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 // Deserializing saved language codes to Language objects
ArrayList<Language> Saved_Languages = new ArrayList<>(); ArrayList<Language> Saved_Languages = new ArrayList<>();
@ -422,6 +424,10 @@ public class SettingsFragment extends PreferenceFragmentCompat {
} }
descriptionSecondaryLanguageListPreference.setSummary(getCurrentLanguageCode("descriptionSecondaryLanguagePref")); descriptionSecondaryLanguageListPreference.setSummary(getCurrentLanguageCode("descriptionSecondaryLanguagePref"));
}); });
dialog.setOnDismissListener(dialogInterface -> {
setLocale(requireActivity(), languageCode, false);
});
} }
@ -448,7 +454,9 @@ public class SettingsFragment extends PreferenceFragmentCompat {
assert languageCode != null; assert languageCode != null;
if (languageCode.equals("")) { 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 { } else {
selectedLanguages.put(0, languageCode); selectedLanguages.put(0, languageCode);
} }
@ -456,7 +464,9 @@ public class SettingsFragment extends PreferenceFragmentCompat {
assert languageCode != null; assert languageCode != null;
if (languageCode.equals("")) { 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 { } else {
selectedLanguages.put(0, languageCode); selectedLanguages.put(0, languageCode);
@ -465,7 +475,9 @@ public class SettingsFragment extends PreferenceFragmentCompat {
assert languageCode != null; assert languageCode != null;
if (languageCode.equals("")) { 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 { } else {
selectedLanguages.put(0, languageCode); selectedLanguages.put(0, languageCode);
@ -535,7 +547,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
Locale defLocale = createLocale(languageCode); Locale defLocale = createLocale(languageCode);
if(keyListPreference.equals("appUiDefaultLanguagePref")) { if(keyListPreference.equals("appUiDefaultLanguagePref")) {
appUiLanguageListPreference.setSummary(defLocale.getDisplayLanguage(defLocale)); appUiLanguageListPreference.setSummary(defLocale.getDisplayLanguage(defLocale));
setLocale(requireActivity(), languageCode); setLocale(requireActivity(), languageCode, true);
getActivity().recreate(); getActivity().recreate();
final Intent intent = new Intent(getActivity(), MainActivity.class); final Intent intent = new Intent(getActivity(), MainActivity.class);
startActivity(intent); startActivity(intent);
@ -603,7 +615,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
final Locale defLocale = createLocale(recentLanguageCode); final Locale defLocale = createLocale(recentLanguageCode);
if (keyListPreference.equals("appUiDefaultLanguagePref")) { if (keyListPreference.equals("appUiDefaultLanguagePref")) {
appUiLanguageListPreference.setSummary(defLocale.getDisplayLanguage(defLocale)); appUiLanguageListPreference.setSummary(defLocale.getDisplayLanguage(defLocale));
setLocale(requireActivity(), recentLanguageCode); setLocale(requireActivity(), recentLanguageCode, true);
getActivity().recreate(); getActivity().recreate();
final Intent intent = new Intent(getActivity(), MainActivity.class); final Intent intent = new Intent(getActivity(), MainActivity.class);
startActivity(intent); startActivity(intent);
@ -622,13 +634,37 @@ public class SettingsFragment extends PreferenceFragmentCompat {
separator.setVisibility(View.GONE); 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 * 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("")) { if (userSelectedValue.equals("")) {
userSelectedValue = Locale.getDefault().getLanguage(); 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); final Locale locale = createLocale(userSelectedValue);
Locale.setDefault(locale); Locale.setDefault(locale);
final Configuration configuration = new Configuration(); final Configuration configuration = new Configuration();