Home Page Up FAQs Registrations What's New? Audio Tools Components Disk Utilities Image Utilities Mapping Tools Net Tools Satellite Tools Runtimes Translations Custom programs Beta versions NTP Windows-10 notes


Localisation - my software in your language!

For some time now I have been aware that many people using my software are not native English speakers and that, whilst they understand English well enough to operate the software, there may be some of their fellow countrymen who do not.  Consequently, I am now making it possible to for you to localise my programs into your own language, with free and relatively easy-to-use tools.  Details of how to do this follow.


You will first need a program of mine which is ready to be localised - that is a program which can have the words it uses translated into your own language.  Initially, I will supply the program and a "native" i.e. English language file, and a language file in your own language e.g. Italian, French, German or Spanish etc.  You then need to translate the terms in the language file from English to your own language.  These terms will the text used to label the graphical parts of the program - such as buttons, captions and menu items - and the text within the program itself such as the text for error messages and warnings.

To handle the language files, there is a tool called the Language Manager, which you can download here.  You can even create new language files from scratch with the Language Manager - so there is no need to wait for me to create a new language file.


  1. Obtain the program and language files from me.
  2. Obtain the Language Manager
  3. Of course, the Language Manager itself is a program you can customise in your own language.
  4. Load the native language file into the Language Manager.  The native language and the other available languages should be displayed.
  5. Add your language if necessary.  To start with, the words for your language will appear in English.
  6. The list of items displayed will include elements of the graphical elements displayed on the screen (called Forms) and the body text of the program (called Units).  You select which you want to work on in a tree view, and I suggest you start with the main form of the program, as it may be easier to relate which part of the form you are working on.
  7. When working with the strings in the body of the program, it is less obvious which string relates to which function, so you may need to e-mail me and ask.
  8. Try translating a few words in the list to your own language, and running the program in your language.  The translated words should show in place of the English text.
  9. You don't need to translate all the text at once.  Work on a small part and then save the language file from the Language Manager.
  10. To test, select your own language from the program's Languages menu.
  11. At this point, it is probably a good idea to send the language file back to me so that I can check it works correctly with my copy of the program.
  12. Unless you are the only person translating the software, you should probably pick up the most recent language files before adding words to a translation.
  13. As you build confidence and experience, translate more words as time allows, and keep feeding the results back to me.
  14. There may be some issues with changing languages while the program is running.  I need to either resolve these or to recommend that the program be restarted after a language change.
  15. Once we are satisfied, I can add your language file to those available for the particular program.
  16. If you have only translated the Forms section, now is the time to look at the Units section which contains the Resource Strings.  Please see the notes below about the special considerations when translating resource strings.


Here are some screen shots from the process.

This is part of step 6 described above.  You have opened the "native" language file for the AVHRR Manager.  There is a drop-down list of container elements (Forms and Units) which contain strings which can be translated.  In this particular case, there are two forms, named FormAVHRRmanager and FormAVHRRsegmentsReport.  The "81" and "7" show the number of elements which could be translated in each form.

You choose the FormAVHRRsegmentsReport form (as it looks easier because it has fewer elements!), and a list of elements in that form is shown in scrollable list like this:

You can see here the efforts of three translators, changing the text for their various languages.  For example, the caption of the button which closes the form (the property named "ButtonClose.Caption") has been translated as Esci (Italian), Quitter (French) and Afsluiten (Dutch).  If a string has not yet been translated, it shows with a little blue mark in the bottom-right corner, such as "Perfect passes".  You can use one of the Language Manager functions to hide text which has already been translated should you wish.

Resource Strings

