Agmodel
 
   

ResourceServer Home Page

ResourceServer - A Localization System for Distributed Computing Applications

ResourceServerFileSetView.gif

Internationalizing software greatly increases its potential range of users. As part of internationalization, software must be adapted so that it can display screen text like button labels and menu items in various languages. This is typically handled by assigning a language-independent identifier to each screen text item, and loading the corresponding national language text at run time. Once programmers have adapted software to dynamically load text in this way, translators must create lists of (''identifier'', ''phrase'') pairs for their particular language.

In the programming language Java, a set of compiled classes extended from the standard Java ResourceBundle class can be used to assist in this process. This set of classes can be thought of as like a ''family'' that handles a number of related text items (eg MetBrokerResources). Each member of the family specialises in one language (eg MetBrokerResources_zh) for Chinese, and sometimes in a specific language/country combination (eg MetBrokerResources_zh_sg for Singaporean Chinese). The family takes responsibility for providing the most appropriate text available for a given location.

Java's internationalization support is superior to most other programming languages', but a number of problems remain in using ResourceBundles, particularly in a distributed computing situation:

  • Searching for the most appropriate bundle generates a number of network requests and responses, and can take some time.
  • The entire ResourceBundle (all text items for a language) must be transferred to the client computer, even if only one text item is required.
  • If applets are stored in Java Archives (jars) then the whole ResourceBundle family (all languages) must be transferred to the client.
  • Adding a new term to a ResourceBundle family requires that each family member be recompiled and maybe repackaged into new jars.

ResourceServer is a Java application that addresses these problems. The text normally stored in ResourceBundle families is instead stored in a database managed by a server application. Client applications communicate with ResourceServer using Java Remote Method Invocation (RMI), specifying the language of interest and supplying the identifiers of the text items they require. They then receive back only the text items they need.

Return to AgModels home page