All files / @tech/intl translate.js

34.78% Statements 8/23
16.67% Branches 2/12
40% Functions 2/5
38.89% Lines 7/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34    1x   1x                                 22x 22x     1x   1x 22x          
/* eslint-disable global-require */
 
let localized = {};
 
export const init = async (lang) => {
  switch (lang) {
  case 'fr':
    localized = require('../../../../static/i18n/fr.json');
    break;
  case 'de':
    localized = require('../../../../static/i18n/de.json');
    break;
  case 'it':
    localized = require('../../../../static/i18n/it.json');
    break;
  default:
    localized = require('../../../../static/i18n/en.json');
  }
};
 
function untranslatedCode(key) {
  Iif (!key) return '!key is undefined!';
  return `!${key}!`;
}
 
const sanitize = label => label.replace('\\n', '\n');
 
export const translate = (key, param) => {
  Eif (!localized[key]) return untranslatedCode(key);
  const libelle = sanitize(localized[key]);
  if (!param) return libelle;
  return (Array.isArray(param) ? param : [param]).reduce((acc, p, i) => acc.replace(`{${i}}`, p), libelle);
};