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
    }
}
相关文章
|
4月前
|
前端开发 JavaScript Java
Java学习路线
Java学习路线
67 1
|
3月前
|
Java 开发者
Java 学习路线 2024 最新版!
又对上次分享的 Java 学习路线进行了简单修改完善,并增加了免登录下载和黑夜模式,这里重发一下。 花了一个月零碎的时间,我根据当下 Java 后端求职和招聘的最新要求,对之前写的 Java 后端学习路线进行了全面的优化和改进。
|
1月前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
94 3
|
2月前
|
设计模式 Java 微服务
Java高薪学习路线:解锁Java开发的黄金钥匙
Java高薪学习路线:解锁Java开发的黄金钥匙
154 0
|
3月前
|
Java
java学习路线分享
java学习路线分享
|
4月前
|
算法 Java 数据库
Java开发学习路线
Java开发学习路线
35 0
|
4月前
|
运维 Java 开发工具
Java后端学习路线6大维度详细总结(编程基础+开发工具+应用框架+运维知识+成神之路+平稳降落)【可作为知识点梳理列表】【点击可查看高清原图】
Java后端学习路线6大维度详细总结(编程基础+开发工具+应用框架+运维知识+成神之路+平稳降落)【可作为知识点梳理列表】【点击可查看高清原图】
38 0
|
5月前
|
消息中间件 架构师 Java
价值年薪70W的JAVA进阶学习路线!终于让我从阿里P8手里抠出来了
作为一个男人我感觉必须得做点什么来证明一下自己,现在我又回来了,准备把自己的节操准备补一下。另外给各位未来的Java程序员说一句,别的我不清楚,学习编程请从一而终
|
8月前
|
Java 关系型数据库 MySQL
JAVA后端学习路线
JAVA后端学习路线
106 0
JAVA后端学习路线
|
8月前
|
消息中间件 NoSQL Java
黑马的JAVA学习路线--详解JAVA部分的学习
黑马的JAVA学习路线--详解JAVA部分的学习 CSDN 转过来的,所以格式与内容有些许错误请见谅