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 应用的国际化。只需创建对应的资源文件并加载,即可根据用户的语言环境显示不同的文本内容。

相关推荐
PinkSun34 分钟前
Spring AI RAG踩坑:我骂了半年的FilterExpression,其实是背锅侠
后端·ai编程
by————组态38 分钟前
Ricon组态系统 - 新一代Web可视化组态平台
前端·后端·物联网·架构·组态·组态软件
云技纵横40 分钟前
ThreadLocal 内存泄漏:你的应用正在悄悄 OOM
后端
小撒的私房菜1 小时前
Multi-Agent 里谁来指挥?我用一个调度员,让多个 Agent 开始协作
人工智能·后端·agent
范什么特西1 小时前
Spring boot细节
java·spring boot·后端
苍何1 小时前
高考填志愿,我做了个 Skill,300 个 Agent 同时查公司
后端
yspwf1 小时前
NestJS 配置管理完整方案
后端·架构·node.js
雪隐1 小时前
个人电脑玩AI-03让5060 Ti给你打工——paddleOCR
人工智能·后端
AskHarries2 小时前
Shell Tool:命令执行、输出读取和长任务管理
后端
苍何2 小时前
开源项目想出海,我让 AI 员工帮我找海外达人
后端