From 40a6de1ec4293f9cc686df5cc1b3794e31b54aba Mon Sep 17 00:00:00 2001 From: tom hsu Date: Tue, 29 Mar 2022 16:39:03 +0800 Subject: [PATCH] [Panlingual] Add error message on per-app language page. Bug: 226032712 Test: local Change-Id: I12aae66116cc8c00fa7c6b0ba256d4726620ea4c (cherry picked from commit a9184f43c5955d0ff34e6189becb7f7b004632c6) --- res/values/strings.xml | 6 +++- .../appinfo/AppLocaleDetails.java | 32 ++++++++++++------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index c43bd4d5d27..c371a041d4e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -513,7 +513,11 @@ System default - %1$s - The app is set to %1$s by default and doesn\u2019t support multiple languages. + Language selection for this app isn\u2019t available from Settings. + + + You can\u2019t select a language for this app from Settings. + Remove selected language? diff --git a/src/com/android/settings/applications/appinfo/AppLocaleDetails.java b/src/com/android/settings/applications/appinfo/AppLocaleDetails.java index acdc32d80a2..304269429fd 100644 --- a/src/com/android/settings/applications/appinfo/AppLocaleDetails.java +++ b/src/com/android/settings/applications/appinfo/AppLocaleDetails.java @@ -74,14 +74,15 @@ public class AppLocaleDetails extends SettingsPreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.app_locale_details); Bundle bundle = getArguments(); mPackageName = bundle.getString(AppInfoBase.ARG_PACKAGE_NAME, ""); - if (mPackageName.isEmpty()) { Log.d(TAG, "No package name."); finish(); } + + addPreferencesFromResource(R.xml.app_locale_details); + mPrefOfDescription = getPreferenceScreen().findPreference(KEY_APP_DESCRIPTION); } // Override here so we don't have an empty screen @@ -98,17 +99,16 @@ public class AppLocaleDetails extends SettingsPreferenceFragment { @Override public void onResume() { - refreshUiInternal(); super.onResume(); + refreshUi(); } - private void refreshUiInternal() { - if (!hasAppSupportedLocales()) { - Log.d(TAG, "No supported language."); + private void refreshUi() { + int res = getAppDescription(); + if (res != -1) { mPrefOfDescription.setVisible(true); TextView description = (TextView) mPrefOfDescription.findViewById(R.id.description); - description.setText(getContext().getString(R.string.no_multiple_language_supported, - Locale.getDefault().getDisplayName(Locale.getDefault()))); + description.setText(getContext().getString(res)); return; } } @@ -159,9 +159,19 @@ public class AppLocaleDetails extends SettingsPreferenceFragment { } } - private boolean hasAppSupportedLocales() { - LocaleList localeList = getPackageLocales(); - return (localeList != null && localeList.size() > 0) || getAssetLocales().length > 0; + private int getAppDescription() { + LocaleList packageLocaleList = getPackageLocales(); + String[] assetLocaleList = getAssetLocales(); + // TODO add apended url string, "Learn more", to these both sentenses. + if (packageLocaleList == null && assetLocaleList.length == 0) { + // There is no locale info from PackageManager amd AssetManager. + return R.string.desc_no_available_supported_locale; + } else if (packageLocaleList != null && packageLocaleList.isEmpty()) { + // LocaleConfig is empty, and this means only allow user modify language + // by the application. + return R.string.desc_disallow_locale_change_in_settings; + } + return -1; } private String[] getAssetLocales() {