DEV Community

Cover image for Getting Started with Next.js: Part 7 - Internationalization and Localization
Dipak Ahirav
Dipak Ahirav

Posted on • Updated on

Getting Started with Next.js: Part 7 - Internationalization and Localization

πŸš€ Check Out My YouTube Channel! πŸš€

Hi everyone! If you enjoy my content here on Dev.to, please consider subscribing to my YouTube channel devDive with Dipak. I post practical full-stack development videos that complement my blog posts. Your support means a lot!

Introduction

Welcome to Part 7 of our Next.js series! Today, we focus on internationalization (i18n) and localization (l10n), which are crucial for creating applications that support multiple languages and regional differences. Next.js provides built-in support for internationalized routing and locale detection, which simplifies the process of localizing your application.

What is Internationalization and Localization?

  • Internationalization (i18n): The process of designing a software application so that it can be adapted to various languages and regions without engineering changes.
  • Localization (l10n): The process of adapting internationalized software for a specific region or language by adding locale-specific components and translating text.

Configuring Internationalization in Next.js

Next.js supports internationalization natively through its routing system. Here’s how to set it up:

Step 1: Update Next.js Configuration

  1. Modify next.config.js:

    • Enable and configure the internationalization preferences:
     module.exports = {
       i18n: {
         locales: ['en-US', 'fr', 'es'], // List of supported locales
         defaultLocale: 'en-US',         // Default locale
       },
     };
    

Step 2: Add Locale-Specific Pages

  1. Create Locale-Specific Versions of Pages:
    • For instance, to create a French version of your homepage, you might create a file named index.js under pages/fr.

Step 3: Using Locale Information in Your Application

  1. Accessing the Current Locale:

    • Next.js automatically provides locale information via the router object, which you can use in your components:
     import { useRouter } from 'next/router';
    
     function MyComponent() {
       const router = useRouter();
       const { locale } = router;
    
       return <p>Current locale: {locale}</p>;
     }
    

Handling Locale-Switching

Allow users to switch between languages dynamically:

Step 1: Implement a Language Switcher

  1. Create a Language Selector Component:

    • This component enables users to switch between the available locales:
     import { useRouter } from 'next/router';
    
     function LanguageSwitcher() {
       const router = useRouter();
       const { locale, locales, asPath } = router;
    
       const handleLocaleChange = (event) => {
         const newLocale = event.target.value;
         router.push(asPath, asPath, { locale: newLocale });
       };
    
       return (
         <select value={locale} onChange={handleLocaleChange}>
           {locales.map((loc) => (
             <option key={loc} value={loc}>{loc}</option>
           ))}
         </select>
       );
     }
    
     export default LanguageSwitcher;
    

Conclusion

Internationalization and localization are vital for reaching a global audience with your Next.js application. By leveraging Next.js's built-in i18n support, you can easily offer multi-language support that enhances user experience and accessibility.

Stay tuned for Part 8, where we will explore state management and API integration strategies in Next.js.


This guide introduces the basics of setting up internationalization and localization in a Next.js application, helping you create a multi-language website. If there's anything specific you’d like to add or another aspect of Next.js you want to explore next, just let me know!

Top comments (1)

Collapse
 
steffqing profile image
Steve Tomi

So do I have to build a website with each individual languages??