2016-10-17 48 views
7

Tôi đang làm việc trên menu cho các cài đặt phím tắt của ứng dụng của tôi. Ứng dụng hỗ trợ hai ngôn ngữ (tiếng Anh và tiếng Đức), vì vậy tôi cần để có thể hiển thị chuỗi văn hóa phụ thuộc. Ví dụ. Ctrl + Ins cho "en-US" và Strg + Einfg cho "de-DE".Khóa bàn phím nội địa hóa

Xét rằng số lượng các phím có thể không phải là rất lớn tôi có thể xác định nguồn lực cho mỗi phím, nhưng tôi cho rằng vấn đề này không phải là hiếm và có nên được tích hợp chức năng hoặc cũng biết thư viện cho mục đích này.

Tôi đã thử ConvertToString() từ 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); 

Và GetDisplayStringForCulture() từ System.Windows.Input.KeyGesture:

System.Windows.Input.KeyGesture kg = new KeyGesture(Key.Insert); 
var de = kg.GetDisplayStringForCulture(new CultureInfo("de-AT")); 
Console.WriteLine(de); 

Nhưng cả hai trong số họ trả về tiếng Anh "Ins" và "Insert" tương ứng.

Vì vậy, về cơ bản, tôi đang tìm phương pháp sẽ chấp nhận một số loại khóa và văn bản tiêu chuẩn chính và trả về chuỗi được bản địa hóa tương ứng.

+0

http://stackoverflow.com/questions/37100079/how-to-get-the-localized-keyboard-key-name-in-vs-c-sharp? – CodeCaster

+0

@CodeCaster 'var x = kc.ConvertTo (null, CultureInfo mới (" de-DE "), Keys.Insert, typeof (String));' 'Console.WriteLine (x);' Sẽ trả về "Ins ". Vì vậy, về cơ bản các công trình tương tự như cách ConvertToString() từ exemple của tôi. – invo

+0

Bạn có thể thử https://github.com/SeriousM/WPFLocalizationExtension. Bên cạnh việc liên kết với DependencyProperties trong Xaml (các công cụ WPF), bạn cũng có thể lấy các giá trị tài nguyên cục bộ theo lập trình trong mã. – Dima

Trả lời

-1

Tôi không có thời gian để thử nghiệm nó trên của riêng tôi, nhưng bạn có thể thử cách tiếp cận của tôi dưới đây

Đề cập đến hai bài viết này
(tiếng Anh-Mỹ) https://msdn.microsoft.com/en-us/library/system.windows.forms.keys(v=vs.110).aspx
(Đức) https://msdn.microsoft.com/de-de/library/system.windows.forms.keys(v=vs.110).aspx

Strg + Einfg tương đương với

'VB 
If E.KeyCode = (Keys.Control Or Keys.Insert) Then... 

//C# 
if (e.KeyCode == (Keys.Control | Keys.Insert)) {... 

Để hiển thị ngôn ngữ nhập hiện tại, bạn coul d thử

MsgBox(InputLanguage.CurrentInputLanguage.LayoutName) 
+0

Dường như không còn thời gian để đọc câu hỏi nữa. – invo

Các vấn đề liên quan