有没有办法用其他语言获得System.Drawing.KnownColor集合,比如西班牙语?

时间:2013-09-18 19:38:09

标签: c# colors translate

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

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您可以使用ReflectionCompiler对象编写系统,将已知对象及其值转换为字符串,从而可以以编程方式替换属性名称,动态编译并加载我已经使用过这种方法来做一些不稳定的,笨拙的,有趣的替代品。

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