

Dashboard showing translation statistics across languages
Gloty translates your WordPress site with AI machine translation, then stores every translation in your own database and serves it from there. Rendering a translated page never calls a remote service — page delivery stays local and deterministic even if the translation service is slow or unreachable.
Serving those pages is built to be cheap. Gloty compiles your translations into a PHP cache file that your server’s OPcache holds in shared memory, so once it is warm a translated page view costs no database queries for translation at all, and the translations take almost no memory in the request. That is aimed squarely at ordinary shared hosting with no object cache, which is where a translation plugin normally slows a site down most. Where the technique is unavailable, Gloty serves from the database instead and the page is still correct.
The picker offers 38 languages, each with the right hreflang code emitted for it. That list is deliberately shorter than it could be: it is the set both AI engines’ vendors say their models support, rather than every language code in existence. A translation you cannot judge the quality of is worth less than one you can, so Gloty offers the ones where the engines are known to be strong, and every translation it produces is editable by hand.
Producing a translation does require an external service, because machine translation is not something WordPress can do locally. Gloty sends the text that needs translating to the hosted Gloty translator service, which translates it and returns the result to your site in the background. The results land in your WordPress database, are editable by hand, and keep serving with no further external calls.
Key Features:
How it works:
Translation requires an external machine-translation service. See External services below for exactly what is sent and to whom.
Documentation: https://wp-shelf.com/gloty/docs/
Gloty cannot produce translations without an external machine-translation service, because machine translation is not something WordPress can do locally. This section describes every external request the plugin makes, what it sends, and when.
Nothing is sent anywhere until you have connected your site and translation has been triggered (by a scan, a Translate action, or scheduled background dispatch). Serving an already-translated page makes no external request at all.
1. The Gloty translator service
All translation work is performed by the hosted Gloty translator service. The plugin does not contact machine-translation providers directly; it sends work to the Gloty service, which selects and calls the translation engine on your behalf and delivers the results back to your site.
https://gloty-api.wp-shelf.com (overridable by defining the GLOTY_SERVICE_URL constant, for example to point at a self-hosted instance of the service).The Gloty service in turn passes your text to the AI translation engine it selects for the batch — OpenAI or Google Gemini. Their terms apply to that processing:
2. WordPress.org translation packs
When you enable a language, Gloty asks WordPress.org to install the official WordPress and plugin language packs for that locale, using WordPress core’s own updater. This is the same request WordPress itself makes and sends no site content.
Gloty does not send analytics, telemetry, or usage tracking anywhere.
Whether Gloty may compile your translations into a PHP cache file for OPcache to hold in memory. The value passed in is Gloty’s own verdict on whether the server can benefit — return false to switch the feature off entirely, in which case translations are served from the object cache, a transient, or the database, exactly as in earlier versions.
add_filter( 'gloty_compiled_map_enabled', '__return_false' );
Returning true forces it on where Gloty could not confirm OPcache is active — useful when opcache.restrict_api hides the OPcache status from plugin code. Do not force it on where OPcache is genuinely off: every request would then compile the cache file from source, which is slower than the database read it replaces.
Defining GLOTY_DISABLE_COMPILED_MAP as true in wp-config.php disables it before any filter can run, and Gloty honours WordPress’s own DISALLOW_FILE_MODS constant without any configuration.
The largest cache file Gloty will write, in bytes. Default 8 MB. A translation set that would exceed it keeps using the database.
The admin interface is compiled from JavaScript sources before release. The uncompiled, human-readable sources for everything in build/ ship inside the plugin under src/, together with the build configuration in webpack.config.js and package.json. The bundles are produced by @wordpress/scripts (webpack) via the build script in package.json; no minified or obfuscated code is included without its source.