CtrlK
BlogDocsLog inGet started
Tessl Logo

pleaseai/nuxt-i18n

Nuxt i18n internationalization module for locale routing, lazy-loaded translations, SEO, browser detection, and multi-domain setups. Use when working with @nuxtjs/i18n, locale switching, translated routes, or i18n composables.

62

Quality

78%

Does it follow best practices?

Impact

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

advanced-domains.mdskills/nuxt-i18n/references/

name:
domains
description:
Different domains and multi-domain locale setups with runtime env overrides in Nuxt i18n

Domain-Based Locales

Different Domains

Map each locale to its own domain:

export default defineNuxtConfig({
  i18n: {
    differentDomains: true,
    locales: [
      { code: 'en', domain: 'mydomain.com' },
      { code: 'es', domain: 'es.mydomain.com' },
      { code: 'fr', domain: 'fr.mydomain.com' }
    ]
  }
})

Use <a> tags (not <NuxtLink>) for cross-domain switching:

<template>
  <a v-for="loc in availableLocales" :href="switchLocalePath(loc.code)" :key="loc.code">
    {{ loc.code }}
  </a>
</template>

Shared domains — multiple languages on one domain with domainDefault: true:

locales: [
  { code: 'en', domain: 'mydomain.com', domainDefault: true },
  { code: 'pl', domain: 'mydomain.com' },
  { code: 'fr', domain: 'fr.mydomain.com', domainDefault: true }
]

Runtime env overrides (no rebuild needed):

NUXT_PUBLIC_I18N_DOMAIN_LOCALES_UK_DOMAIN=uk.example.test
NUXT_PUBLIC_I18N_DOMAIN_LOCALES_FR_DOMAIN=fr.example.test

Caching — use cache.varies: ['host'] in route rules to prevent cross-domain cache pollution:

routeRules: {
  '/': { swr: 60, cache: { varies: ['host'] } }
}

Multi-Domain Locales

All locales available on all domains, with per-domain defaults:

const i18nDomains = ['mydomain.com', 'es.mydomain.com', 'fr.mydomain.com']

export default defineNuxtConfig({
  i18n: {
    multiDomainLocales: true,
    locales: [
      { code: 'en', domains: i18nDomains, defaultForDomains: ['mydomain.com'] },
      { code: 'es', domains: i18nDomains, defaultForDomains: ['es.mydomain.com'] },
      { code: 'fr', domains: i18nDomains, defaultForDomains: ['fr.mydomain.com'] },
      { code: 'nl', domains: i18nDomains },
      { code: 'de', domains: i18nDomains }
    ]
  }
})

One locale can be default on multiple domains:

{ code: 'en', domains: i18nDomains, defaultForDomains: ['mydomain.com', 'en.mydomain.com'] }

README.md

tile.json