DEV Community

Joseph Anady
Joseph Anady

Posted on • Originally published at thatdevpro.com

Tier 12 — International: hreflang, multi-language, country targeting

Originally published at thatdevpro.com. This article is part of the 14-tier Engine Optimization stack from ThatDevPro, an SDVOSB-certified veteran-owned web + AI engineering studio. You are reading the Dev.to republish; the canonical source is on ThatDevPro.com. Source repo for the AI-citation surfaces: github.com/Janady13/aio-surfaces.


Tier Explanation: Enables global scaling while preserving local relevance and authority. In 2026, hreflang correctness, ccTLD/subdomain strategy, currency localization, cultural adaptation, and country-specific entity signals are required for international visibility. AI engines also weight regional authority signals heavily. All actions execute on website templates, schema, sitemaps, and supporting infrastructure. Tiers 1–11 must be in place first.


Related Frameworks

This tier implements the following framework documents in the /Framework/ library. Consult them for canonical reference, audit rubrics, and detailed implementation patterns.


A. International Foundation (3)

1. IPO — International Page Optimization

  • Create country-specific page versions with localized content, currency, and cultural references
  • Use proper hreflang tags in <head> of every internationalized page
  • Maintain consistent URL structure: /en-us/, /en-gb/, /es-mx/, /de-de/
  • Add country/language switcher in header — never auto-redirect based on IP (hurts UX and crawling)
  • Localize all metadata: title tags, meta descriptions, Open Graph, Twitter Cards
  • Use country-appropriate imagery, not generic stock photos that read as foreign
  • Include local phone numbers, addresses, and business hours per region
  • Track regional traffic and conversion separately to inform localization investment

Code Example — Internationalized page with country switcher:

<head>
  <link rel="alternate" hreflang="en-us" href="https://thatdeveloperguy.com/en-us/" />
  <link rel="alternate" hreflang="en-gb" href="https://thatdeveloperguy.com/en-gb/" />
  <link rel="alternate" hreflang="es-mx" href="https://thatdeveloperguy.com/es-mx/" />
  <link rel="alternate" hreflang="x-default" href="https://thatdeveloperguy.com/" />
  <meta name="language" content="en-US">
</head>

<header>
  <nav class="region-switcher" aria-label="Choose your region">
    <button id="region-toggle" aria-expanded="false">🌐 United States (English)</button>
    <ul id="region-list" hidden>
      <li><a href="/en-us/" hreflang="en-us">🇺🇸 United States (English)</a></li>
      <li><a href="/en-gb/" hreflang="en-gb">🇬🇧 United Kingdom (English)</a></li>
      <li><a href="/en-ca/" hreflang="en-ca">🇨🇦 Canada (English)</a></li>
      <li><a href="/es-mx/" hreflang="es-mx">🇲🇽 México (Español)</a></li>
      <li><a href="/de-de/" hreflang="de-de">🇩🇪 Deutschland (Deutsch)</a></li>
    </ul>
  </nav>
</header>
Enter fullscreen mode Exit fullscreen mode
  • Validation: Hreflang validates with zero errors in GSC, region switcher prominent in header, regional traffic tracked separately

2. MLO — Multilingual Optimization (renamed from Multilingual SEO)

  • Use professional human translators for primary content — avoid pure machine translation
  • Build separate URL paths per language (/en/, /es/, /fr/) — never use cookie-based language switching only
  • Add lang attribute on <html> and use lang attribute on inline elements with mixed languages
  • Translate all UI elements: buttons, forms, error messages, alt text
  • Localize date formats, number formats, and units of measurement
  • Adapt content for cultural context, not just translation (idioms, examples, references)
  • Build language-specific FAQ sections addressing region-specific questions
  • Track per-language SEO metrics: rankings, traffic, conversions

Code Example — Multi-language content with proper lang attributes:

<html lang="en-US">
<head>
  <title>14-Tier AI Search Optimization Framework</title>
</head>
<body>
  <article>
    <h1>The Complete Framework</h1>
    <p>Used by businesses worldwide to dominate AI search results.</p>

    <blockquote lang="es-MX">
      <p>"El marco más completo que hemos implementado." — Cliente en CDMX</p>
    </blockquote>

    <blockquote lang="de-DE">
      <p>"Das umfassendste Framework, das wir je gesehen haben." — Klient in Berlin</p>
    </blockquote>
  </article>
</body>
</html>
Enter fullscreen mode Exit fullscreen mode
  • Validation: Professional translations on all primary content, lang attributes correct sitewide, per-language metrics tracked

