键盘按键本地化
本文关键字:本地化 键盘 | 更新日期: 2023-09-27 18:13:20
我正在为我的应用程序的快捷设置菜单工作。应用程序确实支持两种语言(英语和德语),所以我需要能够显示文化依赖字符串。例如,Ctrl+Ins表示"en-US", string +Einfg表示"de-DE"。
考虑到可能的键的数量不是很大,我可以为每个键定义资源,但我认为这个问题并不罕见,应该有内置的功能或众所周知的库用于此目的。
我已经尝试了ConvertToString() from System.Windows.Forms.KeysConverter:
var kc = new System.Windows.Forms.KeysConverter();
var de = kc.ConvertToString(null, new CultureInfo("de-DE"), Keys.Insert);
Console.WriteLine(de);
和GetDisplayStringForCulture() from System.Windows.Input.KeyGesture:
System.Windows.Input.KeyGesture kg = new KeyGesture(Key.Insert);
var de = kg.GetDisplayStringForCulture(new CultureInfo("de-AT"));
Console.WriteLine(de);
但是它们都分别返回英文"Ins"answers"Insert"。
所以基本上我在寻找方法它将接受某种标准键类和区域性并返回各自的本地化字符串
我没有时间自己测试,但您可以尝试下面的方法
参考这两篇文章
(美国英语)https://msdn.microsoft.com/en-us/library/system.windows.forms.keys (v = vs.110) . aspx
(德国)https://msdn.microsoft.com/de-de/library/system.windows.forms.keys (v = vs.110) . aspx
Strg+Einfg等价于
'VB
If E.KeyCode = (Keys.Control Or Keys.Insert) Then...
//C#
if (e.KeyCode == (Keys.Control | Keys.Insert)) {...
要显示当前的输入语言,您可以尝试
MsgBox(InputLanguage.CurrentInputLanguage.LayoutName)