Live Chat Language Translator for Global Support

Live Chat Language Translator

Bridge communication gaps with real-time translation for global support.

Chat Transcript

Conversation will appear here...

Controls

Press Shift+Enter for new line

${lastMessage.sender}

${lastMessage.originalText}

(${lastMessage.translatedText})

`; chatWindow.appendChild(messageEl); chatWindow.scrollTop = chatWindow.scrollHeight; }; const handleDownloadPdf = () => { const pdfContentEl = document.getElementById('pdf-content'); if (!pdfContentEl) return; document.getElementById('pdf-timestamp').textContent = new Date().toLocaleString('en-US'); document.getElementById('pdf-language-info').textContent = `Agent: ${agentLangSelect.value}, Customer: ${customerLangSelect.value}`; document.getElementById('pdf-chat-list').innerHTML = chatHistory.map(msg => `

${msg.sender} (${msg.originalLang})

${msg.originalText}

Translation (${msg.translatedLang}): ${msg.translatedText}

`).join(''); pdfContentEl.classList.remove('hidden'); html2canvas(pdfContentEl, { scale: 2 }).then(canvas => { pdfContentEl.classList.add('hidden'); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'portrait', unit: 'pt', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const margin = 40; const imgWidth = pdfWidth - (margin * 2); const imgHeight = (canvas.height * imgWidth) / canvas.width; pdf.addImage(imgData, 'PNG', margin, margin, imgWidth, imgHeight); pdf.save('chat-transcript.pdf'); }).catch(err => { console.error("Error generating PDF:", err); pdfContentEl.classList.add('hidden'); }); }; // --- Event Listeners --- sendBtn.addEventListener('click', handleSendMessage); messageInput.addEventListener('keydown', (e) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); handleSendMessage(); } }); pdfBtn.addEventListener('click', handleDownloadPdf); });
Scroll to Top