java中的国际化

参考:cloud.tencent.com/developer/a...

在 Java 中实现国际化(i18n)通常使用 java.util.Localejava.util.ResourceBundle 类来实现。以下是国际化实现的关键步骤和示例:


1. 定义 Locale

Locale 表示特定的地域和语言环境,通常由语言和地区组成。例如:

java 复制代码
Locale localeEn = new Locale("en", "US"); // 英语,美国
Locale localeZh = new Locale("zh", "CN"); // 中文,中国

2. 创建资源文件

资源文件是用于存储不同语言环境下的文本信息,通常以 .properties 文件形式存在。

文件结构

css 复制代码
src/main/resources/
├── locale_en_US.properties
├── locale_zh_CN.properties

示例内容

  • locale_en_US.properties

    properties 复制代码
    name=Hello World
    time=Current time is {0}
  • locale_zh_CN.properties

    properties 复制代码
    name=你好,世界
    time=当前时间是 {0}

3. 加载资源文件

使用 ResourceBundle.getBundle("baseName", locale) 方法加载对应语言环境的资源文件。

示例代码

java 复制代码
@GetMapping("/test")
public void test() {
    Locale localeEn = new Locale("en", "US");
    Locale localeZh = new Locale("zh", "CN");

    ResourceBundle rbEn = ResourceBundle.getBundle("locale", localeEn);
    ResourceBundle rbZh = ResourceBundle.getBundle("locale", localeZh);

    System.out.println("us-US:" + rbEn.getString("name"));
    System.out.println("zh-CN:" + rbZh.getString("name"));
}

4. 格式化输出(可选)

如果资源文件中包含动态内容,可以使用 MessageFormatString.format 来格式化输出。

示例代码

java 复制代码
String timeEn = String.format(rbEn.getString("time"), "08:00");
String timeZh = String.format(rbZh.getString("time"), "08:00");
System.out.println("us-US:" + timeEn);
System.out.println("zh-CN:" + timeZh);

5. 注意事项

  • 资源文件命名规则
    • baseName_language_COUNTRY.properties
    • 例如:locale_en_US.propertieslocale_zh_CN.properties
  • 资源文件位置
    • 确保资源文件放在类路径下(如 src/main/resources)。
  • 编码格式
    • 使用 UTF-8 编码保存资源文件,避免乱码问题。

6. 运行结果

当访问 /test 接口时,输出如下:

makefile 复制代码
us-US:Hello World
zh-CN:你好,世界

总结

通过 LocaleResourceBundle,可以轻松实现 Java 应用的国际化。只需创建对应的资源文件并加载,即可根据用户的语言环境显示不同的文本内容。

相关推荐
q***47183 分钟前
Spring中的IOC详解
java·后端·spring
码事漫谈1 小时前
C++小白最容易踩的10个坑(附避坑指南)
后端
码事漫谈1 小时前
性能提升11.4%!C++ Vector的reserve()方法让我大吃一惊
后端
稚辉君.MCA_P8_Java2 小时前
Gemini永久会员 Java中的四边形不等式优化
java·后端·算法
稚辉君.MCA_P8_Java2 小时前
通义 插入排序(Insertion Sort)
数据结构·后端·算法·架构·排序算法
q***69772 小时前
【Spring Boot】统一数据返回
java·spring boot·后端
v***59832 小时前
DeepSeek API 调用 - Spring Boot 实现
windows·spring boot·后端
Hollis Chuang2 小时前
Spring Boot 4.0 正式发布,人麻了。。。
java·spring boot·后端·spring
Moshow郑锴2 小时前
实战分享:用 SpringBoot-API-Scheduler 构建 API 监控闭环 —— 从断言验证到智能警报
java·spring boot·后端·任务调度
金融数据出海3 小时前
日本股票市场渲染 KlineCharts K 线图
前端·后端