in components/localization/src/localization.js [33:65]
interpolate(text, interpolationObject) {
if (!interpolationObject || !Object.keys(interpolationObject).length) {
return text;
}
const substringsForReplacing =
getSubstringsForReplacing(text, interpolationObject);
let resultText = text;
Object.keys(substringsForReplacing).forEach(key => {
if (substringsForReplacing[key] !== undefined) {
resultText = resultText.replace(key, substringsForReplacing[key]);
}
});
return resultText;
function getSubstringsForReplacing(str, interpolationValues) {
let currentInterpolatedFragmentStart = -1;
const substringToValueMap = {};
for (let i = 0; i < (str.length - 1); ++i) {
if (str[i] === '{' && str[i + 1] === '{') {
currentInterpolatedFragmentStart = i + 2;
i = currentInterpolatedFragmentStart;
} else if (str[i] === '}' && str[i + 1] === '}' &&
currentInterpolatedFragmentStart > 0) {
const variableName = str.substring(
currentInterpolatedFragmentStart, i
);
substringToValueMap[`{{${variableName}}}`] =
interpolationValues[variableName.trim()];
}
}
return substringToValueMap;
}
}