in src/main.ts [168:206]
export function createAdditionalLanguageFiles(languages: Language[], i18nBaseDir: string, baseDir?: string, logProblems: boolean = true): ThroughStream {
return through(function (this: ThroughStream, file: File) {
// Queue the original file again.
this.queue(file);
const basename = path.basename(file.relative);
const isPackageFile = basename === 'package.nls.json';
const isAffected = isPackageFile || basename.match(/nls.metadata.json$/) !== null;
if (!isAffected) {
return;
}
const filename = isPackageFile
? file.relative.substr(0, file.relative.length - '.nls.json'.length)
: file.relative.substr(0, file.relative.length - NLS_METADATA_JSON.length);
let json;
if (file.isBuffer()) {
const buffer: Buffer = file.contents as Buffer;
json = JSON.parse(buffer.toString('utf8'));
const resolvedBundle = resolveMessageBundle(json);
languages.forEach((language) => {
const folderName = language.folderName || language.id;
const result = createLocalizedMessages(filename, resolvedBundle, folderName, i18nBaseDir, baseDir);
if (result.problems && result.problems.length > 0 && logProblems) {
result.problems.forEach(problem => log(problem));
}
if (result.messages) {
this.queue(new File({
base: file.base,
path: path.join(file.base, filename) + '.nls.' + language.id + '.json',
contents: new Buffer(JSON.stringify(result.messages, null, '\t').replace(/\r\n/g, '\n'), 'utf8')
}));
}
});
} else {
this.emit('error', `Failed to read component file: ${file.relative}`);
return;
}
});
}