VB Language Manager
Easy and Efficient Multi-Language Support for Visual Basic
Applications


Rx for Localization Headaches!

Have you ever tried to make a Visual Basic application speak more
than one national language?  If so, you've discovered the
headache of multiple language support in VB.  Strings are
scattered all over the place in old apps, and even if strings are
in a centralized resource, you still contend with inaccessible
string properties in form definitions.  You can do it, of course,
if you're willing to spend hours duplicating files and writing
tedious, repetitive code.  When you're done, though, the headache
lives on in performance and maintenance problems.  Shouldn't
there be a better way?

There is!  VB Language Manager manages the process from start to
finish to make localizing any VB app, old or new, as simple as
1-2-3.  With VB Language Manager, you maintain a single copy of
source code yet compile in as many languages as you wish.  The
Professional Edition of VBLM can even create multi-lingual
executables that run   efficiently   in whatever language the
user selects!

VB Language Manager makes localization easier and more efficient
for all parties involved.  How?  By letting each concentrate on
what he or she does best, by eliminating drudgery, and by
simplifying logistics.  With a few clicks, the developer can
create a VBLM project file containing every string in a VB
project that needs translation, then ship it off to the
translator.  The translator   across the room or across the globe
  can fire up VBLM, load the project, enter the translations, and
ship it back.  A few more clicks and the application is up and
running in a new language.

VBLM computerizes the entire localization process, while source
code never leaves the building.  And of course, translators don't
have to use the software: you can exchange VBLM worksheets
instead of files, and still dramatically improve current
practice.


How VB Language Manager Works

VB Language Manager is a sophisticated tool, but it works in
three easy steps.  First, VBLM examines a VB project, finds the
strings in both form definitions and code, and copies them into a
VBLM project file.  Next, you use the Language Table Editor to
create language tables and enter translations.  Finally, VBLM
builds a localized version of the project using the language
table of your choice, and instructs VB to compile it.  That's all
there is to it.

While simple in overview, though, VBLM's sophistication shows up
in the details.  Let's look at them, step by step.


STEP 1: STRING EXTRACTION

When VBLM extracts strings from a VB project, it does not blindly
copy everything between double quotes; instead, it consults
customizable lists of strings and properties to ignore.  You can
configure VBLM to ignore strings used as Format() and SendKeys
arguments, for example, and those composed only of numbers and/or
punctuation.

The ignored properties list is especially powerful, as VBLM does
not extract any string directly assigned to a listed property,
whether assigned in a form definition or in code.  This allows
you to systematically ignore properties that do not require
translation, e.g. "LinkTopic" and "Path."  Configure the list to
your particular needs; for example, list "FontName" when
translating into languages that share the design language
character set, but don't list it if you need a new character set
so you can later define appropriate fonts (VBLM fully supports
translation across character sets).

What if VBLM does extract a string that you don't want
translated?  Just leave it untranslated, and it will be ignored
as well.

Other intelligent string extraction features include:

   Single Instancing: However many times a given string occurs
   in a project, it is extracted once and you translate it once.

   Automatic Format Conversion: VBLM needs ASCII format VB files
   to do its work; if you use binary format, VBLM starts up VB
   and makes the copies it needs, without touching the
   originals.

   Automatic Updates: When VBLM loads a VBLM project, it
   compares dates with the parent VB project, advises you if the
   parent has changed, and if so, reexamines the parent and
   updates the VBLM project as necessary, with no data loss.

STEP 2: THE LANGUAGE TABLE EDITOR

Because string extraction and build take seconds, VBLM users
spend most of their time entering translations in the Language
Table Editor (LTE).  So we designed the LTE for ease and speed,
and made it almost completely customizable to user needs and
preferences.  Like VBLM itself, the LTE is sophisticated yet
simple to operate.

As pictured, the LTE displays a table of "language objects," each
with a name, value, and translation.  The name identifies the
object; the first object pictured, for example, is the second
string in the AboutBox OKButton Click event procedure.  The value
is the string itself, and the translation is whatever the user
types in (the translations shown were actually entered
automatically by a translation program, but more on that later).
Using the LTE is as simple as scrolling the table and typing
away.  But despite the operational simplicity, LTE features
include:

   Independent Value and Translation Fonts: To accommodate
   translation across character sets, the font used for
   translation input and display is set independently from the
   font used to display original strings.

   Context Information:  If the VB project is present on the
   host PC, the LTE can assist translation by displaying the
   line of source code in which the currently selected string is
   actually used (the VB project must be present because a VBLM
   project contains pointers to code but not the code itself).

   Advanced Search and Sort: You can search language tables by
   name, value, translation and even code context.  You can nest
   sort them on up to three keys, and use either ANSI or
   Windows' language-dependent precedence.

   WYSIWYG and NON-WYSIWYG:  You can print language tables that
   appear exactly as they appear on the screen.  You can also
   format hardcopy independently, to accommodate the different
   needs of working on-screen and on-paper.

   Export & Import: The LTE can export and import original and
   translated strings to and from ASCII text files, allowing you
   to build project-independent dictionaries.

   And more!


STEP 3: NEW LANGUAGE BUILD

There's not much to say about the build step, because it's as
simple as selecting a language table and a target directory and
clicking OK.  VBLM then reads your source files and rewrites them
in the target directory, swapping translations for original
strings in both code and form definitions.  When done, it can
start VB, load the new code and compile your localized version.
You're done!


The Professional Edition

Many developers will benefit from the additional capabilities of
the powerful Professional Edition of VB Language Manager.  VBLM
Pro can:

   Interface automatically with some 3rd party translation
   programs, and with a little help from you and your text
   editor, export to and import from all such programs.

   Width-check language tables to detect and report appearance
   and functionality problems caused by variations in string
   width across languages and fonts.

   Build multi-lingual versions of your VB applications that
   query the user at start up and run in their choice of
   language.

