7b682ceb13
That should've worked just fine, but unfortunately, Crowdin wasn't able to pick up on our non-existent "one" category, thus appending empty translation block to people's translations. Empty block WILL BE used by any ICU FormatMessage library, thus resulting in an empty translation for "one" category, and that requires immediate fix. This commit duplicates contents of the "other" plural category.
62 lines
1.9 KiB
JavaScript
62 lines
1.9 KiB
JavaScript
// @ts-check
|
|
import React from 'react';
|
|
import { FormattedMessage } from 'react-intl';
|
|
|
|
/**
|
|
* Returns custom renderer for one of the common counter types
|
|
*
|
|
* @param {"statuses" | "following" | "followers"} counterType
|
|
* Type of the counter
|
|
* @param {boolean} isBold Whether display number must be displayed in bold
|
|
* @returns {(displayNumber: JSX.Element, pluralReady: number) => JSX.Element}
|
|
* Renderer function
|
|
* @throws If counterType is not covered by this function
|
|
*/
|
|
export function counterRenderer(counterType, isBold = true) {
|
|
/**
|
|
* @type {(displayNumber: JSX.Element) => JSX.Element}
|
|
*/
|
|
const renderCounter = isBold
|
|
? (displayNumber) => <strong>{displayNumber}</strong>
|
|
: (displayNumber) => displayNumber;
|
|
|
|
switch (counterType) {
|
|
case 'statuses': {
|
|
return (displayNumber, pluralReady) => (
|
|
<FormattedMessage
|
|
id='account.statuses_counter'
|
|
defaultMessage='{count, plural, one {{counter} Toot} other {{counter} Toots}}'
|
|
values={{
|
|
count: pluralReady,
|
|
counter: renderCounter(displayNumber),
|
|
}}
|
|
/>
|
|
);
|
|
}
|
|
case 'following': {
|
|
return (displayNumber, pluralReady) => (
|
|
<FormattedMessage
|
|
id='account.following_counter'
|
|
defaultMessage='{count, plural, one {{counter} Following} other {{counter} Following}}'
|
|
values={{
|
|
count: pluralReady,
|
|
counter: renderCounter(displayNumber),
|
|
}}
|
|
/>
|
|
);
|
|
}
|
|
case 'followers': {
|
|
return (displayNumber, pluralReady) => (
|
|
<FormattedMessage
|
|
id='account.followers_counter'
|
|
defaultMessage='{count, plural, one {{counter} Follower} other {{counter} Followers}}'
|
|
values={{
|
|
count: pluralReady,
|
|
counter: renderCounter(displayNumber),
|
|
}}
|
|
/>
|
|
);
|
|
}
|
|
default: throw Error(`Incorrect counter name: ${counterType}. Ensure it accepted by commonCounter function`);
|
|
}
|
|
}
|