Translating the Plugin (Localisation)
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/.motranslation is a planned enhancement.
Table of Contents
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-soontext domain. - However, the plugin does not call
load_plugin_textdomain()and ships nolanguages/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.
- Customising the Signup Form Text — the snippet technique in detail.
- Developer Hooks & Reference — the i18n gap and other planned enhancements.