Ага и интернационализация

У меня есть пример приложения React с формой, созданной с помощью Formik, и схемой проверки, созданной с помощью Yup, но мне нужно изменить сообщения для каждого поддерживаемого языка. Поэтому я использовал react-i18next для интернационализации, и он отлично работает. У меня есть общее пространство имен и определенное пространство имен для моих «formik-сообщений».

У меня просто вопрос: консоль Chrome показывает мне предупреждение, когда я использую интерполяцию ${min} в своих сообщениях на определенном языке, даже если все работает нормально.

Пример: Поле моего пароля имеет эту схему проверки:

пароль: Yup.string().min(8, t("yup:password-min")).required(t("yup:пароль-требуется"))

Пространство имен yup и сообщение "password-min": "Пароль должен содержать не менее ${min} символов"

Сообщение отображается без проблем, но консоль Chrome показывает это предупреждение (неожиданное выражение строки шаблона no-template-curly-in-string) из-за этой интерполяции.

Есть ли способ сделать это, не показывая это предупреждающее сообщение?

Спасибо

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
3 590
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Решено, просто используя литералы шаблонов вместо двойных кавычек

Если вы хотите использовать i18n в переменной в приложении React, а не в компоненте, мы можем использовать «i18next» вместо использования хука useTranslation из «react-i18next».

import * as yup from 'yup'
import i18n from 'i18next'

const MyValidationSchema = yup.object().shape({
  name: yup.string().when('$name', {
  is: true,
  then: yup
    .string()
    .required(i18n.t('name.validation.nameRequired'))
  otherwise: yup.string().notRequired(),
  }),
})

export default MyValidationSchema

Другие вопросы по теме