Expanding a business globally is a massive undertaking. Your website is the digital embassy of your brand in every new country you enter.
In 2026, launching a new market isn’t just about installing a translation plugin. Treat it as Global Content Strategy work in three layers: technical routing and hreflang, workflow automation around translation memory, then cultural QA on terminology and UX.
This guide explores how to build a WordPress architecture that supports global scale without operational chaos. The search rules quoted below come from Google Search Central, and the plugin behaviour from the Polylang and WPML documentation.
Subdirectories vs subdomains vs ccTLDs for multilingual SEO
The first decision you make is the most permanent URL structure.
- Subdirectories (
example.com/de/): The Gold Standard. Best for consolidating link equity (SEO authority) into a single domain. Easiest to manage in a single WordPress Multisite or Polylang setup. - Subdomains (
de.example.com): Useful if your German team needs full autonomy or if the German site runs on a physically different server cluster. Harder to build SEO authority. - ccTLDs (
example.de): Google documents a country-code domain as a strong signal of country targeting, but it is the most expensive option to maintain. You start with zero SEO authority for every new country.
Pros and cons of each structure
Subdirectories keep the whole site on one domain, so links earned by one language version also support the others. Management stays centralised and the infrastructure cost is the lowest. In WordPress, a Multisite network with subdirectory subsites is one common way to build this: each subsite has its own content, theme settings and options, while all of them share one WordPress installation.
Subdomains give a clear separation between language versions. Each subdomain can be hosted on a different server or in a different region, which helps when separate teams run each market. The trade-off is more management work, and links earned by one subdomain do less for the others than on a single host.
Country domains such as example.es, example.com.mx or example.com.br send the strongest geographic signal and can earn local user trust. They make sense for companies with a legal presence in each country. Every domain starts from zero authority, link building costs multiply, and operations get more complex.
What Google’s documentation says about each URL structure
Google’s guide to managing multi-regional and multilingual sites compares four options:
| Structure | Example | Pros listed by Google | Cons listed by Google |
|---|---|---|---|
| ccTLD | example.de | Clear geotargeting, server location irrelevant, easy separation of sites | Expensive, limited availability, more infrastructure, strict ccTLD rules, one country only |
| Subdomain on a gTLD | de.example.com | Easy to set up, different server locations possible, easy separation | Users may not tell from the URL whether “de” means a language or a country |
| Subdirectory on a gTLD | example.com/de/ | Easy to set up, low maintenance on the same host | Users may not recognise geotargeting from the URL, single server location, harder to separate sites |
| URL parameter | example.com?loc=de | None | Not recommended: segmentation is difficult and the target is not clear to users |
The same page asks for different URLs for different language versions, and advises against relying on cookies or browser settings to change the language on one URL.
Recommendation: For most businesses, Subdirectories are the correct choice.
How Polylang and WPML map languages to URLs
Both major plugins support the three URL structures, so the choice is a settings decision, not a rebuild.
Polylang’s URL modifications offer the language code as a query parameter (?lang=en) with plain permalinks, the language as a directory name (/en/my-post/), which is the default with pretty permalinks, and subdomains or multiple domains. With subdomains or domains, every host must point to the same WordPress root directory. Polylang can also hide the language code for the default language, which keeps legacy URLs intact on an existing site.
WPML’s language URL options are languages in directories, a different domain per language (separate domains or subdomains), and the language name as a parameter. Directories need pretty permalinks and Apache’s rewrite module. WPML warns against creating real directories or installing WordPress several times, and against adding your own redirect rules to .htaccess, because WPML creates its own redirects. A domain per language needs DNS and server configuration. The parameter format needs no server changes, which is also why it ends up as the one Google does not recommend.
Difference between localization and translation
Translation is changing words. Localization is changing meaning.
- Currency: Don’t just convert $100 to €92. Make it €99. Psychological pricing matters.
- Dates: 05/04/2026 is May 4th in the US, but April 5th in Poland. Use ISO (2026-05-04) or spelled-out months in code.
- Imagery: Use photos that reflect the local demographic. A photo of an American football game won’t resonate in Brazil.
Formats, currency and cultural adaptation checklist
Formats and conventions to check per market:
- Date formats: DD/MM/YYYY in most of Europe and Latin America, MM/DD/YYYY in the US
- Number separators: 1.000,50 in much of Europe, 1,000.50 in the US and UK
- Currency: the symbol, its position and its format change by region
- Text direction: left to right for Latin scripts, right to left for Arabic and Hebrew
- Units: metric or imperial
Cultural adaptations to plan:
- Colour palettes and what they mean locally
- Images and models that reflect the local audience
- Tone and formality (tú or usted in Spanish, du or Sie in German)
- Local references, examples and analogies
- Regulatory compliance (GDPR, CCPA or LGPD, depending on the region)
The five layers of website localization
- Linguistic layer: translation of the text with its cultural nuances.
- Visual layer: images, colours and layout.
- Functional layer: currencies, payment methods, local formats.
- SEO layer: local keywords, hreflang, structured data.
- Regulatory layer: compliance with local rules.
Common hreflang mistakes in WordPress
Hreflang is the html tag that tells Google: “This page is the German version of that English page.”
Missing return links, canonical conflicts and x-default
- Missing Reciprocal Links: Creating a link from EN to DE, but forgetting the link from DE back to EN. Google ignores broken chains.
- Canonical Conflicts: Pointing the German page’s canonical URL to the English version. This asks Google to treat the English page as the one to index instead of the German one. The canonical self-reference must point to the German URL.
- x-default: Forgetting to set a fallback for users who speak a language you don’t support (e.g., a user from Japan visiting your site).
Hreflang tag example with x-default
Each page lists every language version, including itself:
<link rel="alternate" hreflang="es" href="https://example.com/es/pagina/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/page/" />
<link rel="alternate" hreflang="pt" href="https://example.com/pt/pagina/" />
<link rel="alternate" hreflang="pl" href="https://example.com/pl/strona/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/page/" />hreflang="es" is generic Spanish, hreflang="es-MX" is Spanish for Mexico and hreflang="es-ES" is Spanish for Spain.
Hreflang rules from Google Search Central
Google’s page on localized versions of your pages sets the rules that most audits check:
- There are three equivalent ways to declare alternates:
<link rel="alternate">elements in the head, an HTTPLinkheader (useful for PDFs and other non-HTML files), orxhtml:linkentries in an XML sitemap. Using all three brings no extra benefit. - Each language version must list itself and all other language versions.
- If two pages don’t both point to each other, the tags are ignored.
- Alternate URLs must be fully qualified, with the protocol, so
https://example.com/fooand not//example.com/fooor/foo. They do not have to be on the same domain. - The language code follows ISO 639-1 and the optional region follows ISO 3166-1 Alpha 2. A region on its own is not valid, and reserved codes such as
UKorEUhave no effect (the United Kingdom isGB). x-defaultis the fallback for users whose language matches none of your versions, and it was designed for language selector pages.
Google also states that it does not use hreflang or the HTML lang attribute to detect the language of a page. It reads the visible content. A German template with English body text is an English page to Google, whatever the tags say.
How Polylang and WPML output hreflang
In WordPress the multilingual plugin usually owns hreflang, not the SEO plugin. Polylang’s own article on hreflang tag attributes says it adds the tags automatically. It builds the codes from the WordPress locale and turns the underscore into a dash, so en_ZA becomes en-ZA. Polylang generates x-default only for the home page. For other pages you add it with the pll_rel_hreflang_attributes filter.
WPML’s guide on adding hreflang in WordPress says WPML inserts hreflang tags automatically and updates them as the site changes. A regional code such as fr-ca goes into the hreflang field of the language row under WPML, Settings, Languages. WPML does not warn about invalid values, so check them against the ISO lists yourself.
Either way, the tags are only correct if every translation is linked to its original in the plugin. A translated post that was created as a standalone post gets no hreflang at all.
How to validate hreflang in CI/CD
Add automated checks to your deployment pipeline that confirm:
- every page has a complete, bidirectional hreflang set
- every referenced URL returns 200
- the x-default tag is present
- language and region codes are valid
How to automate WordPress translation with a TMS
Gone are the days of emailing Word documents to translators.
Connecting WordPress to Phrase, Lokalise or Crowdin
Modern WordPress connects directly to systems like Phrase, Lokalise, or Crowdin via API.
- Editor writes in English in Gutenberg.
- Click “Request Translation”: The content is sent via API to the TMS.
- AI + Human: DeepL does the first pass (instant). A human editor in Berlin reviews it (1 hour).
- Auto-Import: The approved German text is pushed back into WordPress as a draft, notifying the publisher.
This reduces turnaround time from weeks to hours.
A translation memory stores every approved segment. When a similar sentence appears in a later article, the memory suggests the earlier translation, so reviewers spend their time on new text. Native reviewers focus on what machine output misses: cultural nuance, industry terminology, brand tone and the right register.
Translation plugins for WordPress
- WPML: the most mature translation plugin, with connections to professional translation services.
- TranslatePress: visual translation directly on the front end of the site.
- Weglot: a SaaS that translates automatically and allows manual review.
- DeepL API with a custom plugin: for full control of the translation workflow.
Machine translation and Google’s spam policies
Google’s spam policies define scaled content abuse as many pages generated for the primary purpose of manipulating search rankings and not helping users. One of the listed examples is scraped content turned into many pages through automated transformations, including translating, where little value is provided to users. A reviewed translation of your own article is a different case, but publishing raw machine output in every language at scale moves you toward that definition.
The multi-regional guide adds a second warning: do not translate only the boilerplate (menus, footer, buttons) while the main content stays in one language. Google describes this as a bad user experience, because the same content then appears in search results under different interface languages.
Should you redirect visitors by IP location
You visit a site. It detects you are in France. It instantly redirects you to /fr/. Don’t do this.
Why IP redirects hurt Googlebot and travellers
- Bot Issues: Googlebot usually crawls from a US IP address. If you redirect US IPs to English, Googlebot may never see your French content.
- Travelers: I am a British user on holiday in Paris. I want to read in English, but you force me to French. Frustrating.
Google’s page on locale-adaptive pages confirms the first point: Googlebot’s default IP addresses appear to be US-based, and its requests do not include an Accept-Language header. Google also crawls from some non-US IPs, so if you block content by country, treat Googlebot like any visitor from that country, and keep robots meta tags and robots.txt rules the same in every locale. Its recommendation is separate URLs per locale annotated with hreflang. The multi-regional guide says the same in short form: don’t use IP analysis to adapt your content, and avoid automatic redirects between language versions.
The Solution: A “Global Gateway” banner. “We think you are in France. Continue to site, or Switch to French Version?” Let the user choose.
What WPML and Polylang browser redirects do
WPML’s browser language redirect is off until you enable it. It has two modes: redirect only when a translation exists, or always redirect, falling back to the home page in the default language. It runs in client-side JavaScript, so the page loads twice on a first visit, and it fires once per session, reset every 24 hours by default. WPML’s documentation itself notes that Google follows JavaScript redirects too, which can make Google treat your content as redirected to another language.
Polylang’s browser language detection is narrower. It sends a first-time visitor to the home page in a language that matches the browser preferences, only when languages are set by directory or subdomain, and sets a cookie so returning visitors land on the home page in the language they last browsed. Content pages are not redirected.
If you keep either option on, limit it to the home page and test it with cookies cleared.
Language switcher best practices
- A visible switcher in the header or footer, with language names in their own language (Español, English, Deutsch) instead of flags.
- Browser language detection that suggests the matching version without forcing it.
- A remembered choice, stored in a cookie.
- Readable URLs that show the language (/es/, /en/, /de/).
Flags stand for countries, not languages. Spanish is spoken in more than 20 countries and Portuguese in both Brazil and Portugal. A hidden switcher breaks the multilingual experience even when everything else is right.
How to do international SEO for each country
Translated content is not enough to rank in local markets. Each market needs its own SEO and GEO work.
Local keyword research
Literal translations of keywords rarely match what local users type. The English query “WordPress developer” appears in Spanish as “desarrollador WordPress” and as “programador WordPress”, and “website speed optimization” as “optimizar velocidad web” or “acelerar página web”. Native keyword research for each market looks at:
- dialect variants (Spanish in Spain, Mexico and Argentina)
- local technical terms against English loanwords
- search intent that changes between cultures
- a different set of local competitors
Signals Google uses to infer the target country
The multi-regional guide lists the signals Google uses to work out which country a site targets: the ccTLD, hreflang in tags, headers or sitemaps, and the server location (not definitive, because CDNs blur it). Other signals are local addresses and phone numbers on the pages, the local language and currency, links from local sites, and a Google Business Profile. Google ignores locational meta tags such as geo.position and other geotargeting HTML attributes, so they add nothing.
Local link building
Ranking in a local market needs links from local websites: national media, regional business directories, professional associations and industry blogs in the local language.
Which content to translate and which to create locally
Not everything needs to be translated.
- Global Content: Value proposition, product features, “About Us”. (Translate for all regions).
- Local Content: Case studies of local clients, local events, regulatory pages. (Create specifically for that market).
Local content for each market can cover case studies from local companies, country-specific regulations, local events and conferences, integrations and tools that are popular in that market, and prices in the local currency.
Fallback Strategy: If a blog post hasn’t been translated into German yet, should you show a 404? No. Show the English version with a note: “This article is not yet available in German.”
Which metrics to track on a multilingual site
Set up separate dashboards for each language version and track:
- Organic traffic by language and country
- Keyword positions in each market
- Conversion rates by region
- Bounce rate, which can point to translation quality problems
- Time on page, where low engagement can signal content that is not locally relevant
- Load speed by region (CDN and regional hosting)
A global content strategy has no end date. It needs a monthly performance review per market, content updates based on local data, gradual expansion into new markets based on opportunity and resources, and iteration on the translation workflow.
Conclusion
Learn more about SEO and GEO optimization services at WPPoland. A Global Content Strategy is not about reaching more people; it’s about resonating with them deeply. By respecting their language, culture, and technical preferences (speed, currency), you transform from a “foreign company” into a local partner.
Building a global WordPress architecture? WPPoland specializes in multi-market scaling.







