aboutsummaryrefslogtreecommitdiff
path: root/src/i18n/compare
diff options
context:
space:
mode:
authorHenry Jameson <me@hjkos.com>2019-07-28 13:30:29 +0300
committerHenry Jameson <me@hjkos.com>2019-07-28 13:30:29 +0300
commitb3aff9bbae77b2fd34b2267ce9196c0ebd3e4691 (patch)
tree1219e00b6bfe6784add1578a3bc986c1dbb5f34d /src/i18n/compare
parent7f6f025792dcb3a10c94c8952d0312abd0b46989 (diff)
parent4827e4d972f8ee11e606693e24ae4ca21711c6b1 (diff)
Merge remote-tracking branch 'upstream/develop' into emoji-selector-update
* upstream/develop: (469 commits) Feature/add sticker picker guard more secure routes guard secure routes by redirecting to root closest can returns itself as well find inside status-content div only try to use the closest a tag as target Update es.json Also apply keyword filter to subjects Remove files I accidentally pushed in fix issues caused by merges in usersearch on @ Add user search at fix eslint warnings remove vue-popperjs fix moderation menu partially hidden by usercard boundary migrate popper css rewrite ModerationTools using v-tooltip make popover position for status action dropdow relative to parent node rewrite ExtraButtons using v-tooltip install v-tooltip i18n/Update pedantic Japanese translation ...
Diffstat (limited to 'src/i18n/compare')
-rwxr-xr-xsrc/i18n/compare49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/i18n/compare b/src/i18n/compare
new file mode 100755
index 00000000..4dc1e47d
--- /dev/null
+++ b/src/i18n/compare
@@ -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.')
+ process.exit()
+}
+
+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)