WordPress quick start
The plugin copies the published translation files to your own site (wp-content/uploads/resilientlang/) and the visitor's browser loads them from your domain first. If our servers or the CDN are unreachable, the copy on your site keeps serving.
Status. The plugin core exists in the repository (
plugins/wordpress, version 0.1.0, development). It is not published to the WordPress.org directory. Language URLs and hreflang come from a companion SEO module that is built separately; the core plugin alone does not create them.
Requirements#
- WordPress 5.9 or newer and PHP 7.4 or newer (from the plugin's
readme.txt). - A site key and the public signing key for your site. Both are public values. You also need the address of your bundle origin.
Steps#
- Upload the plugin folder to
/wp-content/plugins/(or install it from the Plugins screen once it is distributed) and activate it. - Open Settings > ResilientLang.
- Enter your site key (
rl_site_live_...), the public key and the bundle address. Tick the permission box that allows downloads from that address. - Press Sync now. The plugin downloads the manifest, checks its Ed25519 signature against your public key, then downloads each language file and checks its SHA-256.
- Place the switcher: a widget, the block, the shortcode
[resilientlang_switcher], or a menu item. It is plain HTML links and needs no JavaScript. - Choose how often to sync (hourly, twice a day or daily). A failed download never removes the copy you already have.
Things that can stop it working#
- The theme must call
wp_head(). The loader tag is added there, so a theme without it gets no loader. - Language prefix routing (in the SEO module) uses rewrite rules, which WordPress does not flush automatically after a change: flush them (for example by saving Settings > Permalinks).
- WordPress.com: installing plugins needs a paid plan (Personal, Premium, Business or Commerce); older accounts may differ (verify). Free sites limit tags and cannot use script tags without a plugin-enabled plan.
- WooCommerce Cart and Checkout are React blocks. Whether a browser-side translator reaches their text is not documented by WooCommerce: verify on your store.
- hreflang with WPML is inserted automatically in the head; with Polylang it is verify.
- WordPress.org directory: the plugin bundles the loader because the directory's rules do not allow offloading unrelated scripts to third-party CDNs; a service the plugin exists for may be used if the readme documents it with terms, privacy links and clear consent. The exact wording of the guidelines is verify before any submission.
What gets sent where#
- Syncing is an ordinary HTTPS request for public static files. It discloses your server's IP address and the plugin's user agent to the bundle host. Your secret API key, your content and visitor data are not sent.
- The plugin ships its own copy of the loader script; it does not load remote JavaScript.
- Your secret API key, if you enter one for publishing features, stays on the server and is never printed in a page.
Developer hooks#
resilientlang_languages, resilientlang_current_language, resilientlang_language_urls, resilientlang_manifest, resilientlang_after_sync.
Uninstalling#
Deleting the plugin keeps the downloaded translation files unless you tick "delete on uninstall". The script that applies them is no longer added, so pages show the source language until you add the script snippet.
If something does not work, see Troubleshooting.