/** * Pattern 1: FormattedMessage with id and defaultMessage * @code */ export function syncFormattedMessage({ translations, fileContent, }: { translations: Record; fileContent: string; }): { updated: false } | { updated: true; fileContent: string } { let updated = false; Object.entries(translations).forEach(([messageId, messageValue]) => { const regex = new RegExp( `(id=["']${messageId.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}["'].*?defaultMessage=)["']([^"']*?)["']`, "gs" ); if (regex.test(fileContent)) { const escapedValue = messageValue .replace(/"/g, '\\"') .replace(/\n/g, "\\n"); fileContent = fileContent.replace(regex, `$1"${escapedValue}"`); updated = true; } }); return updated ? { updated, fileContent } : { updated }; }