【问题标题】:Translation of System.Windows.Input.Key enum in Silverlight 4?在 Silverlight 4 中翻译 System.Windows.Input.Key 枚举?
【发布时间】:2012-07-20 09:12:53
【问题描述】:

我目前正在编写一些代码来处理我的 Silverlight 4 应用程序中的键盘快捷键。我想创建一个管理窗口,如果用户不想使用默认键盘快捷键,他们可以在其中定义自定义键盘快捷键。但是,某些键在某些语言中具有不同的翻译(例如 Home、Del、...)。我当然想翻译这些文本,以便每个用户都能正确理解键盘快捷键。

有类似这样的内置翻译吗?我正在考虑类似于 DateTime 的行为方式。如果我使用 DateTimes,则几天或几个月的文本是通过系统文化设置自动定义的。

string dateTimeTest = DateTime.Now.ToLongDateString();

在德语系统上,这会导致文本“Freitag, 20. Juli 2012”。

是否也有类似的可用于键的类似功能?还是我必须手动翻译所有需要的键?

提前致谢!

【问题讨论】:

  • 所以您正在寻找类似GetKeyNameText 的东西,但是对于 Silverlight,对吗?我认为它不存在,但我很高兴看到一个答案表明我错了。
  • 是的,总结得差不多了。看起来和我正在寻找的完全一样。但正如你所说,我在 Silverlight 中需要它。但是感谢那个链接,我想现在我知道的更多,我可以在几个谷歌搜索中使用:-)
  • 似乎没有ToString 重载需要一种文化——拥有一个表明您可以获得本地化输出。在这种情况下,我认为你不能。
  • 感谢 ChrisF 的输入,我认为你是对的。我决定手动翻译我需要的值。至少不是 Key 枚举的每个值都必须翻译,因为其中只有一些实际上对于其他语言具有不同的名称。

标签: c# silverlight silverlight-4.0 translation


【解决方案1】:

与大多数语言支持一样,您必须在 Silverlight 中自己执行此操作。当然,有一些方法可以让这变得更容易。

如果您的应用在浏览器外运行 (OOB),在 Silverlight 4 中,您可以部署一个 COM 对象,该对象将本机调用包装到 GetKeyNameText;在 Silverlight 5、OOB 或提升的浏览器内应用程序中,您可以直接 P/Invoke 它。

但是,如果您在没有提升权限的情况下在浏览器中运行,您的选择就会大大减少。我不知道有任何库(商业或其他)提供此功能,因此您将不得不创建自己的可本地化资源和相关方法来实现此功能。

您可能会发现W3C guidance on accessibility in Silverlight 是一个有用的资源。

【讨论】:

    猜你喜欢
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    相关资源
    最近更新 更多