Мне удалось решить эту проблему, изменив структуру строк ресурсов следующим образом:
KEY_WITH_COUNT: ['{{count}} day remaining', '{{count}} day to go'],
KEY_WITH_COUNT_plural: ['{{count}} days remaining', '{{count}} days to go']
, а затем инициализировав i18next и переписав функцию t следующим образом:
process(callerObject, locale, resourceStrings) {
const localisationClient = i18n.init({
lng: locale,
resources: resourceStrings,
returnObjects: true
});
localisationClient.localise = function localise() {
const args = arguments;
const value = i18n.t(...args);
if (Array.isArray(value)) {
return value[Math.floor(Math.random() * value.length)];
}
return value;
};
callerObject.t = function translate(...args) {
return localisationClient.localise(...args);
}
}
Затем ябудет использовать это так:
callerObject.t('KEY_WITH_COUNT', {count: 1}); // "1 day remaining"
callerObject.t('KEY_WITH_COUNT', {count: 1}); // "1 day to go"
callerObject.t('KEY_WITH_COUNT', {count: 2}); // "2 days remaining"
callerObject.t('KEY_WITH_COUNT', {count: 2}); // "2 days to go"