One of the most powerful capabilities of the TsiLang Components Suite is its flexibility in how you store and manage translation data. For developers building multilingual applications with Delphi or C++Builder, understanding when and how to use external translation files — specifically .SIL
and .SIB
— can significantly streamline your localization process and enhance team collaboration.
In this post, we’ll explore how to take full advantage of TsiLang’s external file workflow, comparing the two file types, detailing runtime loading techniques, and sharing best practices for real-world projects.
Why Use External Translation Files?
By default, TsiLang allows you to store translations internally within your application’s .DFM
files. This is convenient for simple or lightweight apps. However, for production-grade or frequently updated applications, externalizing your translations into separate files offers key advantages:
-
No recompilation required for translation updates
-
Cleaner source code and smaller DFM files
-
Easier collaboration with external translators
-
Support for version control and localization workflows
-
Dynamic runtime language updates
SIL vs. SIB: What's the Difference?
TsiLang supports two external file formats:
Feature
.SIL
(Text-based)
.SIB
(Binary)
Format
Human-readable INI format
Compiled binary format
Editable by
Any text editor, SIL Editor
SIL Editor only
Ideal for
Version control, translators
Runtime performance, integrity
Loading Speed
Slower
Very fast
Data Integrity Checks
Basic
Strong

Best practice:
Use .SIL
files during development to ease collaboration and versioning. Before release, convert them to .SIB
for better performance and stability.
Exporting and Importing Translations
To begin using external files, use TsiLang Expert within your RAD Studio, Delphi or C++Builder IDE:
-
Exporting:
Tools > TsiLang Expert > File > Save/Load Translations > Save Project/Form
-
Importing:
Tools > TsiLang Expert > File > Save/Load Translations > Load Project/Form
You can also merge files to preserve existing translations while incorporating updates.
Runtime Loading Techniques
We recommend the following way to load translations from the external files at runtime:
// be sure to adjust file path to the actual file!
siLangDispatcher1.FileName := 'MyAppTranslations.sil';
// or for binary files
// siLangDispatcher1.FileName := 'MyAppTranslations.sib';
siLangDispatcher1.LoadAllFromFile(siLangDispatcher1.FileName);
At the very first line we set-up the FileName
property of the TsiLangDispatcher
component. This will ensure that all forms created later at run-time will load translations from this file.
The second line loads translations to all currently created application forms.
This approach works seamlessly with TsiLangDispatcher
, which handles synchronized language switching across all forms.
Best Practices for External File Workflows
-
Store files in a relative folder
(e.g., /lang/) and verify paths on app startup.
-
Localize without locking the UI
use SIB files for super-fast loading of the translations.
-
Use the SIL Editor
to edit .SIL and .SIB files easily. May be freely redistributed to translators and end-users!
Our software products—Resource Builder, HelloApp Studio, SIL Editor, and Dictionary Manager—are examples of applications that follow the described workflow.
Real-World Benefits
-
A distributed team can work in parallel: developers build features, translators update localization files.
-
Customers or regional teams can modify translations post-release without source code access.
-
Enterprises benefit from continuous localization with .SIL in Git, and .SIB in release pipelines.
Final Thoughts
If you’re serious about delivering high-quality multilingual software, learning how to use external translation files in TsiLang Components Suite is essential. It empowers your team with agility, control, and performance — whether you’re localizing internal tools or shipping global apps.