Desktop applications, handheld devices, telephones - Internet applications can be delivered from a variety of sources and appliances. They can originate in one country and be delivered to another in the blink of an eye. As a result, no matter whether you're constructing an informational Web site or an e-commerce solution, you won't be able to service all possible users unless you can "speak their language."
The folks at Jerusalem-based Slangsoft, one of a crop of high-technology companies to emerge from Israel's version of Silicon Valley, consider it their mission to assist developers with the process of harnessing their applications to support the needs of international communities of users. Slangsoft was kind enough to let me take a look at the release candidate for the newest version of their LingoGUI toolkit for delivering multilingual Web applications.
LingoGUI is a development package that consists of a series of lightweight Java graphical-user-interface components, associated fonts and virtual keyboards for 42 different national languages. (LingoGUI provides a framework for managing international languages, but it doesn't actually translate text for you.) The LingoGUI toolkit comes in two different formats, a regular edition (Java class files) and a LingoGUI beans edition that can be used with any of the popular Java Interactive Development Environments such as Oracle JDeveloper and VisualCafé. LingoGUI is meant as a replacement UI for a set of the most popular AWT widgets as listed in Table 1.
Slangsoft provides the necessary fonts and virtual keyboards so you can use LingoGUI no matter what platform the application will run on. You can deliver your program as a Java application, in which case the fonts and virtual keyboards can be stored locally, or as a Java applet - in which case the fonts and keyboards can be stored on your Web server and delivered over the Internet. (You can access Slangsoft's demo applications over the Internet from within your browser and see it for yourself.)
Working with LingoGUI
I downloaded the release 1.1 candidate from the Slangsoft Web site and installed the software quickly and easily. I got started by working through the sample HTML pages in the examples subdirectory. These pages have links to working Java applets, which gave me a basic understanding of how to work with the LingoGUI. The main demo application shows off all the major components of the product, as you can see in Figure 1.
This same applet can be accessed from Slangsoft's Web site, so you don't even need to download the product to get a handle on how it works. The demo applet doesn't model a real application; it's merely a sample form that shows off all of the LingoGUI widgets using a single panel. By setting the language listbox to "Russian," I was able to enter a string into the text field and then use the push button to propagate the text to the other widgets. The LingoGUI widgets work like any other AWT component, and you can set the same attributes for them including bold, italic, colors and image backgrounds.
Harnessing your applications to support multiple languages requires more than just visual widgets; you also need fonts to display international text and a means to enter text into fields using a different language. Slangsoft provides a Unicode font with LingoGUI called EmlDefault, which supports a range of sizes from eight to 72 points. Furthermore, the EmlDefault font supports the standard set of style options including plain, bold, italic and underlining. The EmlDefault font is packaged inside the small LingoGUI JAR files, which means that it can be downloaded over the Web without difficulty at application-execution-time. If you prefer to use your own fonts with the LingoGUI widgets, you're free to do so, but this defeats the purpose of building your application with LingoGUI. Should you need to make use of your own font, Slangsoft has developed a technique for converting TrueType fonts into compressed Java classes. You can access this service by contacting Slangsoft directly.
Programmers (and end users) can test their multilingual applications by using the virtual keyboard as shown in Figure 2.
I selected "Russian" in order to display the keyboard shown in the figure - the keyboard is composed of Cyrillic characters instead of the usual North American QWERTY. Using this applet, I was able to test out my text fields and text areas by entering Cyrillic characters. The keyboard applet runs as a separate window but it communicates with the primary applet window as a nonmodal application would. You can move back and forth between either panel and LingoGUI will load the "typed" text into whichever widget on the main panel has "focus." Closing down the main applet window causes the virtual keyboard to disappear as well, which is exactly what you'd expect it to do. This clever feature allows you to test out multiple languages without having to actually install the language onto your hardware platform.
The really powerful thing about the virtual keyboard is that it automatically maps the keys on your computer's keyboard as well. Once I had the virtual keyboard displayed in Russian, I was able to enter Cyrillic characters directly on my PC keyboard. (Although I stuck with the Russian language for most of my testing, the Asian languages - Chinese, Japanese and Korean - are impressive as well.)
Once your application has been built using LingoGUI, you can use the Resource Bundle File Builder to manage the various languages that you'll use within your applications (see Figure 3).
Basically, the Resource Builder allows you to associate resource keys using English along with text strings using one of the supported international languages. You can enter Unicode characters directly into LingoGUI widgets, but you'll find it easier to use the Resource Bundle File Builder to manage your text strings. The virtual keyboards are available inside the Resource Bundle File Builder as well, and I was able to add some Russian text for the various resource keys in the sample resource files. (Since I don't speak a word of Russian beyond "Stolichnaya," I've no idea just what I entered, but it looked cool just the same.) The output of the Resource Bundle File Builder is a series of resource file classes with Unicode characters bundled in. I found this utility useful, but it's a very basic interface. (For example, the only way to open a new resource file is to restart the Resource Bundle File Builder.)
While Slangsoft covers the basic set of AWT widgets, most of the popular Java development tools provide for an extended set of AWT-compatible widgets. VisualCafé, for example, provides a formatted text field that can be used for masking date fields (and they also offer some nice features such as "data-bound" AWT widgets as well). In the meantime, nothing precludes you from mixing these other AWT widgets with the LingoGUI widgets so long as you're willing to live with "partial" internationalization. I'd expect Slangsoft to add support for some of these additional AWT widgets in the future. (They mentioned they're already working on a Swing version of LingoGUI that will work with JDK 1.3, which you can read about on their Web site.)
Slangsoft provides a nice toolkit for harnessing your Java applications to support international languages, and I'd recommend that you consider LingoGUI as part of your development environment. You can easily evaluate the software yourself by downloading it from their Web site www.slangsoft.com.
Jim Milbery is a software consultant with Kuromaku Partners LLC (www.kuromaku.com), based in Easton, Pennsylvania. He has over 15 years of experience in application development and relational databases.