我正在检索System.Drawing.KnownColor
的集合,但我想翻译颜色名称。有办法吗?我的意思是,我可以逐个翻译所有颜色,但有一种简单的方法吗?
答案 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)
您可以使用Reflection和Compiler对象编写系统,将已知对象及其值转换为字符串,从而可以以编程方式替换属性名称,动态编译并加载我已经使用过这种方法来做一些不稳定的,笨拙的,有趣的替代品。
所以基本上只需使用enum.GetNames和enum.GetValues来获取枚举中项目的名称和实际值。然后将这些转换为字符串,并在字符串中重新创建枚举的代码,用您想要的名称替换给定的名称(英文)(我想用西班牙语)。然后将此字符串传递给编译器对象,然后从那里开始。