Fix sentence capitalization of locale names.

It turns out that out previous CL [1] is not sufficient to address all
the requests regarding capitalization.

With [1], now InputMethodSubtype#getLocaleDisplayName() returns a locale
name whose capitalization is basically optimized to be used as a list
item.  It works well for list UI, but on a UI element that looks like a
sentence text, we still need to capitalize the first character.

This CL takes care of those UI elements in the Settings app.  This CL
also addresses a remaining TODO about locale-unaware text formatting by
using about android.icu.text.ListFormatter.

  [1]: If105082ce703db7a86738455db7e9fb37f3c6fe8
       e489baf96df2837a3a63b626d9023a4a8b322c28

Bug: 29035638
Change-Id: I59f93f0bc067cdd87c6065c972a7da3cde1128f9
This commit is contained in:
Yohei Yukawa
2016-06-09 15:01:52 -07:00
parent b43b49c643
commit 91c23ca03f
6 changed files with 68 additions and 30 deletions

View File

@@ -758,22 +758,10 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
final int inputMethodCount = (inputMethods == null ? 0 : inputMethods.size());
for (int i = 0; i < inputMethodCount; ++i) {
InputMethodInfo inputMethod = inputMethods.get(i);
StringBuilder builder = new StringBuilder();
List<InputMethodSubtype> subtypes = inputMethodManager
.getEnabledInputMethodSubtypeList(inputMethod, true);
final int subtypeCount = subtypes.size();
for (int j = 0; j < subtypeCount; j++) {
InputMethodSubtype subtype = subtypes.get(j);
if (builder.length() > 0) {
builder.append(',');
}
CharSequence subtypeLabel = subtype.getDisplayName(context,
inputMethod.getPackageName(), inputMethod.getServiceInfo()
.applicationInfo);
builder.append(subtypeLabel);
}
String summary = builder.toString();
String summary = InputMethodAndSubtypeUtil.getSubtypeLocaleNameListAsSentence(
subtypes, context, inputMethod);
ServiceInfo serviceInfo = inputMethod.getServiceInfo();
ComponentName componentName = new ComponentName(serviceInfo.packageName,