我们可以用c#在asp.net中创建枚举多语言吗

时间:2011-08-04 03:58:27

标签: c# asp.net enums multilingual

我正在使用多语言网站,其中我使用了一些枚举,现在我们可以根据多语言制作这些枚举?

我的枚举结构是

public enum abc
{
  [Description{"multilingual text"}]
  StatucActive = 1
}
像这样。我想在描述中写多语言文字。

3 个答案:

答案 0 :(得分:5)

您应该按照以下步骤操作:

(1)准备资源文件,例如resource.en-US.resx / resource.zh-CN.resx /等。每个资源文件都有键和值,它们的键在文件之间是相同的,值在语言上是不同的。

(2)定义你自己的DescriptionAttribute,如下所示:

public class LocalDescriptionAttribute : DescriptionAttribute
{
    public string ResourceKey { get; set; }
    public string CultureCode { get; set; }
    //you can set a default value of CultureCode
    //so that you needn't set it everywhere
    public override string Description
    {
        get
        {
            //core of this attribute
            //first find the corresponding resource file by CultureCode
            //and then get the description text by the ResourceKey
        }
    }
}

用法:

public enum MyTexts
{
    [LocalDescription(CultureCode="zh-CN", ResourceKey="Title")]
    Title = 0,
    [LocalDescription(ResourceKey="Status")]   //default CultureCode
    Status = 1
}

答案 1 :(得分:1)

不,我们不能将enum用作多语言,但我有一个替代选项,即使用资源文件,它在某些情况下像枚举一样工作。

请尝试资源文件,它将解决您的问题....

答案 2 :(得分:0)

翻译枚举的简单方法是为您想要的每种语言创建一个值数组。

String language1 [] = {“value”,“value2”};

String language2 [] = {“other value”,“other value2”};

String multi = language2 [enumvalue];

您的枚举值将成为您的字符串翻译数组的索引。