Можем ли мы сделать enum многоязычным в asp.net с помощью c # - PullRequest
4 голосов
/ 04 августа 2011

Я работаю над многоязычным сайтом, на котором я использовал некоторое перечисление, и теперь возможно, что мы сможем сделать перечисление тезисов согласно многоязычному?

Моя структура enum

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

как это. я хочу написать многоязычный текст в описании.

Ответы [ 3 ]

5 голосов
/ 04 августа 2011

Вы должны выполнить следующие действия:

(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 голос
/ 10 августа 2011

Нет, мы не можем использовать enum как многоязычный, но у меня есть альтернативный вариант, который использует файл ресурсов, он работает как enum в некоторых ситуациях.

Пожалуйста, попробуйте файл ресурса, и он решит вашу проблему ....

0 голосов
/ 04 августа 2011

Простой способ перевести перечисленное - создать массив значений для каждого языка, который вы хотите.

String language1 [] = {"value", "value2"};

String language2 [] = {"другое значение", "другое значение2"};

String multi = language2 [enumvalue];

Ваше значение перечисления становится индексом для вашего массива переводов.

...