Главная | Все статьи | Код

Как использовать набор компонентов i18next для приложений React

JavaScript Время чтения статьи ~4 минуты
Как использовать набор компонентов i18next для приложений React главное изображение

Рассказываем, что такое библиотека React-i18next и как с ее помощью можно локализовать приложение.

Эта статья будет полезна, если вы немного знаете основы JS и React и хотите узнать что-то новое. Если вы пока с ними не знакомы, рекомендуем пройти профессию «Фронтенд-разработчик» на Хекслете.

Для глобального рынка разрабатывается все больше сервисов и продуктов. А это значит, что ваше приложение должно работать на аудиторию, говорящую на разных языках и диалектах. В React нет встроенной интернационализации i18n, но локализовать приложение несложно, особенно с помощью i18next.

Разберем основные термины, необходимые для понимания статьи.

i18n — это сокращение от слова интернационализация, где «18» обозначает количество букв между первой i и последней n. Эта аббревиатура используется во всех языках программирования.

i18next — это фреймворк интернационализации, написанный на JavaScript и для JavaScript, который интегрируется в код приложения.

React-i18next — это мощный набор компонентов, хуков и плагинов, которые работают поверх i18next. Давайте узнаем, как его использовать для приложений React.

Установка и настройка react-i18next

Чтобы начать использовать react-i18next для локализации приложения, нужно добавить его в проект:

npm install --save i18next react-i18next

i18next предоставляет ряд плагинов и утилит, которые расширяют возможности библиотеки. Например, плагин i18next-browser-languageDetector используется для определения языка пользователя в браузере.

Установим его стандартным способом с помощью npm:

npm install i18next-browser-languagedetector

Установив библиотеки, создадим и настроим экземпляр i18next:

// файл src/i18next.js
import i18next from 'i18next';
import { initReactI18next } from 'react-i18next';
import LanguageDetector from 'i18next-browser-languagedetector';
import resources from './locales/index.js';

i18next 
  .use(initReactI18next) // передаем экземпляр i18n в react-i18next, который сделает его доступным для всех компонентов через context API.
  .use(LanguageDetector) // с помощью плагина определяем язык пользователя в браузере
  .init({
    resources, // передаем переводы текстов интерфейса в формате JSON
    fallbackLng: 'ru', // если переводы на языке пользователя недоступны, то будет использоваться язык, указанный в этом поле
    interpolation: {
      escapeValue: false, // экранирование уже есть в React, поэтому отключаем
    },
  });

export default i18next;

i18next предоставляет также провайдер I18nextProvider. В провайдер можно обернуть компонент и передать экземпляр i18next, который вы инициализировали. Обычно это не требуется, но в документации можно посмотреть сценарии использования, в которых экземпляр может пригодиться.

Читайте также: Маршрутизация в React Router: как она работает и почему ее выбирают разработчики

Отладка i18next

Еще одна удобная опция конфигурации, которую предоставляет i18next, — это отладка. Мы можем установить значение true, чтобы получить вывод в консоль браузера, когда в i18next происходят определенные события, такие как завершение инициализации или изменение языка.

import i18next from 'i18next';

// ...
i18next
  .init({
    // ...
    debug: true,

  });

export default i18next;

Использование react-i18next

Мы сделали первоначальную настройку и теперь можем приступить к работе с текстами.

react-i18next представляет хук useTranslation(), с помощью которого можно получить доступ к функции t(). Она принимает ключ и возвращает соответствующую строку из переводов активного языка. Хук useTranslation() гарантирует, что наши компоненты получат t(), связанную с нашим экземпляром i18next.

import React from 'react';
import { useTranslation } from 'react-i18next';


export default = () => {
   const { t, i18n } = useTranslation();

   const handleLangSwitch = (e) => {
    const lang = e.target.dataset.lang;
    i18n.changeLanguage(lang);
  }

  return (
    <button 
className="btn btn-primary"
data-lang="en"
onClick={handleLangSwitch}
    >
       {t('languages.en')}
    </button>
  );
}

Мы рассмотрели основные возможности библиотеки react-i18next. Если вы хотите узнать больше, дополнительную информацию можно найти в ее официальной документации.

Станьте профессиональным фронтенд-разработчиком с нуля за 10 месяцев На Хекслете есть профессия «Фронтенд-разработчик». Пройдите ее, чтобы изучить один из самых известных языков программирования, освоить популярные фреймворки и создать большое портфолио с проектами на GitHub.

Стать JS-разработчиком

Аватар пользователя Olga Pejenkova
Olga Pejenkova 28 апреля 2023
7
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 2 мая
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 2 мая
профессия
от 6 183 ₽ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 2 мая
профессия
от 6 300 ₽ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 2 мая
профессия
от 5 025 ₽ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 2 мая
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 2 мая
профессия
от 5 840 ₽ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 2 мая
профессия
от 9 900 ₽ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 2 мая
профессия
от 6 300 ₽ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 2 мая
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
в разработке
Старт 2 мая
профессия
Верстка с использованием последних стандартов CSS
5 месяцев
с нуля
Старт в любое время