Java学习路线-21:国际化Locale、ResourceBundle、MessageFormat

简介: Java学习路线-21:国际化Locale、ResourceBundle、MessageFormat

第11 章 : 国际化程序实现

42 国际化程序实现原理

统一程序代码,根据不同国家实现不同语言描述

需要解决问题:

1、定义保存文字信息

2、根据不同区域语言编码读取文件信息


43 Locale类

Locale类:专门描述区域和语言编码的类


构造方法


public Locale(String language)
public Locale(String language, String country)

国家语言代码

中文:zh_CN

美国:en_US


使用示例


import java.util.Locale;


class Demo {
    public static void main(String[] args){
        Locale loc = new Locale("zh", "CN");
        System.out.println(loc);
        // zh_CN
    }
}

读取本地默认环境


Locale loc = Locale.getDefault();
System.out.println(loc);
// zh_CN

使用常量


Locale loc = Locale.CHINA;
System.out.println(loc);
// zh_CN

44 ResourceBundle读取资源文件

public static final ResourceBundle getBundle(String baseName)
// baseName 没有后缀的文件名

资源文件 message.properties


info="这是消息"

读取实例

import java.io.UnsupportedEncodingException;
import java.util.ResourceBundle;
class Demo {
    public static void main(String[] args) throws UnsupportedEncodingException {
        ResourceBundle bundle = ResourceBundle.getBundle("message");
        // 解决中文乱码问题
        String message = new String(bundle.getString("info").getBytes("ISO-8859-1"), "utf-8");
        System.out.println(message);
        // "这是消息"
    }
}

45 实现国际化程序开发

CLASSPATH 下建立文件

cat Message.properties
info=默认资源 
cat Message_zh_CN.properties
info=中文资源 
cat Message_en_US.properties
info=英文资源

执行程序会读取中文资源

import java.io.UnsupportedEncodingException;
import java.util.ResourceBundle;
class Demo {
    public static void main(String[] args) throws UnsupportedEncodingException {
        ResourceBundle bundle = ResourceBundle.getBundle("message");
        // 解决中文乱码问题
        String message = new String(bundle.getString("info").getBytes("ISO-8859-1"), "utf-8");
        System.out.println(message);
        // 中文资源
    }
}

getBundle方法默认加载Locale.getDefault()

public static final ResourceBundle getBundle(String baseName)
    {
        return getBundleImpl(baseName, Locale.getDefault(),
                             getLoader(Reflection.getCallerClass()),
                             getDefaultControl(baseName));
    }

使用重载函数,读取英文资源


Locale locale = Locale.US;
ResourceBundle bundle = ResourceBundle.getBundle("message", locale);
// 解决中文乱码问题
String message = new String(bundle.getString("info").getBytes("ISO-8859-1"), "utf-8");
System.out.println(message);
// 英文资源

如果没有对应区域编码的资源文件,读取默认资源

读取流程:


指定区域的资源文件 > 默认的本地资源文件 > 公共的资源文件

46 格式化文本显示

格式化方法


public class MessageFormat extends Format {
    public static String format(String pattern, Object ... arguments)
}

代码示例


import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
class Demo {
    public static void main(String[] args) {
        // 占位符{}
        String message = "hello {0} date: {1}";
        System.out.println(MessageFormat.format(message, "admin", new SimpleDateFormat("yyyy-MM-dd").format(new Date())));
        // hello admin date: 2019-11-18
    }
}
相关文章
|
3月前
|
IDE Java 关系型数据库
Java 初学者学习路线(含代码示例)
本教程为Java初学者设计,涵盖基础语法、面向对象、集合、异常处理、文件操作、多线程、JDBC、Servlet及MyBatis等内容,每阶段配核心代码示例,强调动手实践,助你循序渐进掌握Java编程。
481 3
|
3月前
|
SQL Java 数据库
2025 年 Java 从零基础小白到编程高手的详细学习路线攻略
2025年Java学习路线涵盖基础语法、面向对象、数据库、JavaWeb、Spring全家桶、分布式、云原生与高并发技术,结合实战项目与源码分析,助力零基础学员系统掌握Java开发技能,从入门到精通,全面提升竞争力,顺利进阶编程高手。
719 1
|
3月前
|
SQL 算法 Java
零基础到精通的史上最强 Java 学习路线图推荐
史上最全Java学习路线图,涵盖基础语法、面向对象、数据结构与算法、多线程、JVM、Spring框架、数据库及项目实战,助你从零基础到精通Java开发,附完整代码与工具推荐。
276 3
零基础到精通的史上最强 Java 学习路线图推荐
|
3月前
|
SQL 算法 Java
适合自学的史上最强 Java 学习路线图分享
本路线图系统讲解Java从入门到进阶的学习路径,涵盖基础语法、面向对象编程、数据结构与算法、多线程、JVM原理、主流框架如Spring、数据库操作及项目实战,助你全面掌握Java开发技能,适合零基础及进阶学习。
914 0
|
3月前
|
Java API 数据库
2025 年最新 Java 实操学习路线,从入门到高级应用详细指南
2025年Java最新实操学习路线,涵盖从环境搭建到微服务、容器化部署的全流程实战内容,助你掌握Java 21核心特性、Spring Boot 3.2开发、云原生与微服务架构,提升企业级项目开发能力,适合从入门到高级应用的学习需求。
785 0
|
3月前
|
NoSQL Java 关系型数据库
超全 Java 学习路线,帮你系统掌握编程的超详细 Java 学习路线
本文为超全Java学习路线,涵盖基础语法、面向对象编程、数据结构与算法、多线程、JVM原理、主流框架(如Spring Boot)、数据库(MySQL、Redis)及项目实战等内容,助力从零基础到企业级开发高手的进阶之路。
350 1
|
3月前
|
缓存 Java API
2025 年小白也能轻松上手的 Java 最新学习路线与实操指南深度剖析
2025年Java最新学习路线与实操指南,涵盖基础语法、JVM调优、Spring Boot 3.x框架、微服务架构及容器化部署,结合实操案例,助你快速掌握企业级Java开发技能。
442 0
|
3月前
|
前端开发 Java 数据库连接
帮助新手快速上手的 JAVA 学习路线最详细版涵盖从入门到进阶的 JAVA 学习路线
本Java学习路线涵盖从基础语法、面向对象、异常处理到高级框架、微服务、JVM调优等内容,适合新手入门到进阶,助力掌握企业级开发技能,快速成为合格Java开发者。
573 3
|
3月前
|
监控 Java API
2025 年全新出炉的 Java 学习路线:从入门起步到实操精通的详细指南
2025年Java学习路线与实操指南,涵盖Java 21核心特性、虚拟线程、Spring Boot 3、微服务、Spring Security、容器化部署等前沿技术,助你从入门到企业级开发进阶。
843 0
|
4月前
|
NoSQL Java 关系型数据库
Java 从入门到进阶完整学习路线图规划与实战开发最佳实践指南
本文为Java开发者提供从入门到进阶的完整学习路线图,涵盖基础语法、面向对象、数据结构与算法、并发编程、JVM调优、主流框架(如Spring Boot)、数据库操作(MySQL、Redis)、微服务架构及云原生开发等内容,并结合实战案例与最佳实践,助力高效掌握Java核心技术。
446 1