Interspire Email Marketer has always supported translations, but version 8.6.0 adds full languages and internationalization support with user-selectable preferences. Users can now choose their preferred language, and administrators can assign one at account creation—making it easier to manage multilingual teams while ensuring consistent translation across core features and addons.
Deploying a Language Pack
If you would like to use a pre-translated language pack instead of creating your own, you can contact our Support to request a downloadable package. Once you have received the file, follow these steps to install it:
- Place the downloaded
.zip
file in the root directory of your Interspire Email Marketer installation. - Unzip the contents of the file. It will create new folders under
/language/
(and possibly/addons/
) that correspond to the new locale (e.g.,fr-FR
). - After extraction, verify that file and folder ownership matches the rest of your Interspire installation. This is important for proper permissions and web server access, especially in hosted or shared environments.
Once deployed, the new language will be available for users to select from the interface.
Setting Interface Language
Once a language has been deployed as described above, the interface language can be selected during user creation or updated at any time from the “My Account” page.
When creating a user, administrators can assign a default language directly from a dropdown menu:

Individual users can later update their language preference via their personal settings:

The system will automatically render the UI in the selected language, as long as a corresponding language pack is available.
Language Loading Behavior
Interspire uses a hierarchical fallback system to load language strings. When a string is requested, the system attempts to load it from the most specific to the most general location:
- For the core application, it checks:
- The user’s selected language directory (e.g.,
/language/fr-FR/
) - The default language directory (
/language/default/
) - A legacy flat file (
/language/language.php
)
- The user’s selected language directory (e.g.,
- For addons, it follows the same cascading pattern:
/addons/{addon}/language/{locale}/
/addons/{addon}/language/default/
/addons/{addon}/language/language.php
This ensures a consistent experience for users even if some translations are incomplete.
Language File Structure
Translations are stored in PHP files as constants prefixed with LNG_
. These files are grouped by locale within a defined folder structure.
For example, a properly structured addon might look like this:
/addons/your-addon/language/
├── default/
│ └── language.php
├── es-ES/
│ └── language.php
└── language.php (legacy fallback)
Similarly, the main application stores translations in:
/language/
├── default/
│ └── language.php
├── fr-FR/
│ └── language.php
Each file contains lines such as:
define('LNG_WelcomeMessage', 'Welcome back, %s');
This structure allows dynamic content using placeholders and supports clear grouping by function.
Translating Interspire into Another Language
To translate Interspire into another language, you’ll need to create a new locale directory and translate the contents of the default language files.
Here’s how to do it:
- Duplicate the
/language/default/
folder and rename it with the appropriate locale code (e.g.,/language/pt-BR/
for Brazilian Portuguese). - Translate each
.php
file, keeping the originaldefine('LNG_*')
keys intact. - Ensure each file is saved in UTF-8 encoding. You can use editors like Notepad++ or VS Code to ensure proper encoding
- In
language.php
, add a line like:define('LNG_LanguageName', 'Português (Brasil)');
For addons, follow a similar process by duplicating /addons/{addon}/language/default/
into /addons/{addon}/language/{locale}/
and translating the contents.
Translations are automatically picked up by the system without the need for manual loading, thanks to the centralized language loader.
Best Practices for Translation and Addon Developers
When developing or maintaining language files, keep the following in mind:
- Always include a default English (
default/
) translation. - Use descriptive, consistent keys with the
LNG_
prefix. - Group related strings by section or purpose.
- Document placeholders in comments for clarity.
- Avoid embedding raw HTML in language strings.
- Use
GetLang('Your_Key')
for all user-facing strings in PHP. - Use
%%LNG_Your_Key%%
in templates for automatic replacement.
Languages FAQ
How do I change the date format?
You can modify the date and time formats by editing the /admin/com/language/default/language.php
file. Look for lines around line 45 such as:
define('LNG_DateFormat', 'd M Y');
define('LNG_Quickstats_DateFormat', 'd-M-Y');
define('LNG_TimeFormat', 'F j Y, g:i a');
define('LNG_UserDateFormat', 'g:i a, d M Y');
define('LNG_Stats_TimeFormat', 'g:i a');
To switch to an ISO-style numeric format, use 'Y-m-d'
for results like 2025-04-30
.
Can I use a character set/encoding apart from UTF-8?
It is strongly recommended to use the default UTF-8 encoding when working with Interspire Email Marketer.
UTF-8 ensures full compatibility with special characters across all areas of the application, including:
- Proper display of special characters such as emojis in email subject lines across all major email clients.
- Accurate handling of international characters in subscriber data, custom fields, and form submissions.
- Reliable transmission of data through JavaScript-based interfaces and API calls, which expect UTF-8 encoding.
Using a different character encoding may result in inconsistent behavior, broken characters, or loss of functionality. In most cases, partial conversions to other encodings lead to display issues and make the system more difficult to manage.
For best results and full multilingual support, always keep your installation configured for UTF-8.
How do I customize an error page?
You can display contact form errors using the following code snippet:
<?php
$errors = urldecode($_GET['Errors']);
echo $errors;
?>