Download SVG country flags and css, then convert the codes from the iso 3166 two character codes to three character codes.
./get_flags.sh
Then copy the flag-icon.css
file into public/css
and the flags
directory to public/
.
/* globals require, console */ | |
'use strict'; | |
var fs = require('fs'); | |
var path = require('path'); | |
var process = require('process'); | |
// destination output | |
var destDir = 'flags'; | |
try { | |
fs.mkdirSync(destDir); | |
} catch (err) { | |
if (err.code !== 'EEXIST') { | |
console.error(err); | |
process.exit(1); | |
} | |
} | |
// read mappings | |
var contents = fs.readFileSync('iso-3166.json', 'utf8'); | |
var iso3166 = JSON.parse(contents); | |
var mappings = {}; | |
for (var i = 0; i < iso3166.length; i++) { | |
var key = iso3166[i]['alpha-2'].toLowerCase(); | |
var val = iso3166[i]['alpha-3'].toLowerCase(); | |
mappings[key] = val; | |
} | |
// rename svg files | |
var flagDir = 'flag-icon-css-0.8.4/flags/4x3'; | |
var files = fs.readdirSync(flagDir); | |
for (var i = 0; i < files.length; i++) { | |
var f = files[i]; | |
var src = path.join(flagDir, f); | |
var file = path.parse(f); | |
var newName = mappings[file.name] + file.ext; | |
var dst = path.join(destDir, newName); | |
fs.createReadStream(src).pipe(fs.createWriteStream(dst)); | |
} | |
// create the css | |
var cssFile = 'flag-icon-css-0.8.4/css/flag-icon.css'; | |
var content = fs.readFileSync(cssFile, 'utf-8'); | |
for (var twoChar in mappings) { | |
if (mappings.hasOwnProperty(twoChar)) { | |
var threeChar = mappings[twoChar]; | |
var re = new RegExp('.*\.flag-icon-squared {\n.*\n}\n'); | |
content = content.replace(re, ''); | |
re = new RegExp('4x3/' + twoChar + '\.svg'); | |
content = content.replace(re, threeChar + '.svg'); | |
re = new RegExp('flag-icon-' + twoChar + ' '); | |
content = content.replace(re, 'flag-icon-' + threeChar + ' '); | |
} | |
} | |
fs.writeFileSync('flag-icon.css', content, 'utf8') |
#!/bin/bash | |
echo 'Downloading ISO 3166 mappings..' | |
curl -sL -o iso-3166.json https://raw.githubusercontent.com/lukes/ISO-3166-Countries-with-Regional-Codes/master/all/all.json | |
echo 'Downloading SVG icon flags...' | |
curl -sL https://github.com/lipis/flag-icon-css/archive/0.8.4.tar.gz | tar xzf - | |
echo 'Converting ISO 3166 codes from 2 character codes to 3 character codes..' | |
node ./convert_codes.js | |
echo 'Cleaning up...' | |
rm iso-3166.json | |
rm -rf flag-icon-css-0.8.4 | |
echo 'SVG flags are in the "flags" directory and style sheet is "flag-icon.css"' |
Thank you @jgoodall, Good script. I had to modify it to change lines 30 and 42 from this directory:
flag-icon-css-0.8.4/
To this:
flag-icons-0.8.4/
But worked well after that.