3. ISC — International Schema (renamed from International Schema)

  • Add localized Organization and LocalBusiness schema per country office or operating region
  • Use inLanguage property on Article and WebPage schema to declare content language
  • Add currency-specific pricing in Product schema with priceCurrency (ISO 4217)
  • Use addressCountry with ISO 3166-1 alpha-2 codes consistently
  • Build per-country Person schema with localized credentials and nationality
  • Add availableLanguage to Service schema for multilingual service offerings
  • Use proper region codes in geo-targeting: addressRegion follows local conventions
  • Validate schema across all locale variants — translation errors break schema parsing

Code Example — Multi-region Organization schema:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://thatdeveloperguy.com/#organization",
      "name": "ThatDeveloperGuy",
      "url": "https://thatdeveloperguy.com",
      "subOrganization": [
        {
          "@type": "LocalBusiness",
          "@id": "https://thatdeveloperguy.com/locations/us/#localbusiness",
          "name": "ThatDeveloperGuy USA",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "463 State Highway 76",
            "addressLocality": "Cassville",
            "addressRegion": "MO",
            "postalCode": "65625",
            "addressCountry": "US"
          },
          "availableLanguage": ["en-US", "es-MX"],
          "priceRange": "$$",
          "currenciesAccepted": "USD"
        },
        {
          "@type": "LocalBusiness",
          "@id": "https://thatdeveloperguy.com/locations/uk/#localbusiness",
          "name": "ThatDeveloperGuy UK",
          "address": {
            "@type": "PostalAddress",
            "addressLocality": "London",
            "addressCountry": "GB"
          },
          "availableLanguage": ["en-GB"],
          "currenciesAccepted": "GBP"
        }
      ]
    }
  ]
}
</script>
Enter fullscreen mode Exit fullscreen mode
  • Validation: Per-country schema validates, currency codes correct, availableLanguage matches actual support

B. Geographic & Domain Strategy (3)

4. ISM — International Sitemap (renamed)

  • Generate separate sitemaps per language/country variant
  • Build sitemap index file referencing all regional sitemaps
  • Submit each regional sitemap individually in GSC and Bing Webmaster Tools
  • Include hreflang annotations within sitemaps as alternate URLs
  • Update sitemaps automatically when content publishes or updates per region
  • Use <lastmod> accurately per regional version (translation update changes lastmod)
  • Validate sitemap XML structure before submission
  • Monitor sitemap indexation rate per region — submit fresh sitemaps when crawl errors appear

Code Example — Sitemap index with regional sitemaps:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://thatdeveloperguy.com/sitemap-en-us.xml</loc>
    <lastmod>2026-04-29</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://thatdeveloperguy.com/sitemap-en-gb.xml</loc>
    <lastmod>2026-04-29</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://thatdeveloperguy.com/sitemap-es-mx.xml</loc>
    <lastmod>2026-04-29</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://thatdeveloperguy.com/sitemap-de-de.xml</loc>
    <lastmod>2026-04-29</lastmod>
  </sitemap>
</sitemapindex>
Enter fullscreen mode Exit fullscreen mode
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://thatdeveloperguy.com/en-us/services/audit/</loc>
    <xhtml:link rel="alternate" hreflang="en-us" href="https://thatdeveloperguy.com/en-us/services/audit/"/>
    <xhtml:link rel="alternate" hreflang="en-gb" href="https://thatdeveloperguy.com/en-gb/services/audit/"/>
    <xhtml:link rel="alternate" hreflang="es-mx" href="https://thatdeveloperguy.com/es-mx/services/audit/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://thatdeveloperguy.com/services/audit/"/>
    <lastmod>2026-04-29</lastmod>
  </url>
</urlset>
Enter fullscreen mode Exit fullscreen mode
  • Validation: All regional sitemaps submitted and indexed, hreflang annotations within sitemaps validate, indexation rate above 90% per region

5. CCD — Country Code Domain Strategy (renamed)

  • Choose between ccTLD (.co.uk, .de), subdirectory (/uk/, /de/), or subdomain (uk., de.) based on:
    • ccTLDs: Strongest geo-targeting, separate authority per domain, expensive to manage at scale
    • Subdirectories: Easiest to manage, shared authority, requires manual GSC geo-targeting
    • Subdomains: Middle ground, treated as separate sites by Google
  • Set proper geotargeting in GSC for subdirectory or subdomain strategy
  • Maintain consistent NAP and entity signals across regional variants
  • Build separate GSC and analytics properties per regional domain/path
  • Localize backlink building per region — UK links matter for .co.uk, German links for .de
  • Avoid duplicate content across regions via proper canonical and hreflang strategy
  • Document domain strategy decision rationale for team alignment

