各种呈现中的操作名称保持一致
提议的不变量:一条命令(command)的可见标签、工具提示、菜单用语和无障碍名称,描述的是同一对象上的同一操作。仅有图标的呈现必须保留这一含义。只要这些操作在相应位置可用,共享的 Web/Electron 控件和对应的 React Native iOS/Android 操作都适用。
各套字符串可以在每种呈现看起来仍然说得通的情况下逐渐偏离。把复制消息的操作称为“复制链接”,对使用屏幕阅读器的人承诺的是另一份剪贴板内容。用语应当指出实际目标,消息含有链接或结构化上下文时也一样。额外的剪贴板格式并不会把复制一条消息变成复制一个链接。
本提议借鉴 Apple 的写作和无障碍指南。它是一项产品约束,并不是宣称获得了 Apple 认证,也不是宣称应用已完全合规。
边界
原生菜单和辅助技术可以使用不同用语,或者省略工具提示。标签需要在语义上一致,而不是在各平台使用完全相同的字符串。目标没有歧义时,随上下文给出的“复制”就足够;不要在全局把它展开。临时的“已复制”反馈可以替换操作标签,而不暗示另一个目标。剪贴板传输、成功时机和错误报告是各自独立的问题。
可观察情形
- 用户消息和助手消息的复制控件都标明对象是消息,工具提示和无障碍名称都如此。折叠一条长消息不会改变该操作的含义。
- 复制带有结构化上下文的消息时,仍然标明对象是消息;它并不承诺只复制一个上下文链接。
- 代码和计划的复制操作保留各自的目标。计划的上下文菜单可以说“复制到剪贴板”;代码控件不得被读成正在复制一条消息。
- 同一条命令(command)的图标、带标签按钮或原生菜单传达同一个操作。完成反馈绝不能点名另一个对象。
核对可见用语时,要一并核对运行时的无障碍名称和实际产生的操作。只检查源码和截图,并不能确定无障碍树的行为。