• Java国际化程序


    根据不同的国家配置不同的资源文件(资源文件有时也称为属性文件,后缀为.properties),所有的资源文件以键值对的形式出现。

    Locale类

    ResourceBundle类

    //=================================================
    // File Name       :	Locale_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    import java.util.ResourceBundle;;
    
    
    //主类
    //Function        : 	Locale_demo
    public class Locale_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		ResourceBundle rb = ResourceBundle.getBundle("Message"); //找到资源文件
    		System.out.println("内容:"+rb.getString("info"));						//从资源文件中取得内容
    	}
    
    }
    

    根据Locale所选择的国家不同,输出不同国家的“你好”。

    在属性文件中不能直接写入中文,读出来也是乱码,因此要变成Unicode编码

    //=================================================
    // File Name       :	Locale_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    import java.util.Locale;
    import java.util.ResourceBundle;
    
    //主类
    //Function        : 	Locale_demo
    public class Locale_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		
    		Locale zhLoc = new Locale("zh","CN");		//表示中国地区
    		Locale enLoc = new Locale("en","US");		//表示美国地区
    		Locale frLoc = new Locale("fr","FR");		//表示法国地区
    		
    		ResourceBundle zhrb = ResourceBundle.getBundle("Message", zhLoc);	//找到中文的属性文件
    		ResourceBundle enrb = ResourceBundle.getBundle("Message",enLoc);	//找到英文的属性文件
    		ResourceBundle frrb = ResourceBundle.getBundle("Message",frLoc);	//找到法语的属性文件
    		
    		System.out.println("中文:"+zhrb.getString("info"));
    		System.out.println("英文:"+enrb.getString("info"));
    		System.out.println("法语:"+frrb.getString("info"));
    	}
    
    }
    

    使用MessageFormat格式化动态文本

    所有资源内容都是个固定的,但是输出的消息中如果包含一些动态文本,则必须使用占位符清楚地表示出动态文本的位置,占位符使用“{编号}”的格式出现。

    //=================================================
    // File Name       :	Locale_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    import java.text.MessageFormat;
    import java.util.Locale;
    import java.util.ResourceBundle;
    
    //类名:A
    //属性:
    //方法:
    
    
    //主类
    //Function        : 	Locale_demo
    public class Locale_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    //		ResourceBundle rb = ResourceBundle.getBundle("Message"); //找到资源文件
    //		System.out.println("内容:"+rb.getString("info"));						//从资源文件中取得内容
    		
    		Locale zhLoc = new Locale("zh","CN");		//表示中国地区
    		Locale enLoc = new Locale("en","US");		//表示美国地区
    		Locale frLoc = new Locale("fr","FR");		//表示法国地区
    		
    		ResourceBundle zhrb = ResourceBundle.getBundle("Message", zhLoc);	//找到中文的属性文件
    		ResourceBundle enrb = ResourceBundle.getBundle("Message",enLoc);	//找到英文的属性文件
    		ResourceBundle frrb = ResourceBundle.getBundle("Message",frLoc);	//找到法语的属性文件
    
    		System.out.println("中文:"+zhrb.getString("info"));
    		System.out.println("英文:"+enrb.getString("info"));
    		System.out.println("法语:"+frrb.getString("info"));
    		
    		//依次读取各个属性文件的内容,通过键值读取,此时的键值名称为“info_1”
    		String str1 = zhrb.getString("info_1");
    		String str2 = enrb.getString("info_1");
    		String str3 = frrb.getString("info_1");
    		System.out.println("中文:"+MessageFormat.format(str1,"张三"));
    		System.out.println("英文:"+MessageFormat.format(str2,"zhangsan"));
    		System.out.println("法语:"+MessageFormat.format(str3,"zhangsan"));
    	}
    
    }
    

     properties文件,文件名Message_zh_CN.properties

    info = u4F60u597D
    info_1 = u4F60u597DuFF0C{0}uFF01
    
  • 相关阅读:
    给安全平台编写插件模块的思路分享
    Chrome浏览器快捷键操作
    【字节青训营后端专场】Go 语言上手 工程实践
    【字节青训营后端专场】Go 语言上手 基础语言
    logisim元器件翻译
    MEM in logisim
    将控制映射至硬件 RISCV组成原理 附录C
    curl参数给我仔细看!
    JS 实现计算获取某一集合的幂集的函数
    关于Next.js项目启动后页面空白(控制台报错)问题的排查
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/5264011.html
Copyright © 2020-2023  润新知