繁体   English   中英

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

[英]Can we make enum multilingual in asp.net with c#

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

我的枚举结构是

public enum abc
{
  [Description{"multilingual text"}]
  StatucActive = 1
}

像这样。 我想在描述中写多语言文字。

你应该按照以下步骤:

(1)准备资源文件,例如resource.en-US.resx / resource.zh-CN.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
}

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

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

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

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

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

String multi = language2 [enumvalue];

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM