Skip to content

Commit a5b9a69

Browse files
committed
langParser.js: Generate language list dynamically
This adds ``langParser.js`` to generate the available language list automatically from available translation files. This also adds a npm script for generating before webpack bundles. Modifies .gitignore so that generated ``languages.js`` file is ignored. Closes: #125
1 parent 8960f21 commit a5b9a69

File tree

6 files changed

+47
-51
lines changed

6 files changed

+47
-51
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ out
33
yarn.lock
44
.DS_Store
55
**.orig
6+
src/js/languages.js

lib/langParser.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
const fs = require('fs')
2+
const iso639 = require('iso-639-1')
3+
4+
fs.readdir(`${__dirname}/../static/i18n`, function(err, items) {
5+
var avaliableLanguages = {
6+
Languages: {},
7+
}
8+
for (var i = 0; i < items.length; i++) {
9+
var langName = items[i].substring(0, items[i].indexOf('.'))
10+
var normalizedName = langName.split('-')[0]
11+
var nativeName = iso639.getNativeName(normalizedName)
12+
avaliableLanguages['Languages'][nativeName] = langName
13+
}
14+
fs.writeFileSync(
15+
`${__dirname}/../src/js/languages.js`,
16+
'export default ' +
17+
JSON.stringify(avaliableLanguages) +
18+
' // eslint-disable-line'
19+
)
20+
})

package-lock.json

Lines changed: 21 additions & 44 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@
99
"generate": "node ./lib/generate.js",
1010
"gather": "node ./lib/gather.js",
1111
"main": "node ./lib/main.js",
12+
"languages": "node ./lib/langParser.js",
1213
"clean": "rm -rf out/*",
1314
"dev": "webpack-dev-server --progress",
1415
"bundle": "NODE_ENV=production webpack --progress",
15-
"build": "npm run bundle && npm run gather && npm run scrape && npm run planet && npm run main && npm run generate",
16+
"build": "npm run languages && npm run bundle && npm run gather && npm run scrape && npm run planet && npm run main && npm run generate",
1617
"build:clean": "npm run clean && npm run build",
1718
"test": "jest"
1819
},
@@ -27,6 +28,7 @@
2728
"find-rss": "^1.6.4",
2829
"glob": "^7.1.2",
2930
"graphql-client": "^2.0.0",
31+
"iso-639-1": "^2.0.3",
3032
"jquery": "^3.2.1",
3133
"jquery.i18n": "git+https://github.com/wikimedia/jquery.i18n.git",
3234
"json2yaml": "^1.1.0",

src/js/locale.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import init from './app'
2+
import Languages from './languages'
23

34
var browserLocale
45

@@ -26,12 +27,7 @@ function updateTranslation(localex) {
2627
}
2728

2829
$(window).on('load', function() {
29-
var localeOptions = {
30-
English: 'en',
31-
Español: 'es',
32-
Polski: 'pl',
33-
'Norwegian Bokmål': 'nb_NO',
34-
}
30+
var localeOptions = Languages['Languages']
3531

3632
var locList = $('#lang-select')
3733
$.each(localeOptions, function(key, value) {

0 commit comments

Comments
 (0)