Когда я впервые добавил в проект второй язык, я сохранил фактическую переведенную строку в состоянии компонента вместо ключа перевода. Все работало нормально, пока пользователь не переключил язык в середине сеанса, и половина интерфейса не осталась старой...
Когда я впервые добавил в проект второй язык, я сохранил фактическую переведенную строку в состоянии компонента вместо ключа перевода. Все работало нормально, пока пользователь не переключил язык в середине сеанса, и половина интерфейса осталась на старом языке, потому что состояние никогда не знало, что его необходимо обновить. Маленькая ошибка, досадная ошибка, и она научила меня одному правилу, которое делает i18n действительно удобным в обслуживании: переведенные строки никогда не принадлежат состоянию, а только ключи.
Вот настройка, которую я сейчас использую с next-intl.
1. Настройка
npm установить следующий-между
сообщения/
├── ru.json
└── es.json
// сообщения/en.json
{
"навигация": {
"дом": "Дом",
"цена": "Цена",
"контакт": "Контакт"
},
"герой": {
"title": "Создавайте быстрее с помощью шаблонов Next.js",
"subtitle": "Готовые шаблоны для вашего следующего проекта"
}
}
// сообщения/es.json
{
"навигация": {
"дом": "Начало",
"pricing": "Precios",
"contact": "Контакт"
},
"герой": {
"title": "Создавайте быстро с растениями Next.js",
"subtitle": "Списки растений для производства для вашего ближайшего проекта"
}
}
Здесь имеют значение вложенные ключи, а не плоские. nav.home читается четко и группирует связанные строки вместе, в отличие от плоского файла с десятками слабо связанных строк.