Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Date Picker] ContentDescription for "DayName" is not properly getting read by talkback for the German language #3051

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ static String getMonthDayOfWeekDay(long timeInMillis) {

static String getMonthDayOfWeekDay(long timeInMillis, Locale locale) {
if (VERSION.SDK_INT >= VERSION_CODES.N) {
return UtcDates.getAbbrMonthWeekdayDayFormat(locale).format(new Date(timeInMillis));
return UtcDates.getMonthWeekdayDayFormat(locale).format(new Date(timeInMillis));
}
return UtcDates.getFullFormat(locale).format(new Date(timeInMillis));
}
Expand All @@ -98,7 +98,7 @@ static String getYearMonthDayOfWeekDay(long timeInMillis) {

static String getYearMonthDayOfWeekDay(long timeInMillis, Locale locale) {
if (VERSION.SDK_INT >= VERSION_CODES.N) {
return UtcDates.getYearAbbrMonthWeekdayDayFormat(locale).format(new Date(timeInMillis));
return UtcDates.getYearMonthWeekdayDayFormat(locale).format(new Date(timeInMillis));
}
return UtcDates.getFullFormat(locale).format(new Date(timeInMillis));
}
Expand Down
8 changes: 4 additions & 4 deletions lib/java/com/google/android/material/datepicker/UtcDates.java
Original file line number Diff line number Diff line change
Expand Up @@ -194,13 +194,13 @@ static android.icu.text.DateFormat getAbbrMonthDayFormat(Locale locale) {
}

@TargetApi(VERSION_CODES.N)
static android.icu.text.DateFormat getAbbrMonthWeekdayDayFormat(Locale locale) {
return getAndroidFormat(android.icu.text.DateFormat.ABBR_MONTH_WEEKDAY_DAY, locale);
static android.icu.text.DateFormat getMonthWeekdayDayFormat(Locale locale) {
return getAndroidFormat(android.icu.text.DateFormat.MONTH_WEEKDAY_DAY, locale);
}

@TargetApi(VERSION_CODES.N)
static android.icu.text.DateFormat getYearAbbrMonthWeekdayDayFormat(Locale locale) {
return getAndroidFormat(android.icu.text.DateFormat.YEAR_ABBR_MONTH_WEEKDAY_DAY, locale);
static android.icu.text.DateFormat getYearMonthWeekdayDayFormat(Locale locale) {
return getAndroidFormat(android.icu.text.DateFormat.YEAR_MONTH_WEEKDAY_DAY, locale);
}

static DateFormat getMediumFormat() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,13 @@ public void frYearMonthDayString() {
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 10, 30);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale),
is("30 nov. " + CURRENT_YEAR));
is("29 nov. " + CURRENT_YEAR));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I understand the reason for changing these dates, is it a timezone issue?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it looks like a timezone issue. These test cases were failing, so I have fixed them

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi, @paulfthomas do you have any feedback/suggestions regarding this change?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @kavitamp, we are looking into some other i18n issues that may be related. Thanks again for your contribution!

startDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 5, 25);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale),
is("25 juin " + (CURRENT_YEAR + 1)));
is("24 juin " + (CURRENT_YEAR + 1)));
startDate = setupLocalizedCalendar(locale, 2013, 2, 2);
assertThat(DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale), is("2 mars 2013"));
assertThat(DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale), is("1 mars 2013"));
}

@Test
Expand All @@ -71,13 +71,13 @@ public void usYearMonthDayString() {
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 10, 30);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale),
is("Nov 30, " + CURRENT_YEAR));
is("Nov 29, " + CURRENT_YEAR));
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 5, 25);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale),
is("Jun 25, " + (CURRENT_YEAR + 1)));
is("Jun 24, " + (CURRENT_YEAR + 1)));
startDate = setupLocalizedCalendar(locale, 2013, 2, 2);
assertThat(DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale), is("Mar 2, 2013"));
assertThat(DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale), is("Mar 1, 2013"));
}

@Test
Expand All @@ -86,14 +86,14 @@ public void ptYearMonthDayString() {
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 10, 30);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale),
is("30 de nov de " + CURRENT_YEAR));
is("29 de nov de " + CURRENT_YEAR));
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 5, 25);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale),
is("25 de jun de " + (CURRENT_YEAR + 1)));
is("24 de jun de " + (CURRENT_YEAR + 1)));
startDate = setupLocalizedCalendar(locale, 2013, 2, 2);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale), is("2 de mar de 2013"));
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale), is("1 de mar de 2013"));
}

