poe-i18n
Version:
i18n utility for Path of Exile
23 lines (20 loc) • 610 B
text/typescript
import { ICUMessageSyntax } from '../types/intl';
export interface Arguments {
[key: string]: any;
}
/**
*
* @param message - conforming to ICU message syntax
* @param args - if the message requires arguments pass them in this object or an error is thrown
*/
export default function formatMessage(
message: ICUMessageSyntax,
args: Arguments = {}
) {
return message.replace(/\{([^}]+)\}/g, (_: string, arg_name: string) => {
if (args.hasOwnProperty(arg_name) === false) {
throw new Error(`Message required '${arg_name}' to be present.`);
}
return String(args[arg_name]);
});
}