国际化方案&枚举类中文国际化处理

国际化方案&枚举类中文国际化处理

枚举类中文国际化处理-改造步骤

spring 配置文件(例:applicationContext.xml)中定义 applicationContextHolder bean(务必确保优先扫描加载此bean)
  1. 实现I18nEnumTools

  2. @Component
    @DependsOn("I18nApplicationContextHolder")
    public class I18nEnumTools {
    public 18nEnumTools() {
    ApplicationContext applicationContext = ApplicationContextHolder.getApplicationContext();
    System.out.println("I18nApplicationContextHolder = " + applicationContext.toString());
    }
    public static String getMessage(String I18nKey, String defaultMessage){
    String message = ApplicationContextHolder.getApplicationContext()
    .getMessage(I18nKey, null,
    defaultMessage, LocaleContextHolder.getLocale());
    return message;
    }
    }

改造现有枚举类,针对中文字段xxx添加对应的xxxI18nKey字段
添加或修改中文字段xxx的getter方法

public enum DemoEnum {
/* 1.现有枚举值添加对应中文字段的I18nKey */
DEMO_1("姓名1", "测试1", "java.DemoEnum.DEMO_1.xing_ming_1", "java.DemoEnum.DEMO_1.ce_shi_1"),
DEMO_2("姓名2", "测试2", "java.DemoEnum.DEMO_2.xing_ming_2", "java.DemoEnum.DEMO_2.ce_shi_2");
private final String name;
private final String desc;
/* 2.定义字段 */
private final String nameI18nKey;
private final String descI18nKey;
DemoEnum(String name, String desc, String nameI18nKey, String descI18nKey) {
this.name = name;
this.desc = desc;
/* 3. 构造函数添加对应中文字段的I18nKey */
this.nameBdpI18nKey = nameI18nKey;
this.descBdpI18nKey = descI18nKey;
}
/* 4.使用I18nEnumTools静态方法实现动态获取i18n值 */
public String getDesc() {
return I18nEnumTools.getMessage(this.descI18nKey, this.desc);
}
public String getName() {
return I18nEnumTools.getMessage(this.nameI18nKey, this.name);
}
}

枚举引用处改为对应getter

@RequestMapping("/demo")
@ResponseBody
public Object i18nDemo(){
HashMap<String, String> result = new HashMap<>();
result.put("demo1.name", DemoEnum.DEMO_1.getName());
result.put("demo1.desc", DemoEnum.DEMO_1.getDesc());
result.put("demo2.name", DemoEnum.DEMO_2.getName());
result.put("demo2.desc", DemoEnum.DEMO_2.getDesc());
return result;
}
posted @   三号小玩家  阅读(546)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2019-04-04 下载安装wps后去除监控
2019-04-04 如何删除一个win10的服务
2019-04-04 多线程09.生产者消费者网络版
2019-04-04 多线程08.生产者消费者单机版
2019-04-04 查看程序死锁
2019-04-04 多线程08.优雅结束线程的三种方式
Title
三号小玩家的 Mail: 17612457115@163.com, 联系QQ: 1359720840 微信: QQ1359720840

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示