From eeacffbd15a89870d215fed3d17577bba3fa7116 Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Tue, 28 Sep 2021 21:39:10 -0400 Subject: [PATCH] voice: Allow voiced date format to be overridden This adds LANG_VOICED_DATE_FORMAT, a format string with these tokens: Y 4-digit year A Month name m numeric month d numeric day of month The default (english) is '23 January 2013' In comparison, english-us is 'January 23 2013' Change-Id: I055a3287c104260dec63bba58d36fdae9df1ed16 --- apps/lang/english-us.lang | 14 ++++++++++++++ apps/lang/english.lang | 14 ++++++++++++++ apps/talk.c | 27 ++++++++++++++++++++++++--- 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/apps/lang/english-us.lang b/apps/lang/english-us.lang index b926b4e37e..618ee114fd 100644 --- a/apps/lang/english-us.lang +++ b/apps/lang/english-us.lang @@ -16027,3 +16027,17 @@ *: "" + + id: LANG_VOICED_DATE_FORMAT + desc: format string for how dates will be read back. Y == 4-digit year, A == month name, m == numeric month, d == numeric day. For example, "AdY" will read "January 21 2021" + user: core + + *: "dAY" + + + *: "AdY" + + + *: "" + + diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 60cb17d245..dab9ed8508 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -16094,3 +16094,17 @@ *: "" + + id: LANG_VOICED_DATE_FORMAT + desc: format string for how dates will be read back. Y == 4-digit year, A == month name, m == numeric month, d == numeric day. For example, "AdY" will read "January 21 2021" + user: core + + *: "dAY" + + + *: "dAY" + + + *: "" + + diff --git a/apps/talk.c b/apps/talk.c index e627337162..e440dd98b5 100644 --- a/apps/talk.c +++ b/apps/talk.c @@ -1496,9 +1496,30 @@ void talk_setting(const void *global_settings_variable) void talk_date(const struct tm *tm, bool enqueue) { - talk_id(LANG_MONTH_JANUARY + tm->tm_mon, enqueue); - talk_number(tm->tm_mday, true); - talk_number(1900 + tm->tm_year, true); + const char *format = str(LANG_VOICED_DATE_FORMAT); + const char *ptr; + + if (!enqueue) + talk_shutup(); /* cut off all the pending stuff */ + + for (ptr = format ; *ptr ; ptr++) { + switch(*ptr) { + case 'Y': + talk_number(1900 + tm->tm_year, true); + break; + case 'A': + talk_id(LANG_MONTH_JANUARY + tm->tm_mon, true); + break; + case 'm': + talk_number(tm->tm_mon + 1, true); + break; + case 'd': + talk_number(tm->tm_mday, true); + break; + default: + break; + } + } } void talk_time(const struct tm *tm, bool enqueue)