amine_dubs
Add application code and configuration for HF Space
02efbd4
raw
history blame
4.52 kB
document.addEventListener('DOMContentLoaded', () => {
const textForm = document.getElementById('text-translation-form');
const docForm = document.getElementById('doc-translation-form');
const textResultBox = document.getElementById('text-result');
const textOutput = document.getElementById('text-output');
const docResultBox = document.getElementById('doc-result');
const docOutput = document.getElementById('doc-output');
const docFilename = document.getElementById('doc-filename');
const docSourceLang = document.getElementById('doc-source-lang');
const errorMessageDiv = document.getElementById('error-message');
// Helper function to display errors
function displayError(message) {
errorMessageDiv.textContent = `Error: ${message}`;
errorMessageDiv.style.display = 'block';
// Hide result boxes on error
textResultBox.style.display = 'none';
docResultBox.style.display = 'none';
}
// Helper function to clear errors and results
function clearFeedback() {
errorMessageDiv.style.display = 'none';
errorMessageDiv.textContent = '';
textResultBox.style.display = 'none';
textOutput.textContent = '';
docResultBox.style.display = 'none';
docOutput.textContent = '';
docFilename.textContent = '';
docSourceLang.textContent = '';
}
// Handle Text Translation Form Submission
textForm.addEventListener('submit', async (event) => {
event.preventDefault();
clearFeedback();
const formData = new FormData(textForm);
const button = textForm.querySelector('button');
button.disabled = true;
button.textContent = 'Translating...';
try {
const response = await fetch('/translate/text', {
method: 'POST',
body: formData
});
if (!response.ok) {
const errorData = await response.json();
throw new Error(errorData.detail || `HTTP error! status: ${response.status}`);
}
const result = await response.json();
textOutput.textContent = result.translated_text;
textResultBox.style.display = 'block';
// Optionally update language direction based on result if needed
// textResultBox.dir = result.target_lang === 'ar' ? 'rtl' : 'ltr';
} catch (error) {
console.error('Text translation error:', error);
displayError(error.message || 'An unexpected error occurred during text translation.');
} finally {
button.disabled = false;
button.textContent = 'Translate Text';
}
});
// Handle Document Translation Form Submission
docForm.addEventListener('submit', async (event) => {
event.preventDefault();
clearFeedback();
const formData = new FormData(docForm);
const fileInput = document.getElementById('doc-input');
const button = docForm.querySelector('button');
if (!fileInput.files || fileInput.files.length === 0) {
displayError('Please select a document to upload.');
return;
}
button.disabled = true;
button.textContent = 'Translating...';
try {
const response = await fetch('/translate/document', {
method: 'POST',
body: formData // FormData handles multipart/form-data automatically
});
if (!response.ok) {
const errorData = await response.json();
throw new Error(errorData.detail || `HTTP error! status: ${response.status}`);
}
const result = await response.json();
docFilename.textContent = result.original_filename || 'N/A';
docSourceLang.textContent = result.detected_source_lang || 'N/A';
docOutput.textContent = result.translated_text;
docResultBox.style.display = 'block';
// Optionally update language direction based on result if needed
// docResultBox.dir = result.target_lang === 'ar' ? 'rtl' : 'ltr';
} catch (error) {
console.error('Document translation error:', error);
displayError(error.message || 'An unexpected error occurred during document translation.');
} finally {
button.disabled = false;
button.textContent = 'Translate Document';
}
});
});