Fixing #5755 with UI automator tests
Implementing per-app language preferences. Fixes #5755
What changes did you make and why?
Gradle Files: Add Appcompat_version= “1.7.0” and added a new dependency for app-compat-resources.
AndroidManifest.xml: AppLocalesMetedataHolderService handles language setting persistence and provides the infrasturture for language switching on Android 12 and below.
MainActivity.java: loadLocale() method was removed as the language handling now occurs through AppCompat API.
SettingsFragments.java: Uses LocaleListCompat methods to create the list of locales based on selected language Uses AppCompatDelegate methods to apply the locale across the app UI. AppCompatDelegate.setApplicationLocales() is used to handle compatability issues across Adroid versions and handles persistent stoage of language switching so you don’t need to manually restart the activity.
Tests Performed (required):
AppLanguagesSystemTest.java in test package fr.free.nrw.commons.ui:
Added a new system test which sues a UI automator to verify the apps languages can be set through the system settings and reflect in the UI.
Tested ProdDebug on Pixel 6 with API level 33.
Screenshots (for UI changes only)
Just to be clear, this is a pr made by my group member.
Would you mind fixing the conflict? Thanks!
Hello @nicolas-raoul
Huge apologies for the late reply. Ill fix it today.
This seems like a very good patch over all. Thank you!
I think I can resolve most merge conflicts, but I have some other questions before merging that way.
- is it necessary to bump the kotlin version?
- is it necessary to change the idea xml file?