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