2016-11-04 20 views
2

我想本地化VirtualKey for Control。 目前有這樣的代碼:本地化VirtualKey.Control(WinRT)

using Windows.System; 
var message = "Press " + VirtualKey.Control.ToString() + " + D for deletion!"; 

是否有可用於有以下內容的API?

  • 按Control + D刪除! (在英語系統上)
  • 按Steuerung + D刪除! (在德國的系統)
+0

對「按」和「刪除」等單詞進行硬編碼沒有任何意義,並希望它能被本地化。使用VirtualKey.Control也沒有任何意義,它始終是世界上任何地方的Ctrl鍵,即使鍵標題可能讀取不同。嘗試發佈一個更現實的例子,通過翻譯*整個*字符串不僅可以本地化。 –

回答

1

由於VirtualKey是一個枚舉,你不能直接轉換枚舉的成員,但你可以使用它作爲資源文件的關鍵,建立一個定位系統:

我遵循this教程在Windows 8.1應用程序上構建了一個簡單的本地化系統;這些都是我跟(總結時)的步驟

  1. 創建一個名爲「字符串」
  2. 文件夾裏的文件夾,創建一個文件夾要支持和accordigly命名爲默認語言(見全可能的碼here
  3. 列表文件夾中創建一個文件Resources.resw
  4. 添加要添加字符串 - 如果你想支持使用VirtualKey.xxx.ToString(),我強烈建議你使用的相同的標識符列舉;例如:如果要翻譯控制字符,請調用新資源「控制」 - (這是我所做的):How I did
  5. 複製並粘貼該文件夾的次數等於您的語言數想要支持(我做了兩次): Folders
  6. 相應地編輯Resource.resx文件到您正在翻譯的語言。
  7. 在代碼,請參閱各翻譯字符串

    var loader = new Windows.ApplicationModel.Resources.ResourceLoader(); 
    loader.GetString(VirtualKey.xxx.ToString()); 
    

    這就是我所做的在MainPage.xaml中一個TextBlock:

    var loader = new Windows.ApplicationModel.Resources.ResourceLoader(); 
         this.txbCtrl.Text = String.Format("Press {0}-Z to undo", loader.GetString(VirtualKey.Control.ToString())); 
    

這就是該語言的結果,它-IT: enter image description here

要測試它的其他語言,我跟着教程,即使我不喜歡它:

  1. 打開控制面板,然後轉到時鐘,語言和區域>語言
  2. 需要注意的是,當應用程序是跑了被顯示的語言是頂級在我的系統上列出的語言是意大利語。
  3. 要用另一種語言測試應用程序,請在列表中選擇語言,然後單擊上移,直到它位於頂部。然後運行該應用程序。

注意:如果您的計算機上沒有這三種語言,請通過單擊添加語言並將其添加到列表中來添加缺少的語言。

在我來說,我對第一和英語(英國)作爲第二個意大利上市,但如果我換他們: Mylangs

,並再次運行應用程序,這是結果 Result

如果我去添加-DE: enter image description here

與這些資源文件: EN-GB: en-GB

,並-IT: it-IT

和DE-DE: de-DE

注意,我調用了英語Ctrl鍵 「控制」 和意大利一個 「Ctrl」 鍵;它完美的作品

我希望這有助於。

如果您還有其他問題,請詢問!

LuxGiammi

編輯:這是一個解決方案,儘管我承認,這不是一個很好的(反正這是我能想到的最好的)。無論如何,正如here針對WinForm應用程序所述,沒有必要這樣做,因爲如果您使用鍵的默認名稱(即枚舉中的名稱,就像您現在所做的那樣),evrybody會理解您。

EDIT2:然而,這個解決方案爲您的應用程序的未來「全面」本地化設置了一切。這種方式的一半是在開發過程的開始階段完成的。

+1

這是正確的做法。 –