export function createLocalizedMessages()

in src/lib.ts [729:764]


export function createLocalizedMessages(filename: string, bundle: ResolvedJavaScriptMessageBundle | PackageJsonMessageBundle, languageFolderName: string, i18nBaseDir: string, baseDir?: string): LocalizedMessagesResult {
	const problems: string[] = [];
	const i18nFile = (baseDir
		? path.join(i18nBaseDir, languageFolderName, baseDir, filename)
		: path.join(i18nBaseDir, languageFolderName, filename)) + '.i18n.json';

	let messages: Map<string> | undefined;
	let bundleLength = ResolvedJavaScriptMessageBundle.is(bundle) ? bundle.keys.length : Object.keys(bundle).length;
	if (fs.existsSync(i18nFile)) {
		const content = stripComments(fs.readFileSync(i18nFile, 'utf8'));
		messages = JSON.parse(content) as Map<string>;
		if (Object.keys(messages).length === 0) {
			if (bundleLength > 0) {
				problems.push(`Message file ${i18nFile.substr(i18nBaseDir.length + 1)} is empty. Missing messages: ${bundleLength}`);
			}
			messages = undefined;
		}
	} else {
		if (bundleLength > 0) {
			problems.push(`Message file ${i18nFile.substr(i18nBaseDir.length + 1)} not found. Missing messages: ${bundleLength}`);
		}
	}

	let translatedMessages: string[] | Map<string>;

	if (ResolvedJavaScriptMessageBundle.is(bundle)) {
		translatedMessages = ResolvedJavaScriptMessageBundle.asTranslatedMessages(bundle, messages, problems);
	} else {
		translatedMessages = PackageJsonMessageBundle.asTranslatedMessages(bundle, messages, problems);
	}
	if (problems.length > 0) {
		problems.unshift(`Generating localized messages for '${languageFolderName}' resulted in the following problems:`, '');
		problems.push('', '');
	}
	return { messages: translatedMessages, problems };
}