Я пытаюсь ввести некоторые значения в переведенное предложение через реагировать-intl.
Следуя официальной документации, я смог определить шаблонное сообщение в свой файл локализации, и это выглядит так.
ratingMsgTemplate: {
id: "_ratingMsg",
defaultMessage: "{pointCount, plural, one {{point}} other {{points}}}"
},
это поле передано непосредственно внутри объекта локализации.
чем я использую пользовательский компонент Plural, который очень прост
import * as React from "react";
import { injectIntl } from "react-intl";
import { inject, observer } from "mobx-react";
const i18nPluralNumber = (props: any) => {
const { locale, intl, msgId, ...msgParams } = props;
let finalMessage;
if (!(msgId in locale.messages)) {
console.warn("Id not found in i18n messages list: " + msgId);
finalMessage = msgId;
} else {
finalMessage = locale.messages[msgId];
}
return (
<span className="plural-number-intl">
{intl.formatMessage(finalMessage, { ...msgParams })}
</span>
);
};
export default inject("locale")(injectIntl(observer(i18nPluralNumber)));
вот пример использования
<I18nPluralNumber
msgId="ratingMsgTemplate"
pointCount={shopPoints}
point={formatMessage("point")}
points={formatMessage("points")}
/>
Это работает как шарм , за исключением эта неприятная вещь.
В консоли я получаю это сообщение:
I18nPluralNumber.tsx: 19 [React Intl] Пропущенное сообщение: "_ratingMsg" для локали: "de", с использованием сообщения по умолчанию в качестве запасного.
и это правильно, потому что внутри моего файла перевода нет идентификатора _ratingMsg . На самом деле, я добавил этот идентификатор только потому, что он необходим в соответствии с документами response-intl, и без этого идентификатора он вообще не работает
Может кто-нибудь дать какой-нибудь совет / совет, как управлять этим материалом?
Буду признателен за любую информацию.