java国际化服务器不识别_国际化踩坑记录java.util.MissingResourceException:

 2023-09-23 阅读 15 评论 0

摘要:在做国际化的时候遇到一个bug是无法加载到根目录下的自定义的properties文件报错如下:java.util.MissingResourceException: Can't find bundle for base name il8n/message,locale en_USimage.png原因是没有加载到根目录下的文件我的根目录如下:ima

在做国际化的时候遇到一个bug是无法加载到根目录下的自定义的properties文件

报错如下:

java.util.MissingResourceException: Can't find bundle for base name il8n/message,locale en_US

18c2676ba551

image.png

原因是没有加载到根目录下的文件

我的根目录如下:

18c2676ba551

image.png

代码如下:

/**

* Spring 方式

* @param args

*/

private static ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();

static {

//指定国家化资源文件路径

messageSource.setBasename("il8n/messages");

//指定将用来加载对应资源文件时使用的编码,默认为空,表示将使用默认的编码进行获取。

messageSource.setDefaultEncoding("UTF-8");

}

public static String getChineseValueByKey(String key){

return messageSource.getMessage(key, null, Locale.CHINA);

}

public static String getDeafultValueByKey(String key){

return messageSource.getMessage(key, null, null);

}

public static String getEnglishValueByKey(String key){

return messageSource.getMessage(key, null, Locale.US);

}

public static String getValueAndPlaceholder(String key){

return messageSource.getMessage(key, new Object[]{"安全"}, null);

}

仔细检查了几遍代码和配置没有错误,最后查看编译后的target文件下的classes目录下il8n目录并没有编译到更目录下,然后开始了漫长的排查过程--------------------------------------;

最终发现问题尽然在这里!!!

18c2676ba551

image.png

pom文件打包配置了只编译resources下的application.properties文件!!!

解决方法:

注释掉下所有配置项

18c2676ba551

image.png

至此,国际化完成!!!

下边放所有代码:

18c2676ba551

image.png

文件内容替换自己的就可以:

18c2676ba551

image.png

package com.wechat.wechatservice.utils;

import org.springframework.context.MessageSource;

import org.springframework.context.i18n.LocaleContext;

import org.springframework.context.i18n.LocaleContextHolder;

import org.springframework.context.support.ResourceBundleMessageSource;

import org.springframework.stereotype.Component;

import java.text.MessageFormat;

import java.util.Locale;

import java.util.ResourceBundle;

/**

* @BelongsProject: wechat_java

* @BelongsPackage: com.wechat.wechatservice.utils

* @Author: admin

* @CreateTime: 2021-01-05 11:14

* @Description: 获取国际化配置文件

*/

@Component

public class ResourceUtils {

/* public static String getEnglishValueByKey(String key){

Locale locale = new Locale("en", "US");

//使用指定的英文Locale

ResourceBundle mySource = ResourceBundle.getBundle("is8n/message", locale);

return mySource.getString(key);

}

public static String getChineseValueByKey(String key){

Locale locale = Locale.getDefault();

//使用指定的中文Locale

ResourceBundle mySource = ResourceBundle.getBundle("is8n/messages", locale);

return mySource.getString(key);

}

public static String getDeafultValueByKey(String key){

//使用默认的Locale

ResourceBundle mySource = ResourceBundle.getBundle("is8n/message");

return mySource.getString(key);

}

public static String getValueAndPlaceholder(String key){

//使用默认的Locale

ResourceBundle mySource = ResourceBundle.getBundle("is8n/message");

String beforeValue = mySource.getString(key);

//填充国家化文件中的占位符

String afterValue = MessageFormat.format(beforeValue, "安全");

return afterValue;

}*/

/**

* Spring 方式

* @param args

*/

private static ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();

static {

//指定国家化资源文件路径

messageSource.setBasename("il8n/messages");

//指定将用来加载对应资源文件时使用的编码,默认为空,表示将使用默认的编码进行获取。

messageSource.setDefaultEncoding("UTF-8");

}

public static String getChineseValueByKey(String key){

return messageSource.getMessage(key, null, Locale.CHINA);

}

public static String getDeafultValueByKey(String key){

return messageSource.getMessage(key, null, null);

}

public static String getEnglishValueByKey(String key){

return messageSource.getMessage(key, null, Locale.US);

}

public static String getValueAndPlaceholder(String key){

return messageSource.getMessage(key, new Object[]{"安全"}, null);

}

public static void main(String[] args) {

//System.out.println(get("com.website.operation"));

System.out.println(ResourceUtils.getChineseValueByKey("com.website.operation"));

System.out.println(ResourceUtils.getDeafultValueByKey("com.website.operation"));

System.out.println(ResourceUtils.getEnglishValueByKey("com.website.operation"));

System.out.println(ResourceUtils.getValueAndPlaceholder("com.website.writeLog"));

}

}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/90699.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息