|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
本文对JSP国际化的简要介绍,着重探讨了使用标记库对JSP进行国际化的过程,并通过具体的示例演示了如何使用jakarta的i18n标记库。 综述 当我们在用JSP设计面对不同国家的站点时,特殊是那些在界面之间没有特殊大差别的商业站点,我们可以利用JSP的一些机制来支持国际化. 通常有三种方法可以实现国际化. 为每个国家编写一套JSP代码, 可以通过嵌入BEAN和标记处理器的方法重用一些逻辑代码. 维护统一的JSP代码,直接利用JAVA的资源捆绑机制实现国际化. 维护统一的JSP代码,利用通用的或自定义标记库实现国际化. 我们重点讨论第三种方式,因为它有很好的灵活性,可维护性和可扩展性. 其实标记库也是利用JAVA的资源捆绑机制, 只是把国际化常用的方式封装的更轻易使用,而且更符合JSP的编程思想, 把表述层和逻辑层分开.通用的标记库比较闻名的有JAKARTA的I18N标记库。本文接着上一篇继承讨论i18n标记库的各种标记和使用方式,包括以下内容: 对时间,日期,货币,数字国际化 I18N标记库的一些高级用法 一个简朴的例子 对时间,日期,货币,数字国际化 formatString 输出一个字符串,假如value为空则显示defaultText <i18n:formatString value="<%= s2 %>" defaultText="the String was null"/> 表1:formatString的属性描述 属性名称 描述 id 该formatString的标识变量, 通过它,其他标记和代码可以访问该formatString, value 输出的字符串 defaultText 默认的输出字符串 formatNumber 根据locale信息国际化数字,它的pattern可以定义为‘##,###.##’。假如value为空则显示defaultText,假如不设locale,则取上一级的<i18n:locale>的设定,假如没有<i18n:locale>,则根据客户端哀求的locale,假如还是没有发现,则取本地JVM的locale。 <i18n:formatNumber value="<%= n %>" pattern="##,###,###.##"/> 表2:formatNumber的属性描述 属性名称 描述 id 该formatNumber的标识变量, 通过它,其他标记和代码可以访问该formatNumber value 输出的数字 pattern 输出的模式(##,###.##) locale locale信息 defaultText 默认的输出数字 formatCurrency 根据locale信息国际化货币。假如value为空则显示defaultText,假如不设locale,则取上一级的<i18n:locale>的设定,假如没有<i18n:locale>,则根据客户端哀求的locale,假如还是没有发现,则取本地JVM的locale。 <i18n:formatCurrency value="<%= n %>"/> 表3:formatCurrency的属性描述 属性名称 描述 id 该formatCurrency的标识变量, 通过它,其他标记和代码可以访问该formatCurrency value 输出的货币值 locale locale信息 defaultText 默认的输出货币值 formatPercent 根据locale信息国际化百分数。假如value为空则显示defaultText,假如不设locale,则取上一级的<i18n:locale>的设定,假如没有<i18n:locale>,则根据客户端哀求的locale,假如还是没有发现,则取本地JVM的locale。 <i18n:formatPercent value="<%= n %>"/> 表4:formatPercent的属性描述 属性名称 描述 id 该formatPercent的标识变量, 通过它,其他标记和代码可以访问该formatPercent value 输出的百分数 locale locale信息 defaultText 默认的输出百分数 formatDateTime 根据locale信息国际化日期时间。它的dateStyle和timeStyle可以定义为´short/medium/long/full´假如value为空则显示defaultText,假如不设locale,则取上一级的<i18n:locale>的设定,假如没有<i18n:locale>,则根据客户端哀求的locale,假如还是没有发现,则取本地JVM的locale。 <i18n:formatDateTime dateStyle="medium" timeStyle="medium"/> 表5:formatDateTime的属性描述 属性名称 描述 id 该formatDateTime的标识变量, 通过它,其他标记和代码可以访问该formatDateTime value 输出的日期时间 locale 指定的locale信息 dateStyle 输出的日期格式 timeStyle 输出的时间格式 defaultText 默认的输出日期和时间 formatDate 根据locale信息国际化日期。它的style可以定义为(short/medium/long/full),pattern可定义为´YYYY MMM ddd´.假如value为空则显示defaultText,假如不设locale,则取上一级的<i18n:locale>的设定,假如没有<i18n:locale>,则根据客户端哀求的locale,假如还是没有发现,则取本地JVM的locale。 <i18n:formatDate pattern="yyyy MMMMM ddd hh:mm:ss"/> 表6:formatDate的属性描述 属性名称 描述 id 该formatDate的标识变量, 通过它,其他标记和代码可以访问该formatDate value 输出的日期 locale 指定的locale信息 pattern 日期的模式(YYYY MMM ddd) Style 日期的格式(short/medium/long/full) defaultText 默认的输出日期 formatTime 根据locale信息国际化日期。它的style可以定义为(short/medium/long/full).假如value为空则显示defaultText,假如不设locale,则取上一级的<i18n:locale>的设定,假如没有<i18n:locale>,则根据客户端哀求的locale,假如还是没有发现,则取本地JVM的locale。 <i18n:formatTime style="full"/> 表7:formatTime的属性描述 属性名称 描述 id 该formatTime的标识变量, 通过它,其他标记和代码可以访问该formatTime value 输出的时间 locale 指定的locale信息 Style 日期的格式(short/medium/long/full) defaultText 默认的输出日期 I18N标记库的一些高级用法 ifdef 判定一个key是否存在于指定(或默认)的资源文件中,假如存在则进行该标记中的语句. <i18n:ifdef key="zh_CN_ONLY"> Only users specifying zh_CN as their locale will see this! </i18n:ifdef> 表8:ifdef的属性描述 属性名称 描述 key 欲判定是否在资源文件中的key的名字 bundle ResourceBundle的基本名,可以连同locale信息定位所需的ResourceBundle. bundleRef 一个包含ResourceBundle的属性名,通常为bundle的id ifndef 判定一个key是否存在于指定(或默认)的资源文件中,假如不存在则进行该标记中的语句. <i18n:ifndef key="zh_CN_ONLY"> Only users specifying something OTHER than zh_CN as their locale will see this! </i18n:ifndef> 表9:ifndef的属性描述 属性名称 描述 key 欲判定是否在资源文件中的key的名字 bundle ResourceBundle的基本名,可以连同locale信息定位所需的ResourceBundle. bundleRef 一个包含ResourceBundle的属性名,通常为bundle的id 一个简朴的例子 <%-- this page contains a variety of demonstrations of the <i18n:formatXXX> tags --%> <%@ taglib uri="http://jakarta.apache.org/taglibs/i18n-1.0" prefix="i18n" %> <i18n:bundle baseName="i18n-test" id="bundle"/> <%@ page import="java.util.Date" %> <%@ page import="java.util.Locale" %> <html> <head> <title>Examples of using the Formatting tags in the i18n Tag Library Tag</title> </head> <body> <% Number n = new Double( 1234567.89 ); Date d = new Date(); %> <h2>default Locale</h2> <h3>The time is now:-</h3> <ul> <li> <i18n:formatTime style="medium" /> (medium) </li> </ul> <h3>The date is now:-</h3> <ul> <li> <i18n:formatDate pattern="yyyy MMMMM ddd hh:mm:ss"/> (pattern) </li> </ul> <h3>The datetime is now:-</h3> <ul> <li> <i18n:formatDateTime dateStyle="full" timeStyle="full"/> (full, full) </li> </ul> <h3>The number is:-</h3> <ul> <li> <i18n:formatNumber value="<%= n %>"/> (number) </li> <li> <i18n:formatNumber value="<%= n %>" pattern="##,###,###.##"/> (number with pattern) </li> <li> <i18n:formatCurrency value="<%= n %>"/> (currency) </li> <li> <i18n:formatPercent value="<%= n %>"/> (percent) </li> </ul> <h2>US Locale</h2> <i18n:locale locale="<%= Locale.US %>"> <h3>The time is now:-</h3> <ul> <li> <i18n:formatTime style="medium" /> (medium) </li> </ul> <h3>The date is now:-</h3> <ul> <li> <i18n:formatDate pattern="yyyy MMMMM ddd hh:mm:ss"/> (pattern) </li> </ul> <h3>The datetime is now:-</h3> <ul> <li> <i18n:formatDateTime dateStyle="full" timeStyle="full"/> (full, full) </li> </ul> <h3>The number is:-</h3> <ul> <li> <i18n:formatNumber value="<%= n %>"/> (number) </li> <li> <i18n:formatNumber value="<%= n %>" pattern="##,###,###.##"/> (number with pattern) </li> <li> <i18n:formatCurrency value="<%= n %>"/> (currency) </li> <li> <i18n:formatPercent value="<%= n %>"/> (percent) </li> </ul> </i18n:locale> <h2> ifdef </h2> <i18n:ifdef key="zh_CN_ONLY"> <i18n:message key="zh_CN_ONLY" /> </i18n:ifdef> <h2> ifndef </h2> <i18n:ifndef key="zh_CN_ONLY"> Only users specifying something OTHER than zh_CN as their locale will see this! </i18n:ifndef> </body> </html> i18n-test.properties OHTER_ONLY = a test i18n-test_zh_CN.properties zh_CN_ONLY = 只有locale是zh_CN时才可以看到我! 注重要把资源文件拷贝到/WEB-INF/classes子目录下 返回类别: 教程 上一教程: JSP的MYSQL_JDBC驱动程序 下一教程: 关于JSP中文问题 您可以阅读与"用标记库国际化JSP(2)"相关的教程: · JSP由浅入深(11)?? 标记库 · 用Struts开发国际化程序思路 · JAVA国际化DEMO · 用Java解决国际化问题 · Struts国际化问题解决 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |