74 lines
2.3 KiB
JavaScript
74 lines
2.3 KiB
JavaScript
// @flow
|
|
|
|
type ApiMsgConfig = {
|
|
originalMsg: string | RegExp,
|
|
replacement: string,
|
|
};
|
|
|
|
// prettier-ignore
|
|
const MESSAGE_MAP: Array<ApiMsgConfig> = Object.freeze([
|
|
{
|
|
originalMsg: /^your user name (.*) is too close to the creator's user name (.*) and may cause confusion. Please use another identity.$/,
|
|
replacement: 'Your user name "%1%" is too close to the creator\'s user name "%2%" and may cause confusion. Please use another identity.',
|
|
},
|
|
{
|
|
originalMsg: /^Slow mode is on. Please wait at most (.*) seconds before commenting again.$/,
|
|
replacement: 'Slow mode is on. Please wait up to %1% seconds before commenting again.',
|
|
},
|
|
{
|
|
originalMsg: /^the comment contents are blocked by (.*)$/,
|
|
replacement: 'The comment contains contents that are blocked by %1%.',
|
|
},
|
|
{
|
|
originalMsg: 'channel is blocked by publisher',
|
|
replacement: 'Unable to comment. This channel has blocked you.',
|
|
},
|
|
{
|
|
originalMsg: 'channel is not allowed to post comments',
|
|
replacement: 'Unable to comment. Your channel has been blocked by an admin.',
|
|
},
|
|
{
|
|
originalMsg: 'comments are disabled by the creator',
|
|
replacement: 'Unable to comment. The content owner has disabled comments.',
|
|
},
|
|
{
|
|
originalMsg: 'duplicate comment!',
|
|
replacement: 'Please do not spam.',
|
|
},
|
|
{
|
|
originalMsg: 'this creator has set minimum account age requirements that are not currently met',
|
|
replacement: "Your channel does not meet the creator's minimum channel-age limit.",
|
|
},
|
|
]);
|
|
|
|
/**
|
|
* Returns a re-mapped and localized version of the given API string.
|
|
*
|
|
* Ideally, the API should be returning a code and variable values, but
|
|
* that won't be happening anytime soon (or ever), so this is the alternative.
|
|
*
|
|
* @param message
|
|
* @returns {string}
|
|
*/
|
|
export function resolveApiMessage(message: string) {
|
|
for (let n = 0; n < MESSAGE_MAP.length; ++n) {
|
|
const config: ApiMsgConfig = MESSAGE_MAP[n];
|
|
|
|
if (typeof config.originalMsg === 'string') {
|
|
if (config.originalMsg === message) {
|
|
return __(config.replacement);
|
|
}
|
|
} else {
|
|
const match = message.match(config.originalMsg);
|
|
if (match) {
|
|
const subs = {};
|
|
for (let i = 1; i < match.length; ++i) {
|
|
subs[`${i}`] = match[i];
|
|
}
|
|
return __(config.replacement, subs);
|
|
}
|
|
}
|
|
}
|
|
|
|
return __(message);
|
|
}
|