2019-10-25 09:45:13 +02:00
|
|
|
exports.t = function (str, context) {
|
2019-12-29 13:39:37 +01:00
|
|
|
// HAPPY PATH: most translations are a simple string:
|
2017-06-28 10:16:34 +02:00
|
|
|
if (context === undefined) {
|
2017-06-29 20:48:49 +02:00
|
|
|
return 'translated: ' + str;
|
2017-06-28 10:16:34 +02:00
|
|
|
}
|
2019-12-29 13:39:37 +01:00
|
|
|
|
|
|
|
/*
|
|
|
|
context will be an ordinary JS object like this:
|
|
|
|
|
|
|
|
{minutes: minutes.toString()}
|
|
|
|
|
|
|
|
This supports use cases like the following:
|
|
|
|
|
|
|
|
i18n.t("__minutes__ min to edit", {minutes: minutes.toString()})
|
|
|
|
|
|
|
|
We have to munge in the context here.
|
|
|
|
*/
|
2019-11-02 00:06:25 +01:00
|
|
|
const keyword_regex = /__(- )?(\w)+__/g;
|
|
|
|
const keys_in_str = str.match(keyword_regex);
|
|
|
|
const substitutions = _.map(keys_in_str, function (key) {
|
|
|
|
let prefix_length;
|
2019-08-01 21:57:27 +02:00
|
|
|
if (key.startsWith("__- ")) {
|
|
|
|
prefix_length = 4;
|
|
|
|
} else {
|
|
|
|
prefix_length = 2;
|
|
|
|
}
|
|
|
|
return {
|
|
|
|
keyword: key.slice(prefix_length, key.length - 2),
|
|
|
|
prefix: key.slice(0, prefix_length),
|
|
|
|
suffix: key.slice(key.length - 2, key.length),
|
|
|
|
};
|
2017-06-28 10:16:34 +02:00
|
|
|
});
|
2019-08-01 21:57:27 +02:00
|
|
|
_.each(substitutions, function (item) {
|
|
|
|
str = str.replace(item.prefix + item.keyword + item.suffix,
|
|
|
|
context[item.keyword]);
|
2017-06-28 10:16:34 +02:00
|
|
|
});
|
|
|
|
return 'translated: ' + str;
|
|
|
|
};
|