Translating the Plugin (Localisation)

July 3, 2026

If you run a non-English store, you’ll want the coming-soon block in your language. This article is an honest account of what can be translated today, what can’t, and the practical way to get a translated front end right now.

Short version: the plugin is not fully translation-ready yet. The visible front-end wording can be changed with a small script (below); full .po/.mo translation is a planned enhancement.

Current state

WordPress translation relies on three things: strings wrapped in translation functions (__() etc.), a text domain, and the plugin loading the translation files. Here’s where this plugin stands:

  • Product edit fields (the “Mark as Coming Soon”, “Arrival Date”, “Offer Description”, etc. labels) are wrapped with the sscs-coming-soon text domain.
  • However, the plugin does not call load_plugin_textdomain() and ships no languages/ folder, so even those wrapped strings won’t load a translation file on their own.
  • The front-end strings a shopper sees — the LET ME IN button, the Enter your email address prompt, the Days / Hours / Mins / Secs countdown labels, and the post-signup message — are hardcoded and not translatable at all.

Net effect: dropping a .mo file in won’t translate the customer-facing block.

The practical way to translate the front end today

Change the visible wording with a small JavaScript snippet — the same technique described in Customising the Signup Form Text. Set the strings to your language:

document.addEventListener('DOMContentLoaded', function () {
    var btn = document.querySelector('#sscs-signup-form button[type="submit"]');
    if (btn) { btn.textContent = 'LAISSEZ-MOI ENTRER'; }          // e.g. French
    var email = document.querySelector('#sscs-email');
    if (email) { email.setAttribute('placeholder', 'Votre adresse e-mail'); }
    var prompt = document.querySelector('#sscs-enter-email');
    if (prompt) { prompt.textContent = 'Inscrivez-vous pour un accès anticipé.'; }
    var labels = { days: 'Jours', hours: 'Heures', minutes: 'Min', seconds: 'Sec' };
    Object.keys(labels).forEach(function (id) {
        var el = document.querySelector('#' + id + ' small');
        if (el) { el.textContent = labels[id]; }
    });
});

For a multilingual site (WPML / Polylang), detect the current language (e.g. from the <html lang> attribute or a body class your multilingual plugin adds) and choose the right strings inside that snippet.

What about Loco Translate / string-replacement plugins?

  • Tools like Loco Translate can translate the wrapped admin strings if a loader is present — but because this plugin doesn’t call load_plugin_textdomain(), those translations won’t load reliably yet.
  • Front-end strings aren’t wrapped at all, so string-translation tools can’t reach them regardless. The JavaScript approach above is the dependable route for now.

Planned enhancement

Proper internationalisation — wrapping the front-end strings in translation functions, passing them to the script via wp_localize_script(), adding load_plugin_textdomain() and a languages/ folder — is tracked as an enhancement (see the Developer Hooks & Reference guide, “Known limitations” and the contents index). Once done, standard .po/.mo workflows and Loco Translate will work end to end.

Related

  • Customising the Signup Form Text — the snippet technique in detail.
  • Developer Hooks & Reference — the i18n gap and other planned enhancements.
×
1/1