• 国际化程序实现


    国际化程序:一套程序可以适用多个不同国家认的语言要求,那么这样的程序称为国际化程序。

    如果要想实现国际化程序,则必须依靠Locale,ResourceBoundle,MessageFormat几个完成,并结合属性文件(*.properties)

    Locale:表示的是一个地区,也就是说在国际化程序中通过Locale指定当前所在的地区,世界上各个国家都存在一个编号。

    如果想创建Locale对象,可以有两种方法:

    1,直接取出本地的语言;public static Locale getDefault();

    2,指定一种语言,通过public Locale(String language,String country)指定语言和国家

    实现国际化还需要一个属性文件配合,一个地区的Locale对象都应该对应一个不同的属性文件。找到属性文件之后,下一步就需要将内容读取出来,所有的内容需要依靠ResourceBundle类读取。

    ResourceBundle类

    此类首先是在java.util中定义的类,使用时会通过里面的静态方法取得实例,有两种方式:

    1,根据本机的Locale取得属性文件:public static final ResourceBundle getBundle(String baseName)

    2,根据指定的Locale取得属性文件:public static final ResourceBundle getBundle(String baseName,Locale locale)

    在本地程序bin文件夹下新建属性文件,命名要求:属性名称_区域名称.properties

    中文:Message_zh_CN.properties

    英文:Message_en_US.properties

    在其中写入“你好”的UNICODE编码,可以使用jdk/bin/目录下的,trimnative2ascii.exe

    中文属性文件:info=\u4f60\u597d

    英文属性文件:info=hello

    其中info表示键值,\u4f60\u597d为属性的value,操作时使用键值取出value值。

    Demo1以计算机本地的语言显示属性值

    import java.util.Locale;
    import java.util.ResourceBundle;

    public class MyDemo {
        public static void main(String args[])
        {
            Locale loc=Locale.getDefault();
            ResourceBundle rb=ResourceBundle.getBundle("Message", loc);
            String value=rb.getString("info");
            System.out.print("内容为:"+value);
        }
    }

    Demo2多语言国际化

    import java.util.Locale;
    import java.util.ResourceBundle;

    public class MyDemo {
        public static void main(String args[])
        {
            Locale chloc=new Locale("zh","CN");//指定中文环境
            Locale enloc=new Locale("en","US");//指定英文环境
            ResourceBundle chrb=ResourceBundle.getBundle("Message",chloc);
            ResourceBundle enrb=ResourceBundle.getBundle("Message", enloc);
            String zhvalue=chrb.getString("info");
            String envalue=enrb.getString("info");
            System.out.println(zhvalue);
            System.out.println(envalue);
        }
    }

    Demo3动态文本

    在属性文件中加入占位符

    中文属性:info=\u4f60\u597d,{0},{1},{2}

    英文属性:info=hello,{0},{1},{2}

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

    public class MyDemo {
        public static void main(String args[])
        {
            Locale chloc=new Locale("zh","CN");//指定中文环境
            Locale enloc=new Locale("en","US");//指定英文环境
            ResourceBundle chrb=ResourceBundle.getBundle("Message",chloc);
            ResourceBundle enrb=ResourceBundle.getBundle("Message", enloc);
            String zhvalue=chrb.getString("info");
            String envalue=enrb.getString("info");
           
            System.out.println("中文内容为:"+MessageFormat.format(zhvalue, "123",22,"fds"));
            System.out.println("英文内容为:"+MessageFormat.format(envalue, "123",22,"fds"));
        }
    }

    输出内容:

    中文内容为:你好,金政权,22,fds

    英文内容为:hello,金政权,22,fds

    public String MessageFormat.format(String str,Object ...value);

  • 相关阅读:
    fast incremental backup failed on standby database
    How to find error message from OMS repository
    Examine 11g automatic block Corruption recovery
    C#继承Control实用自定义控件
    手把手教你写SHELL CODE
    编写C#控件的3种方式
    Android中跨越ACTIVITY的全局线程
    DevExpress 皮肤使用方法
    PHP讨论之什么是HOOK?
    C#制作WinForm控件
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1941678.html
Copyright © 2020-2023  润新知