When Google shows the wrong translation, we would inspect the two actual article URLs before editing hreflang tags. A redirected, unavailable or non-indexable translation cannot be repaired by adding more annotations. Once both pages work, compare their canonical targets and the language links as one mapping.
Canonical and hreflang answer different questions
A canonical identifies the preferred representative among duplicate or very similar URLs. Hreflang connects language or regional alternatives. Google recommends keeping canonical signals consistent and using a canonical in the same language when hreflang is present. Making every translated page canonical to the English article sends a different message from treating each translation as its own preferred page.
Consider an English article and its genuine German translation. If the German page points its canonical to English while both pages announce one another as alternatives, start by correcting that inappropriate cross-language canonical. If the supposed German page still contains an untranslated English body, fix the content and intended page relationship first. A language code does not turn it into a translation.
Check the destination pages first
- Open each intended final URL and record its HTTP status and final destination. Fix broken pages and unintended redirects.
- Inspect the HTML and HTTP headers for noindex. Check that Google can crawl the page, not only that your browser can open it.
- Read the main article body. Confirm the language and that the page answers the equivalent reader task.
- Compare the declared canonical with the final URL, internal links and sitemap entry. Remove contradictory destination choices.
Then repair the alternate mapping
Google’s hreflang guidelines require each version to include itself and use fully qualified alternate URLs. The two versions must point back to one another for that pair of annotations to count. Cross-domain mappings are allowed. Check the final canonical URLs rather than stale addresses that redirect somewhere else.
| Check | Corrective action |
|---|---|
| German page points to English but English does not return the link | Add the reciprocal German alternate to the matching English page |
| Invalid language or region code | Use a supported language code and, if needed, a supported region code. A country code alone is not a language |
| No equivalent French article exists | Leave that unavailable alternate out. Keep a useful language-navigation choice without pretending another topic is equivalent |
| Unmatched-language landing page is useful | Consider x-default for that destination. It is not mandatory for every article |
We would maintain a small explicit record for each translation group: article identity, locale, final URL and canonical. Generate annotations from that record rather than guessing equivalents from similar slugs. If a translation is removed, update the surviving pages’ map as part of the same change.
Verify the correction without promising instant results
After deployment, inspect the served pages again and use Search Console URL Inspection to compare the indexed result with the live page. A successful live check shows what is available now, while the indexed result may still reflect an earlier crawl. Request recrawling where appropriate and allow processing time. A canonical remains a preference signal, so correcting the declaration does not guarantee immediate selection.
Keep the acceptance test concrete: both translated bodies are present, final URLs work, indexability is intentional, canonicals are coherent and the alternate links return. Only then investigate other reasons Google might choose a different result, such as the query’s language or a substantially weaker localized page.
