String Exclusion List (SXL) Files

String exclusion list files, new as of VBLM V6, provide yet another way to prevent VBLM from extracting strings from your source code that should not be translated. Whereas the exclusion rules are good for excluding strings systematically (eg, no strings assigned to a variable named SQLString, and no strings passed as arguments to GetAllSettings()), SXL files are good for excluding them arbitrarily. If, while scrolling through the LTE, you decide that you don't want this string or that string, then exclusion via list file is one way to get rid of it (there are others: see comparing arbitrary exclusion methods).

An SXL file is simply a structured list of strings and their context (ie, the source code that contains them, and their position in the source code) created and maintained by VBLM. SXL files reside in the same directory as the parent VB project and have the same name as the project with an extension of .SXL. They are stored in either binary or text format, depending on your SXL settings.

Marking the Strings

The first step in using an SXL file is to tell VBLM which currently extracted strings you would like excluded in this way. There are two ways to do this; one using the LTE, the other using the code window. Both require that the LTE be open with a language table loaded (it doesn't matter which one, because exclusions apply to all of them).

The LTE method is to mark the strings one at a time, using either the edit menu or the popup menu. To use the edit menu, first select the string you want excluded by clicking on it, then select Edit/Exclude String via List File (shortcut = Ctrl+L). To use the popup menu, right-click the string and make the same selection. The popup menu is slightly faster because you don't need to pre-select the string. In both cases, the menus work like a toggle, ie if the string is already marked for exclusion, selecting it again unmarks it. Note also that if you mark a multi-instance string in the LTE, it applies to all instances; if you want to mark some but not all instances of the string, open the multi-instance editor and mark or unmark individual instances.

The code window technique allows you to mark multiple strings simultaneously, as long as they are contiguous. To use it, in the code window highlight the code containing the strings, then right-click and select Exclude/Mark for Exclusion in List File on the popup menu.

Note: Although you can always highlight only part of a line (eg, one string in a line with more than one string), the code window technique can't resolve anything finer than a single line. This means that selecting any part of a line will cause VBLM to exclude ALL strings on the line. The LTE method does not have this limitation -- when a string is excluded with the LTE method, only the string selected will be marked for exclusion.

Creating/Updating the File

Whenever you close the LTE, VBLM checks to see if you have marked any strings for exclusion via list file. If so, it then checks to see if a list file exists. If so, it then checks to see if the file needs to be verified and updated. (SXL files store project info that can easily become obsolete).

Because you have the choice of not applying an SXL file when extracting strings, it is possible for strings to be extracted that have in fact already been listed in the file. For this reason, once the file has been verified and before adding newly marked strings to it, VBLM checks to see if any or all of the newly marked strings are already listed. If all are, VBLM will leave the file unchanged and present this dialog


If some or all of the newly marked strings are not already listed, though, VBLM will add them, close the file, and present a different dialog:


Applying the File

When commanded to extract strings, VBLM first checks for the existence of an SXL file. If one is found, VBLM either queries whether you want to use it during string extraction or just uses it, depending on your setting on the SXL options page.

Before using the file, VBLM checks whether or not it needs verification and perhaps updating. If so, again VBLM queries whether you want to verify and update, or just does so without asking, depending on your setting for Verify and Update without Asking on the SXL options page.

When VBLM applies the file during string extraction, it does so either strictly or loosely, depending on the Apply SXL Files Strictly setting accessed (yes, you guessed it) on the SXL options page. Under strict application, strings are excluded only when everything about the current instance matches what's recorded in the file, including line numbers. When applied loosely, the current string instance will be excluded if the strings match, the lines of code match, and the string is the same instance in the line of code. You'll find more info about this in the SXL options. topic.

The application and effects of the SXL file are documented in two places. The extraction results describe whether or not an SXL file was found, whether or not it was applied, and if so, how many strings were excluded by it. The individual instances excluded are documented in the extraction log.