IMO, значение Enum должно быть отражено в домене и не должно относиться к пользовательскому интерфейсу (language-context).
Возможно, вы захотите сделать это
public enum DownloadStatus
{
Complete = 1,
Failed = 2,
InProgress = 3
}
и использование некоторого метода EnumHelper для получения описания культуры для уровня пользовательского интерфейса
var downloadStatusString = EnumHelper.GetDescription<DownloadStatus>(DownloadStatus.Complete);
и класс EnumHelper будет читать специфическую для культуры строку из файла ресурсов
public static class EnumHelper
{
public static string GetDescription<T>(T value)
where T : struct
{
if (!typeof(T).IsEnum)
{
throw new ArgumentException("value must be Enum.", "value");
}
var name = value.ToString();
string resourceKey = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", typeof(T).FullName, name);
object resource = HttpContext.GetGlobalResourceObject("EnumDescriptions", resourceKey, Thread.CurrentThread.CurrentUICulture);
string description = resource as string ?? name;
return description;
}
}
Примечание: имя файла ресурса - EnumDescription , ключ должен быть этим преобразованием YourNamespace.EnumType_EnumValueInString
. ( Я использую HttpContext для получения значения ресурса, и вы можете изменить его, если не используете ASP.Net. )