Pracuję nad menu dla ustawień skrótów mojej aplikacji. Aplikacja obsługuje dwa języki (angielski i niemiecki), więc muszę mieć możliwość wyświetlania łańcucha zależnego od kultury. Na przykład. Ctrl + Ins dla "en-US" i Strg + Einfg dla "de-DE".Lokalizacja klawiszy klawiatury
Biorąc pod uwagę, że ilość możliwych kluczy nie jest zbyt duża, mógłbym zdefiniować zasoby dla każdego klucza, ale zakładam, że ten problem nie jest rzadkością i powinna istnieć wbudowana funkcjonalność lub dobrze znana biblioteka do tego celu.
Próbowałem ConvertToString() z 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);
I GetDisplayStringForCulture() z System.Windows.Input.KeyGesture:
System.Windows.Input.KeyGesture kg = new KeyGesture(Key.Insert);
var de = kg.GetDisplayStringForCulture(new CultureInfo("de-AT"));
Console.WriteLine(de);
Ale oboje zwróć odpowiednio angielskie "Ins" i "Insert".
Po prostu szukam metody, która zaakceptuje jakąś standardową klasę klucza i kulturę i zwróci odpowiedni zlokalizowany łańcuch.
http://stackoverflow.com/questions/37100079/how-to-get-the-localized-keyboard-key-name-in-vs-c-sharp? – CodeCaster
@CodeCaster 'var x = kc.ConvertTo (null, nowy CultureInfo (" de-DE "), Keys.Insert, typeof (String));' 'Console.WriteLine (x);' Zwróci "Ins ". W zasadzie działa tak samo jak ConvertToString() z mojego przykładu. – invo
Możesz spróbować https://github.com/SeriousM/WPFLocalizationExtension. Poza powiązaniem z DependencyProperties w Xaml (pliki WPF), można również programowo pobierać zlokalizowane wartości zasobów w kodzie. – Dima