- 浏览: 118780 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (135)
- java (135)
- [转]c# 画圆角矩形 (1)
- 设计模式生活实例 (1)
- .nET2.0小技巧 (1)
- 从另一个角度看敏捷实践(一)--IPM:承诺的仪式 (1)
- javascript字符串转json对象 (1)
- 使用BeanUtils时,Date类型值为空的解决方法 (1)
- Lenovo V460+Ubuntu 11.10 无线网问题 (1)
- Lucene 索引和搜索过程核心类详解 (1)
- Android短信编解码方式 (1)
- 股神巴菲特十大致富秘籍 (1)
- Map遍历的三种方法 (1)
- Android中用Toast.cancel()方法优化toast内容的显示 (1)
- ViewFlipper “Receiver not registered” Error (1)
- javax.xml.transform.TransformerFactoryConfigurationError (1)
- JNI调用的注意事项 (1)
- JUnit单元测试感悟 (1)
- 用C#写定时关机的程序 (1)
- ASP.NET开发工具Web Matrix介绍 (1)
- MapXtreme2004代码 MapControl控件中显示地图文件 (1)
- 《使用 Microsoft .NET 的企业解决方案模式》读书笔记3 (1)
- 微创短信开发平台 (1)
- 谈谈Q+平台的技术实现 (1)
- 手机防盗软件实现(源码) (1)
- 虚析构函数(总结 帖子) (1)
- c语言中去除const修饰 (1)
- ORA-01012: not logged on 解决办法 (1)
- paypal提现如何省钱 (1)
- 数独suduku (1)
- MyISAM InnoDB 区别 (1)
- 随 笔 (1)
- Android上的log,日志相关 (1)
- 百度质量部实习居然通过了~ (1)
最新评论
-
野狐禅:
ext.get('imagebrowse') is null
ExtJs上传图片预览功能 -
zhuyl_wind:
不切实际,呵呵
[]5年内买车买房-理财篇 -
in南京:
关键你那两千块钱就够交一个多月的房租!换个城市你那六百也远远不 ...
[]5年内买车买房-理财篇 -
javac_xinyun:
呵呵,看完了,确实不错,貌似第一年的房租每月算进去 ,人际关系 ...
[]5年内买车买房-理财篇 -
dishikun:
貌似很不错,就是没把房租算进去!
[]5年内买车买房-理财篇
因为希望把springside搞成国际化项目,i18n就成了必做的事情。
照抄appfuse,折腾了很久后才发现appfuse式的sample总是只顾着演示自己的一亩三分地而忽略了很多其他东西。
1.从基础开始,没有spring时,java的i18n是这样的:
1.1 jsp环境
首先写一个messages.zh_cn.properties文件,放在class-path也就是/web-inf/classes里 welcome=欢迎 然后用native2ascii.exe把它转为 welcome=\u6b22\u8fce
在web.xml中定义messages文件 <context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationcontext</param-name>
<param-value>messages</param-value>
</context-param>
最后在jsp里使用
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<fmt:message key="welcome"/>
如果有多个resource bundle文件, 就要在jsp里用<ftm:bundle>定义了.
1.2 pure java环境
resourcebundle rb = resourcebundle.getbundle("messages");
string welcome = rb.getstring("welcome");
2.spring的增强及appfuse的做法
spring增加了messagesource的概念,一是applicationcontext将充当一个单例的角色,不再需要每次使用i18时都初始化一次resourcebundle,二是可以代表多个resource bundle.
在applicationcontext的定义文件中,增加如下节点:
<bean id="messagesource" class="org.springframework.context.support.resourcebundlemessagesource">
<property name="basename" value="messages"/>
</bean>
则在pure java环境中。 context.getmessage("welcome", null, locale.china)
而在jsp环境中,controller调用jstl viewresolver再调用jsp时,<fmt:message>将继续发挥它的功效。
因此,appfuse等sample都是在appfuse-servlet.xml 中定义一个<messagesource>。
3.better practice
3.1 要不要定义javax.servlet.jsp.jstl.fmt.localizationcontext
appfuse等sample,都是假定大家完全使用controller作访问入口,jsp甚至藏在了/web-inf/中。而很不幸,大家的项目可能还是有很多直接访问jsp的地方,而直接访问jsp时,<messagesource>节点是没有作用的。
但如果定义了javax...localizationcontext, 又会让messagesource失效......
3.2 messagesource定义在applicationcontext.xml还是appfuse-servlet.xml
applicationcontext*.xml由contextloaderlistener载入,而appfuse-servlet.xml靠dispatchservlet载入,并拥有一个指向applcationcontex*.xml指针。所以,appfuse-servlet.xml能看到定义在applcationcontext里的东西,而反之做不到。
明显, 把<messagesource>定义在applicationcontext.xml 能获得更好的可见性。
但是appfuse没有在pure java代码中使用i18n,也就没有考虑这个问题。
3.3 坚决不用鸡肋级<spring:message> tag
连appfuse也不用它,可见多么鸡肋。因为fmt在找不到资源时,最多显示???welcome???,而<spring:message>则会抛出异常。
3.4 有趣的theme 解决"做成图片的文字"的国际化
theme也就是把message的原理发挥了一下,让不同语言的美术字图片的路径也可以定义在theme_zh_cn.properties和theme_en_us.properties中。终于有一个不那么鸡肋的spring tag了。
4.简单归纳
1. jstl中仍然使用标准的<ftm:message>及其定义?
2.java中使用spring的<messagesource>实现单例
3.用<spring:theme>解决那些做成图片的文字的国际化问题
4.spring 还有session,cookie locale resolver, 到时可以看一下.
文章来源:http://www.jiuyepx.cn/html/jishu/java/3250.html
照抄appfuse,折腾了很久后才发现appfuse式的sample总是只顾着演示自己的一亩三分地而忽略了很多其他东西。
1.从基础开始,没有spring时,java的i18n是这样的:
1.1 jsp环境
首先写一个messages.zh_cn.properties文件,放在class-path也就是/web-inf/classes里 welcome=欢迎 然后用native2ascii.exe把它转为 welcome=\u6b22\u8fce
在web.xml中定义messages文件 <context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationcontext</param-name>
<param-value>messages</param-value>
</context-param>
最后在jsp里使用
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<fmt:message key="welcome"/>
如果有多个resource bundle文件, 就要在jsp里用<ftm:bundle>定义了.
1.2 pure java环境
resourcebundle rb = resourcebundle.getbundle("messages");
string welcome = rb.getstring("welcome");
2.spring的增强及appfuse的做法
spring增加了messagesource的概念,一是applicationcontext将充当一个单例的角色,不再需要每次使用i18时都初始化一次resourcebundle,二是可以代表多个resource bundle.
在applicationcontext的定义文件中,增加如下节点:
<bean id="messagesource" class="org.springframework.context.support.resourcebundlemessagesource">
<property name="basename" value="messages"/>
</bean>
则在pure java环境中。 context.getmessage("welcome", null, locale.china)
而在jsp环境中,controller调用jstl viewresolver再调用jsp时,<fmt:message>将继续发挥它的功效。
因此,appfuse等sample都是在appfuse-servlet.xml 中定义一个<messagesource>。
3.better practice
3.1 要不要定义javax.servlet.jsp.jstl.fmt.localizationcontext
appfuse等sample,都是假定大家完全使用controller作访问入口,jsp甚至藏在了/web-inf/中。而很不幸,大家的项目可能还是有很多直接访问jsp的地方,而直接访问jsp时,<messagesource>节点是没有作用的。
但如果定义了javax...localizationcontext, 又会让messagesource失效......
3.2 messagesource定义在applicationcontext.xml还是appfuse-servlet.xml
applicationcontext*.xml由contextloaderlistener载入,而appfuse-servlet.xml靠dispatchservlet载入,并拥有一个指向applcationcontex*.xml指针。所以,appfuse-servlet.xml能看到定义在applcationcontext里的东西,而反之做不到。
明显, 把<messagesource>定义在applicationcontext.xml 能获得更好的可见性。
但是appfuse没有在pure java代码中使用i18n,也就没有考虑这个问题。
3.3 坚决不用鸡肋级<spring:message> tag
连appfuse也不用它,可见多么鸡肋。因为fmt在找不到资源时,最多显示???welcome???,而<spring:message>则会抛出异常。
3.4 有趣的theme 解决"做成图片的文字"的国际化
theme也就是把message的原理发挥了一下,让不同语言的美术字图片的路径也可以定义在theme_zh_cn.properties和theme_en_us.properties中。终于有一个不那么鸡肋的spring tag了。
4.简单归纳
1. jstl中仍然使用标准的<ftm:message>及其定义?
2.java中使用spring的<messagesource>实现单例
3.用<spring:theme>解决那些做成图片的文字的国际化问题
4.spring 还有session,cookie locale resolver, 到时可以看一下.
文章来源:http://www.jiuyepx.cn/html/jishu/java/3250.html
发表评论
-
百度质量部实习居然通过了~
2012-02-08 12:23 985[size=small;]? ? ?本来打算在软工所苦 ... -
Android上的log,日志相关
2012-02-07 14:18 1524摘自:http://blog.csdn.net/met ... -
随 笔
2012-02-04 13:39 596金风玉露一相逢,便胜却人间无数。英文版: chemis ... -
MyISAM InnoDB 区别
2012-02-02 16:59 731<h1 id="artibody ... -
数独suduku
2012-01-31 14:38 914sudu sudu sudu sudu sudu su ... -
paypal提现如何省钱
2011-12-28 16:58 1221据PayPal中文注册得知,如今很多收样品费的外贸商户 ... -
ORA-01012: not logged on 解决办法
2011-12-28 13:08 3492<span style="font-f ... -
c语言中去除const修饰
2011-12-21 10:54 1427[size=16px;]<span style= ... -
虚析构函数(总结 帖子)
2011-12-21 09:54 698<span style="" ... -
手机防盗软件实现(源码)
2011-12-20 12:54 935<a href="http://blo ... -
谈谈Q+平台的技术实现
2011-12-20 09:49 960这篇文章是我个人 ... -
微创短信开发平台
2011-12-19 11:39 767在网上闲逛,发现了一个站点,微创短信开发平台(http ... -
《使用 Microsoft .NET 的企业解决方案模式》读书笔记3
2011-12-19 10:24 776第3章 Web表示模式 没有一个设计策略能够适合所有情 ... -
MapXtreme2004代码 MapControl控件中显示地图文件
2011-12-15 14:29 901::<?xml:namespace prefix ... -
ASP.NET开发工具Web Matrix介绍
2011-12-15 13:39 965<p class="MsoPlain ... -
用C#写定时关机的程序
2011-12-15 11:14 702</span></font>& ... -
JUnit单元测试感悟
2011-12-14 11:29 861<p class="MsoNorma ... -
JNI调用的注意事项
2011-12-14 09:34 749JNI的简单教程网上很多,看看就能够明白,照着操作也基 ... -
javax.xml.transform.TransformerFactoryConfigurationError
2011-12-13 13:34 848<span style="" ... -
ViewFlipper “Receiver not registered” Error
2011-12-12 10:59 1123偶尔出现这个错误: <span> < ...
相关推荐
Spring i18n,全称为“Spring 国际化”,是Spring框架提供的一个强大的功能,用于支持多语言环境的应用程序开发。它使开发者能够轻松地为不同地区的用户提供本地化的界面和信息,从而提升应用程序的全球适用性。在...
Spring Boot的国际化(i18n)配置是其强大功能的一部分,它允许开发人员为不同地区的用户提供本地化的应用体验。这个“Spring Boot 国际化(i18n)配置demo.zip”包含了一个演示如何在Spring Boot项目中实现i18n的示例...
Spring MVC的国际化(i18n)是基于Java的国际化机制构建的,它利用Resource Bundle加载对应国家/地区(Locale)的语言资源文件,以便根据用户的语言环境提供相应的信息。Spring MVC通过`ResourceBundleMessageSource...
Spring Boot的国际化(i18n)功能使得开发者可以轻松地为应用程序提供多语言支持,以便用户可以根据他们的偏好选择不同的语言界面。以下是对这个主题的详细讲解。 首先,我们需要了解i18n这个术语,它是...
8. **Spring框架的i18n支持**:Spring框架提供了一套完整的国际化解决方案,包括使用`MessageSource`接口获取国际化消息,以及在MVC环境中自动处理请求的locale。 9. **Apache Commons I18N库**:这是一个强大的...
标题 "springmvc i18n" 指的是Spring MVC框架中的国际化支持,这是一个关键功能,使得Web应用程序能够为不同的地区和语言提供本地化的用户体验。Spring MVC是Spring框架的一个模块,专注于处理HTTP请求和响应,提供...
本项目“基于i18n国际化微服务统一处理错误码”就是针对这一需求而设计的。通过结合SpringBoot框架和i18n(国际化)技术,我们可以实现错误信息的多语言支持,让错误信息能够适应不同的用户群体。 首先,让我们来...
Spring Boot 使用 i18n 时 properties 文件中文乱码问题的解决方法 Spring Boot 是一个流行的 Java 框架,用于快速开发 Web 应用程序。然而,在使用 Spring Boot 时,遇到中文乱码问题的可能性很高,特别是在使用 ...
Spring MVC作为Java Web开发中的一个强大框架,提供了支持i18n的机制。结合Freemarker模板引擎,我们可以构建出具有多语言功能的应用。下面将详细解释如何在Spring MVC项目中实现i18n,并提供一个Freemarker的小实例...
spring.messages.basename=i18n/messages ``` 这告诉SpringBoot,资源文件的基础名称是`i18n/messages`,系统会自动根据用户浏览器的locale信息去寻找相应的资源文件。 为了在实际应用中使用这些翻译,我们需要...
SpringBoot 提供了一个快速构建和配置 Spring 应用的框架,Beetl 是一个强大的模板引擎,而 i18n(国际化)则是处理多语言支持的关键。接下来,我们将深入探讨这三个组件以及如何在实际项目中结合使用。 **...
我的博客中的《Spring MVC、hibernate validator和i18n》文章描述的项目的源代码,该文是对Spring mvc, validation和i18n的一个入门级的tutorial。我的博客地址是http://blog.csdn.net/zjysource
-- <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> --> <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> ``` ### 4. ...
##spring roo i18n 中文插件##原始地址:https://code.google.com/p/spring-roo-addon-i18n-chinese/因为google code被墙导致无法访问,copy到github。如果有侵犯版权问题,请联系 删除##使用说明##下载源代码执行...
6. **国际化类库**:使用Java的`java.text`包,或者在Web开发中使用Spring或Struts等框架提供的i18n支持。 工具方面,开发过程中可能会用到以下工具: 1. **翻译管理工具**:如Transifex、Crowdin等,用于协作管理...
Spring Boot + Beetl + i18n 国际化处理方法 Spring Boot 是一款流行的 Java 应用程序框架,Beetl 是一个高性能的模板引擎,而 i18n 是国际化的缩写,表示设计和制造容易适应不同区域要求的产品的一种方式。本文将...
在本章中,我们将深入探讨Spring MVC框架中的国际化支持,简称i18n。这个功能使得应用程序能够根据用户的地域设置显示不同的语言内容,为全球用户提供更友好的用户体验。Spring MVC通过资源绑定和消息源机制实现了这...
Java Spring项目国际化(i18n)详细方法与实例 Java Spring项目国际化是指在Java Spring项目中实现多语言支持和本地化信息的配置。国际化的目的是为了让软件系统能够适应不同的语言和地区环境,使得软件系统具有全球...
标题 "i18n.zip" 暗示了这是一个与国际化(Internationalization,通常缩写为 i18n)相关的压缩文件。i18n 是软件开发中的一个重要概念,指的是设计和实现能够适应不同地区、语言和文化的技术过程。这个压缩包可能...
Spring框架和其它库也提供了对I18N更高级的支持,如国际化消息源的自动配置和管理。 总的来说,Java的I18N功能强大且灵活,能够帮助开发者构建全球化应用程序,满足不同地区用户的需求。通过熟练掌握资源包、Locale...