aboutsummaryrefslogtreecommitdiffstats
path: root/development/verify-locale-strings.js
blob: b8fe5a7dc2664a0e36b17a9dc7e1b1c49211420c (plain) (blame)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
////////////////////////////////////////////////////////////////////////////////
//
// Locale verification script
//
// usage:
//
//     node app/scripts/verify-locale-strings.js <locale>
//
// will check the given locale against the strings in english
//
////////////////////////////////////////////////////////////////////////////////

var fs = require('fs')
var path = require('path')

console.log('Locale Verification')

var locale = process.argv[2]
if (!locale || locale == '') {
    console.log('Must enter a locale as argument. exitting')
    process.exit(1)
}

console.log("verifying for locale " + locale)

localeFilePath = path.join(process.cwd(), 'app', '_locales', locale, 'messages.json')
try {
    localeObj = JSON.parse(fs.readFileSync(localeFilePath, 'utf8'));
} catch (e) {
    if(e.code == 'ENOENT') {
        console.log('Locale file not found') 
    } else {
        console.log('Error opening your locale file: ', e)
    }
    process.exit(1)
}

englishFilePath = path.join(process.cwd(), 'app', '_locales', 'en', 'messages.json')
try {
    englishObj = JSON.parse(fs.readFileSync(englishFilePath, 'utf8'));
} catch (e) {
    if(e.code == 'ENOENT') {
        console.log("English File not found") 
    } else {
        console.log("Error opening english locale file: ", e)
    }
    process.exit(1)
}

console.log('\tverifying whether all your locale strings are contained in the english one')

var counter = 0
var foundErrorA = false
var notFound = [];
Object.keys(localeObj).forEach(function(key){
    if (!englishObj[key]) {
        foundErrorA = true
        notFound.push(key)
    }
    counter++
})

if (foundErrorA) {
    console.log('\nThe following string(s) is(are) not found in the english locale:')
    notFound.forEach(function(key) {
        console.log(key)
    })
} else {
    console.log('\tall ' + counter +' strings declared in your locale were found in the english one')
}

console.log('\n\tverifying whether your locale contains all english strings')

var counter = 0
var foundErrorB = false
var notFound = [];
Object.keys(englishObj).forEach(function(key){
    if (!localeObj[key]) {
        foundErrorB = true
        notFound.push(key)
    }
    counter++
})

if (foundErrorB) {
    console.log('\nThe following string(s) is(are) not found in the your locale:')
    notFound.forEach(function(key) {
        console.log(key)
    })
} else {
    console.log('\tall ' + counter +' english strings were found in your locale!')
}

if (!foundErrorA && !foundErrorB) {
    console.log('You are good to go')
}