интерполяция i18next на русском языке

#string-interpolation #i18next

Вопрос:

Я пытаюсь использовать i18next с интерполяцией в своем приложении React

Вот примеры в коде React

  {i18n.t('hours', {ns:'namespace', count: 100})}
        <Trans i18nKey='hours' ns='namespace' count={10}/>
        {t('hours', {count: 1})}
 

Вот мое «пространство имен.json»

   "hours_one": "час",
  "hours_few": "часа",
  "hours_many": "часов"
  "hours": "часы {{count}}"
 

вот мой вывод

 часы 100
часы {{count}}
часы 1
 

Как вы можете видеть, в не работает. Я не знаю, почему.
Может ли кто-нибудь помочь мне понять, что я делаю не так?

Конфигурация

 const resources = {
  ru: {
    namespace: namespaceRU
  }
};
i18n
  .use(Backend)
  .use(LanguageDetector)
  .use(initReactI18next)

  .init({
    resources,
    fallbackLng: 'ru',
    debug: true,
    supportedLngs: ['ru'],
    interpolation: {
      escapeValue: false, // not needed for react as it escapes by default
    },
    react: {
      useSuspense: false
    },
  });

 

Ответ №1:

Вам нужно изменить 2 вещи в вашем Trans компоненте:

  1. перейти t к Trans
  2. используйте values опору для того, чтобы пройти count
 <Trans t={t} i18nKey='hours' ns='namespace' values={{count: 10}}/>