UNPKG

@foreverrbum/ethsign

Version:

This package will allow you to electronically sign documents within your application

94 lines (82 loc) 2.47 kB
const i18nFiles = ['zh', 'en', 'jp']; const loadI18nResources = () => { return i18nFiles.map(item => { console.log(`Loading ../src/lib/message/${item}.json`); try { const data = require(`../src/lib/message/${item}.json`); return {data, i18n: item}; } catch (e) { console.error(`Failed to load ../src/lib/message/${item}.json`) } }); }; const checkTheKeyLeanEqual = (resources) => { let isEqual = true; const map = {}; for (const {i18n, data} of resources) { map[i18n] = Object.keys(data).length; } try { Object.keys(map).reduce((pre, cur, index) => { if (index === 0) return cur; if (map[pre] !== map[cur]) isEqual = false; return cur; },0); if (!isEqual) { let message = ''; Object.keys(map).forEach(item => { message = message + `${item}.json contains ${map[item]} key(s); ` }); throw new Error(message); } } catch (e) { console.error(e); } } const compareSource = (resources) => { const {data} = resources[0]; const keys = Object.keys(data); let count = 0; for (const { data } of resources) { while (keys.length >= count) { delete data[keys[count]]; count++; } count = 0; } const ishasExtraKey = checkHasExtraKey(resources); if (ishasExtraKey) { const message = getErrorMsg(resources); throw new Error(message); } console.log("Successfully validated all i18n files.\n") } const checkHasExtraKey = (resources) => { let result = false; for (const {data} of resources) { if (Object.keys(data).length > 0) { console.log(data); } if (Object.keys(data).length !== 0) { result = true; break; } } return result; } const getErrorMsg = (resources) => { let message = ''; for (const {i18n, data} of resources) { if (Object.keys(data).length !== 0) { message = message + `${i18n}.json contains ${JSON.stringify(data)}, but this is missing in other i18n files;`; } } return message; } const startCheck = () => { console.log("Starting i18n validation..."); const resources = loadI18nResources(); checkTheKeyLeanEqual(resources); compareSource(resources); }; startCheck();