Для объявления функции, которая будет использоваться для перевода сайта с использованием библиотеки I18n на NextJS, вам потребуется выполнить несколько шагов.
1. Установка зависимостей:
Вам необходимо установить библиотеку i18next и ее дополнительный пакет для React - react-i18next. Выполните следующую команду в командной строке для установки зависимостей:
npm install i18next react-i18next
2. Создание файлов локализации:
Создайте файлы локализации для каждого языка, которые вы планируете использовать на вашем сайте. Обычно это файлы JSON или XML, содержащие переводы для разных текстов и фраз на каждом языке. Например, вы можете иметь файлы en.json
, fr.json
, de.json
соответствующие английскому, французскому и немецкому языкам соответственно.
3. Инициализация i18next:
В файле, где вы инициализируете вашу NextJS-приложение (обычно это _app.js
или _app.tsx
), выполните следующие действия:
- Импортируйте необходимые зависимости:
import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; import enTranslation from './path/to/en.json'; import frTranslation from './path/to/fr.json'; import deTranslation from './path/to/de.json';
- Инициализируйте i18next
с конфигурацией и загрузите переводы. При этом можно использовать любой способ загрузки переводов, поддерживаемый i18next. Например:
i18n .use(initReactI18next) // плагин React .init({ lng: 'en', // язык по умолчанию fallbackLng: 'en', // язык, который будет использоваться, если для выбранного языка нет перевода resources: { en: enTranslation, fr: frTranslation, de: deTranslation, }, });
Здесь en
, fr
и de
- это ключи вашего файла локализации en.json
, fr.json
и de.json
, а enTranslation
, frTranslation
и deTranslation
- это содержимое соответствующих JSON файлов.
4. Объявление функции для перевода:
Чтобы использовать функцию для перевода, вы можете создать отдельный компонент, например Translation.js
, или включить его в существующий компонент.
- Импортируйте необходимые зависимости:
import { useTranslation } from 'react-i18next';
- Объявите и используйте useTranslation
hook в вашем компоненте:
function Translation() { const { t } = useTranslation(); return ( <div> <p>{t('welcomeMessage')}</p> </div> ); } export default Translation;
В приведенном примере, t('welcomeMessage')
используется для получения перевода для ключа welcomeMessage
из файла локализации. Вы можете использовать эту функцию для перевода любого текста на вашем сайте.
5. Применение функции перевода:
Используйте функцию перевода внутри вашего приложения React, например в компоненте, как это показано выше.
import React from 'react'; import { I18nextProvider } from 'react-i18next'; import i18n from './i18n'; // Импортируйте инициализацию i18next import Translation from './Translation'; function MyApp() { return ( <I18nextProvider i18n={i18n}> <Translation /> </I18nextProvider> ); } export default MyApp;
Обратите внимание, что мы используем I18nextProvider
из react-i18next
чтобы обернуть наше приложение, чтобы получить доступ к функции перевода.
Это основные шаги для правильного объявления функции для перевода сайта на NextJS с использованием библиотеки I18n.