我正在为我的应用程序的快捷方式设置菜单上工作。应用程序确实支持两种语言(英语和德语),所以我需要能够显示文化依赖字符串。例如。 “en-US”为Ctrl + Ins,“de-DE”为Strg + Einfg。键盘按键本地化
考虑到可能的密钥数量并不是很大,我可以为每个密钥定义资源,但我认为这个问题并不少见,应该有内置功能或者为此目的熟知的库。
我从System.Windows.Forms.KeysConverter试图ConvertToString():
var kc = new System.Windows.Forms.KeysConverter();
var de = kc.ConvertToString(null, new CultureInfo("de-DE"), Keys.Insert);
Console.WriteLine(de);
而且从System.Windows.Input.KeyGesture GetDisplayStringForCulture():
System.Windows.Input.KeyGesture kg = new KeyGesture(Key.Insert);
var de = kg.GetDisplayStringForCulture(new CultureInfo("de-AT"));
Console.WriteLine(de);
但他们两人分别返回英文“Ins”和“Insert”。
所以基本上我正在寻找接受某种标准键类和文化的方法并返回相应的本地化字符串。
http://stackoverflow.com/questions/37100079/how-to-get-the-localized-keyboard-key-name-in-vs-c-sharp? – CodeCaster
@CodeCaster 'var x = kc.ConvertTo(null,new CultureInfo(“de-DE”),Keys.Insert,typeof(String));' 'Console.WriteLine(x);' 将返回“Ins ”。因此基本上和我的例子中的ConvertToString()方法一样。 – invo
你可以试试https://github.com/SeriousM/WPFLocalizationExtension。除了绑定到Xaml中的DependencyProperties(WPF东西)之外,您还可以在代码中以编程方式检索本地化资源值。 – Dima