PowerBuilder Authors: Chris Pollach, Yeshim Deniz, Jayaram Krishnaswamy, Kevin Benedict, Avi Rosenthal

Related Topics: PowerBuilder

PowerBuilder: Article



You've meticulously developed and polished an application in PowerBuilder. Now it's time to publish it in several foreign languages. Localizing application software, under the best of circumstances, is a daunting task, and maintaining the resulting array of foreign-language products becomes an ongoing, time-consuming effort.

WizTom adds new languages to application programs without touching your original development or its source code. It allows a single binary application file to serve an unlimited number of languages. It has the tools you need to create and publish the added language layers. The result: your software gets a foreign-language U/I without any alteration of the source code or libraries. Also, you avoid the usual functional QA and testing issues that accompany language reengineering work.

Traditional localization forces you to build a new version of your program for each foreign language, turning a simple language issue into a software-engineering and testing nightmare. WizTom breaks with this costly approach. It externalizes foreign language from your PowerBuilder application, creating a language layer that, once professional translators have stocked the WizTom database, runs in the background with your application, swapping in a foreign-language and making necessary adjustments to object size and layout at runtime.

WizTom can handle dozens of languages per target application as well. Once translation pros have done their work, you can ship hardened English-language application software anywhere, while the foreign-language user interface is shown by just changing a setting in WizTom. It also handles exotic languages like Chinese or Arabic.

PowerBuilder and Localization
With PowerBuilder, localization has depended on the system, the language, and the number of languages in question.

The PowerBuilder Translation Toolkit (TTL), which is included with certain corporate PowerBuilder licenses (PBL), is a localization tool that allows the creation of language-specific versions of PBLs. TTL works best with a single non-Asian foreign language and with relatively small applications (generally less than 50 screens). PowerBuilder, being a tool of choice for enterprise systems development, limits TTL's usefulness.

When dealing with Asian-language localization, which requires double-byte character sets (DBCS), PowerBuilder users have more difficult choices to make. PowerBuilder 6.5 is the most recent version that supports double-byte-friendly Unicode. With WizTom, localization into a double-byte language like Japanese means that translators can use the native Japanese character encodings in WizTom's Unicode environment. This saves the cost of a license for the Unicode-enabled PowerBuilder 7 Japanese version or, alternatively, the task of developing the application in PowerBuilder 6.5, which supports Unicode.

But both the PowerBuilder 7 and 6.5 approaches remain fundamentally invasive - that is, localization means altering application code or critical PBLs. At best, you'll have to do functional, QA, and QC testing for every language you add. In most cases, you'll have entirely new versions of source code and executable for each language.

WizTom, with its PowerBuilder extensions and built-in Unicode support, solves the thorny issue of localization without touching your application or key libraries.

PowerBuilder Localization with WizTom
WizTom does its job in several steps and through two major software components: WizTom Studio and WizTom Runtime. WizTom Studio is what translation professionals use to translate your application. It also has specialized tools for text extraction, file import and export, and deployment. WizTom Studio's main job is to build WizTom's Multilingual Database of text elements and object coordinates related to your PowerBuilder application. WizTom Runtime applies the translated text and object coordinates (such as larger button sizes to accommodate longer words) through the real-time swapping of screen information as the English-language application runs. The following sections describe the key steps to localization with WizTom in more detail.

Step 1: Text Extraction
WizTom's PowerBuilder extensions connect to PBLs using PowerBuilder's ORCA APIs. This gives WizTom the ability to extract text strings from DataWindows and all PowerBuilder-specific controls. WizTom scans the code and properties associated with a PowerBuilder application's objects. It collects such strings as error messages, labels, and window titles and stocks the Multilingual Database so human translators can go to work.

WizTom provides two approaches for extraction: "capture mode" and an automated "text crawling" extractor.