Code Example — Subdirectory strategy with GSC verification:

<!-- All variants verified in GSC, geotargeting set per subdirectory -->
<!-- /en-us/ → United States targeting -->
<!-- /en-gb/ → United Kingdom targeting -->
<!-- /de-de/ → Germany targeting -->

<!-- Canonical points to language-specific URL -->
<link rel="canonical" href="https://thatdeveloperguy.com/en-gb/services/audit/" />

<!-- Hreflang lists all alternates -->
<link rel="alternate" hreflang="en-us" href="https://thatdeveloperguy.com/en-us/services/audit/" />
<link rel="alternate" hreflang="en-gb" href="https://thatdeveloperguy.com/en-gb/services/audit/" />
<link rel="alternate" hreflang="de-de" href="https://thatdeveloperguy.com/de-de/services/audit/" />
<link rel="alternate" hreflang="x-default" href="https://thatdeveloperguy.com/services/audit/" />
Enter fullscreen mode Exit fullscreen mode
  • Validation: Domain strategy documented, GSC geo-targeting set per region, regional GSC properties verified, no duplicate content flags

6. GTR — Geotargeting (new)

  • Use server-side geo-IP detection only as a hint — display banner offering localized version, never force redirect
  • Honor user's manual region selection via cookie that overrides geo-IP
  • Use Cloudflare or similar CDN's geo-routing for performance, not content selection
  • Build region-specific landing pages targeting "[service] in [country/region]" queries
  • Use Place schema with containedInPlace to declare regional service availability
  • Track geo-IP accuracy — VPN users and travelers can throw off targeting
  • Test geo-targeting from multiple regions using VPN or services like BrowserStack
  • Monitor regional rankings via location-aware rank tracking tools

Code Example — Soft geo-suggestion banner:

<aside id="region-suggestion" class="region-banner" hidden>
  <p>
    👋 It looks like you're visiting from the <strong id="detected-country">United Kingdom</strong>.
    Would you like to view our <a href="/en-gb/" id="suggested-region-link">UK site</a> with GBP pricing?
  </p>
  <button onclick="dismissRegionSuggestion()">Stay on US Site</button>
  <button onclick="acceptRegionSuggestion()">Yes, Switch to UK</button>
</aside>

<script>
async function checkRegion() {
  // Don't show if user already chose a region
  if (localStorage.getItem('region_preference')) return;

  const geo = await fetch('/api/geo/detect').then(r => r.json());
  const currentPath = window.location.pathname;

  // Only suggest if user is on different region's site
  if (geo.suggested_path && !currentPath.startsWith(geo.suggested_path)) {
    document.getElementById('detected-country').textContent = geo.country_name;
    document.getElementById('suggested-region-link').href = geo.suggested_path;
    document.getElementById('region-suggestion').hidden = false;
  }
}

function dismissRegionSuggestion() {
  localStorage.setItem('region_preference', 'stay');
  document.getElementById('region-suggestion').hidden = true;
}

function acceptRegionSuggestion() {
  localStorage.setItem('region_preference', 'auto');
  window.location.href = document.getElementById('suggested-region-link').href;
}

checkRegion();
</script>
Enter fullscreen mode Exit fullscreen mode
  • Validation: Soft suggestions never force redirects, user region preferences honored, geo-targeting accuracy tested from 5+ regions

C. Localization & Cultural (2)

7. CUL — Currency & Localization (new)

  • Display prices in user's local currency with accurate real-time conversion
  • Use proper currency symbols, decimal separators, and number formats per locale
  • Localize date formats: MM/DD/YYYY (US), DD/MM/YYYY (UK/EU), YYYY-MM-DD (ISO/Asia)
  • Adapt units of measurement: imperial vs metric, gallons vs liters, miles vs kilometers
  • Localize phone number formats with proper country codes (+1 vs +44 vs +49)
  • Adapt time zones in event listings, business hours, and webinar schedules
  • Handle right-to-left languages (Arabic, Hebrew) with proper dir="rtl" attribute
  • Localize legal pages per regional requirements (GDPR, CCPA, UK Data Protection Act)

Code Example — Localized pricing display:

<section class="pricing-block" data-product="audit">
  <h2>14-Tier Audit</h2>
  <p class="price" id="localized-price">$997 USD</p>
  <p class="local-equivalent" id="local-equivalent" hidden></p>

  <button class="btn-primary">Buy Now</button>
</section>

<script>
const priceUSD = 997;
const userLocale = navigator.language || 'en-US';
const userRegion = userLocale.split('-')[1] || 'US';

