- Ease of use. Put a TDKLanguageController on the form, save the project (this will automatically create a
language source file) and add a couple of lines to program code: you get a functional multilanguage application!
See the included examples to learn the details.
- Full integration with Delphi VCL component library. A possibility of automated change tracking in structure or
properties of forms, frames, data modules etc., and owned components.
- Complete Unicode support (on a robust basement of Tnt Delphi Unicode Controls).
- Storing property values for String (AnsiString), ShortString and WideString properties.
Storing property values of class TStrings, TWideStrings, TCollection item properties and
property values of TPersistent descendants. Only the properties recognized by Delphi streaming mechanism as
stored are processed to avoid storing excessive data.
- A possibility for defining a set of string constants for a project. A constant is referred to by its name (binary
name search is implemented). See the Constants Example.
- Storing translations in plain-text (ANSI or Unicode) files, which can be edited with any text editor. However,
there's a much more convenient tool available for creating the translations,
DKLang Translation
Editor.
- Synchronous language switching in all displayed forms by changing the current language of global
TDKLanguageManager instance.
- Events fired in a non-visual component just before and after the language change.
- A possibility for ignoring any properties, as well as a list of forcibly stored properties recognized as not
stored. Both lists are formed using name masks (eg, *.Font.Name).
- Automated saving the localization data for the whole project into a so-called language source file (a file having
.dklang extension).
- A possibility of using the localization mechanism when no visual forms instantiated (for localizing constants
only). A possibility of building the project with DKLang runtime package.
- A thread-safe design allowing for proper functioning in multithreaded environment. This allows non-blocking data
read access with a number of threads at once.
Read Technology And Background section to learn the details.