Chrome/Firefox扩展:如何通过JavaScript API获取快捷键本地化键名?
获取本地化按键名称的可行方案
针对你在Chrome/Firefox扩展中需要获取箭头键、修饰键等本地化名称的需求,目前没有专门的API直接实现,但可以通过以下两种可靠方法解决:
1. 利用浏览器内置的国际化(i18n)字符串资源
Chrome和Firefox的扩展API都提供了i18n.getMessage方法,能直接调用浏览器内置的本地化字符串库,其中包含大量常用按键的本地化名称,完全覆盖修饰键、箭头键这类需求。
Chrome代码示例
// 获取Enter键的本地化名称 const enterKeyName = chrome.i18n.getMessage("key_Enter"); // 获取向上箭头键的本地化名称 const arrowUpName = chrome.i18n.getMessage("key_ArrowUp"); // 获取Ctrl修饰键的本地化名称 const ctrlKeyName = chrome.i18n.getMessage("key_Control"); // 获取Shift修饰键的本地化名称 const shiftKeyName = chrome.i18n.getMessage("key_Shift"); console.log(enterKeyName, arrowUpName, ctrlKeyName, shiftKeyName);
Firefox代码示例
Firefox用法几乎一致,仅API命名空间不同:
const enterKeyName = browser.i18n.getMessage("key_Enter"); const arrowUpName = browser.i18n.getMessage("key_ArrowUp");
常见的内置按键消息名称参考:
- 修饰键:
key_Control、key_Shift、key_Alt、key_Meta - 箭头键:
key_ArrowUp、key_ArrowDown、key_ArrowLeft、key_ArrowRight - 功能键:
key_F1到key_F12 - 常用按键:
key_Enter、key_Backspace、key_Tab、key_Escape
2. 自定义本地化字典(适配特殊按键或个性化需求)
如果浏览器内置字符串无法覆盖你的需求(比如一些少见的按键),可以在扩展中自行维护多语言按键名称映射:
实现步骤
- 在扩展根目录创建
_locales文件夹,每个语言对应一个子目录(如en、zh_CN)。 - 在每个语言目录下创建
messages.json,定义自定义按键名称:// _locales/zh_CN/messages.json { "key_PrintScreen": { "message": "打印屏幕", "description": "Print Screen键的本地化名称" }, "key_ScrollLock": { "message": "滚动锁定", "description": "Scroll Lock键的本地化名称" } } - 通过
i18n.getMessage获取自定义本地化名称:const printScreenName = chrome.i18n.getMessage("key_PrintScreen");
额外注意事项
- 不同浏览器的内置按键消息可能存在细微差异,建议在目标浏览器中测试常用按键的返回值。
- WebExtensions的
commandsAPI确实仅用于注册和管理扩展快捷键,没有提供获取本地化按键名称的功能,你之前的判断是准确的。 - 对于极少数没有内置本地化名称的按键,可以先尝试用
i18n.getMessage获取,若返回undefined,则使用英文名称作为兜底。
内容的提问来源于stack exchange,提问作者Alexey Romanov
相关产品推荐
相关产品推荐

