msei18n
Internationalization tool for Pascal programs by Martin Schreiber
- Active · last change 10-5-2026
- ★ 1 on Codeberg
README
MSEi18n
MSEi18n is a tool for generating multi-language resource modules for MSEgui projects (but also for Lazarus projects, and even for any Free Pascal program). It is also a translation editor, like Poedit.
The modules are libraries loaded at runtime as needed. All form data can be adapted to each language, not only texts, and the texts can be exported to a spreadsheet for translation by non-programmers.
Written by Martin Schreiber as part of MSEide+MSEgui (tools/i18n); this repository is a standalone version with fixes and additional demos.

Features
- Sources: MSEgui forms (
.mfm), Free Pascal resource strings (.rsj),resourcestringsections of Pascal units, C-syntax string resources. - Translation grid with one column per language, comments, "do not translate" flags and filters.
- CSV import and export.
- Make generates and compiles one library per language:
lib<name>_<lang>.soon Linux,<name>_<lang>.dllon Windows.
Building
Requires Free Pascal and the MSEgui sources.
make MSEDIR=/path/to/mseguiOn Windows, use make -f MakefileWin MSEDIR=C:\path\to\msegui. MSEi18n can also be built in MSEide by opening msei18n.prj and pressing F9.
Usage
- Settings > Configure MSEi18n: set
${MSEDIR}to the MSEgui directory, with a trailing slash, and${COMPILER}to the compiler (e.g.fpc). - New: create a translation project (
.trpsettings and.trddata files). - Edit: add the files to translate with their Kind, and one row per language with its directory (which must exist).
- Translate, then Save.
- Make: build the language libraries.
In the application, add msei18nutils to the uses clause and load a language with the library base name, or go back to the original language with an empty string:
loadlangunit('demo_de');
loadlangunit('');Resource strings are UTF-8 encoded: display them with utf8tostring(rs_goodbye).
Demos
The demos directory contains three projects with German and French translations: i18ndemo (from MSEgui), weather (the project of the tutorial) and button. The paths stored in the .trp files are absolute and must be adapted after cloning.
Documentation
License
GNU General Public License, version 2 or later. Copyright (c) 1999-2014 Martin Schreiber.

