zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    代理模式
    组合模式
    yum配置文件详解
    责任链模式
    git看不到别人创建的远程分支
    学习gulpfile.babel.js随笔
    遍历数组的方法
    解决Error: ENOENT: no such file or directory, scandir 安装node-sass报错
    window对象
    Moment.js的一些用法
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/5264011.html
Copyright © 2011-2022 走看看