简介  

  国际化的英文单词是Internationalization,有时检测I18N,类似于I18N还有L10N,是Location本地化的简写。

Java或计划主要通过如下三个类实现

  1、java.util.ResourceBoundle:用于加载国家和语言资源包

  2、java.utl.Local:用于封装特定的国家/区域、语言环境

  3、java.text.MessageFormat:用于格式化带占位的字符串

资源文件的命名方式

  1、baseName_language_country.properties

  2、baseName_language.properties

  3、baseName.properties

  其中baseName是资源文件的基本名称,用户可以随意指定;而language和country是不可以随意变化,必须是java所支持的语言和国家。

  

获取Java支持的国家和语言

  通过Locale的getAvailableLocales可以获取所有Java支持的国家和语言

 Locale[] localeArr=Locale.getAvailableLocales();
for (Locale locale : localeArr) { System.out.println(locale.getCountry()
+" "+locale.getDisplayCountry()
+" "+locale.getLanguage()
+" "+locale.getDisplayLanguage()
+" "+locale.getDisplayName()
);
}

编写properties文件

第一个文件:message_en_US.properties.该文件内容为:

hello=WelCome You!

第二个文件:message.properties

hello=你好!

【注意】对于properties文件,该文件只能存储西欧字符,其它非西欧字符需要已Unicode编码方式保存。在java中提过了一个native2ascii工具来处理。该工具位于JDK/bin下。使用如下

native2ascii 资源源文件 目的资源文件

打开message_zh_CN.properties文件内容如下:

获取properties中的值

 package action;

 import java.util.Locale;
import java.util.ResourceBundle; public class Test2 { @org.junit.Test
public void test(){
ResourceBundle bundle=ResourceBundle.getBundle("message", Locale.getDefault());
String hello=bundle.getString("hello");
}
}

MessageFormat处理占位符的字符串

  如果properties文件中字符串需要外界传入参数,则需要使用到占位符,不如某个消息为:

欢迎【caoyc】用户登录,当前时间:2016-06-15 16:03

  上面的caoyc和时间都需要外界传入参数,所以在properties中需要这样设计

msg=欢迎【{0}】用户登录,当前时间:{1}

  Java代码:

 package action;

 import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle; public class Test2 { @org.junit.Test
public void test(){
ResourceBundle bundle=ResourceBundle.getBundle("message", Locale.getDefault());
String msg=bundle.getString("msg");
MessageFormat.format(msg, "caoyc",new Date());
}
}

  通过MessageFormat.format方式对msg进行传值,该方法包含一个可变参数

42、Java国际化的更多相关文章

  1. Java国际化(i18n)

    Java国际化(i18n) 最近在做一个网站国际化的功能.用Java做开发,使用spring+velocity. Java提供了对i18n的支持,spring对其做了集成,可以很方便的配置.主要思想就 ...

  2. Java 国际化 语言切换

      Java国际化 我们使用java.lang.Locale来构造Java国际化的情境. java.lang.Locale代表特定的地理.政治和文化.需要Locale来执行其任务的操作叫语言环境敏感的 ...

  3. java——国际化详解

    深入理解Java国际化 假设我们正在开发一个支持多国语言的Web应用程序,要求系统能够根据客户端的系统的语言类型返回对应的界面:英文的操作系统返回英文界面,而中文的操作系统则返回中文界面--这便是典型 ...

  4. Java国际化号码验证方法,国内手机号正则表达式

    Java国际化号码验证方法,国内手机号正则表达式 中国电信号段 133.149.153.173.177.180.181.189.199 中国联通号段 130.131.132.145.155.156.1 ...

  5. Java 国际化

    国际化英文单词为:Internationalization,又称I18N,I为因为单词的第一个字母,18为这个单词的长度,而N代表这个单词的最后一个字母.国际化又称本地化(Localization,L ...

  6. (转)JAVA国际化

    转:http://www.cnblogs.com/jjtech/archive/2011/02/14/1954291.html 国际化英文单词为:Internationalization,又称I18N ...

  7. java国际化

    import java.util.Locale; import org.junit.Test; /** * 使用指定的国际化文件 */ public class Demo { @Test public ...

  8. Java 国际化标准程序实现

    国际化程序实现 所谓的国家化应用指的就是根据当前的语言环境读取指定的语言资源文件. 如果要想实现国际化的操作,那么首先要解决的问题就是如何读取资源文件的问题:所谓的资源文件 就是指文件后缀名称为:&q ...

  9. java国际化之时区问题处理

    原文:https://moon-walker.iteye.com/blog/2396035 在国际化的项目中需要处理的日期时间问题主要有两点: 1.日期时间的国际化格式问题处理: 2.日期时间的时区问 ...

随机推荐

  1. 【BZOJ 1697】1697: [Usaco2007 Feb]Cow Sorting牛排序

    1697: [Usaco2007 Feb]Cow Sorting牛排序 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行动.因为脾气大 ...

  2. 【BZOJ 4567】【SCOI 2016】背单词

    http://www.lydsy.com/JudgeOnline/problem.php?id=4567 贪心. 任何不用第一种情况的方案吃的泡椒数都小于\(n^2\),所以最小泡椒数的方案一定不包含 ...

  3. luogu P2485 [SDOI2011]计算器

    题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y.z.p,计算y^z mod p 的值: 2.给定y.z.p,计算满足xy ≡z(mod p)的最小非负整数x: 3.给定y.z.p,计算 ...

  4. 【分块】MIPT-2016 Pre-Finals Workshop, Taiwan NTU Contest, Sunday, March 27, 2016 Problem A. As Easy As Possible

    给你一个字符串,多次区间询问,问你在该区间内最多能有几个easy重复的子序列. 显然如果只有一次询问,从左到右贪心做即可. 分块,预处理任意两块间的答案,不过要把以e a s y开头的四个答案都处理出 ...

  5. 小H的硬币游戏

    题目大意: 有n个物品排成一排,每个物品都有自己的价值,你每次可以从中挑选两个距离为k的物品取走,问最大的收益. (如果原来两个物品中间有物品被取走,距离不变) 思路: 贪心. 先按照每个物品的位置m ...

  6. Problem C: 输入10个数,根据提示进行从小到大输出或从大到小输出

    #include<stdio.h> int main() { char ch; ]; while(scanf("%c",&ch)!=EOF) { int i,j ...

  7. [转]为什么匿名内部类参数必须为final类型

    1)  从程序设计语言的理论上:局部内部类(即:定义在方法中的内部类),由于本身就是在方法内部(可出现在形式参数定义处或者方法体处),因而访问方法中的局部变量(形式参数或局部变量)是天经地义的.是很自 ...

  8. convirt介绍

    convirt2.0是一款使用python和jquery结合编写的其于web的集中管理xen服务的程序.该程序在xen 社区项目,管理项目中被使用的量很高,convirt开发有开源版本与企业版本,企业 ...

  9. json字符串生成C#实体类的工具

    转载:http://www.cnblogs.com/finesite/archive/2011/07/31/2122984.html json作为互联网上轻量便捷的数据传输格式,越来越受到重视.但在服 ...

  10. 高并发环境下,Redisson实现redis分布式锁

    原文:http://tlzl0526-gmail-com.iteye.com/blog/2378853 在一些高并发的场景中,比如秒杀,抢票,抢购这些场景,都存在对核心资源,商品库存的争夺,控制不好, ...