Fixing #5755 with UI automator tests #5890
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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)