1.Java本身框架国际化
(1)本地化相关的类
Locale
NumberFormat
DateFormat
MessageFormat
(2)使用ResourceBoundle
国际化资源命名规范:
<资源名>_<语言代码>_<国家/地区代码>.properties
如:
resource.properties
resource_zh_CN.properties
resource_en_US.properties
使用例子
package com.baobaotao.i18n; import java.text.DateFormat; import java.text.MessageFormat; import java.text.NumberFormat; import java.util.Date; import java.util.GregorianCalendar; import java.util.Locale; import java.util.ResourceBundle; public class LocaleSample { public static void numberFormat() { Locale locale = new Locale("zh", "CN"); NumberFormat currFmt = NumberFormat.getCurrencyInstance(locale); double amt = 123456.78; System.out.println(currFmt.format(amt)); } public static void dateFormat() { Locale locale = new Locale("en", "US"); Date date = new Date(); DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM, locale); System.out.println(df.format(date)); } public static void messageFormat1() { Object[] params = {"John", new GregorianCalendar().getTime(),1.0E3}; String pattern1 = "{0},你好!你于{1}在工商银行存入{2} 元。"; String pattern2 = "At {1,time,short} On{1,date,long},{0} paid {2,number,currency}."; String msg1 = MessageFormat.format(pattern1,params); MessageFormat mf = new MessageFormat(pattern2,Locale.US); String msg2 = mf.format(params); System.out.println(msg1); System.out.println(msg2); } public static void resourceBoundle(){ ResourceBundle rb1 = ResourceBundle.getBundle("com/baobaotao/i18n/resource",Locale.US); ResourceBundle rb2 = ResourceBundle.getBundle("com/baobaotao/i18n/resource",Locale.CANADA); System.out.println("us:"+rb1.getString("greeting.common")); System.out.println("cn:"+rb2.getString("greeting.common")); } public static void resourceBoundleFmt(){ ResourceBundle rb1 = ResourceBundle.getBundle("com/baobaotao/i18n/fmt_resource",Locale.US); ResourceBundle rb2 = ResourceBundle.getBundle("com/baobaotao/i18n/fmt_resource",Locale.CHINA); Object[] params = {"John", new GregorianCalendar().getTime()}; String str1 = new MessageFormat(rb1.getString("greeting.common"),Locale.US).format(params); String str2 =new MessageFormat(rb2.getString("greeting.morning"),Locale.CHINA).format(params); String str3 =new MessageFormat(rb2.getString("greeting.afternoon"),Locale.CHINA).format(params); System.out.println(str1); System.out.println(str2); System.out.println(str3); } public static void main(String[] args) { numberFormat(); dateFormat(); messageFormat1(); resourceBoundle(); resourceBoundleFmt(); } }
resource.properties
greeting.common=How are you! greeting.morning = Good morning! greeting.afternoon =Good Afternoon\!
fmt_resource.properties
greeting.common=How are you!{0},today is {1} greeting.morning = Good morning!{0},now is {1,time,short} greeting.afternoon =Good Afternoon\!{0} now is {1,date,long}
2.Spring国际化
相关的接口及类:
(1)接口:MessageSource
(2)类:ResourceBundleMessageSource
通过beanName指定一个资源名
(3)类:ReloadableResourceBundleMessageSource
可以定时刷新资源文件
(4)容器级的国际化
Application实现了MessageSource接口,要配置文件中的Bean的名称必须为"messageSource".
Spring xml配置 bean.xml
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="myResource1" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <value>com/baobaotao/i18n/fmt_resource</value> </list> </property> </bean> <bean id="myResource2" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basenames"> <list> <value>com/baobaotao/i18n/fmt_resource</value> </list> </property> <property name="cacheSeconds" value="2"/> </bean> <bean id="messageSource12" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <value>com/baobaotao/i18n/fmt_resource</value> </list> </property> </bean> <!-- 容器级国际化,名称只能为messageSource --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <value>com/baobaotao/i18n/fmt_resource</value> </list> </property> </bean> </beans>
Java code:
package com.baobaotao.i18n; import java.text.MessageFormat; import java.util.GregorianCalendar; import java.util.Locale; import org.springframework.context.ApplicationContext; import org.springframework.context.MessageSource; import org.springframework.context.support.ClassPathXmlApplicationContext; public class I18nGreeting { private static void rsrBdlMessageResource(){ String[] configs = {"com/baobaotao/i18n/beans.xml"}; ApplicationContext ctx = new ClassPathXmlApplicationContext(configs); MessageSource ms = (MessageSource)ctx.getBean("myResource1"); Object[] params = {"John", new GregorianCalendar().getTime()}; String str1 = ms.getMessage("greeting.common",params,Locale.US); String str2 = ms.getMessage("greeting.morning",params,Locale.CHINA); String str3 = ms.getMessage("greeting.afternoon",params,Locale.CHINA); System.out.println(str1); System.out.println(str2); System.out.println(str3); } private static void rrsrBdlMessageResource() throws Exception{ String[] configs = {"com/baobaotao/i18n/beans.xml"}; ApplicationContext ctx = new ClassPathXmlApplicationContext(configs); MessageSource ms = (MessageSource)ctx.getBean("myResource2"); Object[] params = {"John", new GregorianCalendar().getTime()}; for (int i = 0; i < 2; i++) { String str1 = ms.getMessage("greeting.common",params,Locale.US); System.out.println(str1); Thread.currentThread().sleep(20000); } } private static void ctxMessageResource() throws Exception{ String[] configs = {"com/baobaotao/i18n/beans.xml"}; ApplicationContext ctx = new ClassPathXmlApplicationContext(configs); Object[] params = {"John", new GregorianCalendar().getTime()}; String str1 = ctx.getMessage("greeting.common",params,Locale.US); String str2 = ctx.getMessage("greeting.morning",params,Locale.CHINA); System.out.println(str1); System.out.println(str2); } public static void main(String[] args) throws Exception{ // rsrBdlMessageResource(); // rrsrBdlMessageResource(); ctxMessageResource(); } }
相关推荐
Spring框架是Java开发中的一个核心库,它提供了一个广泛的功能集,包括依赖注入、面向切面编程、数据访问、Web应用程序开发以及我们今天关注的主题——国际化(i18n)。国际化是一个过程,使得软件能够适应不同语言...
为了在 JSP 页面中使用国际化,需要确保 JSP 渲染器支持 JSTL(JavaServer Pages Standard Tag Library)。然后可以使用 `<fmt:message>` 标签来获取资源文件中的相应文本。例如,`...
Java国际化组件是Java开发中一个重要的功能模块,它允许开发者为不同地区的用户创建多语言支持的应用程序。在Java中,国际化通常通过使用Resource Bundle和Java的Locale类来实现。资源库(Resource Bundle)包含了...
Spring框架是Java开发中广泛...这个"spring国际化项目"实例提供了一个完整的实践场景,帮助开发者更好地理解和掌握Spring中的i18n支持。在实际开发中,国际化不仅可以提高用户体验,也是满足全球用户需求的重要手段。
Java国际化(i18n,Internationalization)是为了支持不同地区的语言和文化差异,提供了一种灵活的方式来管理和显示应用程序的文本、日期、数字和其他文化敏感的信息。Java提供了完整的API来处理国际化问题,主要...
总之,Spring的国际化功能强大且易于使用,通过合理的资源配置和代码设计,可以轻松实现多语言支持,提升应用的用户体验。在实际项目中,可以根据需求进一步定制和扩展,比如添加更多语言支持,或者实现动态切换语言...
Spring提供了`NumberFormat`和`DateFormat`的国际化支持,可以通过`SimpleDateFormat`和`DecimalFormat`进行定制。 通过以上步骤,你就可以在Spring应用中实现一个基本的国际化功能。记得在实际项目中,需要考虑更...
总之,Java的国际化和本地化功能使得开发者能够轻松地构建全球化应用程序,满足不同用户群体的需求。通过合理利用`ResourceBundle`、`Locale`、`DateFormat`等类,以及相应的开发工具,我们可以实现高效且灵活的国际...
在Spring框架中,国际化(Internationalization,简称i18n)是为支持多语言环境而设计的功能,使得应用程序能够根据用户所在的地域和语言提供相应的显示内容。本示例将详细介绍如何在Spring应用中实现国际化。 首先...
2. **Resource Bundle**:资源包是Java国际化的关键组成部分,它是一个包含特定语言环境下的文本和数据的文件集合。通常以.properties格式存储,例如`messages_en.properties`和`messages_fr.properties`分别代表...
Spring Boot的国际化(i18n)功能使得开发者可以轻松地为应用程序提供多语言支持,以便用户可以根据他们的偏好选择不同的语言界面。以下是对这个主题的详细讲解。 首先,我们需要了解i18n这个术语,它是...
本示例将指导你如何在Spring Boot中自定义国际化实现,包括从文件夹中动态加载多个国际化文件、根据用户请求动态设置前端显示的语言,并通过拦截器和注解自动化处理。 首先,让我们回顾一下项目的初始化步骤。在...
Spring Boot的国际化(i18n)配置是其强大功能的一部分,它允许开发人员为不同地区的用户提供本地化的应用体验。这个“Spring Boot 国际化(i18n)配置demo.zip”包含了一个演示如何在Spring Boot项目中实现i18n的示例...
在本文中,我们将深入探讨如何在Spring Boot应用中整合MyBatis,实现MySQL数据库连接,以及如何利用Spring MVC和拦截器来实现国际化(i18n)功能。此外,我们还将提及IIS 12作为可能的Web服务器选项。 首先,Spring...
通过结合SpringBoot框架和i18n(国际化)技术,我们可以实现错误信息的多语言支持,让错误信息能够适应不同的用户群体。 首先,让我们来深入理解SpringBoot。SpringBoot是Spring框架的一个子项目,它简化了创建独立...
而Spring的国际化(i18n,Internationalization)功能则允许我们为不同地区和语言的用户提供定制的显示内容。 在Spring MVC中实现国际化,主要涉及以下几个关键步骤和概念: 1. **资源文件**:首先,我们需要创建...
基于struts2-hibernate-spring的Java Web系统国际化设计与实现.pdf
在Spring MVC框架中,国际化(i18n)是一个重要的特性,它允许应用程序根据用户的语言和地区提供本地化的信息。这个“spring mvc 国际化 demo”是一个展示如何利用注解实现这一功能的实例。接下来,我们将深入探讨...
spring2国际化的demo 用的是eclipse+myeclipse6.0GA 很简单 但是感觉不错 学习之后留着备用 里面加入用到了spring的泛型工厂 可以不用强制转换了