我正在爲我的應用程序的快捷方式設置菜單上工作。應用程序確實支持兩種語言(英語和德語),所以我需要能夠顯示文化依賴字符串。例如。 「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