Я использую response-intl и его тег <FormattedMessage />
.
Я хочу иметь структурированное сообщение, которое выберет правильный вариант множественного числа на основе предоставленных значений, чтобы позволить переводчикам работать с правилами их язык, т. е. если они имеют разные варианты для «один», «два», «многие», элементы, и т. д. c. Я не хотел, чтобы он был жестко закодирован в бизнес-логике приложения c с помощью операторов switch
, которые использовали бы только правила Engli sh для "нуля", "одного" и "другого".
<FormattedMessage id="myMessage" values={{applesCount: 4, orangesCount: 0, pearsCount: 1}} />
должен выдать I have some apples and some pears
из следующего источника.
По некоторым причинам он возвращает I have some apples, some pears, and some oranges
{applesCount, plural,
zero {{pearsCount, plural,
zero {{orangesCount, plural,
zero {I have no fruit}
other {I have some oranges}
}}
other {{orangesCount, plural,
zero {I have some pears}
other {I have some pears and some oranges}
}}
}}
other {{pearsCount, plural,
zero {{orangesCount, plural,
zero {I have some apples}
other {I have some apples and some oranges}
}}
other {{orangesCount, plural,
zero {I have some apples and some pears}
other {I have some apples, some pears, and some oranges}
}}
}}
}
Я проверял это с помощью https://format-message.github.io/icu-message-format-for-translators/editor.html
Кроме того, у меня есть этот код и ящик, в котором можно с ним повозиться: https://codesandbox.io/s/react-intl-formattedmessage-using-plural-x8ki5
Для справки я проверил http://userguide.icu-project.org/formatparse/messages и https://formatjs.io/guides/message-syntax/ и ожидаем, что моя структура сообщений поддерживается.
Можете ли вы помочь мне обнаружить, что не так, или как мне изменить это, чтобы оно заработало?