Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8fc8607c authored by Neil Fuller's avatar Neil Fuller
Browse files

Use CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE...

Use CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE in place of
CAPITALIZATION_FOR_STANDALONE for date formats, since ICU does not
capitalize (at least) month names correctly today according to
https://unicode-org.atlassian.net/browse/ICU-21631. The motivating
example is the DatePicker/SimpleMonthView for Vietnam with "{month}
{year}" (as used in the manual date selection in the Date & Time screen
of the System settings): it does not capitalize the month without this
change.

It's difficult to know which formats will be affected, so this change
modifies all the formats found in frameworks/base/ that currently
express a preference for STANDALONE. The fix may be available by ICU 72,
at which point this change can presumably be reverted as signified in
the TODOs.

Bug: 229287642
Test: Inspection of Date & Time settings + compilation only
Change-Id: Iea753d0318aef55c6dd4f7e09068a0362ac970d8
parent 4a56099b
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -302,7 +302,11 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate {

        // Update the date formatter.
        mMonthDayFormat = DateFormat.getInstanceForSkeleton("EMMMd", locale);
        mMonthDayFormat.setContext(DisplayContext.CAPITALIZATION_FOR_STANDALONE);
        // The use of CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE instead of
        // CAPITALIZATION_FOR_STANDALONE is to address
        // https://unicode-org.atlassian.net/browse/ICU-21631
        // TODO(b/229287642): Switch back to CAPITALIZATION_FOR_STANDALONE
        mMonthDayFormat.setContext(DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE);
        mYearFormat = DateFormat.getInstanceForSkeleton("y", locale);

        // Update the header text.
+5 −1
Original line number Diff line number Diff line
@@ -186,7 +186,11 @@ class SimpleMonthView extends View {
    private void updateMonthYearLabel() {
        final String format = DateFormat.getBestDateTimePattern(mLocale, MONTH_YEAR_FORMAT);
        final SimpleDateFormat formatter = new SimpleDateFormat(format, mLocale);
        formatter.setContext(DisplayContext.CAPITALIZATION_FOR_STANDALONE);
        // The use of CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE instead of
        // CAPITALIZATION_FOR_STANDALONE is to address
        // https://unicode-org.atlassian.net/browse/ICU-21631
        // TODO(b/229287642): Switch back to CAPITALIZATION_FOR_STANDALONE
        formatter.setContext(DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE);
        mMonthYearLabel = formatter.format(mCalendar.getTime());
    }

+5 −1
Original line number Diff line number Diff line
@@ -414,7 +414,11 @@ public class KeyguardSliceProvider extends SliceProvider implements
        if (mDateFormat == null) {
            final Locale l = Locale.getDefault();
            DateFormat format = DateFormat.getInstanceForSkeleton(mDatePattern, l);
            format.setContext(DisplayContext.CAPITALIZATION_FOR_STANDALONE);
            // The use of CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE instead of
            // CAPITALIZATION_FOR_STANDALONE is to address
            // https://unicode-org.atlassian.net/browse/ICU-21631
            // TODO(b/229287642): Switch back to CAPITALIZATION_FOR_STANDALONE
            format.setContext(DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE);
            mDateFormat = format;
        }
        mCurrentTime.setTime(System.currentTimeMillis());
+5 −1
Original line number Diff line number Diff line
@@ -114,7 +114,11 @@ public class DateView extends TextView {
        if (mDateFormat == null) {
            final Locale l = Locale.getDefault();
            DateFormat format = DateFormat.getInstanceForSkeleton(mDatePattern, l);
            format.setContext(DisplayContext.CAPITALIZATION_FOR_STANDALONE);
            // The use of CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE instead of
            // CAPITALIZATION_FOR_STANDALONE is to address
            // https://unicode-org.atlassian.net/browse/ICU-21631
            // TODO(b/229287642): Switch back to CAPITALIZATION_FOR_STANDALONE
            format.setContext(DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE);
            mDateFormat = format;
        }

+6 −2
Original line number Diff line number Diff line
@@ -54,7 +54,11 @@ internal fun getFormatFromPattern(pattern: String?): DateFormat {
    }
    val l = Locale.getDefault()
    val format = DateFormat.getInstanceForSkeleton(pattern, l)
    format.setContext(DisplayContext.CAPITALIZATION_FOR_STANDALONE)
    // The use of CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE instead of
    // CAPITALIZATION_FOR_STANDALONE is to address
    // https://unicode-org.atlassian.net/browse/ICU-21631
    // TODO(b/229287642): Switch back to CAPITALIZATION_FOR_STANDALONE
    format.setContext(DisplayContext.CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE)
    return format
}