const currencyMap = {
  'GB': {currency: 'GBP', rate: 0.79, symbol: '£'},
  'CA': {currency: 'CAD', rate: 1.35, symbol: 'C$'},
  'MX': {currency: 'MXN', rate: 17.5, symbol: 'MX$'},
  'DE': {currency: 'EUR', rate: 0.92, symbol: ''}
};

if (currencyMap[userRegion]) {
  const localCurrency = currencyMap[userRegion];
  const localPrice = (priceUSD * localCurrency.rate).toFixed(2);

  document.getElementById('local-equivalent').textContent =
    `≈ ${localCurrency.symbol}${localPrice} ${localCurrency.currency}`;
  document.getElementById('local-equivalent').hidden = false;
}

// Format using Intl
const formatter = new Intl.NumberFormat(userLocale, {
  style: 'currency',
  currency: 'USD'
});
document.getElementById('localized-price').textContent = formatter.format(priceUSD) + ' USD';
</script>
Enter fullscreen mode Exit fullscreen mode
  • Validation: Currency conversions accurate within 1%, number/date formats match locale conventions, RTL support tested if applicable

8. TCM — Translation & Cultural Management (new)

  • Hire native-speaker translators or use professional translation services (Smartling, Lokalise, Phrase)
  • Avoid pure machine translation for primary content — Google penalizes thin translations
  • Adapt cultural references: examples, idioms, holidays, business norms
  • Translate testimonials and case studies from local clients (more credible than translated US case studies)
  • Build per-region content marketing strategies — German B2B differs from US B2B
  • Localize SEO keyword research per region — direct translations rarely match search volume
  • Adapt visual design: colors, imagery, layouts based on cultural preferences
  • Test localized pages with native speakers before launch

Code Example — Locally-relevant testimonials per region:

<section class="testimonials" data-region="en-gb">
  <!-- UK testimonials shown only on /en-gb/ pages -->
  <article class="testimonial">
    <blockquote lang="en-GB">
      "ThatDeveloperGuy transformed our Manchester firm's online presence.
      We're now ranking nationwide for our key terms — bloody brilliant work."
    </blockquote>
    <cite>— Sarah Mitchell, Director, Mitchell & Co (Manchester, UK)</cite>
  </article>
</section>

<section class="testimonials" data-region="es-mx" hidden>
  <!-- Mexico testimonials shown only on /es-mx/ pages -->
  <article class="testimonial">
    <blockquote lang="es-MX">
      "Joseph y su equipo entendieron perfectamente nuestro mercado en CDMX.
      Resultados increíbles en solo 90 días."
    </blockquote>
    <cite>— Carlos Hernández, Director, Hernández Consultores (CDMX, MX)</cite>
  </article>
</section>

<script>
// Show testimonials matching current page's region
const pageRegion = document.documentElement.lang;
document.querySelectorAll('[data-region]').forEach(section => {
  section.hidden = section.dataset.region !== pageRegion;
});
</script>
Enter fullscreen mode Exit fullscreen mode
  • Validation: Native-speaker translations on all primary content, region-specific testimonials displayed, native-speaker QA reviews completed

Summary

  • Total items: 8
  • Sub-clusters: 3 (International Foundation, Geographic & Domain Strategy, Localization & Cultural)
  • Format: Each item includes 7–8 implementation steps, a code example, and a validation criterion
  • Net change from original: 0 dropped, 3 added (GTR, CUL, TCM), 5 renamed for consistent 3-letter codes
  • Position in stack: Global expansion tier — depends on Tiers 1–11, enables international scale while preserving local authority

About this series

This is one of 14 articles in ThatDevPro's Engine Optimization stack — a productized SEO + AEO + AIO + GEO service. Each tier is a self-contained framework with concrete checklists, validation steps, and code patterns.

Canonical source for this article: https://www.thatdevpro.com/insights/seo-tier-12-international/

The 14-tier series:

  1. Tier 1 — Foundation
  2. Tier 2 — Search Visibility
  3. Tier 3 — AI Domination
  4. Tier 4 — Entity and Authority
  5. Tier 5 — Local Domination
  6. Tier 6 — Content and Multimedia
  7. Tier 7 — Social and Community
  8. Tier 8 — Data, Analytics, Conversion
  9. Tier 9 — Monitoring and Intelligence
  10. Tier 10 — Workflow and Operations
  11. Tier 11 — Marketplace and Retail
  12. Tier 12 — International
  13. Tier 14 — Advanced and Immersive

Tier 13 is retired.

Need this implemented on your site? ThatDevPro ships the full 14-tier stack as a productized service. SDVOSB-certified veteran-owned. Cassville, Missouri. See the Engine Optimization service.


Open-source tooling powering this series:

Top comments (0)