Возможно ли получить локализацию Windows для.NET перечислений? Например, я хотел бы получить перевод значений System.IO.Ports.Parity.
Вот System.IO.Ports.Parity:
public enum Parity
{
None = 0,
Odd = 1,
Even = 2,
Mark = 3,
Space = 4,
}
Windows показывает их как "Чет", "Нечет", "Нет", "Маркер", "Пробел"} в окне свойств COM-порта (я использую русскую версию Windows 8).
Дело в том, что я не хочу жестко кодировать эти "переводы". Я хотел бы получить их автоматически в соответствии с текущей культурой.
Нет, для Enums нет локализации.
Весь смысл Enums состоит в том, что вы можете использовать описательное имя, а не значение, поэтому он упрощает кодирование, если вы задаете значение Mark
вместо 3
Затем, когда вы сравниваете значение, вам не нужно помнить, что 3
представляет Mark
Вы не должны отображать EnumValue.ToString()
пользователю, но вы можете создать свой собственный файл ресурсов с именами strings
, добавить ресурс с именем Mark
с соответствующим значением, а затем найти значение, подобное этому:
ResourceManager rm = strings.ResourceManager;
Debug.WriteLine(rm.GetString(System.IO.Ports.Parity.Mark.ToString()));
См. Раздел " Использование локализации в С#" и " Получение строки динамически из ресурсов строк" для получения дополнительной информации.
Но это связано с некоторой работой с вашей стороны, создающей все переводы.
"Parity"
) является правильным способом локализации.