Every translation in Signocore Multilanguage is its own page with its own address, so search engines can index each language separately. The plugin tells them which pages belong together with hreflang tags, keeps sitemaps per language and works alongside your SEO plugin. Everything on this page works on the free plan unless it says otherwise.
Hreflang tags
Hreflang tags tell search engines that pages are translations of each other, so they can show searchers the version in their language. Signocore Multilanguage adds them to the <head> of your pages automatically. There is nothing to set up.
On the About us page of a site in English, Spanish and French, the tags look like this:
<link rel="alternate" hreflang="en" href="https://example.com/about-us/" /> <link rel="alternate" hreflang="es" href="https://example.com/es/sobre-nosotros/" /> <link rel="alternate" hreflang="fr" href="https://example.com/fr/a-propos/" /> <link rel="alternate" hreflang="x-default" href="https://example.com/about-us/" />
Which languages are listed:
- Posts, pages and other content, including a static front page, the blog page and the shop page: every language with a published translation, the page itself included. Drafts are left out.
- Categories, tags and other terms: every language with a translated term.
- Other lists, such as a front page that shows your latest posts: the same address in every language. Author, date and post type archives only list languages that have published posts there.
The x-default tag points to the version in your default language, and is left out when that version does not exist. The hreflang value is the language code, such as es or pt-br.
No tags are printed on 404 pages, search results, page 2 and later of a list, pages set to noindex by your SEO plugin, or while only one language is active. With separate domains per language, a language without a domain is left out.
Developers can turn the tags off with signocore_ml_hreflang_enabled or change them with signocore_ml_hreflang_tags.
Sitemaps
Signocore Multilanguage keeps the XML sitemaps of WordPress, Signocore SEO, Yoast SEO and Rank Math in line with your languages:
- Language directories. Your main sitemap lists every language, since all addresses are on the same domain. Each other language also gets its own sitemap under its prefix, such as
https://example.com/es/wp-sitemap.xml, which lists only that language. - Subdomains and separate domains. Each subdomain or domain lists only its own language, because search engines ignore addresses on other hosts in a sitemap.
Limiting Yoast SEO and Rank Math sitemaps to one language needs Pro. The Pro integration also turns off their sitemap caching, so a cached sitemap from one language is never served for another.
robots.txt
With language directories, the plugin adds a Sitemap: line to the robots.txt that WordPress generates, one for each language besides the default that has posts or terms:
Sitemap: https://example.com/es/sitemap-index.xml Sitemap: https://example.com/fr/sitemap-index.xml
The file name follows your sitemap: sitemap_index.xml with Yoast SEO or Rank Math, the Sitemap Index Filename from Signocore SEO (sitemap-index.xml by default), and otherwise wp-sitemap.xml. With Yoast SEO or Rank Math, the lines are only added with Pro, because their sitemaps are only split by language through the Pro integration. The line for your main sitemap comes from WordPress or your SEO plugin as usual. With subdomains or separate domains, no lines are added.
If a real robots.txt file sits in your site's root folder, WordPress does not generate one and no lines are added. Add them to the file yourself, or submit the sitemaps in Google Search Console.
Canonical URLs
Signocore Multilanguage prints no canonical tag of its own. WordPress or your SEO plugin prints it, and since every translation has its own address, it points to the translation itself.
When you create a translation with Duplicate, Translate with AI or a bulk action, a custom canonical URL set on the original in Signocore SEO, Yoast SEO or Rank Math is not copied. Otherwise the translation would tell search engines that it is a copy of the original. Copy content from keeps the translation's own canonical URL as well. The same goes for WooCommerce products, which are copied through WooCommerce's own duplicate function.
Working with SEO plugins
| Plugin | What Signocore Multilanguage adds | Plan |
|---|---|---|
| Signocore SEO | Sitemaps and robots.txt lines per language. SEO title, meta description and breadcrumb title are stored per post, so each translation has its own. AI translation translates them. With the WooCommerce integration, translated cart, checkout and account pages stay out of the sitemaps like the originals. | Free, AI translation and WooCommerce need Pro |
| Yoast SEO | Sitemaps per language, og:locale in the language of the page, and title, meta description and canonical URL taken from the version in the current language. |
Pro |
| Rank Math | Sitemaps per language, and title, meta description and canonical URL taken from the version in the current language. | Pro |
Yoast SEO and Rank Math print no hreflang tags of their own, so the tags from Signocore Multilanguage are the only ones on the page.
In Signocore SEO, title templates and the home page SEO fields are saved per language. See Titles, descriptions and templates.
Translated slugs
Each translation has its own slug, such as /es/sobre-nosotros/. Edit it in the editor like any other slug. Translate with AI fills it in from the translated title.
WordPress normally adds a number, such as contact-2, when a translation uses a slug that another language already has in the same post type. With Pro, translations can share the slug of the original, so /contact/ and /es/contact/ both work.
URL bases such as /category/ can be translated per language under Signocore ML → URLs in the Permalink Translation card. With language directories, changing the address of a language on the Languages screen sends the old addresses to the new ones with a permanent (301) redirect. See Language URLs.
Check your site in Google Search Console
- Add your site. A Domain property covers every subdomain. With a separate domain per language, add each domain.
- Submit your sitemaps. With language directories, the main sitemap lists every language. With subdomains or domains, submit the sitemap of each one.
- Inspect a translated page. Use URL Inspection on a few translations and check that each is indexed and that the canonical Google selected is the page itself.
- Watch the Page indexing report. Translated pages listed under "Duplicate, Google chose different canonical than user" or "Duplicate without user-selected canonical" usually still hold untranslated text, for example a duplicated draft that was published before it was translated.
- Compare countries. Filter the Performance report by country to see whether each language gets its own traffic.
Search Console has no hreflang report anymore. To check the tags, open a page, view its source and search for hreflang.