注册翻译 - 枚举文本

优质
小牛编辑
142浏览
2023-12-01

可以用 Description 特性显示指定枚举值的文本。

  1. namespace MyApplication
  2. {
  3. public enum Sample
  4. {
  5. [Description("First Value")]
  6. Value1 = 1,
  7. [Description("Second Value")]
  8. Value2 = 2
  9. }
  10. }

此枚举和它的 Description 特性定义以下的本地化文本键和翻译:

KeyLanguageIDText (Translation)
Enums.MyApplication.Sample.Value1First Value
Enums.MyApplication.Sample.Value2Second Value

默认情况下,所有的文本都作为固定语言 ID 的翻译。

可以使用这些键访问枚举值的翻译描述,或者使用枚举类型(需引用 Serenity 命名空间) 定义的扩展方法 GetText()。

  1. using Serenity;
  2. //...
  3. Console.WriteLine(MyApplication.Sample.Value1.GetText());
  1. > First Value

EnumKey 特性

枚举翻译使用枚举类型的全名作为生成本地文本键的前缀。该前缀也以被 EnumKeyAttribute 重载:

  1. namespace MyApplication
  2. {
  3. [EnumKey("Something")]
  4. public enum Sample
  5. {
  6. [Description("First Value")]
  7. Value1 = 1,
  8. [Description("Second Value")]
  9. Value2 = 2
  10. }
  11. }

现在定义的键和翻译是:

KeyLanguageIDText (Translation)
Enums.Something.Value1First Value
Enums.Something.Value2Second Value

EnumLocalTextRegistration 类

[命名空间: Serenity.Localization, 程序集: Serenity.Core]

若要枚举注册的本地化文本定义,你需要在应用程序启动时调用 EnumLocalTextRegistration.Initialize() 方法:

  1. void Application_Start()
  2. {
  3. EnumLocalTextRegistration.Initialize(ExtensibilityHelper.SelfAssemblies);
  4. }

它获取程序集列表以检索枚举类型。你可以手工传递程序集列表或使用 ExtensibilityHelper.SelfAssemblies (包含 Serenity 程序集的所有引用)。

默认情况下, CommonInitialization.Run 和 CommonInitialization.InitializeLocalTexts 方法会调用它。