// Initialize the app container. const app = document.getElementById('app'); app.innerHTML = `
Services starting...
`; // Load Document Authoring SDK const script = document.createElement('script'); script.src = 'https://document-authoring-cdn.pspdfkit.com/releases/document-authoring-1.0.26-umd.js'; script.crossOrigin = true; document.head.appendChild(script); script.onload = async () => { const docAuthSystem = await DocAuth.createDocAuthSystem({}); const editor = await docAuthSystem.createEditor( document.getElementById("editor"), { document: await docAuthSystem.importDOCX(fetch('./Sample.docx')), } ); // Translation function with language parameter async function translate(content, lang) { try { const response = await fetch('/client/api/v1/chat/completions', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ messages: [ { role: "system", content: "You are a translator. Only provide the translation, no explanations or additional text." }, { role: "user", content: `Translate the following text to ${lang}: ${content}` } ], model: "gemma-2b", stream: false }) }); if (!response.ok) { throw new Error('Translation request failed'); } const data = await response.json(); return data.choices[0].message.content; } catch (error) { console.error("Translation error:", error); throw new Error("Failed to generate translation"); } } // Function to recursively translate text in the JSON structure async function translateRecursive(obj, lang) { for (let key in obj) { if (typeof obj[key] === "string" && key === "text" && obj[key].length > 0) { obj[key] = await translate(obj[key], lang); } else if (typeof obj[key] === "object") { await translateRecursive(obj[key], lang); } } } // Add translation button handler const translateButton = document.getElementById('translateButton'); const languageSelect = document.getElementById('languageSelect'); translateButton.addEventListener('click', async () => { try { const selectedLanguage = languageSelect.value; translateButton.disabled = true; translateButton.innerHTML = ' Translating...'; const jsonDoc = await editor.currentDocument().saveDocument(); await translateRecursive(jsonDoc.container.document, selectedLanguage); const translatedDoc = await docAuthSystem.loadDocument(jsonDoc); editor.setCurrentDocument(translatedDoc); } catch (error) { alert('Translation failed: ' + error.message); } finally { translateButton.disabled = false; translateButton.innerHTML = 'Translate Document'; } }); };