Я обновляю свой проект с i18next^11.0.0
до i18next^15.0.0
и react-i18next^7.0.0
до react-i18next^10.0.0
. Ранее я использовал translate
HOC, но кажется, что теперь он заменен на с переводом . Итак, мой простой компонент React после этих изменений выглядит так:
import React from 'react';
import { withTranslation } from 'react-i18next';
const AboutControl = props => {
const { t } = props;
return (
<div className="about-control">
<p className="about-control-application-name">
{t('name')} {VERSION}
</p>
<p>
{t('supported-browsers')}:
</p>
<ul>
<li>Google Chrome >= 55</li>
<li>Mozilla Firefox >= 53</li>
</ul>
</div>
);
};
export default withTranslation(['about', 'application'])(AboutControl);
Перевод для ключа supported-browsers
определен в пространстве имен about
, тогда как перевод для ключа name
находится в пространстве имен application
. Однако новая версия библиотеки не переводит ключ name
в приведенном выше примере:
![](https://i.stack.imgur.com/yF2NW.png)
Если я меняю заказ на about
и application
в withTranslation
, звоните
export default withTranslation(['application', 'about'])(AboutControl);
все становится наоборот (supported-browsers
не переводится):
![](https://i.stack.imgur.com/iT4DB.png)
В более старой версии react-i18next
был доступен параметр nsMode , который решил проблему, но больше не работает:
await i18next.init({
whitelist: this.languages,
lng: this.language || this.languages[0],
fallbackLng: this.languages[0],
lowerCaseLng: true,
debug: false,
resources: {},
interpolation: {
escapeValue: false // not needed for React
},
react: {
wait: true,
nsMode: true
}
});
Я не нашел ничего связанного с этим в документации . Вот пример оттуда:
// load multiple namespaces
// the t function will be set to first namespace as default
withTranslation(['ns1', 'ns2', 'ns3'])(MyComponent);
Похоже, что никаких дополнительных опций не требуется, в противном случае мне интересно, для каких пространств имен следует передавать, если не нужно переводить тексты компонента. Это ошибка? Или существует какой-то обходной путь?
Руководство по миграции с 9 на 10 не выделяет никаких изменений в этом поведении.