Spring国际化

国际化(Internationalization)有时候被简称为i18n,因为有18个字母在国际化的英文单词的字母i和n之间。Spring对国际化的支持示例如下所示。

需要将spring.tld放到工程的lib目录下,这样才能JSP才能正常使用spring:message标签。

web.xml中设置加启动时就要载配置文件applicationContext.xml

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
   classpath:applicationContext.xml
  </param-value>
 </context-param>
 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>

在applicationContext.xml中注册资源文件处理类。这里可以注册一个或者多个资源文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

   <bean id="messageSource"  class="org.springframework.context.support.ResourceBundleMessageSource">

      <property name="basename" value="messages"/>

   </bean>

   <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/>

</beans> 

  messageSource指明了资源文件的路径,这里的路径是根目录下的名为messages的资源文件件。

  CookieLocaleResolver是资源文件处理类,资源文件处理类有以下三种:

  1. 基于session的

  <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>

  2. 基于请求的

  <bean id="localeResolver" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver"/>
   3.基于cookie的

  <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />

  以上三种处理器理论上配置任意一个就可以,使用第一种和第三种比较常见。

第一与第三个用法相同,只不过前者使用session,session过期就需要重新设置,而后者使用cookie,可以根据项目的具体情况进行选择。

创建资源文件messages_zh.properties和messages_en.properties:

messages_zh.properties内容如下:
main.title=你好 

messages_en.properties内容如下:
main.title=Hello World! 

JSP测试页面test.jsp如下:

<%@ page language="java"  pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="WEB-INF/lib/spring.tld"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Spring国际化</title>
  </head>
  <body>
    <spring:message code="main.title" /><br>
    <input type="button" value=‘<spring:message code="main.title" />‘/><br>
  </body>
</html>

在Java代码中使用的例子如下:

//FileSystemXmlApplicationContext与ClassPathXmlApplicationContext的区别,前者需要写路径
  ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

  System.out.println(ctx.getMessage("main.title", null, Locale.getDefault()));

  System.out.println(ctx.getMessage("main.title", null, Locale.US));
时间: 2024-10-03 20:25:21

Spring国际化的相关文章

spring国际化,基于数据库的信息配置

之前在做spring国际化的时候,资源文件都是写在properties里面,管理起来不是很方便,今天我将这些资源文件都保存在数据库中,启动的时候进行初始化操作,从而进行多语言的管理.这里记录下过程: 其他的操作还是跟之前一样,这里就不多解释了,直接贴上对应的配置或者代码信息.使用spring框架,我这里用了两个配置文件,一个是springmvc.xm,另一个是spring-framework.xml文件,主要是想分开进行配置. 国际化配置在spring-webmvc这个jar的org.sprin

关于Spring 国际化 No message found under code 的解决方案

用spring做国际化时经常会报: org.springframework.context.NoSuchMessageException: No message found under code 'userlogin' for locale 'zh_CN'. at org.springframework.context.support.DelegatingMessageSource.getMessage(DelegatingMessageSource.Java:65) at org.spring

spring(11)------spring国际化支持

一,关于spring国际化的简介 在java编程中,对于信息的处理一般有两种方式: (1)将信息存在数据库里,用的时候从数据库里取.(惯用手法数据字典就是) (2)将信息存放在java常量类中,通过java类调用属性值. 这两种方式对于处理不需要国际化的网站,系统是能实现的,但是,如果需要国际化, 这两种方式就实现国际化非常困难. 而spring对于国际的实现提供了良好的支持,Application通过继承 org.springframework.context.MessageResource接

spring国际化支持

Spring对国际化的支持是beanFactory的子接口ApplicationContext所增加的新功能,主要是因为ApplicationContext接口继承了MessageSource接口,MessageSource接口的getMessage(String code,Object[] obj,Locale locale)方法用于对国际化的支持. 在Spring对国际化的支持中我们需要在应用上下文中配置: <bean  id="messageSource" class=&q

spring 国际化-i18n

i18n(其 来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称.在资讯领域,国际化(i18n)指让产品(出版 物,软件,硬件等)无需做大的改变就能够适应不同的语言和地区的需要.对程序来说,在不修改内部代码的情况下,能根据不同语言及地区显示相应的界面. 在全球化的时代,国际化尤为重要,因为产品的潜在用户可能来自世界的各个角落.通常与i18n相关的还有L10n(“本地化”的简称).<摘自百度 百科http://baike.baidu.c

解决Spring国际化文案占位符失效问题的方法

写在前面:接下来很长一段时间的文章主要会记录一些项目中实际遇到的问题及对应的解决方案,在相应代码分析时会直指问题所在,不会将无关的流程代码贴出,感兴趣的读者可以自行跟踪.同时希望大家能够将心得体会在评论区分享出来,让大家共同进步! 环境或版本:Spring 3.2.3 现象:利用Spring自带的MessageSource来处理国际化文案,us状态下的文案有部分占位符未被替换,cn状态下的正常.文案如下: tms.pallet.order.box.qty=The total palletized

Spring 国际化

首先是编辑国际化信息 文件命名为:XXX_xx_XX.properties 黄色部分是固定的国际化语言缩写 部分国际化语言缩写如下: 简体中文(中国) zh-cn 繁体中文(台湾地区) zh-tw 繁体中文(香港) zh-hk 英语(香港) en-hk 英语(美国) en-us 英语(英国) en-gb 英语(全球) en-ww 英语(加拿大) en-ca 英语(澳大利亚) en-au 英语(爱尔兰) en-ie 英语(芬兰) en-fi 芬兰语(芬兰) fi-fi 英语(丹麦) en-dk 丹

spring国际化: 从数据库中读取国际化资源

public class MessageResource extends AbstractMessageSource implements ResourceLoaderAware, InitializingBean { @SuppressWarnings("unused") private ResourceLoader resourceLoader = null; @Autowired private Sys_resourcesService sys_resourcesService

idea在处理spring国际化解决中文乱码,properties的格式:native-to-ascii

在idea总是可以设置自动转码的: 勾选如图所示 在编辑器中切换到Resuource bundle中去 这个时候在下面输入中文,则自动转为native-to-ascii,因为已经透明了,所以在这里看不到,用txt打开源文件,则已经转换了 来自为知笔记(Wiz)