Capture mode is designed for small applications that can be translated on location by a single individual, and thus has limited applicability to enterprise-scale PowerBuilder implementations. It's an interesting tool, though, particularly because WizTom Runtime operates in the background alongside the application to be translated. As you translate in WizTom Studio's Translation Editor, changes appear instantly in the application.

The automated extractor is the tool of choice for larger localization projects. Like capture mode, it's a point-and-click process. You choose the executables, libraries, and other files containing screen text; a special WizTom extractor for PowerBuilder then extracts text and populates the Multilingual Database for later human translation.

You can review text extracted from these files and filter out strings used in the program's internal logic that should not be translated.

Step 2: Translation
WizTom has two main tools for translators: WizTom Studio's Translation Editor and the Translation Pad, which has the same look and feel as the Translation Editor but can be e-mailed to outside translation professionals.

WizTom's Translation Editor views text extracted to the Multilingual Database and allows translators to directly enter translations into the database. Translators, or those checking over completed translations, have both list-format and WYSIWYG viewing options, as well as the ability to sort translated texts and show or hide already translated text to highlight what remains to be done.

The key difference with Translation Pad is that rather than sending off the Multilingual Database to outside translators, Translation Pad deals with export files containing all or a part of the database. These exports can then be mailed back to the project manager and imported into the Multilingual Database once translated (see Figure 1).

Step 3: Review and Object Modification
Any developer who has lived through a localization project will tell you that translation does not localization make. Translations must fit onto objects like buttons, which doesn't always happen when the English "Up" becomes "Aufwärts" in German.

This is another instance in which localization requires altering application code or key libraries, resulting in new versions of applications for each foreign language. In contrast, WizTom's Object Translation Tools function lets you resize any screen object with a click and a drag. This can be done with any screen object, and WizTom saves this localized data in its own database for correct redrawing at runtime, again without any need to change or touch your source code.

Step 4: Runtime
We now have a foreign-language PowerBuilder application without having touched its source code. This is where WizTom Runtime takes over. Once WizTom DLLs and the Multilingual Database are copied to the application directory, WizTom Runtime operates in the background, swapping out strings and adjusting objects based on data previously populated in WizTom Studio. Though the application itself is running in its native language, the user interface and all text messages will appear in a completely translated form.

WizTom extensions check every control in a DataWindow and fetch the correct translation from the Multilingual Database for presentation to the screen. At the same time, it uses control information stored in a separate WizTom database to reformat objects so they're tailored to the foreign-language text.

Since it operates in the background, WizTom was designed to be small and fast. WizTom Runtime occupies less than 1MB of RAM. The WizTom Multilingual Database is a proprietary flat-file database built for speed, using cache memory, pages, and an LRU mechanism to minimize disk hits. Its size depends on the number of languages and amount of content per language, with 10,000 English words taking less than 200KB.

WizTom is an elegant solution to a problem that has long vexed PowerBuilder developers. Rather than forcing developers to rebuild applications because of foreign-language requirements, WizTom leaves your application in its tested and signed-off state. As a result, rather than creating a separate version of your software for every foreign language in which it operates, you have a single body of source code to maintain and upgrade.

Using WizTom Studio to populate WizTom databases associated with your application and WizTom Runtime to swap strings and adjust objects on the fly, WizTom externalizes your application's language. This allows you to create one or multiple foreign-language layers that, though clearly visible to the user, have no interaction with your application code.

In short, WizTom lets PowerBuilder developers localize their applications in an easy, nonintrusive, inexpensive, and elegant way. Instead of reengineering old code, it lets you focus on new development.


ABLE Innovations, Inc.
1100 Lakeway Dr., Suite 200
Bellingham, WA 98229
Web: www.ableinnovations.com
Phone: 360 714-1390
E-mail: [email protected]

More Stories By Chris Langewis

Chris Langewis has 25 years of international software business experience. He has built global product marketing groups and led teams in the development and implementation of new technology for machine translation, computer-aided translation tools, and localization process management programs.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.