Step-by-Step Guide to Adding Translation in a Next.js App
Table of contents
Enhance User Experience with Multilingual Support in Your Next.js App
Introduction
Adding translation capabilities to your Next.js application can greatly enhance its accessibility and reach a broader audience. In this article, we will provide a step-by-step guide on how to integrate translation features into a Next.js app using the i18next library. We will explore the setup process, configuring translations, and implementing language switching functionality with code examples to help you get started.
Step 1: Setting up a Next.js Application
Before we begin, make sure you have a basic Next.js application set up. If you haven't done this yet, you can refer to the Next.js documentation to get started.
Step 2: Install i18next and its Dependencies
To add translation capabilities, we'll use the i18next library along with its React bindings, react-i18next. Install them using the following command:
npm install i18next react-i18next
Step 3: Configuring i18next
Create a new directory named locales
in the root of your project and add JSON files for each language you want to support. For example, create en.json
for English and fr.json
for French. These files will contain translation key-value pairs.
In your Next.js project, create a new file i18n.js
and add the following code:
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import translationEN from './locales/en.json';
import translationFR from './locales/fr.json';
const resources = {
en: {
translation: translationEN,
},
fr: {
translation: translationFR,
},
};
i18n.use(initReactI18next).init({
resources,
lng: 'en',
fallbackLng: 'en',
interpolation: {
escapeValue: false,
},
});
export default i18n;
Step 4: Implementing Translation in Components
Let's assume you have a component named Header
that needs translation support. Import useTranslation
from react-i18next
and update your component as follows
import React from 'react';
import { useTranslation } from 'react-i18next';
const Header = () => {
const { t } = useTranslation();
return (
<header>
<h1>{t('app.title')}</h1>
<nav>
<ul>
<li>{t('header.home')}</li>
<li>{t('header.about')}</li>
<li>{t('header.contact')}</li>
</ul>
</nav>
</header>
);
};
export default Header;
Step 5: Language Switching Functionality
To enable language switching, create a new component called LanguageSwitcher
and add the following code:
import React from 'react';
import { useTranslation } from 'react-i18next';
const LanguageSwitcher = () => {
const { i18n } = useTranslation();
const changeLanguage = (lng) => {
i18n.changeLanguage(lng);
};
return (
<div>
<button onClick={() => changeLanguage('en')}>English</button>
<button onClick={() => changeLanguage('fr')}>French</button>
</div>
);
};
export default LanguageSwitcher;
Step 6:Integrating Translation Components
In your Next.js application, import i18n.js
in the _app.js
file and wrap the entire application with the I18nextProvider
component. Update the _app.js
file as follows:
import React from 'react';
import { I18nextProvider } from 'react-i18next';
import i18n from './i18n';
const MyApp = ({ Component, pageProps }) => {
return (
<I18nextProvider i18n={i18n}>
<Component {...pageProps} />
</I18nextProvider>
);
};
export default MyApp;
Step 7:Testing Translations
Now, you can test your translations by updating the en.json
and fr.json
files in the locales
directory and adding translation key-value pairs. For example:
// en.json
{
"app": {
"title": "My Next.js App"
},
"header": {
"home": "Home",
"about": "About",
"contact": "Contact"
}
}
// fr.json
{
"app": {
"title": "Mon application Next.js"
},
"header": {
"home": "Accueil",
"about": "À propos",
"contact": "Contact"
}
}
Conclusion
By following this step-by-step guide, you have successfully added translation capabilities to your Next.js application using the i18next library. You learned how to set up i18next, configure translations, implement translation in components, and enable language-switching functionality. With this foundation, you can now expand your application's reach by supporting multiple languages and providing a localized experience to your users.
Subscribe to my newsletter
Read articles from Alex Omiunu directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by