Blithe is my attempt to take a simple idea that has been around for years and make it easier to implement. The simple idea: store text used by an application in a separate file so that it can be translated into another language without recompiling the source. In Blithe, the file that contains the text is called a dictionary. Blithe dictionaries are centered on a language (examples: English, Chinese, Sanscrit) for an application (examples: word processor, sound editing tool). Each dictionary contains the language name in it's native tongue, a language ID, and a group of entries. An entry is composed of the text and an entry ID. Language IDs and entry IDs are longs that act as unique identifiers. When the text is requested by an application, it is refered to by language ID and entry ID. For more information about dictionaries, see the Dictionary Files Documentation.
A set of common dictionaries are included with Blithe. These contain commonly used words and phrases, such as Open or Quit. These dictionaries are checked whenever a language ID/entry ID are requested, so developers may use them without doing any additional work. See Common Dictionary Entry IDs for a list of entries in the common dictionaries.
Note to people interested in creating dictionaries:
Blithe Edit, a dictionary editor, has been provided with this installation. Please see the Blithe
Edit Documentation to learn how to create and edit new dictionaries.
Of course, it is not enough to just have the strings in a separate file. You need a way to retreive the strings and other information from the dictionary. A shared library and a static library have been included for this purpose. It is strongly recommended that you do not use the shared library directly. Please use the static library. The static library will utilize the shared library if it's available and provides glue if it is not. It also provides a BlitheDictionary class which encapsulates the Blithe C API. See the Blithe SDK for more information.
Blithe not only simplifies the work that you would have to do to support a separate file of text strings, but also enables your users to change languages without restarting your application. For an example of this behavior, launch the Hello World sample in Blithe Installation/Blithe SDK/Sample App and choose Blithe from the Preferences submenu in the Be menu. When the Blithe Settings dialog appears, make sure that the "Notify Blithe-aware applications" check box is on and choose Latina from the Language pop-up menu. The text in the Hello World application should change. See Blithe Settings for more information about Blithe preferences.
The Blithe096bPPCR4.zip is freely distributable in it's unmodified form. If your application supports Blith, I request that you mention this in your about box, documentation, or whatever is most convient. Blithe even has an API call that will provide you with a small BBitmap of Blithe's logo, if you desire. Developers who use Blithe may include in their application installation the Blithe shared library and the Blithe common dictionaries in their unmodified form.
Copyright of Blithe source, libraries, Blithe Edit, documentation, and the sample application is property of Bastion Products. If you make any bug fixes or other modifications to the source, I request that you send them to deacent@home.com for incorporation into future versions of Blithe. You may not distribute modified versions of the source without written permission of Bastion Products.
All dictionaries made with Blithe Edit are the property of their respective creator(s).
Jon Watte for the Swedish common dictionary, pointing out omissions and errors in the dictionaries, and for suggesting and demonstrating weak linking with the static library which allows your application to operate without blithe.so.
Marcus Lundblad for suggesting that Blithe use ISO-639 for language IDs.
John Ashmun for a lot of feedback and for getting the Dutch dictionary rolling.
Rudolph Smit for writing the Dutch common dictionary.
Marco Nelissen for checking the technological language in the Dutch common dictionary.
Michael Wulff Nielsen for writing the Danish common dictionary.