{"id":347279,"date":"2026-08-04T21:43:19","date_gmt":"2026-08-04T21:43:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/gloty\/"},"modified":"2026-08-04T21:42:57","modified_gmt":"2026-08-04T21:42:57","slug":"gloty","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/gloty\/","author":23539523,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.29.2","stable_tag":"1.29.2","tested":"7.0.2","requires":"6.4","requires_php":"8.1","requires_plugins":null,"header_name":"Gloty","header_author":"WP Shelf","header_description":"AI-powered translation for WordPress. Translations are stored in your own database and served locally, with no remote call at render time.","assets_banners_color":"1a67a3","last_updated":"2026-08-04 21:42:57","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wp-shelf.com\/gloty","header_author_uri":"https:\/\/wp-shelf.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":33,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.29.2":{"tag":"1.29.2","author":"wpshelf","date":"2026-08-04 21:42:57"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3634659,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3634659,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3634659,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3634659,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3634659,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.29.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3634659,"resolution":"1","location":"assets","locale":"","width":1512,"height":1140},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3634659,"resolution":"2","location":"assets","locale":"","width":1512,"height":1140},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3634659,"resolution":"3","location":"assets","locale":"","width":1512,"height":1080}},"screenshots":{"1":"Dashboard showing translation statistics across languages","2":"Translations screen for reviewing and editing individual translations","3":"Settings page with translation and switcher options"}},"plugin_section":[],"plugin_tags":[104,1385,1734,99,2333],"plugin_category":[48],"plugin_contributors":[274470],"plugin_business_model":[],"class_list":["post-347279","plugin","type-plugin","status-publish","hentry","plugin_tags-i18n","plugin_tags-language","plugin_tags-localization","plugin_tags-multilingual","plugin_tags-translation","plugin_category-language-tools","plugin_contributors-wpshelf","plugin_committers-wpshelf"],"banners":{"banner":"https:\/\/ps.w.org\/gloty\/assets\/banner-772x250.png?rev=3634659","banner_2x":"https:\/\/ps.w.org\/gloty\/assets\/banner-1544x500.png?rev=3634659","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/gloty\/assets\/icon.svg?rev=3634659","icon":"https:\/\/ps.w.org\/gloty\/assets\/icon.svg?rev=3634659","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/gloty\/assets\/screenshot-1.png?rev=3634659","caption":"Dashboard showing translation statistics across languages"},{"src":"https:\/\/ps.w.org\/gloty\/assets\/screenshot-2.png?rev=3634659","caption":"Translations screen for reviewing and editing individual translations"},{"src":"https:\/\/ps.w.org\/gloty\/assets\/screenshot-3.png?rev=3634659","caption":"Settings page with translation and switcher options"}],"raw_content":"<!--section=description-->\n<p>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 \u2014 page delivery stays local and deterministic even if the translation service is slow or unreachable.<\/p>\n\n<p>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.<\/p>\n\n<p><strong>Key Features:<\/strong><\/p>\n\n<ul>\n<li><strong>Your database, your translations<\/strong> \u2014 stored locally in WordPress, never fetched remotely at render time<\/li>\n<li><strong>Automatic page translation<\/strong> \u2014 captures page output, extracts translatable text, queues it for translation<\/li>\n<li><strong>Entity-aware<\/strong> \u2014 posts, pages, taxonomies, and template strings are tracked as distinct sources with stale detection<\/li>\n<li><strong>Edit any translation<\/strong> \u2014 review and correct translations from Gloty \u2192 Translations<\/li>\n<li><strong>Manual edits are protected<\/strong> \u2014 machine sync never silently overwrites a human correction<\/li>\n<li><strong>Glossary<\/strong> \u2014 terms that must never be translated, or that must always render a specific way per language<\/li>\n<li><strong>SEO-friendly<\/strong> \u2014 hreflang tags, translated meta, clean \/fr\/page\/ URLs<\/li>\n<li><strong>Language switcher<\/strong> \u2014 floating widget, footer list, shortcode, or sidebar widget<\/li>\n<li><strong>Optional browser-language redirect<\/strong> \u2014 off by default, crawler-safe, remembered per visitor<\/li>\n<li><strong>WooCommerce compatible<\/strong> \u2014 products, cart, checkout, and store AJAX fragments<\/li>\n<li><strong>Gettext integration<\/strong> \u2014 translates WordPress, theme, and plugin UI strings<\/li>\n<li><strong>AI translation engine<\/strong> \u2014 OpenAI or Google Gemini, selected for you by the service on every plan<\/li>\n<li><strong>Background processing<\/strong> \u2014 queued dispatch with webhook delivery and a polling fallback<\/li>\n<li><strong>Developer extensible<\/strong> \u2014 filters and a REST API<\/li>\n<\/ul>\n\n<p><strong>How it works:<\/strong><\/p>\n\n<ol>\n<li>Install Gloty and connect your site to the Gloty translator service<\/li>\n<li>Add your target languages<\/li>\n<li>Gloty discovers translatable content from your posts, taxonomies, and template strings<\/li>\n<li>Translation runs in the background and the results are written to your database<\/li>\n<li>Visitors get translated pages under language-prefixed URLs (\/fr\/, \/de\/, \u2026) and can switch languages from the switcher<\/li>\n<\/ol>\n\n<p>Translation requires an external machine-translation service. See <strong>External services<\/strong> below for exactly what is sent and to whom.<\/p>\n\n<p>Documentation: https:\/\/wp-shelf.com\/gloty\/docs\/<\/p>\n\n<h3>External services<\/h3>\n\n<p>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.<\/p>\n\n<p>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.<\/p>\n\n<p><strong>1. The Gloty translator service<\/strong><\/p>\n\n<p>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.<\/p>\n\n<ul>\n<li>Service host: <code>https:\/\/api-production-3261.up.railway.app<\/code> (overridable by defining the <code>GLOTY_SERVICE_URL<\/code> constant, for example to point at a self-hosted instance of the service).<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>Who: the Gloty translator service, operated by WP Shelf.<\/li>\n<li>Terms of service: https:\/\/wp-shelf.com\/terms<\/li>\n<li>Privacy policy: https:\/\/wp-shelf.com\/privacy<\/li>\n<\/ul>\n\n<p>The Gloty service in turn passes your text to the AI translation engine it selects for the batch \u2014 OpenAI or Google Gemini. Their terms apply to that processing:<\/p>\n\n<ul>\n<li>OpenAI \u2014 https:\/\/openai.com\/policies\/terms-of-use \/ https:\/\/openai.com\/policies\/privacy-policy<\/li>\n<li>Google Gemini \u2014 https:\/\/ai.google.dev\/terms \/ https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<p><strong>2. WordPress.org translation packs<\/strong><\/p>\n\n<p>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.<\/p>\n\n<p>Gloty does not send analytics, telemetry, or usage tracking anywhere.<\/p>\n\n<h3>Source code<\/h3>\n\n<p>The admin interface is compiled from JavaScript sources before release. The uncompiled, human-readable sources for everything in <code>build\/<\/code> ship inside the plugin under <code>src\/<\/code>, together with the build configuration in <code>webpack.config.js<\/code> and <code>package.json<\/code>. The bundles are produced by <code>@wordpress\/scripts<\/code> (webpack) via the <code>build<\/code> script in <code>package.json<\/code>; no minified or obfuscated code is included without its source.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>gloty<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Go to <strong>Gloty &gt; Connection<\/strong> and connect your site to the Gloty translator service<\/li>\n<li>Add your target languages under <strong>Gloty &gt; Languages<\/strong><\/li>\n<li>Visit your site \u2014 translations happen automatically in the background<\/li>\n<\/ol>\n\n<p>The setup guide covers each step in more detail: https:\/\/wp-shelf.com\/gloty\/docs\/getting-started.html<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20account%3F\"><h3>Do I need an account?<\/h3><\/dt>\n<dd><p>Yes. Producing translations requires a connection to the Gloty translator service, set up under Gloty \u2192 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.<\/p><\/dd>\n<dt id=\"how%20much%20does%20it%20cost%3F\"><h3>How much does it cost?<\/h3><\/dt>\n<dd><p>The plugin itself is free and GPL-licensed. Translation runs through the Gloty service, which has a free tier with a monthly character allowance 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.<\/p><\/dd>\n<dt id=\"are%20translations%20stored%20on%20an%20external%20server%3F\"><h3>Are translations stored on an external server?<\/h3><\/dt>\n<dd><p>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 \u2014 see <strong>External services<\/strong> above for exactly what is sent and to whom.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20builders%3F\"><h3>Does it work with page builders?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"can%20i%20edit%20translations%20manually%3F\"><h3>Can I edit translations manually?<\/h3><\/dt>\n<dd><p>Yes. Go to Gloty \u2192 Translations, find the string, and edit it. Manual edits are marked as such and are never overwritten by later machine sync.<\/p><\/dd>\n<dt id=\"does%20it%20support%20woocommerce%3F\"><h3>Does it support WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Gloty translates product titles, descriptions, attributes, and the cart and checkout pages, including WooCommerce's AJAX cart fragments.<\/p>\n\n<p>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.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20translations%20if%20i%20deactivate%20gloty%3F\"><h3>What happens to my translations if I deactivate Gloty?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.29.2<\/h4>\n\n<ul>\n<li>First release on WordPress.org.<\/li>\n<\/ul>","raw_excerpt":"AI translation for WordPress. Translations are stored in your own database and served locally, with no remote call at render time.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/347279","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=347279"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wpshelf"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=347279"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=347279"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=347279"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=347279"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=347279"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=347279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}