zoukankan      html  css  js  c++  java
  • 【Java学习笔记】本地化

    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/

    先介绍几个术语:

    • i18n: 就是internationalization, 国际化,由于首字母"i"和末尾字母"n"间有18个字符,所以简称i18n. internationalization指为了使应用程序能适应不同的语言和地区间的变化而不作系统性的变化所采取的设计措施。
    • l10n: 就是localization, 本地化,由于首字母"l"和末尾字母"n"间有10个字母,所以简称l10n. localization指为了使应用软件能够在某一特定语言环境或地区使用而加入本地特殊化部件和翻译后文本的过程。
    • locale: 简单来说是指语言和区域进行特殊组合的一个标志。

    1.文字的本地化

    import java.util.ResourceBundle;
    import java.util.Locale;
    public class I18nDemo1 {
        static public void main(String arg[]) {
            Locale loc;
            ResourceBundle bundle;
            /* File: Demo1_en_US.properties */
            loc = new Locale("en","US");
            bundle = ResourceBundle.getBundle("Demo1 ",loc);
            System.out.println(bundle.getString("greeting"));
            System.out.println(bundle.getString("question"));
            System.out.println(bundle.getString("farewell"));
            System.out.println("--------------------------");
            /* File: Demo1_en_US_TX.properties */
            loc = new Locale("en","US","TX ");
            bundle = ResourceBundle.getBundle("Demo1 ",loc);
            System.out.println(bundle.getString("greeting"));
            System.out.println(bundle.getString("question"));
            System.out.println(bundle.getString("farewell"));
        }
    }

    而本地化配置文件如下:

    Demo1_en_US.properties:

    greeting = Hello.
    farewell = Goodbye.
    question = Are you ready?

    Demo1_en_US_TX.properties:

    greeting = Howdy.
    farewell = S'long.
    question = Is your gun loaded?

    国际化资源文件的命名规范规定资源名称采用以下的方式进行命名:<资源名>_<语言代码>_<国家/地区代码>.properties
    其中,语言代码和国家/地区代码都是可选的。

    2.数字的本地化:

    import java.util.Locale;
    import java.util.Date;
    import java.text.NumberFormat;
    import java.text.DateFormat;
    public class I18nDemo2 {
        static public void main(String arg[]) {
            I18nDemo2 demo = new I18nDemo2();
            demo.showLoc(new Locale("en","US"));
            System.out.println("-----------");
            demo.showLoc(new Locale("fr","FR"));
            System.out.println("-----------");
            demo.showLoc(new Locale("de","DE"));
        }
        public void showLoc(Locale loc) {
            NumberFormat nfmt;
            DateFormat dfmt;
            System.out.println(loc);
            nfmt = NumberFormat.getNumberInstance(loc);
            System.out.println(nfmt.format(123456));
            System.out.println(nfmt.format(123456.78));
            nfmt = NumberFormat.getCurrencyInstance(loc);
            System.out.println(nfmt.format(123456.78));
            nfmt = NumberFormat.getPercentInstance(loc);
            System.out.println(nfmt.format(.78));
            dfmt = DateFormat.getDateInstance(DateFormat.DEFAULT,loc);
            System.out.println(dfmt.format(new Date()));
        }
    }

    3.看看到底支持什么本地化:

    import java.util.Locale;
    import java.text.NumberFormat;
    public class I18nDemo3 {
        static public void main(String arg[]) {
            Locale loc[] = NumberFormat.getAvailableLocales();
            for(int i=0; i<loc.length; i++)
                System.out.println(loc[i]);
        }
    }

    作者:gnuhpc
    出处:http://www.cnblogs.com/gnuhpc/

  • 相关阅读:
    软件项目技术点(2)——Canvas之坐标系转换
    软件项目技术点(2)——Canvas之平移translate、旋转rotate、缩放scale
    用html5的canvas和JavaScript创建一个绘图程序
    javascript学习之BOM
    HTML5 之拖放(drag与drop)
    fluent-ffmpeg 常用函数
    ffmpeg用法及如何使用fluent-ffmpeg
    解决js动态改变dom元素属性后页面及时渲染问题
    软件项目技术点(8)—— canvas调用drawImage绘制图片
    Oracle数据库rownum用法集锦
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2822276.html
Copyright © 2011-2022 走看看