Tomcat国际化 ResourceBundle

资源束(ResourceBundle)是一个本地化对象。它封装了适用于本地环境的资源。(例如:log信息适用于日文,中文,英文等操作系统。)

Tomcat 的国际化管理是根据java文件包分类的。(比如操作系统为日文,那么通过ResourceBundle.getBundle(org.apache.XXXX)所得到的本地资源束所指向的文件既是org.apaceh包下的XXXX_ja.properties。)

 

Tomcat 维护了一个StringManager的集合。Tomcat将国际化资源信息存储在相应的包中。

    private static Hashtable managers = new Hashtable();

 

    public synchronized static StringManager getManager(String packageName) {
        StringManager mgr = (StringManager)managers.get(packageName);
        if (mgr == null) {
            mgr = new StringManager(packageName);
            managers.put(packageName, mgr);
        }
        return mgr;
    }

 

managers结构如下:

managers___("org.apache.catalina.startup", StringManager)

                |

                |__("org.apache.catalina.core", StringManager)

                |

                |__…………

 

 

StringManager类实现了对ResourceBundle资源束的管理,是ResourceBundle的封装。

    public class StringManager {

        private ResourceBundle bundle;

    }

 

构造方法中实现了通过包名来取得本地环境指定包下的bundle

        String bundleName = packageName + ".LocalStrings";
        bundle = ResourceBundle.getBundle(bundleName);

 

如果本地环境为日文系统,那么通过org.apache.catalina.startup.LocalStrings键值取得的资源是org.apache.catalina.startup.LocalStrings_ja.properties中的文件信息。

 

最后通过bundle.getString(key);方法,即可得到本地资源信息。

 

实例应用:

项目中对日志内容和页面的项目信息进行国际化管理。并且,日志内容和页面项目分别用两个文件处理。

页面项目资源文件是config.page.properties.

日志内容资源文件是config.log.properties.

那么建立两个资源束分别处理这两个本地资源。

bundle = ResourceBundle.getBundle("config.page");

bundle = ResourceBundle.getBundle("config.log.");

使用时,只需要添加不同的本地信息即可。例如:config.page_ja.properties,config.page_en.properties等。

你可能感兴趣的:(apache,tomcat,项目管理)