有可能获得.NET枚举的Windows本地化吗?例如,我希望获得System.IO.Ports.Parity值的转换。
下面是System.IO.Ports.Parity:
public enum Parity
{
None = 0,
Odd = 1,
Even = 2,
Mark = 3,
Space = 4,
}Windows在COM-port属性窗口中将它们显示为{“Чет”,“Нечет”,“Нет”,“Маркер”,“Пробел”}(我使用的是俄语版本的Windows8)。
问题是,我不想硬编码这些“翻译”。我想根据当前的文化自动获取它们。
发布于 2014-05-27 17:56:55
不,枚举没有本地化。
枚举的全部意义在于,您可以使用描述性名称而不是值,因此如果要将值设置为Mark而不是3,则可以更轻松地进行编码
然后,当您比较这些值时,您不必记住3代表Mark
您不应该向用户显示EnumValue.ToString(),但是您可以创建自己的名为strings的资源文件,使用适当的值添加一个名为Mark的资源,然后像这样查找该值:
ResourceManager rm = strings.ResourceManager;
Debug.WriteLine(rm.GetString(System.IO.Ports.Parity.Mark.ToString()));有关详细信息,请参阅How to use localization in C#和Getting a string dynamically from strings resources。
但这确实涉及到你创建所有翻译的一些临时工作。
https://stackoverflow.com/questions/23884874
复制相似问题