WORKING WITH THIRD PARTY PROGRAMS

There is a growing number of translation programs on the market,
and VBLM Pro can cooperate with all of them.

If a program can be commanded to translate the clipboard (such as
the AssistantTM Series from MicroTac), you can teach VBLM Pro to
control it directly.  Once taught, VBLM Pro can automatically
translate entire language tables with a single command.  It's
even smart enough to remove embedded ampersands before passing
strings for translation.

If a program can't translate the clipboard, you can use
VBLM Pro's enhanced exporting to create translatable document
versions of language tables.  After translation and minor cutting
and pasting with a text editor, VBLM Pro can import the
translations.

WIDTH CHECKING

Languages vary dramatically in the character count required to
communicate a given word, phrase, or sentence.  English is
relatively concise, so translated English text is usually longer
(the Win SDK estimates the increase at up to 200%).  When you
localize an application, therefore, you need to identify any
translated strings that overflow their containers and become
illegible.

The task is complex because character count is a lousy predictor
of the width of a string displayed in a proportional font;
length changes overestimate width changes in some languages,
underestimate it in others.  The only accurate way to detect
problems is either a time-consuming visual inspection, or API
calls to actually measure string width in the display font and
compare it to container width.

If the VB project is present on the host PC, you can click
VBLM Pro's Width Check button and it will perform this analysis
on an entire language table.  The resulting report details width
increases, overflows, possible overflows, and crowding, and can
be viewed or printed in summary or detail.

MULTI-LINGUAL APPLICATIONS

VBLM Pro's most sophisticated feature is its ability to build
runtime-switchable multi-lingual versions of your VB
applications.  These versions, RTSMLV's for short, learn from the
command line or query the user for a language choice, then run in
the language selected.  And although creating a high-performance
RTSMLV is a fairly daunting technical task, VBLM Pro makes it as
simple as checking a box and selecting more than one language
table at build time.

Exactly how does VBLM Pro create an RTSMLV?  To summarize a
complex process:

   VBLM Pro constructs a compact multi-language database
   containing selected language tables.

   It adds two files to the project, a form for language
   selection and a module with the RTString function.  This
   function takes one argument (a string index) and rapidly
   returns a string from the database.  The first time it is
   called it also initializes the database, optimizing for speed
   or memory (your choice) and using the form to prompt a
   language choice if not specified on the command line.

   It modifies code extensively as it rewrites the project in
   the target directory.  As it rewrites (continued)



forms, VBLM Pro eliminates translated property strings in the
definition section, adds a SetProperties procedure which calls
RTString for each translated property, and calls SetProperties
from the load event.  In all files, it replaces embedded string
literals with RTString calls.

VBLM Pro even handles translated string constants, which
obviously can't be switched at runtime.  How?  It comments out
the declarations, redeclares local constants as variables
initialized with RTString, and replaces all references to form,
module, and global constants with   you guessed it   calls to
RTString.

The result is a multi-language VB app that, after a brief pause
on startup, suffers almost no perceptible performance
degradation, even if your app has thousands of translated strings
and you choose to optimize the switching process for memory
instead of speed.  When you see one run, we guarantee it: you'll
be impressed!

Better yet, all runtime switching support is implemented in fully
documented VB code that you can examine and modify however you
see fit.  You can customize the language selection form, retrieve
the language selection from an INI file, or do whatever you want.


But enough complicated tech-talk, because if your Visual Basic
applications need to speak more than one language, you've got a
simple choice:

   Invest the time and resources to support multiple languages
   in a programming environment that, frankly, wasn't designed
   for it.  Then live with performance and maintenance
   headaches.

   Use VB Language Manager and add multi-language support to any
   VB app as quickly, easily, accurately, and efficiently as
   possible.  With no headaches.

Shouldn't you try VB Language Manager?  To order, call 1-800-241-
8727.



About WhippleWare

In 1991, MIT student Ben Whipple used VB to write software for
his doctoral research.  Ben was delighted with VB but frustrated
by the time it took to make apps run efficiently.  He created
VB CompressTM, the first and only VB optimization utility.
VB Compress has so far received both Reader's and Editor's Choice
Awards from the Visual Basic Programmer's JournalTM, has been
recommended by speakers at VBITSTM and Tech-EdTM conferences, and
is used daily by thousands of very satisfied customers.  With
VB Language Manager, Ben now re-applies both his VB code-
processing expertise and the  principles of doing business that
made VB Compress a hit:

     Our customers are not only always right, they give us our
     best ideas.  So when you call WhippleWare, you'll probably
     talk to the guy who writes the code.  And he'll listen to
     you.

     We maintain no inventory, continually test and improve our
     products, and fix all problems when reported.  We don't ship
     software with known bugs.  Our tech support line hardly ever
     rings, and we want to keep it that way.

     We trust our customers and unconditionally guarantee their
     satisfaction. None of this "unless you open the envelope" or
     "if it doesn't do what we say it does" nonsense.  If you
     aren't 100% satisfied for any reason at all, simply
     uninstall and return the product within 30 days and we'll
     refund everything except shipping and handling.  The only
     question we'll ask: Why weren't you satisfied?


WhippleWare
20 Cedar Street
Charlestown MA 02129-2502

Orders: 800-241-8727
Phone:  617 242 2511
Fax:    617 241 8496
CIS:    72321,362

Price (2/28/94)
VB Language Manager Standard Edition: $100
VB Language Manager Professional:     $150

S&H: $5 Priority Mail, International Air Mail
     $10 USA FedEx
     $25 Canada FedEx
     $30-35 Europe, Japan FedEx
     Other International FedEx: Ask for a quote
