本地化VirtualKey.Control(WinRT)

时间:2016-11-04 16:31:21

标签: c# windows windows-runtime winrt-xaml

我想本地化VirtualKey for Control。 目前有这样的代码:

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

是否有可用于拥有以下内容的API?

  • 按Control + D删除! (在英语系统上)
  • 按Steuerung + D删除! (在德国的系统上)

1 个答案:

答案 0 :(得分:1)

由于VirtualKey是枚举,您不能直接翻译枚举的成员,但可以将其用作资源文件的密钥,构建本地化系统:

我按照this教程在Windows 8.1应用程序上构建了一个简单的本地化系统;这些是我遵循的步骤(总结)

  1. 创建一个名为" Strings"
  2. 的文件夹
  3. 在文件夹中,为您要支持的默认语言创建一个文件夹并按名称命名(请参阅可能代码的完整列表here
  4. 在该文件夹中创建一个Resources.resw文件
  5. 添加要添加的字符串 - 如果您想支持使用VirtualKey.xxx.ToString(),我强烈建议您使用相同的枚举标识符;例如:如果你想翻译控制角色,请调用新资源"控制" - (这就是我所做的):How I did
  6. 复制并粘贴该文件夹的次数等于您要支持的语言数量(我做了两次): Folders
  7. 根据您要翻译的语言编辑Resource.resx文件。
  8. 在代码中,请参阅每个已翻译的字符串

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

    这是我在MainPage.xaml中的T​​extBlock上所做的:

    var loader = new Windows.ApplicationModel.Resources.ResourceLoader();
            this.txbCtrl.Text = String.Format("Press {0}-Z to undo", loader.GetString(VirtualKey.Control.ToString()));
    
  9. 这就是语言it-IT的结果: enter image description here

    为了测试其他语言,我按照教程,即使我不喜欢它:

    1. 打开控制面板,转到时钟,语言和区域>语言
    2. 请注意,运行应用时显示的语言是列出的顶级语言,在我的系统上是意大利语。
    3. 要使用其他语言测试应用,请在列表中选择语言,然后单击“上移”,直至位于顶部。然后运行应用程序。
    4. 注意:如果您的计算机上没有这三种语言,请点击添加语言并将其添加到列表中,添加缺少的语言。

      在我的情况下,我将意大利语列为第一名,将英语(英国)列为第二名,但如果我交换它们: Mylangs

      再次运行应用程序,结果就是这样 Result

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

      使用这些资源文件: EN-GB: en-GB

      and it-IT: it-IT

      和de-DE: de-DE

      请注意,我已拨打英语控制键" Control"和意大利人" Ctrl&#34 ;;它完美地运作

      我希望这会有所帮助。

      如果您有更多问题,请询问!

      LuxGiammi

      编辑:这是一个解决方案,即使我认识到这不是一个好的解决方案(无论如何,它是我能想到的最好的)。无论如何,如WinForm应用程序所述here,没有必要这样做,因为如果你使用defualt名称作为密钥(例如,枚举中的那个,就像你一样),evrybody会理解你的。现在这样做。)

      EDIT2:然而,这个解决方案为未来做好了准备,并且#34;完整的"您的应用程序的本地化这样,一半的努力都是在开发过程开始时完成的。