本地化自定义枚举属性

时间:2014-03-05 12:10:37

标签: c# .net

我有财产

public MyEnumType MyType {get; set;}

我的枚举类型是

public enum MyEnumType
{
    One = 1,
    Two = 2,
    Three = 3,       
}

是否可以在不修改枚举类型

的情况下本地化MyType属性

3 个答案:

答案 0 :(得分:0)

不是。它并不意味着。那不是输出文本,它们是程序名称。

这不是本地化(输出的翻译),你要做的是在源代码中翻译类名。

使用通常的本地化框架可以对输出进行本地化。取决于输出技术。

答案 1 :(得分:0)

您可以使用扩展方法创建自己的ToString(),而无需更改枚举本身。

using System;

namespace ConsoleApplication1 {
  public enum MyEnumType {
    One = 1,
    Two = 2,
    Three = 3,
  }

  public static class Extension {
    public static string ToLocalizedString(this MyEnumType type) {
      // check System.Threading.Thread.CurrentThread.CurrentCulture 
      // if you need current culture context
      switch (type) {
        case MyEnumType.One:
          return "Ein";
        case MyEnumType.Two:
          return "Zwei";
        case MyEnumType.Three:
          return "Drei";
        default:
          throw new NotImplementedException();
      }
    }
  }

  class Program {
    static void Main(string[] args) {
      var foo = MyEnumType.One;
      Console.Out.WriteLine(foo.ToLocalizedString());
    }
  }
}

答案 2 :(得分:0)

如果你需要“本地化”“ToString”转换,你可以选择静态类的静态方法

public static class Localization
{
  public static string ToCultureString(this MyEnumType type)
  {
     return ResourceManager.GetString(type.ToString(), Culture);
  }
}

!请注意:

  • 文化陈述;
  • 您可以翻译cooresponded键的资源文件

您需要的文化的rce文件,您使用枚举中定义的键

您还可以使用以下代码:

  var asString =  MyObj.MyType.ToCultureString();