html - 设置 HTML 输入的语言
问题描述
我目前正在开发一个处理翻译的应用程序。在原型中,该应用程序可以处理从英语到德语的翻译。
目前,我有<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>
当通过键盘导航到“英文翻译”文本区域时,屏幕阅读器将朗读value
英文文本区域属性内容。这是有道理的——标签的lang
属性<html>
设置为“en”——并且是预期的功能。
但是,当导航到“德语翻译”textarea 时,屏幕阅读器会再次value
用英语发音 textarea 属性内容——这种发音通常与正确的德语发音大不相同。理想情况下,发音应该是德语。
我想添加一个属性,以便屏幕阅读器知道第二个文本区域的内容是德语。我尝试使用该lang="de"
属性,但它不影响发音。
有没有办法做到这一点?
解决方案
使用lang
属性(以及xml:lang
在 XHTML 中)是正确的方法。
但是,并非所有屏幕阅读器都支持lang
,对于那些支持它的人来说,不一定支持所有语言。
如果屏幕阅读器声称支持它,但它仍然不起作用,您可以尝试添加一个div
具有该属性的容器lang
(这里只是猜测一下,当屏幕阅读器仅在textarea
元素上指定时可能会出现问题)。
(请注意,placeholder
德语的 thetextarea
也应该是德语。)
推荐阅读
- prometheus - 节点导出器显示错误的空闲 CPU 时间
- laravel - 如何在 Laravel 中的多个表数据中进行搜索?
- android - 升级到 64 位时 Cordova Sqlite 数据库错误
- java - 不同视图中具有相同 ID 的两个按钮
- c# - 如何让 EntityTypeBuilder 以新的方式发表正确的评论?
- ansible - 是否可以使用 Ansible 使用 start init.d 服务?
- c++ - 使用 Ensmallen 优化时遇到问题
- ios - 合并两个单一响应 RXSwift
- c# - 为什么实体框架在计算总和时会出现性能问题
- windows - 如何在命令提示符下获取文件名