39 lines
959 B
JavaScript
39 lines
959 B
JavaScript
const {get} = require('lodash');
|
|
const spec = require('../specs');
|
|
const versions = require('../utils').versions;
|
|
|
|
module.exports = function checkTranslations(theme, options) {
|
|
const ruleToCheck = 'GS070-VALID-TRANSLATIONS';
|
|
|
|
const checkVersion = get(options, 'checkVersion', versions.default);
|
|
let ruleSet = spec.get([checkVersion]);
|
|
const failures = [];
|
|
|
|
if (!(ruleToCheck in ruleSet.rules)) {
|
|
return theme;
|
|
}
|
|
|
|
for (const file of theme.files) {
|
|
if (!file.file.match(/locales[/\\].*\.json$/)) {
|
|
continue;
|
|
}
|
|
|
|
try {
|
|
JSON.parse(file.content);
|
|
} catch (error) {
|
|
failures.push({
|
|
ref: file.file,
|
|
message: 'Unable to parse'
|
|
});
|
|
}
|
|
}
|
|
|
|
if (failures.length > 0) {
|
|
theme.results.fail[ruleToCheck] = {failures};
|
|
} else {
|
|
theme.results.pass.push(ruleToCheck);
|
|
}
|
|
|
|
return theme;
|
|
};
|