What is @nuxtjs/i18n?
@nuxtjs/i18n is a Nuxt.js module that provides internationalization (i18n) support for your Nuxt.js applications. It allows you to easily add multilingual support to your application, manage translations, and handle locale switching.
What are @nuxtjs/i18n's main functionalities?
Basic Setup
This code demonstrates the basic setup of the @nuxtjs/i18n module in a Nuxt.js project. It configures two locales (English and French) and sets English as the default locale. It also provides translation messages for the 'welcome' key in both languages.
{
"modules": [
"@nuxtjs/i18n"
],
"i18n": {
"locales": [
{ "code": "en", "name": "English" },
{ "code": "fr", "name": "Français" }
],
"defaultLocale": "en",
"vueI18n": {
"fallbackLocale": "en",
"messages": {
"en": { "welcome": "Welcome" },
"fr": { "welcome": "Bienvenue" }
}
}
}
}
Locale Switching
This code demonstrates how to switch between locales in a Nuxt.js component using @nuxtjs/i18n. The $t function is used to translate the 'welcome' key, and the $i18n.setLocale method is used to change the current locale.
<template>
<div>
<p>{{ $t('welcome') }}</p>
<button @click="$i18n.setLocale('en')">English</button>
<button @click="$i18n.setLocale('fr')">Français</button>
</div>
</template>
Dynamic Route Localization
This code demonstrates how to configure dynamic route localization with @nuxtjs/i18n. It maps the root path ('/') to '/accueil' for the French locale, allowing for localized URLs.
{
"pages": {
"index": {
"en": "/",
"fr": "/accueil"
}
}
}
Other packages similar to @nuxtjs/i18n
vue-i18n
vue-i18n is a powerful internationalization plugin for Vue.js. It provides similar functionalities to @nuxtjs/i18n but is not specifically tailored for Nuxt.js. It requires more manual setup when used with Nuxt.js compared to the seamless integration provided by @nuxtjs/i18n.
react-i18next
react-i18next is a popular internationalization library for React applications. It offers similar features such as translation management and locale switching. However, it is designed for React and not directly compatible with Nuxt.js, which is based on Vue.js.
next-i18next
next-i18next is an internationalization library for Next.js, a React framework. It provides similar functionalities to @nuxtjs/i18n but is specifically designed for Next.js applications, making it a better fit for React-based projects.
Nuxt I18n
Internationalization (i18n) for Nuxt apps.
📖 Read documentation
Features
- Integration with
vue-i18n
- Route localization (static & dynamic)
- Lazy load translations
- SEO tag localization
- Layer support
🚀 Usage
Install
- Install the
@nuxtjs/i18n
module to your project
npx nuxi@latest module add i18n
- Configure the module using the
i18n
key in nuxt.config.ts
{
modules: [
'@nuxtjs/i18n',
],
i18n: {
locales: [
{ code: 'en', language: 'en-US' },
{ code: 'fr', language: 'fr-FR' }
],
defaultLocale: 'en',
}
}
Edge Release Channel
Nuxt I18n lands commits, improvements and bug fixes every day, you can opt in to test these before their release using the edge release channel.
Opting In
Update @nuxtjs/i18n
dependency inside package.json
:
{
"devDependencies": {
-- "@nuxtjs/i18n": "^8.0.0"
++ "@nuxtjs/i18n": "npm:@nuxtjs/i18n-edge"
}
}
Remove lockfile (package-lock.json
, yarn.lock
, or pnpm-lock.yaml
) and reinstall dependencies.
Opting Out
Update @nuxtjs/i18n
dependency inside package.json
:
{
"devDependencies": {
-- "@nuxtjs/i18n": "npm:@nuxtjs/i18n-edge"
++ "@nuxtjs/i18n": "^8.0.0"
}
}
Remove lockfile (package-lock.json
, yarn.lock
, or pnpm-lock.yaml
) and reinstall dependencies.
Nuxt 2
Since Nuxt 2 has reached its end-of-life (EOL) date we are not actively maintaining support for this version, the last version to support Nuxt 2 is v7
.
The codebase for this version can be found on the v7
branch and its documentation here.
🔗 Links
©️ License
MIT License - Copyright (c) Nuxt Community