欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaWeb开发——软件国际化(动态元素国际化)

程序员文章站 2022-07-21 17:10:33
软件国际化的第二个部分,就是动态元素国际化。 数值,货币,时间,日期等数据由于可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理。Java 中提供了解决这些问题的 API 类(位于 java.util 包和 java.text 包中)。 Locale 类 ......

软件国际化的第二个部分,就是动态元素国际化。

  • 数值,货币,时间,日期等数据由于可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理。java 中提供了解决这些问题的 api 类(位于 java.util 包和 java.text 包中)。
  • locale 类
    locale 实例对象代表一个特定的地理,政治、文化区域。
    一个 locale 对象本身不会验证它代表的语言和国家地区信息是否正确,只是向本地敏感的类提供国家地区信息,与国际化相关的格式化和解析任务由本地敏感的类去完成。(若jdk中的某个类在运行时需要根据 locale 对象来调整其功能,这个类就称为本地敏感类)。

接下来介绍几个比较常用的api。

dateformat类(国际化日期)

dateformat 类可以将一个日期/时间对象格式化为表示某个国家地区的日期/时间字符串。

dateformat 类除了可按国家地区格式化输出日期外,它还定义了一些用于描述日期/时间的显示模式的 int 型的常量,包括full, long, medium, default, short,实例化dateformat对象时,可以使用这些常量,控制日期/时间的显示长度。

实例化dateformat类有九种方式,以下三种为带参形式,下面列出的三种方式也可以分别不带参,或只带显示样式的参数。

  • getdateinstance(int style, locale alocale):以指定的日期显示模式和本地信息来获得dateformat实例对象,该实例对象不处理时间值部分。
  • gettimeinstance(int style, locale alocale):以指定的时间显示模式和本地信息来获得dateformat实例对象,该实例对象不处理日期值部分。
  • getdatetimeinstance(int datestyle, int timestyle, locale alocale):以单独指定的日期显示模式、时间显示模式和本地信息来获得dateformat实例对象。

编写测试代码

    @test
    public void demo1(){
        // 使用自带的样式格式化日期
        // 只要日期
        date date = new date();
        // 有四种显示模式 full、long、medium、short
        // dateformat df1 = dateformat.getdateinstance(dateformat.full);
        // dateformat df1 = dateformat.getdateinstance(dateformat.long);
        // dateformat df1 = dateformat.getdateinstance(dateformat.medium);
        dateformat df1 = dateformat.getdateinstance(dateformat.short);
        system.out.println(df1.format(date));

        // 只要时间
        dateformat df2 = dateformat.gettimeinstance(dateformat.full);
        // dateformat df2 = dateformat.gettimeinstance(dateformat.long);
        // dateformat df2 = dateformat.gettimeinstance(dateformat.medium);
        // dateformat df2 = dateformat.gettimeinstance(dateformat.short);
        system.out.println(df2.format(date));
        
        //日期和时间都要
        dateformat df3 = dateformat.getdatetimeinstance();
        system.out.println(df3.format(date));
    }

运行结果我就不贴图了,大家自己运行感受。
都是一些对api的应用,没什么好说的,直接贴一些测试代码了解api的使用即可。

    @test
    public void demo2(){
        //设置locale
        date date = new date();
        dateformat dateformat = dateformat.getdatetimeinstance(dateformat.full,dateformat.full,locale.canada);
        system.out.println(dateformat.format(date));
    }

numberformat类(国际化数据)

  • 实例化numberformat类时,可以使用locale对象作为参数,也可以不使用,下面列出的是使用参数的。
  • getnumberinstance(locale locale):以参数locale对象所标识的本地信息来获得具有多种用途的numberformat实例对象。
  • getintegerinstance(locale locale):以参数locale对象所标识的本地信息来获得处理整数的numberformat实例对象。
  • getcurrencyinstance(locale locale):以参数locale对象所标识的本地信息来获得处理货币的numberformat实例对象。
  • getpercentinstance(locale locale):以参数locale对象所标识的本地信息来获得处理百分比数值的numberformat实例对象。

编写测试代码

    @test
    public void demo3() {
        // 保留小数有效位数
        double d = 1.23456789456789;
        // 保留两位小数
        numberformat format = numberformat.getnumberinstance();
        // 最大两位小数
        format.setmaximumfractiondigits(2);
        // 最小两位小数
        format.setminimumfractiondigits(2);
        system.out.println(format.format(d));

        // 货币格式化
        int i = 100;
        // 显示美元
        numberformat format2 = numberformat.getcurrencyinstance(locale.us);
        system.out.println(format2.format(i));

        // 百分比格式化
        double d2 = 0.78123;
        numberformat format3 = numberformat.getpercentinstance();
        system.out.println(format3.format(d2));

        // 想显示两位小数
        format3.setmaximumfractiondigits(2);
        format3.setminimumfractiondigits(2);
        system.out.println(format3.format(d2));
    }

到这里,动态元素的国际化就介绍完了,都是一些需要记忆的知识点呐,其实没什么好说的,接下来就是软件国际化的最后一部分,动态文本国际化。