Pages & posts
Every page and post, with their categories and tags. Publish or edit and the new text is translated a few seconds later.
- en About us
- es Sobre nosotros
- de Über uns
Content is translated in the background the moment you publish it. Visitors read a dictionary compiled to a file, no API on the request, no translation triggered by traffic.
WooCommerce is optional. A blog, a company site, a portfolio or a shop, if it runs on WordPress, it is translated the same way: in the background, and served from a file.
The cart, the checkout, the notices, where an untranslated string hurts most, at the moment someone is spending money. Covered in three different ways, because they come from three different places.
Someone buys in English. WooCommerce fires "Your order has been paid", and the plugin sends it in English: subject, heading, product names, shipping and payment method, the date, the text you wrote for the footer. The order itself is saved in the store’s language, so the admin, the invoices and the reports read one language.
Hi Emma, thank you for your purchase. We are already preparing your order.
| Linen midi dress — Black, M | × 1 | €49.00 |
| Silk blouse — Ivory, S | × 2 | €78.00 |
| Total | €132.00 |
Mariana Studio · 12 Flower Lane, Dublin · Reply to this email to reach us.
Hallo Emma, vielen Dank für Ihren Einkauf. Wir bereiten Ihre Bestellung bereits vor.
| Midikleid aus Leinen — Schwarz, M | × 1 | €49.00 |
| Seidenbluse — Elfenbein, S | × 2 | €78.00 |
| Gesamtsumme | €132.00 |
Mariana Studio · 12 Flower Lane, Dublin · Antworten Sie auf diese E-Mail, um uns zu erreichen.
Paid, completed, refunded, a note from the shop — in the language of the purchase, from the subject to the footer.
Subject, heading, additional content and footer you wrote in WooCommerce → Emails go through the dictionary. Review them by hand in Strings.
"Subtotal", "Shipping", "Payment method" come from WooCommerce's human-reviewed pack. The date uses each language's own format — no "September 9, 2026" on a German page.
Orders are saved in the source language with the language of the purchase in _pht_lang. Emails to the administrator stay in the store's language.
Nothing for the theme to fight. Four kilobytes of CSS, only on the pages where it shows. Three shapes are plain links with zero JavaScript. Colours, size, corners and shadow are set with a live preview that warns under 4.5:1, and every value is a CSS variable, so a theme can restyle it without !important.
Translation happens in the background. Serving is read-only. It is the model Shopify uses for Translate & Adapt, and the opposite of plugins that translate HTML on demand and pay again for every new page a visitor opens.
There is no API account to set up and nothing to configure: the translation API holds its own key. A glossary and a brand tone are optional, under Settings.
What changes between translating by hand, renting a translation service and serving your own translations from a file.
A general comparison by type of tool, not of any one product. Checked September 2026.
Every visit is free, only new or edited text is sent to be translated. Each character counts once per target language, and unused characters roll over while the subscription is active. Yearly plans cost ten months.
characters, then only what you add or edit.
Share of each plan’s characters for a month Share of each plan’s characters for the year, all at the start
The best fit translates it all in the first month. Later months only use new or edited text.
The best fit covers it at the start: the 12 months arrive at once. After that, only new or edited text.
No monthly plan does it in one month. A yearly plan does — its 12 months arrive at the start. Or the first translation spreads over a few months: unused characters roll over.
More than any plan gives at once: the first translation spreads over time, and unused characters roll over.
Estimates: a product ≈ 1,250 characters, a 1,000-word page ≈ 6,000, the theme and menus ≈ 10,000 once. Visits and unchanged pages never count.
Questions about taxes, how characters are counted or changing plan? Read the plans guide in the documentation.
By starting the free trial or subscribing, you agree to our Terms of Service and Privacy Policy.
Setup, SEO, the store and billing, the questions people ask before they install.
No. The plugin only talks to the PixelHunter translation API, which holds its own key — you only need the license key.
No. WooCommerce is optional: the plugin translates any WordPress site — pages, posts, menus, categories and the texts of your theme. When there is a store, the cart, the checkout and the order emails are covered too.
Yes. There is no second sitemap to submit: the translated pages are added to the one you already have. With Yoast SEO, Rank Math or Slim SEO each page gets one entry per language, with all its versions as hreflang alternates; without an SEO plugin, WordPress’s own sitemap gets one sitemap per language.
Yoast SEO, Rank Math and Slim SEO for canonicals and sitemaps; WP-Optimize, LiteSpeed Cache, WP Rocket and W3 Total Cache for page cache purging; and WooCommerce, with its official translation packs. Any other page cache can be connected through two hooks. Pages made with Elementor, Breakdance, Oxygen, Bricks or any other builder, ACF fields and custom product tabs are translated too: the plugin reads the page itself.
Yes, with Settings → Translated addresses: /product/linen-blouse/ becomes /de/produkt/leinenbluse/. An address is made once, from the translated title (or from the slug, when it was written by hand), and never changes on its own; the source address with the prefix redirects to it with a 301, so no link breaks. On for new installs; a site that updates keeps its addresses until you turn it on.
In the source language, 0 ms. On translated pages the dictionary is read from OPcache; a host page cache serves each language once per URL per TTL.
They come from the official WooCommerce translation pack — reviewed by humans, at no API cost. The panel says which packs are missing and installs them.
No. Emails to the administrator stay in the store’s language; only the customer’s emails go out in the language of the purchase.
WordPress 6.7 or later and PHP 8.1 or later. No build step, no jQuery, no runtime dependencies.
Translation pauses and retries every hour. Nothing is lost: pending texts wait for the next period, and the site keeps serving everything already translated. You do not have to open the plugin to find out: a notice appears at the top of the WordPress admin and the site's admin email gets one email. With less than 10% of the plan left, you get a notice and an email first. Need more? Change plan in My account: a new key for the new plan arrives by email, and translation resumes once it is pasted on your sites.
The key works until the end of the paid period. After that the site still serves every translation it has — only new text stops being translated.
Yes. Translate on the live site, or free a slot in My account → Activations while you work on the copy. The free trial is once per site and does not accept disposable emails.
Code inside <script> — the JSON-LD structured data is the exception, and is translated with the page — and customer emails not tied to an order, which go out in the store's language. Each sentence has one translation across the whole site.
<?php if ( 'en' === pht_current_language() ) : ?> <p>Free shipping to the UK.</p> <?php endif; ?>
[pht_switcher show_label="no" class="mine"] <?php pht_switcher( [ 'style' => 'dropdown' ] ); ?>
add_action( 'pht_purge_urls', function ( $urls ) {
foreach ( $urls as $url ) my_cache_purge( $url );
} );30,000 characters, one site, no card. The key arrives by email after checkout.