How to translate SEO titles, descriptions and slugs in TranslatePress
A page can be fully translated on screen and still show up in search with the source language's title, description and URL. Here is why, and how we fix it.
Short answer
Free TranslatePress translates visible text, but SEO titles, meta descriptions and URL slugs stay in the source language unless you buy the SEO Pack add-on. Our free TRP SEO Slug Localizer plugin stores a title, description and slug per language, adds 301 redirects from untranslated URLs, corrects hreflang and, with Rank Math, lists every language in the sitemap.
On this page5 sections
What the free version leaves out
TranslatePress is a popular way to translate a WordPress site: you click on text on the live page and type the translation. For visible content it works well. The gap is everything a search engine reads but a visitor rarely looks at: the <title> tag, the meta description and the URL.
In the free edition, those stay in the source language; translating them is part of the paid SEO Pack add-on. A Spanish page can be fully translated on screen and still appear in search results with an English title, an English description and an English slug, such as /es/kitchen-remodeling/. Free TranslatePress also lists only the source language in the sitemap, so translated pages are discoverable through crawlable links and hreflang tags; a multilingual sitemap makes discovery more reliable.
Why per-language titles, descriptions and slugs matter
- The search result is the first impression. Search engines often use your title and meta description in the result. A Spanish speaker who sees an English snippet may reasonably assume the page is in English.
- The URL is visible too. A slug in the visitor’s language is readable, easier to share and consistent with the page it leads to.
- Language versions need to find each other. hreflang tells search engines which page is the equivalent in each language. Google asks that each version list every other version and itself.
- Discovery. An XML sitemap that lists every language version is a direct way to tell crawlers those pages exist.
What TRP SEO Slug Localizer adds
We wrote TRP SEO Slug Localizer to close that gap on the multilingual sites we build, and published it free. It stores a title, description and slug override per language and serves them where they matter:
- SEO title through the WordPress document title, plus Rank Math’s title, Open Graph and Twitter tags.
- Meta description through Rank Math’s description, Open Graph and Twitter tags.
- Slugs with real permalinks and rewrite rules, and a 301 redirect from the untranslated address to the translated one, query string included.
- Archives and taxonomies: post type archives, translated taxonomy bases and individual terms.
- hreflang and the language switcher: TranslatePress’s own URLs are corrected to match the translated slugs.
- Sitemap: with Rank Math, every language version gets its own entry, annotated with links to every version, in the format Google documents for multilingual sitemaps.
It works with any set of languages. Languages, codes and URL prefixes are read from TranslatePress, and the default language is left alone because it already has its title, description and slug in the post itself. Rank Math is optional: without it, the document title is still translated and the meta description is left to whichever SEO plugin is in charge.
The hreflang detail that is easy to get wrong
TranslatePress builds its hreflang tags and its language switcher from its own idea of a URL. Once slugs are translated, that idea is out of date: hreflang would point at the old address, which now only answers with a 301. Google recommends that hreflang point at the canonical URL of each version, and annotations that disagree with the canonical are likely to be ignored. The plugin filters TranslatePress’s URL function, so hreflang, the switcher and the way back to the source language all use real addresses.
Installing it and moving overrides to production
The plugin needs WordPress 6.0 or later, PHP 8.0 or later, TranslatePress 3.x and pretty permalinks. On Bedrock-style installs it comes in through Composer:
composer config repositories.trp-seo-slug-localizer vcs https://github.com/denmlt/trp-seo-slug-localizer
composer require dyuzhaev/trp-seo-slug-localizer
Otherwise, copy the directory into wp-content/plugins/ and activate it. Overrides are edited in a box on each post’s edit screen, one block per secondary language, and an empty field keeps the original. Archive overrides have their own settings screen.
Because overrides live in the database rather than in code, they do not travel with a deploy. The plugin’s WP-CLI commands handle that: list and set overrides per language, or import a JSON file of them, with a --dry-run option to check an import before it runs.
A word of caution about slugs: changing the address of a page that is already indexed is a small migration, even with a 301 in place. Decide translated slugs once, ideally before launch, and keep them. If you are planning a multilingual WordPress site, see our WordPress development and SEO and AI search services, or contact us.
Requirements: TRP SEO Slug Localizer on WordPress 6.0–7.1, PHP 8.0+, TranslatePress 3.x
Key takeaways
- Search engines show the title, description and URL, so untranslated metadata undermines a translated page.
- hreflang annotations should point at the real, canonical address of each language version, not at a redirect.
- TRP SEO Slug Localizer adds per-language overrides, 301s from old URLs, corrected hreflang and a multilingual Rank Math sitemap.
- Overrides live in the database, so WP-CLI commands are how they reach production.
