Java 程序国际化
国际化(Internationalization,简称 I18n),可以理解为同一套程序在不同语言环境下使用,不同环境使用不同的语言。
Java里面提供了 Locale 类:
Locale对象表示了特定的地理、政治、文化地区,使用 Locale执行语言环境敏感的任务操作。
有两种方式创建Locale对象:
(1)构造方法
Locale(String language)
Locale(String language,String country)
(2)静态方法
getDefault()
Java中提供了 ResourceBundle 类:
国际化的核心在于语言的不同显示上,通常做法是定义不同的属性文件(*.properties),属性文件的内容形式为 key = value
ResourceBundle是一个对属性文件进行读取的工具类,读取时不用加上文件名的后缀。
getBoundle(String baseName)
getBoundle(String baseName,Locale locale)
getString(String key)
文件目录
properties文件示例
代码示例
package com.seven.javaSE; import java.text.MessageFormat; import java.util.Locale; import java.util.ResourceBundle; import java.util.Scanner; public class I18nDemo { public static void main(String[] args) { //定义不同的Locale对象 Locale locale_CN = new Locale("zh","CN"); Locale locale_US = new Locale("en","US"); //定义读取properties文件的对象 ResourceBundle rb = ResourceBundle.getBundle("com.seven.javaSE.info", locale_CN); System.out.println(rb.getString("systemName")); Scanner sc = new Scanner(System.in); //根据key获取对应的value System.out.println(rb.getString("inputUserName")); String username = sc.nextLine(); System.out.println(rb.getString("inputPassword")); String password = sc.nextLine(); if(username.equalsIgnoreCase("seven")&&password.equals("123")) { System.err.println(rb.getString("loginSuccess")); String welcome = rb.getString("welcome"); //动态填充字符串 welcome = MessageFormat.format(welcome, username); System.out.println(welcome); } else { System.out.println(rb.getString("loginFail")); } } }
本文来自博客园,作者:藤原豆腐渣渣,转载请注明原文链接:https://www.cnblogs.com/javafufeng/p/16305068.html