Gloty – AI Translation & Multilingual

Description

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:

  • 38 languages — the set both AI engines’ vendors list as supported, each with the right hreflang code
  • Your database, your translations — stored locally in WordPress, never fetched remotely at render time
  • Fast on slow hosting — translations compile into a cache your server holds in memory, so serving a translated page costs no database queries once warm; it falls back to the database safely if your host cannot do that
  • Automatic page translation — captures page output, extracts translatable text, queues it for translation
  • Entity-aware — posts, pages, taxonomies, and template strings are tracked as distinct sources with stale detection
  • Edit any translation — review and correct translations from Gloty Translations
  • Manual edits are protected — machine sync never silently overwrites a human correction
  • Glossary — terms that must never be translated, or that must always render a specific way per language
  • SEO-friendly — hreflang tags, translated meta, clean /fr/page/ URLs
  • Language switcher — floating widget, footer list, shortcode, or sidebar widget
  • Optional browser-language redirect — off by default, crawler-safe, remembered per visitor
  • WooCommerce compatible — products, cart, checkout, and store AJAX fragments
  • Gettext integration — translates WordPress, theme, and plugin UI strings
  • AI translation engine — OpenAI or Google Gemini, selected for you by the service on every plan
  • Background processing — queued dispatch with webhook delivery and a polling fallback
  • Developer extensible — filters and a REST API

How it works:

  1. Install Gloty and connect your site to the Gloty translator service
  2. Add your target languages
  3. Gloty discovers translatable content from your posts, taxonomies, and template strings
  4. Translation runs in the background and the results are written to your database
  5. Visitors get translated pages under language-prefixed URLs (/fr/, /de/, …) and can switch languages from the switcher

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/

External services

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.

  • Service host: 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).
  • What is sent: the source text to be translated (page, post, taxonomy, and template strings from your site), the source and target language codes, your site URL, and a per-site API token and license key used to identify and authenticate your site.
  • When: on connection verification, while dispatching queued translation batches, when polling for results, and when the service delivers results back to your site over a signed webhook.
  • Who: the Gloty translator service, operated by WP Shelf.
  • Terms of service: https://wp-shelf.com/terms
  • Privacy policy: https://wp-shelf.com/privacy

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:

  • OpenAI — https://openai.com/policies/terms-of-use / https://openai.com/policies/privacy-policy
  • Google Gemini — https://ai.google.dev/terms / https://policies.google.com/privacy

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.

Filters

gloty_compiled_map_enabled

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.

gloty_compiled_map_max_bytes

The largest cache file Gloty will write, in bytes. Default 8 MB. A translation set that would exceed it keeps using the database.

Source code

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.

Screenshots

Installation

  1. Upload the gloty folder to /wp-content/plugins/
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Go to Gloty > Connection and connect your site to the Gloty translator service
  4. Add your target languages under Gloty > Languages
  5. Visit your site — translations happen automatically in the background

The setup guide covers each step in more detail: https://wp-shelf.com/gloty/docs/getting-started.html

FAQ

Do I need an account?

Yes. Producing translations requires a connection to the Gloty translator service, set up under Gloty Connection. There is a free tier. Without a connection, Gloty can still store, manage, and serve translations you already have, but it cannot create new ones.

How much does it cost?

The plugin itself is free and GPL-licensed. Translation runs through the Gloty service, which gives you a one-time free allowance to try it and paid plans for higher volume and more sites. Every plan translates on the same AI engines. Your existing translations continue to serve regardless of plan or status, because they live in your own database.

Are translations stored on an external server?

Your translations are stored in your own WordPress database, and translated pages are served from there with no external call. However, producing a translation in the first place does send the source text to an external machine-translation service — see External services above for exactly what is sent and to whom.

My language isn’t in the list. Can you add it?

Ask and we will look at it. The list is the set of languages the AI engines’ own vendors say their models support, which is why it is shorter than the language list you may have seen on other plugins. Adding one means checking that the current engines actually handle it rather than just producing confident-looking output, so it is a real answer rather than an automatic yes.

Does it work with page builders?

Yes. Gloty captures translatable text from rendered output as well as from WordPress entities, so it works with Elementor, Beaver Builder, Divi, and other page builders.

Can I edit translations manually?

Yes. Go to Gloty Translations, find the string, and edit it. Manual edits are marked as such and are never overwritten by later machine sync.

Does it support WooCommerce?

Yes. Gloty translates product titles, descriptions, attributes, and the cart and checkout pages, including WooCommerce’s AJAX cart fragments.

Order emails are not translated. They are sent outside the page rendering that Gloty works through, so a customer who ordered in German still receives the confirmation in your site’s source language.

What happens to my translations if I deactivate Gloty?

Deactivating stops translated URLs from being served but leaves all data in place. Deleting the plugin runs an uninstall routine that removes Gloty’s tables and options, so export anything you want to keep first.

