当我们在用JSP设计面对不同国家的站点时,特别是那些在界面之间没有特别大差别的商业站点,我们可以利用JSP的一些机制来支持国际化。
通常有三种方式可以实现国际化
为每个国家编写一套JSP代码, 可以通过嵌入BEAN和标记处理器的方式重用一些逻辑代码。
维护统一的JSP代码,直接利用JAVA的资源捆绑机制实现国际化。
维护统一的JSP代码,利用通用的或自定义标记库实现国际化。
我们重点讨论第三种方法,因为它有很好的灵活性,可维护性和可扩展性。
其实标记库也是利用JAVA的资源捆绑机制, 只是把国际化常用的方法封装的更容易使用,而且更符合JSP的编程思想, 把表述层和逻辑层分开。通用的标记库比较著名的有JAKARTA的I18N标记库。
JSP的国际化的基础是JAVA的国际化,都是利用资源捆绑机制把资源与代码分离,通过读取相应的locale信息,自动的匹配相应的资源,并在此基础上实现文本,时间,日期,货币,数字等格式的国际化。关于JAVA国际化的基本概念和方法见The Java™ Tutorial Internationalization 。
但同一般的JAVA程序的国际化的过程和具体方法还是有很多区别。主要在与locale信息的来源: JSP的locale信息在大部分情况下来自与浏览器,而一般的JAVA程序的locale大都来自当前的JVM。
利用JSP的标记库机制实现国际化:通过使用通用或用户自定义的I18N标记库,可以有很好的灵活性,可维护性和可扩展性。但需要在服务器端配置标记库。
JSP国际化和一般的JAVA应用程序国际化的最重要的区别在于Locale信息的源自浏览器, 具体的讲来自request对象.而jakarta的i18n标记库在缺省的情况下可以自动读取request对象中的Locale信息,从而简化了编程和维护的复杂度,当然用户也可以显式的定义Locale信息,解决特殊的显示问题。