function translateSpecificPhrase() {
// Define the French phrase and its English translation const frenchPhrase = "Cliquez sur Commander puis patientez quelques secondes pour payer par Carte"; const englishTranslation = "Click on Order and wait a few seconds to pay by Card";
// Find all elements on the page const allElements = document.querySelectorAll('*');
allElements.forEach((el) => { // Check if the element contains only text if (el.childNodes.length === 1 && el.firstChild.nodeType === Node.TEXT_NODE) { let originalText = el.textContent.trim();
// If the text matches the French phrase, replace it with the English translation if (originalText === frenchPhrase) { el.textContent = englishTranslation; } } }); }
function translateWooCommerceErrors() { console.log("called error function") const errorElements = document.getElementsByClassName('woocommerce-error');
Array.from(errorElements).forEach(async (errorElement) => { if (!errorElement.dataset.translated) { // Prevent multiple translations errorElement.dataset.translated = true;
// Create and show a loader const loader = document.createElement('div'); loader.className = 'translation-loader'; loader.style.position = 'absolute'; loader.style.top = '0'; loader.style.left = '0'; loader.style.width = '100%'; loader.style.height = '100%'; loader.style.background = 'rgba(255, 255, 255, 0.8)'; loader.style.display = 'flex'; loader.style.justifyContent = 'center'; loader.style.alignItems = 'center'; loader.style.zIndex = '1000'; loader.innerHTML = '
';
errorElement.style.position = 'relative'; errorElement.appendChild(loader);
// Function to translate text nodes only const translateTextNodes = async (node) => { if (node.nodeType === Node.TEXT_NODE && node.textContent.trim()) { let originalText = node.textContent.trim();
try { let response = await fetch( `https://translate.googleapis.com/translate_a/single?client=gtx&sl=fr&tl=en&dt=t&q=${encodeURIComponent(originalText)}` ); let result = await response.json();
if (Array.isArray(result) && result[0] && result[0][0] && result[0][0][0]) { let translatedText = result[0][0][0]; node.textContent = translatedText; // Replace only the text, preserving HTML } } catch (error) { console.error("Translation Error:", error); } } else if (node.nodeType === Node.ELEMENT_NODE) { node.childNodes.forEach(translateTextNodes); // Recursively process child nodes } };
await translateTextNodes(errorElement);
// Remove the loader after translation is complete loader.remove(); } }); }
// Observe for dynamically added woocommerce-error elements const observer = new MutationObserver(() => { translateWooCommerceErrors(); });
observer.observe(document.body, { childList: true, subtree: true });
function translateFooterContent() { console.log("Fotter called") if (window.location.href.includes('checkout')) { const footerElement = document.querySelector('#colophon');
if (footerElement && !footerElement.dataset.translated) { // Prevent multiple translations footerElement.dataset.translated = true;
// Create and show loader const loader = document.createElement('div'); loader.className = 'footer-translation-loader'; loader.style.position = 'absolute'; loader.style.top = '0'; loader.style.left = '0'; loader.style.width = '100%'; loader.style.height = '100%'; loader.style.background = 'rgba(255, 255, 255, 0.8)'; loader.style.display = 'flex'; loader.style.justifyContent = 'center'; loader.style.alignItems = 'center'; loader.style.zIndex = '1000'; loader.innerHTML = '
'; // Customize spinner as needed
footerElement.style.position = 'relative'; footerElement.appendChild(loader);
// Recursive function to translate text nodes const translateTextNodes = async (node) => { if (node.nodeType === Node.TEXT_NODE && node.textContent.trim()) { let originalText = node.textContent.trim();
try { let response = await fetch( `https://translate.googleapis.com/translate_a/single?client=gtx&sl=fr&tl=en&dt=t&q=${encodeURIComponent(originalText)}` ); let result = await response.json();
if (Array.isArray(result) && result[0] && result[0][0] && result[0][0][0]) { let translatedText = result[0][0][0]; node.textContent = translatedText; // Replace only the text, preserving HTML structure } } catch (error) { console.error("Footer Translation Error:", error); } } else if (node.nodeType === Node.ELEMENT_NODE) { node.childNodes.forEach(translateTextNodes); // Recursively process all child nodes } };
// Start translating the footer content translateTextNodes(footerElement).then(() => { // Remove loader after translation is complete loader.remove(); }); } }
}