#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
компоненте:
- перейти
t
кTrans
- используйте
values
опору для того, чтобы пройтиcount
<Trans t={t} i18nKey='hours' ns='namespace' values={{count: 10}}/>