Documentation > Developers > Use a Different Domain per Language

Use a Different Domain per Language

Browse Docs
Search Documentation

Domain names matter. You will gain user trust and better SEO results with a different domain for language.

The Different Domain per Language addon allows you to assign unique domains or subdomains to each language on your multilingual WordPress site. Instead of using URL paths like example.com/de/ or example.com/es/, visitors can access translations through completely separate domains such as example.de or example.es

This approach is particularly useful for:

  • Regional targeting: Use country-specific domains (.de, .fr, .es) for better local SEO
  • User experience: Provide cleaner, more memorable URL’s for each language

Requirements for Setting Up Different Domains per Language

Before setting up different domains per language, ensure you have:

  • Registered Domains: purchase and register domains you want to use for each language
  • DNS configuration: all domains must point to the same server where your WordPress installation is hosted
  • SSL certificates: configure SSL/TLS certificates for each domain to enable HTTPS (usually the hosting company admin panel is responsible for this)
  • TranslatePress Business or Developer: this feature is available for these two version TranslatePress (not available in the Free and Personal versions)

Setting Up DNS

All domains must resolve to the same server IP address. There are two common approaches:

Option 1: Using Subdomains

Subdomains are the easiest to configure since they’re managed within your existing domains:

  • Log into your domain registrar or hosting control panel
  • Navigate to DNS settings for your main domain
  • Create A records or CNAME records for each subdomain
de.example.com -> A Record -> Your Server IP
fr.example.com -> A Record -> Your Server IP
es.example.com -> A Record -> Your Server IP

Or using CNAME records pointing to your main domain:

de.example.com -> CNAME -> example.com
fr.example.com -> CNAME -> example.com

Option 2: Using Separate Domains

For country-code domains or different root domains:

  • Log into the DNS management for each domain
  • Create an A record pointing to your server’s IP address
example.de -> A Record -> Your Server IP
example.fr -> A Record -> Your Server IP

Adding Domains to Your Server

Just pointing your domain DNS to your server IP is not enough for this to work. Your server also needs to know that it should process requests from those domains as well.

So after configuring DNS, you need to add the domains to your web server.

In general, if unsure, contact your hosting provider to help with this task.

For cPanel/Plesk:

Add each domain as an “Addon Domain” or “Parked Domain” pointing to the same document root as your main WordPress installation.

For Apache (manual configuration)

Add ServerAlias entries to your virtual host:

<VirtualHost *:443>
    ServerName example.com
    ServerAlias example.de example.fr example.es
    ServerAlias de.example.com fr.example.com
    DocumentRoot /var/www/html/wordpress
    # ... rest of configuration
</VirtualHost>

For Nginx (manual configuration)

Add the domains to your server block:

server {
    listen 443 ssl;
    server_name example.com example.de example.fr de.example.com fr.example.com;
    root /var/www/html/wordpress;
    # ... rest of configuration
}

Configuring SSL Certificates

Each domain requires a valid SSL certificate. Options include:

  • Let’s Encrypt: Free certificates for each individual domain
  • Wildcard certificates: Cover all subdomains of a domain (e.g. *.example.com)
  • This is usually setup by your hosting provider unless you manage the server yourself

Configure TranslatePress for Different Domains per Language

Once your domains are properly configured and accessible, setup the domain mapping in Translatepress.

Step 1: Activate the addon

Visit WordPress Admin → Settings → TranslatePress → Addons and enable Different Domains per Language.

Step 2: Configure each language

Visit WordPress Admin  → Settings  → TranslatePress  → General and configure the domain for each language in particular.

  • toggle the domain column for each language
  • use the Check DNS to make sure the domain is reachable via the internet and configured correctly
  • Save Settings by scrolling to the bottom of the page

Step 3: Choose what languages point to a new domain

You do not have to have new domains for all languages. You can chose to continue using the language parameter (e.g. example.com/nn ) for some of them.

Single Sign-On (SSO)

An important feature when using different domains is Single Sign-On, ensureing that logged-in users remain authenticated across all language domains.

TranslatePress implements SSO functionality that works like so:

  • Login Trigger: when a user logs into WordPress on any domain, SSO is initiated and logs that user in to the rest of the domains
  • Logout Trigger: when a user logs out WordPress on any domain he is logged out from the other domains

Notes

  • When Different Domain per Language is active, the “Use a subdirectory for default language” option is automatically disabled, as domain-based language detection takes precedence.
  • The Advanced setting “Translate only certain paths” does not work 100% correctly with Different Domain for Language. This is a known limitation for the time being.
  • The WordPress Admin (wp-admin) is only accessible from the main domain. When accessing admin URLs on secondary domains, the request is detected as an admin request and a 302 redirect sends the user to the main domain’s admin. SSO entires the user remains logged in after the redirect.
  • Single Sign-On (SSO) can have it’s logged in cookies deleted or expired from certain domains while they are still present on others. If this is happening, please logout and login again to regenerate the login cookies across all domains.

Troubleshooting

DNS Check Fails

If the “Check DNS” button shows an error:

  • Verify the domain’s DNS records are correctly configured
  • Allow up to 48 hours for DNS propagation
  • Ensure SSL certificates are properly installed
  • Check that the domain is added to your web server configuration

Not logged in on secondary domains

If SSO isn’t working:

  • Ensure all domains have valid SSL certificates
  • Check that cookies aren’t being blocked by browser privacy settings
  • Login and logout from the site and try again
  • Check for Javascript errors that might prevent iframe loading.

Assets Loading from Wrong Domain

If scripts, styles or images show CORS errors:

  • TranslatePress automatically filters asset URL’s to use the current domain. It’s possible not all edge cases are covered (due to compatibility issues with other plugins or themes) -> In this case reach out to our support.
  • Clear any caching plugins after enabling domain mapping
  • Check for hardcoded URL’s in themes or plugins

TranslatePress Multilingual

The best website localization service for WordPress websites. Manage everything from a visual interface.