Talkback 在范围内时未以正确格式宣布日期

Talkback not announcing dates in the correct format when in a range

似乎在使用 android 对讲时,当格式为 dd/mm/yyyy - dd/mm/yyyy

的范围内有 2 个日期时,它似乎没有正确说出日期

如果我有一个简单的日期,例如 01/06/2017,它会正确地说成“六月一日,二十七日”。但是如果我有一个日期范围,例如 01/06/2017 - 01 /06/2018,它会说它是“一月六日二十七至一月六日二十八”,知道为什么吗?

我的语言设置为 en-AU

这是 HTML 结构:

<p>01/06/2017 - 01/06/2018</p>

但是,如果我将两个日期都放在 <time> 元素中,那么它会正确读取每个日期,但会分别读取,例如<p><time>01/06/2017</time> - <time>01/06/2018</time></p> 被读作“6 月 1 日,27 日”、“破折号”、“6 月 1 日,28 日”,整个事情是零散的,所以不是把它读成一行,而是每个元素必须分开阅读。但是,如果我将整个内容包装在 <time> 中,它就不起作用,即 <p><time>01/06/2017 - 01/06/2018</time></p> 将不起作用。

日期范围总是一件棘手的事情,因为没有比您正在使用的方法更好的方法了 (<p><time>01/06/2017</time> - <time>01/06/2018</time></p>)

但是,您可以通过一种快速警告来强制它说“to”: 如果您使用此方法,那么如果有人使用自动翻译或您在某个时候将网站国际化,则可能会导致翻译不佳/大量工作将“to”转换为其他语言。

排除免责声明,诀窍是使用实际单词“to”:<p><time>01/06/2017</time> to <time>01/06/2018</time></p>

但我知道你在想什么,我不想看到“to”这个词,我想在视觉上使用破折号。

所以现在我们引入 and aria-hidden来显示一个东西,读出另一个东西:

<p>
  <time>01/06/2017</time>
  <span aria-hidden="true">-</span>
  <span class="visually-hidden">to</span>
  <time>01/06/2018</time>
</p>

我们所做的是从屏幕 readers 中隐藏破折号,然后提供一些屏幕 reader 纯文本来替换它(“视觉隐藏”的另一个名称是“屏幕 reader 仅")

这里有一个fiddle演示:

.visually-hidden { 
    border: 0;
    padding: 0;
    margin: 0;
    position: absolute !important;
    height: 1px; 
    width: 1px;
    overflow: hidden;
    clip: rect(1px 1px 1px 1px); /* IE6, IE7 - a 0 height clip, off to the bottom right of the visible 1px box */
    clip: rect(1px, 1px, 1px, 1px); /*maybe deprecated but we need to support legacy browsers */
    clip-path: inset(50%); /*modern browsers, clip-path works inwards from each corner*/
    white-space: nowrap; /* added line to stop words getting smushed together (as they go onto seperate lines and some screen readers do not understand line feeds as a space */
}
<p>
  <time>01/06/2017</time>
  <span aria-hidden="true">-</span>
  <span class="visually-hidden">to</span>
  <time>01/06/2018</time>
</p>

注意: 试图说服屏幕 reader 以某种方式说话几乎总是引入可访问性问题而不是解决它们的方法。在这种情况下,我认为你很好(因此我给出了答案),但请谨慎使用这种技术,大多数时候 screen reader 用户会习惯奇怪的发音并且“修复”它们实际上会更加混乱.

虽然我已经向您展示了如何“解决”这个问题,但我个人认为它不需要任何干预,读出“破折号”是有意义的,但我也认为您不会造成任何伤害如果您真的想尝试这种技术,那么我会把决定权交给您。