Capitalize TZ display name strings
Capitalize Settings UI time zone display name strings for languanges like Polish for standalone locations like summaries and lists. The motivating example case is the string for "Coordinated Universal Time" in Polish, which is not capitalized in CLDR, as they capitalize for the middle of sentences by default. In English, Coordinated Universal Time is already capitalized, but the Polish string is not. With this commit all "display name"-like strings have been capitalized (region names, exemplar locations, time zone names like "Coordinated Universal Time" and "British Summer Time") for completeness. For the Polish case, many are already capitalized, but capitalizing the first letter is therefore a no-op. The "GMT+xx:xx"-style strings have not been changed. Bug: 190109975 Test: Visual inspection in English and Polish of UTC, United States, Russia in the time zone picker and the date & time screen on mobile Change-Id: I57d915ac1e30e22cc05e605fcb7d46b102fa8ce1
This commit is contained in:
@@ -15,6 +15,8 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.settings.datetime.timezone;
|
package com.android.settings.datetime.timezone;
|
||||||
|
|
||||||
|
import static com.android.settingslib.datetime.ZoneGetter.capitalizeForStandaloneDisplay;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.icu.text.LocaleDisplayNames;
|
import android.icu.text.LocaleDisplayNames;
|
||||||
|
|
||||||
@@ -23,19 +25,21 @@ import java.util.Locale;
|
|||||||
public class RegionPreferenceController extends BaseTimeZonePreferenceController {
|
public class RegionPreferenceController extends BaseTimeZonePreferenceController {
|
||||||
private static final String PREFERENCE_KEY = "region";
|
private static final String PREFERENCE_KEY = "region";
|
||||||
|
|
||||||
|
private final Locale mLocale;
|
||||||
private final LocaleDisplayNames mLocaleDisplayNames;
|
private final LocaleDisplayNames mLocaleDisplayNames;
|
||||||
private String mRegionId = "";
|
private String mRegionId = "";
|
||||||
|
|
||||||
public RegionPreferenceController(Context context) {
|
public RegionPreferenceController(Context context) {
|
||||||
super(context, PREFERENCE_KEY);
|
super(context, PREFERENCE_KEY);
|
||||||
Locale locale = context.getResources().getConfiguration().getLocales().get(0);
|
Locale locale = context.getResources().getConfiguration().getLocales().get(0);
|
||||||
|
mLocale = locale;
|
||||||
mLocaleDisplayNames = LocaleDisplayNames.getInstance(locale);
|
mLocaleDisplayNames = LocaleDisplayNames.getInstance(locale);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CharSequence getSummary() {
|
public CharSequence getSummary() {
|
||||||
return mLocaleDisplayNames.regionDisplayName(mRegionId);
|
return capitalizeForStandaloneDisplay(mLocale,
|
||||||
|
mLocaleDisplayNames.regionDisplayName(mRegionId));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRegionId(String regionId) {
|
public void setRegionId(String regionId) {
|
||||||
|
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.settings.datetime.timezone;
|
package com.android.settings.datetime.timezone;
|
||||||
|
|
||||||
|
import static com.android.settingslib.datetime.ZoneGetter.capitalizeForStandaloneDisplay;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@@ -116,7 +118,8 @@ public class RegionSearchPicker extends BaseTimeZonePicker {
|
|||||||
final LocaleDisplayNames localeDisplayNames = LocaleDisplayNames.getInstance(getLocale());
|
final LocaleDisplayNames localeDisplayNames = LocaleDisplayNames.getInstance(getLocale());
|
||||||
long i = 0;
|
long i = 0;
|
||||||
for (String regionId : regionIds) {
|
for (String regionId : regionIds) {
|
||||||
String name = localeDisplayNames.regionDisplayName(regionId);
|
String name = capitalizeForStandaloneDisplay(
|
||||||
|
mLocale, localeDisplayNames.regionDisplayName(regionId));
|
||||||
items.add(new RegionItem(i++, regionId, name));
|
items.add(new RegionItem(i++, regionId, name));
|
||||||
}
|
}
|
||||||
return new ArrayList<>(items);
|
return new ArrayList<>(items);
|
||||||
|
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.settings.datetime.timezone;
|
package com.android.settings.datetime.timezone;
|
||||||
|
|
||||||
|
import static com.android.settingslib.datetime.ZoneGetter.capitalizeForStandaloneDisplay;
|
||||||
|
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.icu.text.Collator;
|
import android.icu.text.Collator;
|
||||||
@@ -65,7 +67,8 @@ public class RegionZonePicker extends BaseTimeZoneInfoPicker {
|
|||||||
final LocaleDisplayNames localeDisplayNames = LocaleDisplayNames.getInstance(getLocale());
|
final LocaleDisplayNames localeDisplayNames = LocaleDisplayNames.getInstance(getLocale());
|
||||||
final String regionId =
|
final String regionId =
|
||||||
getArguments() == null ? null : getArguments().getString(EXTRA_REGION_ID);
|
getArguments() == null ? null : getArguments().getString(EXTRA_REGION_ID);
|
||||||
mRegionName = regionId == null ? null : localeDisplayNames.regionDisplayName(regionId);
|
mRegionName = regionId == null ? null : capitalizeForStandaloneDisplay(
|
||||||
|
mLocale, localeDisplayNames.regionDisplayName(regionId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -15,6 +15,8 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.settings.datetime.timezone;
|
package com.android.settings.datetime.timezone;
|
||||||
|
|
||||||
|
import static com.android.settingslib.datetime.ZoneGetter.capitalizeForStandaloneDisplay;
|
||||||
|
|
||||||
import android.icu.text.TimeZoneFormat;
|
import android.icu.text.TimeZoneFormat;
|
||||||
import android.icu.text.TimeZoneNames;
|
import android.icu.text.TimeZoneNames;
|
||||||
import android.icu.util.TimeZone;
|
import android.icu.util.TimeZone;
|
||||||
@@ -152,19 +154,29 @@ public class TimeZoneInfo {
|
|||||||
String canonicalZoneId = getCanonicalZoneId(timeZone);
|
String canonicalZoneId = getCanonicalZoneId(timeZone);
|
||||||
final TimeZoneNames timeZoneNames = mTimeZoneFormat.getTimeZoneNames();
|
final TimeZoneNames timeZoneNames = mTimeZoneFormat.getTimeZoneNames();
|
||||||
final java.util.TimeZone javaTimeZone = toJavaTimeZone(canonicalZoneId);
|
final java.util.TimeZone javaTimeZone = toJavaTimeZone(canonicalZoneId);
|
||||||
final CharSequence gmtOffset = ZoneGetter.getGmtOffsetText(mTimeZoneFormat, mLocale,
|
final CharSequence gmtOffset =
|
||||||
javaTimeZone, mNow);
|
ZoneGetter.getGmtOffsetText(mTimeZoneFormat, mLocale, javaTimeZone, mNow);
|
||||||
return new TimeZoneInfo.Builder(timeZone)
|
return new TimeZoneInfo.Builder(timeZone)
|
||||||
.setGenericName(timeZoneNames.getDisplayName(canonicalZoneId,
|
.setGenericName(getTzNameForListDisplay(mLocale, timeZoneNames,
|
||||||
TimeZoneNames.NameType.LONG_GENERIC, mNow.getTime()))
|
canonicalZoneId, mNow, TimeZoneNames.NameType.LONG_GENERIC))
|
||||||
.setStandardName(timeZoneNames.getDisplayName(canonicalZoneId,
|
.setStandardName(getTzNameForListDisplay(mLocale, timeZoneNames,
|
||||||
TimeZoneNames.NameType.LONG_STANDARD, mNow.getTime()))
|
canonicalZoneId, mNow, TimeZoneNames.NameType.LONG_STANDARD))
|
||||||
.setDaylightName(timeZoneNames.getDisplayName(canonicalZoneId,
|
.setDaylightName(getTzNameForListDisplay(mLocale, timeZoneNames,
|
||||||
TimeZoneNames.NameType.LONG_DAYLIGHT, mNow.getTime()))
|
canonicalZoneId, mNow, TimeZoneNames.NameType.LONG_DAYLIGHT))
|
||||||
.setExemplarLocation(timeZoneNames.getExemplarLocationName(canonicalZoneId))
|
.setExemplarLocation(capitalizeForStandaloneDisplay(mLocale,
|
||||||
|
timeZoneNames.getExemplarLocationName(canonicalZoneId)))
|
||||||
.setGmtOffset(gmtOffset)
|
.setGmtOffset(gmtOffset)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String getTzNameForListDisplay(
|
||||||
|
Locale locale, TimeZoneNames timeZoneNames, String canonicalZoneId, Date now,
|
||||||
|
TimeZoneNames.NameType nameType) {
|
||||||
|
long nowEpochMillis = now.getTime();
|
||||||
|
String displayName = timeZoneNames.getDisplayName(
|
||||||
|
canonicalZoneId, nameType, nowEpochMillis);
|
||||||
|
return capitalizeForStandaloneDisplay(locale, displayName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* package-private */ java.util.TimeZone getJavaTimeZone() {
|
/* package-private */ java.util.TimeZone getJavaTimeZone() {
|
||||||
|
Reference in New Issue
Block a user