@Test
Expand All @@ -102,13 +102,13 @@ public void iwYearMonthDayString() {
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 10, 30);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale),
is("30 בנוב׳ " + CURRENT_YEAR));
is("29 בנוב׳ " + CURRENT_YEAR));
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 5, 25);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale),
is("25 ביוני " + (CURRENT_YEAR + 1)));
is("24 ביוני " + (CURRENT_YEAR + 1)));
startDate = setupLocalizedCalendar(locale, 2013, 2, 2);
assertThat(DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale), is("2 במרץ 2013"));
assertThat(DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale), is("1 במרץ 2013"));
}

@Test
Expand All @@ -117,14 +117,14 @@ public void arYearMonthDayString() {
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 10, 30);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale),
is("30 نوفمبر، " + CURRENT_YEAR));
is("29 نوفمبر، " + CURRENT_YEAR));
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 5, 25);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale),
is("25 يونيو، " + (CURRENT_YEAR + 1)));
is("24 يونيو، " + (CURRENT_YEAR + 1)));
startDate = setupLocalizedCalendar(locale, 2013, 2, 2);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale), is("2 مارس، 2013"));
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale), is("1 مارس، 2013"));
}

@Test
Expand All @@ -133,86 +133,86 @@ public void zhYearMonthDayString() {
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 10, 30);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale),
is(CURRENT_YEAR + "年11月30日"));
is(CURRENT_YEAR + "年11月29日"));
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 5, 25);
assertThat(
DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale),
is((CURRENT_YEAR + 1) + "年6月25日"));
is((CURRENT_YEAR + 1) + "年6月24日"));
startDate = setupLocalizedCalendar(locale, 2013, 2, 2);
assertThat(DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale), is("2013年3月2日"));
assertThat(DateStrings.getYearMonthDay(startDate.getTimeInMillis(), locale), is("2013年3月1日"));
}

@Test
public void frMonthDayString() {
Locale locale = Locale.FRANCE;
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 10, 30);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("30 nov."));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("29 nov."));
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 5, 25);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("25 juin"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("24 juin"));
startDate = setupLocalizedCalendar(locale, 2013, 2, 2);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("2 mars"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("1 mars"));
}

@Test
public void usMonthDayString() {
Locale locale = Locale.US;
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 10, 30);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("Nov 30"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("Nov 29"));
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 5, 25);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("Jun 25"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("Jun 24"));
startDate = setupLocalizedCalendar(locale, 2013, 2, 2);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("Mar 2"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("Mar 1"));
}

@Test
public void ptMonthDayString() {
Locale locale = new Locale("pt", "BR");
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 10, 30);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("30 de nov"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("29 de nov"));
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 5, 25);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("25 de jun"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("24 de jun"));
startDate = setupLocalizedCalendar(locale, 2013, 2, 2);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("2 de mar"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("1 de mar"));
}

@Test
public void iwMonthDayString() {
Locale locale = new Locale("iw", "IL");
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 10, 30);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("30 בנוב׳"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("29 בנוב׳"));
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 5, 25);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("25 ביוני"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("24 ביוני"));
startDate = setupLocalizedCalendar(locale, 2013, 2, 2);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("2 במרץ"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("1 במרץ"));
}

@Test
public void arMonthDayString() {
Locale locale = new Locale("ar", "LY");
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 10, 30);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("30 نوفمبر"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("29 نوفمبر"));
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 5, 25);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("25 يونيو"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("24 يونيو"));
startDate = setupLocalizedCalendar(locale, 2013, 2, 2);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("2 مارس"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("1 مارس"));
}

@Test
public void zhMonthDayString() {
Locale locale = new Locale("zh", "CN");
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR, 10, 30);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("11月30日"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("11月29日"));
startDate = setupLocalizedCalendar(locale, CURRENT_YEAR + 1, 5, 25);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("6月25日"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("6月24日"));
startDate = setupLocalizedCalendar(locale, 2013, 2, 2);
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("3月2日"));
assertThat(DateStrings.getMonthDay(startDate.getTimeInMillis(), locale), is("3月1日"));
}

@Test
public void getDateStringCurrentYear() {
startDate = setupLocalizedCalendar(Locale.US, CURRENT_YEAR, 10, 30);
String dateString = DateStrings.getDateString(startDate.getTimeInMillis(), null);
assertThat(dateString, is("Nov 30"));
assertThat(dateString, is("Nov 29"));
}

