国际化程序的实现、文本的格式化(2021-12-14)

  同一个程序要推广到不同国家,就要显示对应区域的语言。解决方案是,每个国家有自己的区域编码,区域编码映射到对应语言的资源包。相关类有Locale,ResourceBundle
  另外,常见一种情况,要显示固定格式的文本,并且对部分内容进行填充。相关类有MessageFormat
  读取资源文件的顺序:指定区域编码的资源文件>本地区对应资源文件>没有区域编码的资源文件。

主类代码

package demo;

import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.ResourceBundle;

public class GlobalDemo {
    public static void main(String[] args) {
        Locale loc = new Locale("en","US");
        ResourceBundle res = ResourceBundle.getBundle("messages.message",loc);
        //根据键获取值
        String val = res.getString("info");     
        System.out.println("[指定区域编码en_US,填充前信息为:]"+val);
        //填充用户名、当前日期
        String newStr = MessageFormat.format(val,"fighterk",new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
        System.out.println("[填充后信息为:]"+newStr);
    }
}

messages包中的message_en_US.properties资源文件

info=Welcome,{0},date:{1}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容