У меня есть пример приложения 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) из-за этой интерполяции.
Есть ли способ сделать это, не показывая это предупреждающее сообщение?
Спасибо





Решено, просто используя литералы шаблонов вместо двойных кавычек
Если вы хотите использовать 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