Replace zen setting plurals with MessageFormat

For better translations. See go/android-i18n-plurals.

Test: manual
Test: make RunSettingsRoboTests7
Fixes: 156651436
Change-Id: Ic82140b81bf49f071291d2824fa45d310de238ae
This commit is contained in:
Beverly
2020-06-29 13:43:24 -04:00
parent 9aa80727c4
commit c549280a33
9 changed files with 174 additions and 162 deletions

View File

@@ -26,7 +26,7 @@ import android.app.AutomaticZenRule;
import android.app.NotificationManager;
import android.content.Context;
import android.database.Cursor;
import android.icu.text.ListFormatter;
import android.icu.text.MessageFormat;
import android.net.Uri;
import android.provider.ContactsContract;
import android.provider.Settings;
@@ -41,7 +41,9 @@ import com.android.settings.R;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
public class ZenModeBackend {
@@ -468,37 +470,30 @@ public class ZenModeBackend {
String getStarredContactsSummary(Context context) {
List<String> starredContacts = getStarredContacts();
int numStarredContacts = starredContacts.size();
List<String> displayContacts = new ArrayList<>();
if (numStarredContacts == 0) {
displayContacts.add(context.getString(R.string.zen_mode_starred_contacts_summary_none));
} else {
for (int i = 0; i < 2 && i < numStarredContacts; i++) {
displayContacts.add(starredContacts.get(i));
}
if (numStarredContacts == 3) {
displayContacts.add(starredContacts.get(2));
} else if (numStarredContacts > 2) {
displayContacts.add(context.getResources().getQuantityString(
R.plurals.zen_mode_starred_contacts_summary_additional_contacts,
numStarredContacts - 2, numStarredContacts - 2));
MessageFormat msgFormat = new MessageFormat(
mContext.getString(R.string.zen_mode_starred_contacts_summary_contacts),
Locale.getDefault());
Map<String, Object> args = new HashMap<>();
args.put("count", numStarredContacts);
if (numStarredContacts >= 1) {
args.put("contact_1", starredContacts.get(0));
if (numStarredContacts >= 2) {
args.put("contact_2", starredContacts.get(1));
if (numStarredContacts == 3) {
args.put("contact_3", starredContacts.get(2));
}
}
}
// values in displayContacts must not be null
return ListFormatter.getInstance().format(displayContacts);
return msgFormat.format(args);
}
String getContactsNumberSummary(Context context) {
final int numContacts = queryAllContactsData().getCount();
if (numContacts == 0) {
return context.getResources().getString(
R.string.zen_mode_contacts_count_none);
}
return context.getResources().getQuantityString(R.plurals.zen_mode_contacts_count,
numContacts, numContacts);
MessageFormat msgFormat = new MessageFormat(
mContext.getString(R.string.zen_mode_contacts_count),
Locale.getDefault());
Map<String, Object> args = new HashMap<>();
args.put("count", queryAllContactsData().getCount());
return msgFormat.format(args);
}
private Cursor queryStarredContactsData() {