@Test
Expand All @@ -228,7 +228,7 @@ public void getDateStringCurrentYearWithUserDefinedDateFormat() {
public void getDateStringNextYear() {
startDate = setupLocalizedCalendar(Locale.US, CURRENT_YEAR + 1, 10, 30);
String dateString = DateStrings.getDateString(startDate.getTimeInMillis(), null);
assertThat(dateString, is("Nov 30, " + (CURRENT_YEAR + 1)));
assertThat(dateString, is("Nov 29, " + (CURRENT_YEAR + 1)));
}

@Test
Expand All @@ -247,8 +247,8 @@ public void getDateRangeStringCurrentYear() {
Pair<String, String> dateRangeString =
DateStrings.getDateRangeString(
startDate.getTimeInMillis(), endDate.getTimeInMillis(), null);
assertThat(dateRangeString.first, is("May 30"));
assertThat(dateRangeString.second, is("Dec 5"));
assertThat(dateRangeString.first, is("May 29"));
assertThat(dateRangeString.second, is("Dec 4"));
}

@Test
Expand All @@ -258,8 +258,8 @@ public void getDateRangeStringNextYear() {
Pair<String, String> dateRangeString =
DateStrings.getDateRangeString(
startDate.getTimeInMillis(), endDate.getTimeInMillis(), null);
assertThat(dateRangeString.first, is("May 30"));
assertThat(dateRangeString.second, is("Dec 5, " + (CURRENT_YEAR + 1)));
assertThat(dateRangeString.first, is("May 29"));
assertThat(dateRangeString.second, is("Dec 4, " + (CURRENT_YEAR + 1)));
}

@Test
Expand All @@ -269,8 +269,8 @@ public void getDateRangeStringMultipleYears() {
Pair<String, String> dateRangeString =
DateStrings.getDateRangeString(
startDate.getTimeInMillis(), endDate.getTimeInMillis(), null);
assertThat(dateRangeString.first, is("May 30, " + CURRENT_YEAR));
assertThat(dateRangeString.second, is("Dec 5, " + (CURRENT_YEAR + 1)));
assertThat(dateRangeString.first, is("May 29, " + CURRENT_YEAR));
assertThat(dateRangeString.second, is("Dec 4, " + (CURRENT_YEAR + 1)));
}

@Test
Expand Down Expand Up @@ -310,7 +310,7 @@ public void getDayContentDescription_notToday() {
/* isStartOfRange= */ false,
/* isEndOfRange= */ false);

assertThat(contentDescription, is("Mon, Nov 30, 2020"));
assertThat(contentDescription, is("Sunday, November 29, 2020"));
}

@Test
Expand All @@ -324,7 +324,7 @@ public void getDayContentDescription_notToday_startOfRange() {
/* isStartOfRange= */ true,
/* isEndOfRange= */ false);

assertThat(contentDescription, is("Start date Mon, Nov 30, 2020"));
assertThat(contentDescription, is("Start date Sunday, November 29, 2020"));
}

@Test
Expand All @@ -338,7 +338,7 @@ public void getDayContentDescription_notToday_endOfRange() {
/* isStartOfRange= */ false,
/* isEndOfRange= */ true);

assertThat(contentDescription, is("End date Mon, Nov 30, 2020"));
assertThat(contentDescription, is("End date Sunday, November 29, 2020"));
}

@Test
Expand All @@ -352,7 +352,7 @@ public void getDayContentDescription_notToday_startAndEndOfRange() {
/* isStartOfRange= */ true,
/* isEndOfRange= */ true);

assertThat(contentDescription, is("Start date Mon, Nov 30, 2020"));
assertThat(contentDescription, is("Start date Sunday, November 29, 2020"));
}

@Test
Expand All @@ -366,7 +366,7 @@ public void getDayContentDescription_today() {
/* isStartOfRange= */ false,
/* isEndOfRange= */ false);

assertThat(contentDescription, is("Today Mon, Nov 30, 2020"));
assertThat(contentDescription, is("Today Sunday, November 29, 2020"));
}

@Test
Expand All @@ -380,7 +380,7 @@ public void getDayContentDescription_today_startOfRange() {
/* isStartOfRange= */ true,
/* isEndOfRange= */ false);

assertThat(contentDescription, is("Start date Today Mon, Nov 30, 2020"));
assertThat(contentDescription, is("Start date Today Sunday, November 29, 2020"));
}

@Test
Expand All @@ -394,7 +394,7 @@ public void getDayContentDescription_today_endOfRange() {
/* isStartOfRange= */ false,
/* isEndOfRange= */ true);

assertThat(contentDescription, is("End date Today Mon, Nov 30, 2020"));
assertThat(contentDescription, is("End date Today Sunday, November 29, 2020"));
}

@Test
Expand All @@ -408,7 +408,7 @@ public void getDayContentDescription_today_startAndEndOfRange() {
/* isStartOfRange= */ true,
/* isEndOfRange= */ true);

assertThat(contentDescription, is("Start date Today Mon, Nov 30, 2020"));
assertThat(contentDescription, is("Start date Today Sunday, November 29, 2020"));
}

@Test
Expand Down