lr-i18n
Version:
Allows to connect your `Laravel` Framework localization files with `React`.
25 lines (24 loc) • 835 B
JavaScript
/**
* Make the place-holder replacements on a line.
*
* @param message
* @param replacements
*/
export default function replacer(message, replacements) {
if (!replacements)
return message;
const patterns = Object.entries(replacements).flatMap(([key, value]) => [
{ pattern: new RegExp(`:${key}`, 'g'), replacement: value.toString() },
{ pattern: new RegExp(`:${key.toUpperCase()}`, 'g'), replacement: value.toString().toUpperCase() },
{ pattern: new RegExp(`:${capitalize(key)}`, 'g'), replacement: capitalize(value.toString()) }
]);
return patterns.reduce((result, { pattern, replacement }) => result.replace(pattern, replacement), message);
}
/**
* Capitalizing string.
*
* @param str
*/
function capitalize(str) {
return str ? str[0].toUpperCase() + str.slice(1) : '';
}