Pages & posts
Every page and post, with their categories and tags. Publish or edit and the new text is translated a few seconds later.
- pt Sobre nós
- en About us
- es Sobre nosotros
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.
Olá Emma, obrigado pela sua compra. Já estamos a preparar a encomenda.
| Vestido midi em linho — Preto, M | × 1 | 49,00 € |
| Blusa de seda — Marfim, S | × 2 | 78,00 € |
| Total | 132,00 € |
Loja Mariana · Rua das Flores 12, Lisboa · Responda a este email para falar connosco.
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 € |
Loja Mariana · Rua das Flores 12, Lisboa · Reply to this email to reach us.
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 "9 de September de 2026".
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.
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.
Questions about taxes, how characters are counted or changing plan? Read the plans guide in the documentation.
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.
No, on purpose. Only the prefix changes: /en/produto/blusas/ keeps the source slug. Each language still has its own address, with a canonical that keeps the prefix and hreflang to every other version, so Google sees language versions — never duplicate content. And a link never breaks when a translation is later fixed.
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. 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.
URL slugs, anything inside <script> — including SEO plugins' JSON-LD — 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.