Majorsilence Reporting includes internationalization support for multiple languages through .NET resource files (.resx).
The following languages are currently supported:
- English (en-US) - Default/Base language
- Russian (ru-RU) - Full translation
- French (fr) - Partial translation
- Spanish (es) - NEW! Full translation with 453+ translated strings
- Open the Report Designer
- Navigate to Tools → Options
- In the Desktop tab, select your preferred language from the Language dropdown
- Restart the application for changes to take effect
The language is determined by the current thread's CurrentCulture and CurrentUICulture. You can set it in your application:
using System.Globalization;
using System.Threading;
// Set Spanish as the UI language
var culture = new CultureInfo("es");
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;For ASP.NET applications:
using System.Globalization;
// In your Startup.cs or Program.cs
var supportedCultures = new[] { "en-US", "ru-RU", "fr", "es" };
var localizationOptions = new RequestLocalizationOptions()
.SetDefaultCulture("en-US")
.AddSupportedCultures(supportedCultures)
.AddSupportedUICultures(supportedCultures);
app.UseRequestLocalization(localizationOptions);The es translation includes:
- ✅ Core Engine (RdlEngine) - Error messages, data processing strings
- ✅ Report Viewer (RdlViewer) - UI elements, viewer controls
- ✅ Report Designer (RdlDesign) - All designer dialogs and controls
- ✅ Map Editor (RdlMapFile) - Map file editor interface
- ✅ Report Reader (RdlReader) - Reader application UI
Total: 453+ translated strings across 79 resource files
Common translations include:
- UI buttons and menus (Open, Save, Close, Print, etc.)
- Error messages and warnings
- Report elements (Table, Chart, Matrix, Subreport, etc.)
- Data operations (Grouping, Sorting, Filtering, etc.)
- Formatting options (Font, Style, Border, Background, etc.)
To add support for a new language:
-
Identify the language code (e.g.,
de-DEfor German,pt-BRfor Portuguese-Brazil) -
Copy existing resource files: For each base
.resxfile, create a new file with your language code:Strings.resx → Strings.[language-code].resx -
Translate strings: Open the
.resxfiles and translate the<value>elements while keeping the<data name>attributes unchanged. -
Test your translation:
- Build the solution
- Set the culture in your application
- Verify translations appear correctly in the UI
-
Submit a Pull Request: Share your translation with the community!
Resource files are located in the following directories:
RdlEngine/Resources/- Core engine stringsRdlViewer/Resources/- Viewer component stringsRdlDesign/Resources/- Designer main stringsRdlDesign/*.resx- Individual control/dialog translationsRdlMapFile/Resources/- Map editor stringsRdlReader/Resources/- Reader application stringsRdlDesktop/Resources/- Desktop application strings
When contributing translations:
- Be consistent with terminology across all resource files
- Use appropriate locale conventions (date formats, number formats, etc.)
- Keep technical terms in English when appropriate (e.g., SQL, HTML, XML)
- Preserve placeholders like
{0},{1}in format strings - Test thoroughly especially with longer translations that might affect UI layout
- Consider cultural context - use translations appropriate for the target region
- Some UI elements may require application restart to display translated text
- Very long translations may cause layout issues in some dialogs
- Not all third-party controls support full internationalization
We welcome translations for new languages! Please see our Contributing Guide for more information.
To contribute a translation:
- Fork the repository
- Create a new branch for your translation
- Add your translated resource files
- Test the translation
- Submit a pull request with a description of your changes
If you have questions about internationalization or need help with translations: