A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© liudh1 中级黑马   /  2016-4-24 07:32  /  443 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package liu.dh.international;
import java.io.InputStreamReader;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Scanner;
/**
* @alt+shift+j:快速生成注释
* @author
*软件的国际化:主要是匹配世界各个地区的语言和风俗环境
*主要使用两个类:public final class Locale;public abstract class ResourceBundle
*Locale 对象表示了特定的地理、政治和文化地区。需要 Locale 来执行其任务的操作称为语言环境敏感的 操作,
*它使用 Locale 为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、
*地区或文化的风俗/传统来格式化该数值。
*构造方法:Locale(String language)根据语言代码构造一个语言环境。
          Locale(String language, String country) 根据语言和国家/地区构造一个语言环境。
          Locale locale = Locale.CHINA;CHINA是字段field,通过字段获取,
      getDefault()   获得此 Java 虚拟机实例的当前默认语言环境值。
  ResourceBundle:资源包包含特定于语言环境的对象,资源包包含键/值对.   
*主要方法:static ResourceBundle getBundle(String baseName, Locale locale)
*   使用指定的基本名称、语言环境和调用者的类加载器获取资源包
           String getString(String key)   从此资源包或它的某个父包中获取给定键的字符串。
        
*/
public class Demo_International {
  static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
  // 示例如下
  //键盘录入
  System.out.println("请输入用户名");
  String username = scanner.nextLine();
  System.out.println("请输入密码");
  String password = scanner.nextLine();
  if ("admin".equals(username)&&"admin".equals(password)) {
   System.out.println(username+"登录成功");
  }
  //真对以上情况如何实现国际化呢,在不输入汉子的情况下
  //创建Locale对象
  // Locale(String language, String country) 根据语言和国家/地区构造一个语言环境。
  Locale locale = Locale.CHINA;
  //可以通过查看源码获取:例如美国
  Locale locale2 = new Locale("en", "US");
  //创建资源文件:格式:info_语言标示符_国家标示符:info_ch_CN.properties;info_en_US.properties;
  //在包下创建两个资源文件夹
  //创建资源包对象:如果使用locale,将输出中文
   ResourceBundle bundle = ResourceBundle.getBundle("liu.dh.international.info", locale2);
   
   //通过文件夹中的建获取值
   String user = bundle.getString("username");
   String passwords = bundle.getString("password");
   String info = bundle.getString("info");
   
  System.out.println(user);
  String username1 = scanner.nextLine();
  System.out.println(passwords);
  String password1 = scanner.nextLine();
  //如何动态获取文本:@@@@登陆了:通过占位符{0}完成
  //public class MessageFormat
  //static String format(String pattern, Object... arguments)
       // 创建具有给定模式的 MessageFormat,并用它来格式化给定的参数。
  String info1 = MessageFormat.format(bundle.getString("info"), username1);
  
  if ("admin".equals(username1)&&"admin".equals(password1)) {
   System.out.println(info1);
  }
}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马