我在一个允许助记符的网络应用程序产品上工作(即字符'C'下方的下划线,以允许键盘组合和键C触发“关闭”按钮)。
- 表单是由不同的开发人员创建的,他们可以各自为按钮静态设置助记符。
- 表单可以嵌套,因此在设计时不一定知道一页所需的确切助记符。
- 在包含许多表格的页面上,最多可以有一个使用任何字符的助记符。
- 更重要的是,表单必须能够本地化为任何语言,这意味着关闭的“C”甚至可能不会出现在用于“关闭”的... [插入语言] 词中。
理想的解决方案是一些算法,开发人员不必手动指定助记符,而是在运行时计算它们,它们将被本地化,并且它们既方便又一致(我确实说过理想的解决方案;-D)。
所以我想知道,有没有什么好的策略可以在接近理想解决方案的任何地方实现目标?
编辑:澄清一下,
- 我不是在谈论键盘加速器,例如用于保存的 Ctrl+S,它隐藏在菜单上。助记符仅用于显示在屏幕上的操作,例如在按钮标签下。没有隐藏的键盘快捷键会随着本地化而改变(反正没有,我们在网络浏览器中运行,所以唯一的加速器是那些正在使用的浏览器的一部分)。
- 在设计时尝试选择助记符的问题在于,负责开发 UI 的人员不知道本地化,因为这可能会在几个月后完成。此外,使用嵌套和模块化形式的问题意味着即使没有本地化,仍然可能存在冲突。
我提出的一些想法包括拥有一个全局助记符注册表,表单可以使用该注册表根据其本地化标签申请某个助记符,然后注册表将计算哪个是可用字符的最佳使用。不知何故,它必须保持这种状态——这样在应用程序使用过程中,相同的表单不会出现不同的助记符集,它甚至可以静态完成并持久化。
当然,如果我想做类似的事情,它会适合更通用的算法——我只是不知道是哪一个!:-)