Will this slow my site down?

Serving a translated page is designed to cost nothing extra. Gloty compiles your translations and your glossary into a PHP cache file kept in your server’s OPcache, so once it is warm a page view runs no database queries to translate, makes no remote call, and holds the translations in shared memory rather than copying them into every request.

The cache is written in the background, never during a visitor’s page view, and rebuilds within about a minute of a translation changing. Until it exists — a fresh install, or just after an edit — pages are served from the database exactly as earlier versions did: correct, just not yet as fast.

If your host has no OPcache, if the uploads directory is not writable, or if a cache file is ever damaged, Gloty notices and serves from the database instead, and reports it under Dashboard Issues. Nothing about this can make a page render incorrectly, only more slowly.

Where does Gloty write files?

Only one place: a gloty-cache folder inside your uploads directory, holding the compiled translation cache described above (with wp-content/cache/gloty as a fallback if uploads is not writable). The folder carries an index.php and .htaccess so the files are not browsable, and each file refuses to output anything if requested directly. Deactivating the plugin deletes them; uninstalling removes the folder too, and only ever removes files Gloty can prove it wrote.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Gloty – AI Translation & Multilingual” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.32.3

  • Dashboard Issues now tells you when translated pages are not using the fast path, and what to do about it. The most common cause on shared hosting is that the server’s PHP OPcache has no free memory left to hold the cache file — in which case writing it would make pages slower, not faster, so Gloty declines and says so. Previously it declined silently and you had no way to know.

1.32.2

  • The translation cache now reports why it did not build, if it does not. It previously declined for several different reasons — no translations to compile yet, a server memory ceiling, a permissions problem — and recorded only one of them, so “the cache is empty and nothing says why” could not be answered without server access. Each reason has a different remedy, so each now names itself.

1.32.1

  • Fixed: on sites that run WordPress’s scheduled tasks from a real server cron rather than from page loads — the setup WordPress itself recommends for production — the translation cache was never built, so the speed-up in 1.32.0 silently never happened. Nothing was broken and no error was reported, because not building the cache is not a failure: pages simply kept being served from the database. Found on a live site, where the cache stayed empty with every diagnostic reporting healthy.
  • Added a way to build the cache on demand, so “the cache is empty and nothing says why” can be answered without server access.

1.32.0

  • The language picker now offers 38 languages, down from 124 locales. What went was everything the AI engines’ vendors do not list as supported — those produced confident-looking output that nobody had ever checked — along with the regional variants, which mostly split a language into spellings rather than into genuinely different translations. Any language you have already added keeps working and is unaffected; this only changes what can be added. If one you need is missing, ask us.
  • Translated pages are faster. Gloty used to re-read your whole translation set from the database on every page view; it now compiles that set into a cache file your server keeps in memory, so a warm page view reads translations without touching the database at all. The gain is largest on hosting without a persistent object cache, which is most shared hosting.
  • Your glossary is cached the same way. It was previously read from the database on every page view — including on sites that had never opened the glossary screen, which was the worst version of the problem. Together with the change above, serving an already-translated page now costs no translation-related database queries at all once the cache is warm.
  • The cache rebuilds itself in the background whenever translations change, and always within a minute of a new translation arriving. Until it has, pages are served from the database exactly as before — correct, just not yet faster.
  • Fixed: an edited translation of a post, page or term could keep serving its old text for up to an hour. Editing one now takes effect on the very next page view, as editing a UI string always did. If you have ever corrected a translation and wondered why the page did not change, this was why.
  • Every part of this is optional and self-correcting. If your server has no OPcache, if the uploads directory is not writable, or if a cache file is ever damaged, Gloty falls back to the database and says so under Dashboard Issues rather than failing. You can also turn it off outright with the gloty_compiled_map_enabled filter, and Gloty respects DISALLOW_FILE_MODS.
  • Deactivating or uninstalling removes the cache files. Your translations live in the database and are untouched by any of this.

1.31.0

  • The Billing screen now shows the plans you can actually buy, with their real prices, straight from the licensing service. It previously offered a fixed “Pro / Business” pair that no longer matched the plans on sale, so newer licences were shown no upgrade option at all — including on the notice that appears when your quota runs out, which now names the cheapest plan that gives you more room.
  • “Manage subscription” only appears when there is a subscription to manage, instead of showing on free licences and failing when clicked.
  • The translator service now lives at its own address, https://gloty-api.wp-shelf.com. Sites already connected are moved across automatically on the next admin page load; a self-hosted or staging URL you set yourself is left untouched. No action needed, and nothing about how translation works has changed.

1.30.1

  • The plugin now lists itself as “Gloty – AI Translation & Multilingual”, and its description says what it does rather than only naming it. Listing copy only — nothing about how the plugin works has changed.

1.29.2

  • First release on WordPress.org.