diff options
| author | Henry Jameson <me@hjkos.com> | 2018-09-21 12:14:20 +0300 |
|---|---|---|
| committer | Henry Jameson <me@hjkos.com> | 2018-09-21 12:14:20 +0300 |
| commit | 1c2f0029e4835a34a94aba2aac7eeff592aa0d95 (patch) | |
| tree | 64020b07266815f88990274c5ad5ee134f04d5f1 /src/i18n/compare.js | |
| parent | a61ad0544adf013095b8052ebd7a3ea21a3510ae (diff) | |
| parent | 6f32ccf41717c2b59404c04ab0b0cb4b8c8171e3 (diff) | |
Merge remote-tracking branch 'upstream/develop' into betterStorage
* upstream/develop:
More languages
added usage
a tool to check what's missing from a language
all other languages which do not have MRs related to them separated
seems to be working
Diffstat (limited to 'src/i18n/compare.js')
| -rwxr-xr-x | src/i18n/compare.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/i18n/compare.js b/src/i18n/compare.js new file mode 100755 index 00000000..e9314376 --- /dev/null +++ b/src/i18n/compare.js @@ -0,0 +1,49 @@ +#!/usr/bin/env node +const arg = process.argv[2] + +if (typeof arg === 'undefined') { + console.log('This is a very simple and tiny tool that checks en.json with any other language and') + console.log('outputs all the things present in english but missing in foreign language.') + console.log('') + console.log('Usage: ./compare.js <lang> ') + console.log(' or') + console.log(' node ./compare.js <lang>') + console.log('') + console.log('Where <lang> is name of .json file containing language. For ./fi.json it should be:') + console.log(' ./compare.js fi ') + console.log('') + console.log('Limitations: ') + console.log('* This program does not work with languages left over in messages.js') + console.log('* This program does not check for extra strings present in foreign language but missing') + console.log(' in english.js (for now)') + console.log('') + console.log('There are no other arguments or options. Make an issue if you encounter a bug or want') + console.log('some feature to be implemented. Merge requests are welcome as well.') + return +} + +const english = require('./en.json') +const foreign = require(`./${arg}.json`) + +function walker (a, b, path = []) { + Object.keys(a).forEach(k => { + const aVal = a[k] + const bVal = b[k] + const aType = typeof aVal + const bType = typeof bVal + const currentPath = [...path, k] + const article = aType[0] === 'o' ? 'an' : 'a' + + if (bType === 'undefined') { + console.log(`Foreign language is missing ${article} ${aType} at path ${currentPath.join('.')}`) + } else if (aType === 'object') { + if (bType !== 'object') { + console.log(`Type mismatch! English has ${aType} while foreign has ${bType} at path ${currentPath.join['.']}`) + } else { + walker(aVal, bVal, currentPath) + } + } + }) +} + +walker(english, foreign) |
