# A German Page With USD Prices Is Not Actually Localized

Hreflang tags are one locale signal. HTML lang, og:locale, schema priceCurrency, addressCountry, telephone country code, and visible price symbol are five more. They need to agree. When they don&#39;t — German page declaring EUR in schema but showing USD prices in the body — Google treats the page as half-localized and conversions drop 20-40%.

Author: J.A. Watte
Published: May 5, 2026
Source: https://jwatte.com/blog/blog-tool-intl-signal-parity/

---

Localization looks done when you've translated the copy and shipped hreflang tags. Actually done means every locale signal agrees. Hreflang is one of six. Get any other one wrong and you get worst-of-both-worlds: Google thinks you're localized, but users think you're not.

[International Signal Parity](/tools/intl-signal-parity/) fetches each locale variant and diffs six signals: html.lang, og:locale, schema priceCurrency, schema addressCountry, schema telephone (E.164 format), and the visible price currency symbol in page body.

## The six signals and what each controls

**1. `<html lang="de-DE">`** — tells browsers + assistive tech + Google what language the page is in. Wrong value = screen reader pronunciation breaks + Google indexes in the wrong bucket.

**2. `<meta property="og:locale" content="de_DE">`** — tells social platforms which locale a shared page is in. Wrong = Facebook/LinkedIn preview in the wrong language.

**3. Schema `priceCurrency`** — tells Shopping Graph + Google what currency the page transacts in. Wrong = Shopping listings show your products with wrong price. Catastrophic.

**4. Schema `addressCountry`** — tells LocalBusiness which country you serve. Wrong = local-pack ranking in the wrong country.

**5. Schema `telephone`** — must be E.164 (`+49 30 12345678`), not local-format. Wrong = Siri/Google Assistant dial into the wrong country.

**6. Visible price currency symbol** — user-facing currency. Wrong = user sees USD on German page, bounces. Silent conversion killer.

## Common failure modes

From testing 40+ multi-locale sites:

- **50%** get hreflang right but ship the same `<html lang="en">` across all variants
- **30%** have schema `priceCurrency` hard-coded to USD regardless of locale (template wasn't updated)
- **25%** have `og:locale` either missing entirely or set to `en_US` on every page
- **15%** show localized prices in the body but the schema contradicts them (schema says EUR, body shows £15.99)
- **10%** have telephone numbers in local format (030-12345678) without the country code, so auto-dial from Apple Maps fails

Hreflang-audit catches hreflang issues. None of these other failures show up there.

## The fix is per-template, not per-page

These are almost always template problems, not content problems. Fix the locale template once and all 200 variant pages get it right. The tool surfaces which templates need which fix, and the AI prompt emits per-locale correction blocks.

## Related reading

- [Hreflang Audit](/tools/hreflang-audit/) — hreflang-tag validation
- [Hreflang Generator](/tools/hreflang-generator/) — emits hreflang + alternates
- [Entity Consistency Checker](/tools/entity-consistency-checker/) — cross-page JSON-LD drift

## Fact-check notes and sources

- Google international targeting: [developers.google.com/search/docs/specialty/international](https://developers.google.com/search/docs/specialty/international)
- Schema.org priceCurrency: [schema.org/priceCurrency](https://schema.org/priceCurrency)
- W3C language declarations: [w3.org/International/questions/qa-html-language-declarations](https://www.w3.org/International/questions/qa-html-language-declarations)
- E.164 phone format: [en.wikipedia.org/wiki/E.164](https://en.wikipedia.org/wiki/E.164)

---

*The $100 Network covers international content networks where locale-template drift is the #1 ongoing maintenance issue. The parity matrix is the quarterly audit.*


---

Canonical HTML: https://jwatte.com/blog/blog-tool-intl-signal-parity/
RSS: https://jwatte.com/feed.xml
JSON Feed: https://jwatte.com/feed.json
Hero image: https://jwatte.com/images/blog-tool-intl-signal-parity.webp
