← Назад в блог
React.js i18n: настройка и использование локализации
- Опубликовано
- • 2 мин чтения•--- просмотров
Библиотека i18n
Часто используемая библиотека и подход к локализации.
Установка
Установи пакеты
yarn add i18next i18next-browser-languagedetector i18next-xhr-backendПосмотри на конфигурационный файл config/i18n/i18n.ts. Подключи его куда-нибудь в своём проекте
В
index.tsxимпортируй ранее добавленныйi18n.tsПомести файлы переводов в
public/locales/${LOCALIZATION_NAME}/translation.json
Использование
Через специальный хук в компонентах
import { useTranslation } from 'react-i18next';
///...
const Component: React.FC = () => {
const { t } = useTranslation();
///...
return (
<TextField
fullWidth
type="email"
label={t('Email address')}
InputLabelProps={{
shrink: true
}}
{...getFieldProps('email')}
error={Boolean(touched.email && errors.email)}
helperText={touched.email && errors.email}
/>
)
}
Компоненты с привязкой параметров
// in functional component
<Trans i18nKey="View all images" values={{ total }} />
// in locales/en/translation.json
{
//...
"View all images": "View all {{total}} images",
//...
}
// in locales/cn/translation.json
{
//...
"View all images": "查看所有 {{total}} 張圖片",
//...
}
Прямой способ, через утилиту
Это полезно, если у тебя есть строка для локализации в каких-то объектах (не в функциональных компонентах)
// importing file from ./config/18n/i18n.ts
import i18n from '~/utils/i18n';
const messages = {
hello: i18n.t('world'),
};
Советы и хитрости
Чтобы сменить перевод, нужно изменить значение в local storage браузера с именем i18nextLng

или используй эту команду в консоли:
localStorage.setItem('i18nextLng', 'cn');
После этого обнови страницу, чтобы увидеть применённую новую локализацию сайта
Открыт для работы по контракту
Я доступен для работы по контракту. Если у вас есть интересная идея проекта — запишитесь на звонок через Calendly.
Записаться на 30-минутный звонок