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