我目前正在开发一个处理翻译的应用程序。在原型中,应用程序可以处理从英语到德语的翻译。
目前,<textarea>元素被<label>元素包围:

<label className="m-translation-card__native-field-label"
       aria-label="Original (English)">
    English

    <textarea className="m-translation-card__native-field-input"
              placeholder="English translation"
              onChange="..."
              value="..."
    />
</label>

<label className="m-translation-card__translated-field-label"
       aria-label="Translation (Deutsch)">
    Deutsch

    <textarea className="m-translation-card__translated-field-input"
              placeholder="German translation"
              onChange="..."
              value="..."
    />
</label>

当通过键盘导航到“English translation”(英语翻译)文本区域时,屏幕阅读器将大声读出英文文本区域value属性内容。这是有意义的,lang标记的<html>属性被设置为“en”,并且是预期的功能。
但是,当一个人导航到“德语翻译”文本区域时,屏幕阅读器会再次以英语发音文本区域value属性内容,这一发音通常与正确的德语发音大不相同。理想情况下,发音应该是德语。
我想添加一个属性,以便屏幕阅读器知道第二个文本区域的内容是德语。我试过使用lang="de"属性,但它没有影响发音。
有办法做到这一点吗?

最佳答案

使用lang属性(在XHTML中使用xml:lang是正确的方法。
不过,并不是所有的屏幕阅读器都支持lang,对于那些支持它的阅读器来说,并不一定所有的语言都支持。
如果屏幕阅读器声称支持它,但它仍然不起作用,您可以尝试添加一个带有div属性的lang容器(这里只是猜测一下,当屏幕阅读器仅在textarea元素上指定时,可能会有问题)。
(注意,德语placeholdertextarea也应该是德语。)

关于html - 设置HTML输入的语言,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54550172/

10-13 00:27