程序国际化

Application  Internationalization  简:I18N睡觉
1、什么是I18N?
   同一套程序代码可以在不同语言环境下进行使用。在不同语言环境下,程序里的语言显示不同。

2、在Java中,要实现多语言环境
        1)使用Locale类创建一个地区语言环境对象
        2)创建不同语言的资源文件(<基本名>_<语言代码>_<国家/地区代码>.properties)  不同语言属性文件,基本名要相同。
        3)使用ResourceBundle类绑定不同的资源文件  (资源文件的包名.基本名,语言环境对象)
        4)通过ResourceBundle类对象,获取不同语言环境下的Key-Value值,从而在程序中显示不同的语言
        5)如果在语言属性文件中,使用通配符或占位符,{0},{1}等,则使用动态文本处理类java.text.MessageFormat类,处理动态文本。
3、代码举例
    1)
            package MultiLanguage;

            import java.text.MessageFormat;
            import java.util.Locale;
            import java.util.ResourceBundle;
            import java.util.Scanner;

     
            public class LocaleDemo {
                public static void main(String[] args) {
                    //创建一个本地语言环境对象(中文)
                    Locale  locale = new Locale("zh", "CN");
                    Locale locale1 = Locale.US;
                    Locale locale2 = Locale.getDefault();

                    //通过ResourceBundle工具类绑定资源文件(包名.文件名(基本名称不包括语言部分和后缀部分))
                    ResourceBundle res = ResourceBundle.getBundle("MultiLanguage.info", locale);

                    //模拟用户登陆
                    Scanner in = new Scanner(System.in);

                    //从属性文件中根据key获取value值
                    String input = res.getString("input");
                    String username = res.getString("username");
                    String passwd = res.getString("passwd");
                    String infoSuccess = res.getString("info.success");
                    String infoError = res.getString("info.error");
                    System.out.println(input + username);
                    String userName = in.next();
                    System.out.println(input + passwd) ;
                    String password = in.next();

                    if("admin".equals(userName) && "123".equals(password)){
                        //处理动态文本(模式, 要替换的值……)
                        String success = MessageFormat.format(infoSuccess, userName);
                        System.out.println(success);
                    }else {
                        System.out.println(infoError);
                    }
                }
            }
            
    2)语言属性文件
        info_zh_CN.properties

        username=\u7528\u6237\u540d
        passwd=\u5BC6\u7801
        input=\u8BF7\u8F93\u5165
        info.success=\u6B22\u8FCE\uff0c{0}
        info.error=\u767B\u5f55

   
        info_en_US.properties

        username=username
        passwd=passwd
        input=input
        info.success=welcome,{0}
        info.error=error
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值