【Java学习笔记】本地化

简介:

先介绍几个术语:

  • 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/archive/2012/12/17/2822276.html,如需转载请自行联系原作者

相关文章
|
2月前
|
监控 负载均衡 Dubbo
|
3月前
|
前端开发 Java 数据安全/隐私保护
Java学习—GUI编程学习笔记
Java学习—GUI编程学习笔记
|
6月前
|
设计模式 存储 Java
【设计模式——学习笔记】23种设计模式——备忘录模式Memento(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——备忘录模式Memento(原理讲解+应用场景介绍+案例介绍+Java代码实现)
53 0
|
6月前
|
Java 编译器
【Java学习笔记】 对象和类
【Java学习笔记】 对象和类
|
6月前
|
设计模式 存储 Java
【设计模式——学习笔记】23种设计模式——迭代器模式Iterator(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——迭代器模式Iterator(原理讲解+应用场景介绍+案例介绍+Java代码实现)
28 0
|
4月前
|
存储 缓存 安全
《java核心技术36讲》学习笔记-------杨晓峰(极客时间)
《java核心技术36讲》学习笔记-------杨晓峰(极客时间)
54 0
|
1月前
|
存储 前端开发 Java
java学习笔记
java学习笔记
61 0
|
3月前
|
XML Java 数据格式
Spring5学习笔记——狂神说Java
Spring5学习笔记——狂神说Java
|
4月前
|
数据采集 缓存 分布式计算
java并发编程实践——王宝令(极客时间)学习笔记
java并发编程实践——王宝令(极客时间)学习笔记
37 0
|
4月前
|
Java 数据库连接 数据库
Java大数据开发工程师__Spring学习笔记(待更新)
Java大数据开发工程师__Spring学习笔记(待更新)
28 1