Enum localization

后端 未结 15 753
慢半拍i
慢半拍i 2020-11-30 17:56

How do you localize enums for a ListBoxFor where multiple options are possible?

For example an enum that contains roles:

pu         


        
15条回答
  •  春和景丽
    2020-11-30 18:22

    You could use Lexical.Localization¹ which allows embedding default value and culture specific values into the code, and be expanded in external localization files (like .json, .resx or .ini) for futher cultures.

    namespace Library
    {
        enum Permissions
        {
            Create = 1,
            Drop = 2,
            Modify = 4,
            GrantCreate = 8,
            GrantDrop = 16,
            GrantModify = 32
        }
    }
    

    In Program code:

    // Load localization.ini
    LineRoot.Builder.AddLocalizationFile("localization.ini").Build();
    // Create key for enum
    ILine key = LineRoot.Global.Assembly("ConsoleApp4").Type().Format("{0}");
    // Print 
    Console.WriteLine(key.Value(Permissions.Create | Permissions.Drop));
    Console.WriteLine(key.Value(Permissions.Create | Permissions.Drop).Culture("en"));
    Console.WriteLine(key.Value(Permissions.Create | Permissions.Drop).Culture("fi"));
    

    localization.ini:

    [Assembly:ConsoleApp4:Type:Library.Permissions:Culture:fi]
    Key:Create = Luonti
    Key:Drop = Poisto
    Key:Modify = Muutos
    Key:GrantCreate = Luonnin myöntö
    Key:GrantDrop = Poiston myöntö
    Key:GrantModify = Muutoksen myöntö
    
    [Assembly:ConsoleApp4:Type:Library.Permissions:Culture:en]
    Key:Create = Create
    Key:Drop = Drop
    Key:Modify = Modify
    Key:GrantCreate = Grant Create
    Key:GrantDrop = Grant Drop
    Key:GrantModify = Grant Modify 
    

    ¹ (I'm maintainer of that library)

提交回复
热议问题