【问题标题】:Is there a way to get the System.Drawing.KnownColor collection in other language, like Spanish?有没有办法以其他语言(如西班牙语)获取 System.Drawing.KnownColor 集合?
【发布时间】:2013-09-23 17:19:49
【问题描述】:

我正在检索System.Drawing.KnownColor 的集合,但我想翻译颜色名称。有没有办法做到这一点?我的意思是,我可以一个一个地翻译所有的颜色,但是有没有简单的方法?

【问题讨论】:

  • 与 .NET 中的所有内置集合一样,KnownColor 集合在任何地方都有相同的元素(无论 VS 使用什么语言)。你能澄清一下你为什么问这个吗?也许有一种解决方法可以满足您的需求。
  • 我想在 ComboBox 中列出这些颜色,但颜色的语言必须与“ApplicationLanguage”(英语或西班牙语)匹配
  • @varocarbas KnownColor 是枚举而不是集合
  • @SriramSakthivel 抱歉出现错误。当我说“集合”时,我通常是泛泛而谈(不是指确切的 .NET 集合)。不过还是谢谢你的指正。
  • 您可以查看google'sbing's translate api。谷歌花钱,必应免费。

标签: c# colors translate


【解决方案1】:

您必须手动执行翻译。 Dictionary 将帮助您轻松地在语言之间切换。示例代码:

Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add(KnownColor.ActiveBorder.ToString(), "BordeActivo");
dict.Add(KnownColor.ActiveCaption.ToString(), "MensajeActivo");
dict.Add(KnownColor.ActiveCaptionText.ToString(), "TextoMensajeActivo");
//etc.    

bool languageIsEnglish = true;
foreach (string entry in dict.Keys)
{
    string curVal = entry;
    if (!languageIsEnglish)
    {
        curVal = dict[entry];
    }

    comboBox1.Items.Add(curVal);
}

【讨论】:

  • 您可以为此目的使用 ResourceManager,您可以轻松支持任意数量的语言
  • @SriramSakthivel 您可以使用很多东西,但我认为建议的字典没有任何问题(对于足够小的尺寸是一个非常有效的解决方案)。你觉得我的提议有什么问题?
  • @SriramSakthivel 从逻辑上讲,建议的解决方案适用于特定情况(只有两种语言)。对于更多语言,填充组合框的循环也不起作用。
  • 当然,没问题你的解决方案可以解决问题。这纯粹是我的建议而不是反对。如果你觉得我的建议是有效的,你可以接受。虽然 +1 是一种很好的解决方法
  • @SriramSakthivel 谢谢。您的建议比建议的解决方案更具可扩展性,并且应该考虑用于更复杂的情况(您不能依赖字典来翻译 10 种语言的整个词汇表,从逻辑上讲)。我相信您的评论对于未来的读者来说会很有趣,尽管不认为这应该包含在我的答案中:对于一个正在寻找让事情变得更快/更容易的 OP 来说,这是一个简单的解决方案答案(针对一个简单的问题) ,为什么要使事情进一步复杂化?复杂化的部分意味着复杂的寻求者:cmets :)
【解决方案2】:

您可以使用ReflectionCompiler 对象编写一个系统来将已知对象及其值转换为字符串,从而您可以以编程方式替换属性名称、即时编译并加载它。我'以前曾使用过这种方法来做一些不可靠的,hacky,只是为了好玩的替代品。

所以基本上只使用enum.GetNamesenum.GetValues 来获取枚举中项目的名称和实际值。然后将这些转换为字符串并重新创建字符串中枚举的代码,将给定的名称(英文)替换为您想要的名称(我猜是西班牙语)。然后将此字符串传递给编译器对象,然后从那里开始。

【讨论】:

  • 我认为他更多的是询问翻译而不是实际获取所有值。
  • 是的,如果我不够清楚,抱歉。我确实有一个包含所有颜色的 List,但它们是英文的,我希望它们是西班牙文的。
  • @NickLScott 将它们翻译成Spanish 手动并将结果存储在Dictionary,我认为没有任何图书馆的东西为你做翻译。
  • @KingKing 那个系列的颜色太多了,这就是为什么我要一个简单的方法。
  • 对不起,我在想你想用重命名的版本替换/补充现有的枚举。这里的事情过于复杂了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多