本地化 VirtualKey.Control (WinRT)

Posted

技术标签:

【中文标题】本地化 VirtualKey.Control (WinRT)【英文标题】:Localize VirtualKey.Control (WinRT) 【发布时间】:2017-03-18 13:51:36 【问题描述】:

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

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

有没有可以用来做以下的API?

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

【问题讨论】:

硬编码像“press”和“deletion”这样的词没有任何意义,希望它能被本地化。使用 VirtualKey.Control 也没有任何意义,它始终是世界上任何地方的 Ctrl 键,即使键标题的读法可能不同。尝试发布一个更现实的示例,通过翻译 entire 字符串不会轻易实现本地化。 【参考方案1】:

由于VirtualKey是一个枚举,你不能直接翻译一个枚举的成员,但是你可以把它作为资源文件的key,建立一个本地化系统:

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

    创建一个名为“Strings”的文件夹 在文件夹中,为您想要支持的默认语言创建一个文件夹并相应命名(查看可能代码的完整列表here) 在该文件夹中创建 Resources.resw 文件 添加你要添加的字符串-如果你想支持使用VirtualKey.xxx.ToString(),我强烈建议你使用与枚举相同的标识符;例如:如果你想翻译控制字符,调用新资源“Control” - (这是我做的): 复制并粘贴该文件夹的次数等于您要支持的语言数量(我做了两次): 根据您要翻译的语言编辑 Resource.resx 文件。

    在代码中,引用每个翻译的字符串

    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-IT 语言的结果:

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

    打开控制面板并转到时钟、语言和区域 > 语言 请注意,运行应用程序时显示的语言是列出的***语言,即在我的系统上为意大利语。 要使用另一种语言测试应用程序,请在列表中选择语言并单击上移直到它位于顶部。然后运行应用程序。

注意:如果您的机器上没有所有这三种语言,请单击添加语言并将它们添加到列表中来添加缺少的语言。

就我而言,我将意大利语列为第一个,将英语(英国)列为第二个,但如果我交换它们:

再次运行应用程序,结果如下

如果我添加 de-DE:

使用这些资源文件: zh-CN:

和它-IT:

和去DE:

请注意,我将英文 Control 键称为“Control”,将意大利语键称为“Ctrl”;它完美地工作

我希望这会有所帮助。

如果您还有其他问题,尽管问!

卢克斯贾米

编辑:这是一个解决方案,尽管我承认这不是一个好的解决方案(无论如何,这是我能想到的最好的解决方案)。无论如何,正如 here 对 WinForm 应用程序所说的那样,没有必要这样做,因为如果您使用默认名称作为键名(即枚举中的名称,就像您现在正在做的那样),每个人都会理解您。

EDIT2:但是,此解决方案为您的应用程序未来的“完整”本地化设置了一切。这样,在开发过程的开始就完成了一半的工作。

【讨论】:

以上是关于本地化 VirtualKey.Control (WinRT)的主要内容,如果未能解决你的问题,请参考以下文章

W/DynamiteModule:未找到 com.google.android.gms.vision.dynamite 的本地模块描述符类

Rancher 运行本地的镜像文件

实现单线程下载图片到本地②

587.6w ! 北邮本地边缘智能云建设采购意向

如何在本地映射 RDD?

js实现字符串切割并转换成对象格式保存到本地