9.基于SpringBoot3+I18N实现国际化

1. 新建资源文件

在resources目录下新建目录i18n, 然后
新建messages_en.properties文件

user.login.error=account or password error!

新建messages_zh_CN.properties文件

user.login.error=帐户或密码错误!
2. 新建LocaleConfig.java文件
@Configuration
public class LocaleConfig {
    
    

    @Bean
    public ResourceBundleMessageSource messageSource() {
    
    
        Locale.setDefault(Locale.CHINA);
        ResourceBundleMessageSource source = new ResourceBundleMessageSource();
        //设置国际化文件存储路径和名称    i18n目录,messages文件名
        source.setBasenames("i18n/messages", "i18n/error", "i18n/message-system");
        //设置根据key如果没有获取到对应的文本信息,则返回key作为信息
        source.setUseCodeAsDefaultMessage(true);
        //设置字符编码
        source.setDefaultEncoding("UTF-8");
        return source;
    }

}
3. 新建Utils.java文件
@Component
public class Utils implements ApplicationContextAware {
    
    

    private static ApplicationContext applicationContext;

    /**
     * 获取国际化信息
     *
     * @param key
     *            String :传入的国际化key
     * @param obj
     *            Object :传入的国际化参数
     * @return String 返回国际化信息
     */
    public static String getI18n(String key, Object[] obj) {
    
    
        // 目前我在Utils中写死中文,具体使用时请可配置化
        Locale locale = Locale.CHINA;
        String menuName = applicationContext.getMessage(key, obj, "", locale);
        return menuName;
    }


    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    
    
        if (Utils.applicationContext == null) {
    
    
            Utils.applicationContext = applicationContext;
        }
    }

    public static ApplicationContext getApplicationContext() {
    
    
        return applicationContext;
    }
}
4. 改造登录接口
public ResponseVo login(UserDto userDto) {
    
    
        // 判断是否存在该用户
        if (user == null) {
    
    
            return ResponseVo.error(Utils.getI18n("user.login.error", null));
        }
}
5. 启动项目验证

如果出现乱码情况,请将文件设置为UTF-8即可

猜你喜欢

转载自blog.csdn.net/SJshenjian/article/details/134834140