Получить локализацию Windows для .NET перечислений

1

Возможно ли получить локализацию 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).

Дело в том, что я не хочу жестко кодировать эти "переводы". Я хотел бы получить их автоматически в соответствии с текущей культурой.

Теги:

1 ответ

2

Нет, для Enums нет локализации.

Весь смысл Enums состоит в том, что вы можете использовать описательное имя, а не значение, поэтому он упрощает кодирование, если вы задаете значение Mark вместо 3

Затем, когда вы сравниваете значение, вам не нужно помнить, что 3 представляет Mark

Вы не должны отображать EnumValue.ToString() пользователю, но вы можете создать свой собственный файл ресурсов с именами strings, добавить ресурс с именем Mark с соответствующим значением, а затем найти значение, подобное этому:

ResourceManager rm = strings.ResourceManager;
Debug.WriteLine(rm.GetString(System.IO.Ports.Parity.Mark.ToString()));

См. Раздел " Использование локализации в С#" и " Получение строки динамически из ресурсов строк" для получения дополнительной информации.

Но это связано с некоторой работой с вашей стороны, создающей все переводы.

  • 0
    Вы правы, указав на то, на что вы указываете - однако интересный вопрос, который поднимает ОП, остается: допустим, я хотел использовать «текст по умолчанию для Windows» для чего-то, что я хочу отобразить (например: в диалоговом окне для настройки последовательный порт говорит «Паритет» на английском языке и «Паритет» на немецком языке), смогу ли я как-нибудь получить доступ к этому «тексту по умолчанию»?
  • 0
    @ThorstenDittmar, это все равно не применимо для всех перечислений (так как вы не можете использовать пробелы или специальные символы в именах и т. Д.). Таким образом, создание выделенной локализуемой строки (даже если они совпадают, например, "Parity" ) является правильным способом локализации.
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню