export function createAdditionalLanguageFiles()

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;
		}
	});
}