Files
ohif-viewer/platform/i18n/writeLocaleIndexFiles.js

95 lines
2.5 KiB
JavaScript

const path = require('path');
const fs = require('fs');
const directoryPath = path.join(__dirname, 'src', 'locales');
const { lstatSync, readdirSync } = require('fs');
const { join } = require('path');
const isDirectory = source => lstatSync(source).isDirectory();
const getDirectories = source =>
readdirSync(source)
.map(name => join(source, name))
.filter(isDirectory);
const getJSONFiles = source =>
readdirSync(source)
.filter(name => name.includes('.json'))
.map(name => join(source, name))
.filter(a => !isDirectory(a));
const directories = getDirectories(directoryPath);
function writeFile(filepath, name, content) {
fs.writeFile(path.join(filepath, name), content, err => {
if (err) {
throw err;
}
});
}
// For each language directory
const languages = [];
directories.forEach(directory => {
const language = path.basename(directory);
languages.push(language);
const name = 'index.js';
// Create one file (index.js) inside the language folder
// For each namespace
let content = '';
const files = getJSONFiles(directory);
const namespaces = files.map(file => path.basename(file, '.json'));
files.forEach(file => {
const filename = path.basename(file);
const namespace = path.basename(file, '.json');
content += `import ${namespace} from './${filename}';\n`;
});
content += '\n';
let exportLines = `export default { \n '${language}': {\n`;
namespaces.forEach(namespace => {
exportLines += ` ${namespace},\n`;
});
exportLines += ' }\n};\n';
content += exportLines;
// If the file {namespace}.json is present,
// create a file to import the namespace and
// export all of the namespaces for the language
// e.g.
// import namespace from './{namespace}.json';
// export { namespace1, namespace2, ... }
writeFile(directory, name, content);
});
let fileContent = '';
const languageVariables = languages.map(language => {
const languageVariable = language.replace('-', '_');
fileContent += `import ${languageVariable} from './${language}/';\n`;
return languageVariable;
});
fileContent += '\n';
fileContent += 'export default {\n';
languageVariables.forEach(language => {
fileContent += ` ...${language},\n`;
});
fileContent += '};\n';
// Create one file (index.js) inside the locales folder
// which exports each of the languages
// e.g.
// import language1 from './{language1}/'
// import language2 from './{language2}/'
//
// export { language1, language2 }
writeFile(directoryPath, 'index.js', fileContent);