1

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

4

2 回答 2

1

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

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);
}
于 2013-09-18T19:54:32.847 回答
0

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

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

于 2013-09-18T19:43:18.157 回答