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

相关推荐
llz_1121 小时前
web-第二次课后作业
前端·后端·web
红尘散仙7 小时前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
卷毛的技术笔记8 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
会编程的土豆9 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
喵个咪9 小时前
GoWind Toolkit Go后端代码生成 完整全流程实战
后端·go·orm
basketball6169 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
qq_2518364579 小时前
SpringBoot+Vue 共享电池柜管理系统 完整实现 前后端分离项目实战 完整代码
vue.js·spring boot·后端
zhangxingchao10 小时前
AI 大模型核心六:量化、Workflow 与 Agent、多轮 RAG
前端·人工智能·后端
IT_陈寒11 小时前
Vite打包时遇到的坑,原来问题出在这里
前端·人工智能·后端
ayqy贾杰12 小时前
基层管理的三板斧,在AI时代行不通了
前端·后端·团队管理