document.addEventListener('DOMContentLoaded', function() { let srtData = []; let translationData = []; // File upload handling document.addEventListener('file-uploaded', function(e) { const file = e.detail.file; const reader = new FileReader(); reader.onload = function(e) { const content = e.target.result; srtData = parseSRT(content); displayOriginalText(srtData); document.getElementById('translation-section').classList.remove('hidden'); }; reader.readAsText(file); }); // Parse SRT file content function parseSRT(content) { const lines = content.split(/\r?\n/); const result = []; let currentBlock = {}; lines.forEach(line => { line = line.trim(); if (!line) { if (currentBlock.text) { result.push(currentBlock); } currentBlock = {}; } else if (!currentBlock.number) { currentBlock.number = line; } else if (!currentBlock.timestamps) { currentBlock.timestamps = line; } else { currentBlock.text = (currentBlock.text ? currentBlock.text + '\n' : '') + line; } }); // Push the last block if exists if (currentBlock.text) { result.push(currentBlock); } return result; } // Display original text function displayOriginalText(data) { const container = document.getElementById('original-text-container'); container.innerHTML = ''; data.forEach(item => { const div = document.createElement('div'); div.className = 'srt-line'; div.innerHTML = ` ${item.number} ${item.text} `; container.appendChild(div); }); } // Copy all original text document.getElementById('copy-all-original').addEventListener('click', function() { const textToCopy = srtData.map(item => item.text).join('\n\n'); navigator.clipboard.writeText(textToCopy).then(() => { alert('All original text copied to clipboard!'); }); }); // Paste translation document.getElementById('paste-translation').addEventListener('click', function() { navigator.clipboard.readText().then(text => { document.getElementById('translation-text').value = text; }); }); // Validate translation document.getElementById('validate-btn').addEventListener('click', function() { const translationText = document.getElementById('translation-text').value; translationData = translationText.split(/\n\n/); if (translationData.length !== srtData.length) { showMismatchResults(); } else { alert('All lines match perfectly! Ready to generate SRT file.'); } }); // Show mismatch results function showMismatchResults() { const container = document.getElementById('mismatch-container'); container.innerHTML = ''; srtData.forEach((item, index) => { if (!translationData[index]) { const div = document.createElement('div'); div.className = 'mismatch-line'; div.innerHTML = `