There is a wide variation in the length of words and phrases that convey the same meaning in different languages; German, for example, can take 2 to 3 times as much space as English. This variation in the amount of space needed to present text poses a challenge to high quality localization, because a single visible interface used across multiple languages will look crowded in some, vacant in others. A single visual interface for a multilingual application is apt to look mediocre in all of them.
While VBLM's width checking capabilities will identify the problems caused by different length strings, its dimensioning capabilities help you solve them. Although VBLM can't automatically resize the interface to fit different languages (wouldn't that be nice!), it does help you easily define, maintain, and apply different sets of interface dimensions. With VBLM, your app can look good no matter what language it's speaking.
Because VBLM can create two different kinds of localized versions -- static single language versions and runtime switched multilingual versions -- it also offers two corresponding types of dimensioning capabilities. For static single language versions, VBLM applies a set of interface dimensions as it creates the localized version. For runtime switched versions, VBLM adds runtime resizing code to each file with a visible interface and stores dimension data along with the strings in the language database, creating a localized version that resizes itself accordingly whenever the language changes.
Static Dimensioning (aka Extract & Apply Dimensions)
Let's say that you have just commanded VBLM to build a single language German version of you app and load it into VB. Using a width check report as a reference while you view the forms, it quickly becomes clear that something has to be done about the captions and text that are now wider than the controls that contain them. The bad news is that you have to adjust them yourself, but the good news is that you only have to do this once, no matter how many times you rebuild the German version. That's because VBLM's Extract & Apply Dimensions features can extract dimensional properties from a VB project, store them independently in a disk file, and reapply them later:
When you click Extract Dimensions and select a VB project or group file, VBLM scans the definition section of each control container in the project and records the values of these properties in a VBLM static dimension data (*.LMD) file.
When you click Apply Dimensions and select a VB project and an LMD file, VBLM rewrites the definition section of each form in the project using the dimensional property values stored in the LMD file.
If the Extract / Apply Dimensions build option is checked and a previous version of a localized project exists in the target directory, VBLM automatically extracts the dimensions before doing a build, and applies them during the build. Any work you have done to adjust the interface is preserved intact.
For details, see Dimension Extract & Apply Options and Dimension Data File Format.
Runtime Dimensioning Switching
New as of V6, VBLM's runtime dimensioning switching (RDS) features allow you to build multilingual versions of your VB applications that dynamically resize their interface when a language is selected, and thus look well-tailored at all times in all languages.
Creating an RDS app involves five straightforward steps:
1. Decide which languages need their own sets of interface dimensions (dimsets). This is not an all or nothing decision; you can implement RDS for any or all of the languages in a multilingual app, because the dimension-switching code doesn't execute when a language with no corresponding dimset is selected. To make the decision, use VBLM to build an RSV with all languages and step through them observing the "fit" of the strings.
2. Create the dimset(s) required. You'll get the best results by resizing the interface manually to fit each language, but VBLM can also do it for you if you want by stepping the interface dimensions up or down by a fixed percentage. See Creating Dimension Data Files for a complete explanation.
3. Assign the dimsets you've created to the corresponding languages. See Assigning Dimsets for details.
4. Configure the runtime dimension switching code options as desired. These options are set on the Runtime Dim Switching Options page of the Build window, and discussed in detail in the RDS Coding topic.
5. Check the Include Dimension Switching option on the Build Now page before commanding the build.
That's all there is to it.