Nuxt I18n · Nuxt Schema.org · Nuxt SEO

[NuxtSEO](https://nuxtseo.com/ "Home")

- [Modules](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Tools](https://nuxtseo.com/tools)
- [Pro](https://nuxtseo.com/pro)
- [Learn SEO](https://nuxtseo.com/learn-seo/nuxt) [Releases](https://nuxtseo.com/releases)

[1.4K](https://github.com/harlan-zw/nuxt-seo)

[Nuxt SEO on GitHub](https://github.com/harlan-zw/nuxt-seo)

[User Guides](https://nuxtseo.com/docs/schema-org/getting-started/introduction)

[API](https://nuxtseo.com/docs/schema-org/api/use-schema-org)

[Releases](https://nuxtseo.com/docs/schema-org/releases/v6)

Schema.org

- [Switch to Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Switch to Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Switch to Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Switch to Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [Switch to OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Switch to Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [Switch to SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Switch to Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Switch to Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [Switch to AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

Search…```k`` /`

v6.0.4

- Playgrounds
- [Discord Support](https://discord.com/invite/275MBUBvgP)

### Getting Started

- [Introduction](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Installation](https://nuxtseo.com/docs/schema-org/getting-started/installation)
- [Troubleshooting](https://nuxtseo.com/docs/schema-org/getting-started/troubleshooting)

### Core Concepts

- [How It Works](https://nuxtseo.com/docs/schema-org/guides/how-it-works)
- [Nuxt Content](https://nuxtseo.com/docs/schema-org/guides/content)
- [Default Schema.org](https://nuxtseo.com/docs/schema-org/guides/default-schema-org)
- [Setup Identity](https://nuxtseo.com/docs/schema-org/guides/setup-identity)
- [Nuxt I18n](https://nuxtseo.com/docs/schema-org/guides/i18n)
- [Supported Nodes](https://nuxtseo.com/docs/schema-org/guides/nodes)
- [Full Documentation](https://nuxtseo.com/docs/schema-org/guides/full-documentation)

Core Concepts

# Nuxt I18n

[Copy for LLMs](https://nuxtseo.com/docs/schema-org/guides/i18n.md)

## [I18n Defaults](#i18n-defaults)

When using the [defaults](https://nuxtseo.com/docs/schema-org/api/config#defaults) configuration, the module will automatically integrate with Nuxt I18n.

It will read your configuration, adding unique `WebSite` entities for each locale and connecting them with `translationOfWork` and `workTranslation` properties.

The `WebSite` node's `name` and `description` are read from your [Site Config](https://nuxtseo.com/docs/site-config/getting-started/how-it-works) and resolved per request during SSR based on the current locale.

As an example, the following would be generated when visiting the default `en` route when your site supports both `ja` and `zh`.

```
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://nuxtseo.com/en#website",
      "@type": "WebSite",
      "description": "The quickest and easiest way to build Schema.org graphs for Nuxt.",
      "inLanguage": "en-US",
      "name": "nuxt-schema-org",
      "publisher": {
        "@id": "https://nuxtseo.com/#identity"
      },
      "url": "https://nuxtseo.com/en",
      "workTranslation": [
        {
          "@id": "https://nuxtseo.com/en#website"
        },
        {
          "@id": "https://nuxtseo.com/ja#website"
        },
        {
          "@id": "https://nuxtseo.com/zh#website"
        }
      ]
    },
    {
      "@id": "https://nuxtseo.com/en#webpage",
      "@type": "WebPage",
      "about": {
        "@id": "https://nuxtseo.com/#identity"
      },
      "description": "The quickest and easiest way to build Schema.org graphs for Nuxt.",
      "isPartOf": {
        "@id": "https://nuxtseo.com/en#website"
      },
      "name": "Welcome",
      "potentialAction": [
        {
          "@type": "ReadAction",
          "target": [
            "https://nuxtseo.com/en"
          ]
        }
      ],
      "url": "https://nuxtseo.com/en"
    },
    {
      "@id": "https://nuxtseo.com/#identity",
      "@type": "Organization",
      "name": "nuxt-schema-org",
      "url": "https://nuxtseo.com"
    }
  ]
}
```

## [Per-Locale Site Name and Description](#per-locale-site-name-and-description)

The `WebSite` node's `name` and `description` are sourced from [Site Config](https://nuxtseo.com/docs/site-config/getting-started/how-it-works). The Nuxt Site Config i18n plugin integrates with `@nuxtjs/i18n` by reading translation keys under `nuxtSiteConfig`. It calls `i18n.t("nuxtSiteConfig.name")` and `i18n.t("nuxtSiteConfig.description")` reactively, pushing the translated values into the site config stack.

To provide per-locale values, add the `nuxtSiteConfig` keys to your locale files:

i18n/locales/en.ts

```
export default {
  nuxtSiteConfig: {
    name: 'My Site',
    description: 'My site description in English',
  },
}
```

i18n/locales/ja.ts

```
export default {
  nuxtSiteConfig: {
    name: '私のサイト',
    description: '日本語のサイト説明',
  },
}
```

During SSR, the `WebSite` node's `name` and `description` will reflect the current locale for each request. For client-side locale switching to update the JSON-LD, enable `schemaOrg.reactive: true` in your `nuxt.config.ts`.

## [Per-Locale Identity with useSchemaOrg](#per-locale-identity-with-useschemaorg)

The identity configured in `nuxt.config.ts` is static and shared across all locales. If you need locale-specific identity data (e.g., a translated organization description), use `useSchemaOrg` with `defineOrganization` in your `app.vue`:

app.vue

```
<script lang="ts" setup>
import { useI18n } from '#i18n'
import { defineOrganization, useSchemaOrg } from '#imports'

const { t } = useI18n()

useSchemaOrg([
  defineOrganization({
    name: () => t('organization.name'),
    description: () => t('organization.description'),
    logo: '/logo.png',
  }),
])
</script>
```

i18n/en.json

```
{
  "organization": {
    "name": "My Company",
    "description": "We build great software solutions"
  }
}
```

i18n/ja.json

```
{
  "organization": {
    "name": "私の会社",
    "description": "優れたソフトウェアソリューションを構築しています"
  }
}
```

Since `useSchemaOrg` merges with existing nodes, the `defineOrganization` call will update the identity node that was set up through your config. The getter functions (e.g., `() => t('...')`) are recomputed on each server render and on subsequent client-side navigations. By default, `useSchemaOrg()` only runs during SSR. To enable client-side reactivity (e.g., updating JSON-LD when the locale changes without a navigation), set `schemaOrg.reactive: true` in your `nuxt.config.ts`.

[Edit this page](https://github.com/harlan-zw/nuxt-schema-org/edit/main/docs/content/2.guides/2.i18n.md)

[Markdown For LLMs](https://nuxtseo.com/docs/schema-org/guides/i18n.md)

Did this page help you?

[Setup Identity Improve your Schema.org by providing the identity of your site.](https://nuxtseo.com/docs/schema-org/guides/setup-identity) [Supported Nodes The nodes available for Nuxt Schema.org.](https://nuxtseo.com/docs/schema-org/guides/nodes)

On this page

- [I18n Defaults](#i18n-defaults)
- [Per-Locale Site Name and Description](#per-locale-site-name-and-description)
- [Per-Locale Identity with useSchemaOrg](#per-locale-identity-with-useschemaorg)

[GitHub](https://github.com/harlan-zw/nuxt-seo) [ Discord](https://discord.com/invite/275MBUBvgP)

### [NuxtSEO](https://nuxtseo.com/ "Home")

- [Getting Started](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [MCP](https://nuxtseo.com/docs/nuxt-seo/guides/mcp)

Modules

- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

### [NuxtSEO Pro](https://nuxtseo.com/pro "Home")

- [Getting Started](https://nuxtseo.com/pro)
- [Dashboard](https://nuxtseo.com/pro/dashboard)
- [Pro MCP](https://nuxtseo.com/docs/nuxt-seo-pro/mcp/installation)

### [Learn SEO](https://nuxtseo.com/learn-seo "Learn SEO")

Nuxt

- [Mastering Meta](https://nuxtseo.com/learn-seo/nuxt/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/nuxt/controlling-crawlers)
- [Launch & Listen](https://nuxtseo.com/learn-seo/nuxt/launch-and-listen)
- [Routes & Rendering](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering)
- [Staying Secure](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering/security)

Vue

- [Vue SEO Guide](https://nuxtseo.com/learn-seo/vue)
- [Mastering Meta](https://nuxtseo.com/learn-seo/vue/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/vue/controlling-crawlers)
- [SPA SEO](https://nuxtseo.com/learn-seo/vue/spa)
- [SSR Frameworks](https://nuxtseo.com/learn-seo/vue/ssr-frameworks)
- [SEO Checklist](https://nuxtseo.com/learn-seo/checklist)
- [Pre-Launch Warmup](https://nuxtseo.com/learn-seo/pre-launch-warmup)
- [Backlinks & Authority](https://nuxtseo.com/learn-seo/backlinks)

### [Tools](https://nuxtseo.com/tools "SEO Tools")

- [Social Share Debugger](https://nuxtseo.com/tools/social-share-debugger)
- [Robots.txt Generator](https://nuxtseo.com/tools/robots-txt-generator)
- [Meta Tag Checker](https://nuxtseo.com/tools/meta-tag-checker)
- [HTML to Markdown](https://nuxtseo.com/tools/html-to-markdown)
- [XML Sitemap Validator](https://nuxtseo.com/tools/xml-sitemap-validator)
- [Schema.org Validator](https://nuxtseo.com/tools/schema-validator)
- [Keyword Idea Generator](https://nuxtseo.com/tools/keyword-generator)
- [Keyword Research](https://nuxtseo.com/tools/keyword-research)
- [SERP Analyzer](https://nuxtseo.com/tools/serp-analyzer)
- [Domain Rankings](https://nuxtseo.com/tools/domain-rankings)

Copyright © 2023-2026 Harlan Wilton - [MIT License](https://github.com/harlan-zw/nuxt-seo/blob/main/license) · [mdream](https://mdream.dev)