So with the process suggested above, you will first modify the visible elements of the program - the text on the buttons etc. which you see displayed when you first start the program.  Of course, during the operation of the program, text may be generated (a list of satellite passes, for example), or the caption for a button may change (for example, a Start/Stop button).  The text which is available for translation will be stored in "resource-strings" in the program, and these can be seen in the Units section through the Language Manager program.  After modifying the visible elements in the Forms section, you can e-mail me the resulting new foreign language file (I don't need the .LEO file), and I can check to see if any of the buttons need to be larger to accommodate the new text.  If necessary, I will send you back a new version of the program.  You can then translate the resource-strings into your own language.

Now you can use the drop-down list to select one of the Units to translate.  These units contain the resource strings.  

Here I have selected the AVHRRmanagerForm, which contains 68 strings to translate.

The list of the resource strings (constants) is shown, just as it was when translating the strings in a form, and the translation process is the same.  However, you will need to take special care when translating any embedded format strings as I mention below.


Hints and Tips

I suggest you just do a little work and see how it goes.  Here are some hints and tips.


  • Remember that you can set an option in the Language Manager to show only untranslated items (Language, Show, Untranslated).  This makes it easier to see what is still left to do.

Graphical elements

  • Please try and keep the length of the translated strings similar to the original strings.  I may be able to enlarge buttons etc. a little, but not perhaps a lot.  If any of the text obviously doesn't fit, please point this out to me and I will see what I can do.
  • With Group-Box captions, I always have a space character before and after the text, as I think that this looks neater and easier to read.  If you forget to do this, I will try and remember to update your translation accordingly.
  • Please don't alter the position or size of graphical elements.  If you need something made larger, first try and reduce the text, then ask me to change the size.

Accelerator Keys

  • Some form caption elements, in particular menu items, will have an ampersand (&) character embedded in the text.  This ampersand adds the underscore for the character it precedes, so that the string "&File" would be displayed as File.
  • These are the "accelerator" characters for menus etc.  For example, in the English version of the AVHRR Manager, I could press Alt-F-X to exit the program, Alt-F-S to start monitoring etc.  
  • If you translate without the ampersand, then this functionality would be lost, but nothing else. 
  • Of course, I try to obey the conventions of English-language Windows (where Alt-F-X is common), but sometimes I have to make up my own inventions.  Alt-F would always be the File menu, so each letter must be unique.  For example, I could not have File Save and File Start both with Alt-F-S. If I had both of those menu items, it would probably be Alt-F-S for file save, and Alt-F-T for File, starT.
  • Please try and keep the same conventions as your local version of Windows.  I appreciate this may be difficult (for example, Office 2000 uses File, Exit, where as Internet Explorer uses File, Close).
  • If you have never used the Alt key to access the menu functions, all this may be completely new to you!

Embedded format strings

You will find one or two resource strings where there is an embedded format string, for example in the AVHRR Manager:

"Last file processed on: "yyyy-mmm-dd "at" hh:nn "UTC"

%s Kepler data is %.1f days old

Writing %d minute segment

So anything with a percent sign (%) or embedded quotes (") needs a little extra care.  Do ask me if you are not sure, as having incorrect format string could cause the program to produce an error message.

Strings with spaces

I sometimes code a long message as a sequence of strings, with a space at the end of each string to ensure that the words do not flow into each other when the strings are combined.  As the space does not show on the English text, you may missing it when translating.  I will try and make this more obvious in the future, and put the spaces at the start of the string.  This sometimes happens when I have used number-to-string conversion functions so that my program reads:

    text := 'This happens every ' + IntToStr (days) + ' days.';

In this case, both the the space after "every" and the space before "days" matters.  You may discover these only when you run the program and look at the output!

Program restarts

Although the programs should have the ability to switch languages "on-the-fly", this may also require programming effort from me, so for the moment I suggest that after switching languages you restart the program.

Localised programs

Programs which already include multi-language support include the AVHRR Manager, GeoSatSignal, the HRPT Reader, the Metop Manager, the MSG Data Manager, and SatSignal.  You are most welcome to add your language to any of these programs, but please tell me first so that any duplication of effort can be avoided.


Program-specific Translation Notes

Metop Manager

  • The strings for LabelNearestChunk.Caption and SLoadChunk should be the same.

MSG Data Manager

  • The message names on the Messages tab headers ("Admin Massages" etc.) are currently hard coded.  


Q: The Open button doesn't work in my language, but the English and German are OK.
A: In the Units, MainForm, there is a string SOpen which in English is "Open...".   Once this SOpen string is translated, and matches the translated Forms, FormMain, ButtonOpenX.Caption string, the Open button problem should be solved.


How to get your favourite software localised

  • If the program has already been localised, simply download the Language Manager and add your translation.  Check that no-one else is already doing a translation (ask on the SatSignal self-help group).  Once that is done, please send the language file back to me so that I can add it to those available.
  • If the program is in the process of being localised, please wait until one language is done (so that we know things are working correctly), and then you can add your own language.

Copyright © David Taylor, Edinburgh   Last modified: 2019 Jul 26 at 07:38