<script type="text/javascript">
  setTimeout(() => {
    const API_KEY = "AIzaSyDqWrJqG_FUY3jQEXeI1a89sYXsRgKOMDA"; 
    let textosOriginais = {}; 

    async function traduzirPagina(destino) {
      const elementos = document.querySelectorAll("body *:not(script):not(style)");
      let textos = [];

      elementos.forEach((el, index) => {
        if (el.childNodes.length === 1 && el.childNodes[0].nodeType === 3) {
          let texto = el.innerText.trim();
          if (!textosOriginais[index]) {
            textosOriginais[index] = texto; 
          }
          if (texto) textos.push({ index, texto });
        }
      });

      if (destino === "pt") {
        elementos.forEach((el, index) => {
          if (textosOriginais[index]) {
            el.innerText = textosOriginais[index];
          }
        });
        return;
      }

      if (textos.length === 0) {
        console.warn("Nenhum texto encontrado para tradução.");
        return;
      }

      try {
        // Divide textos em lotes de 5.000 caracteres
        let lotes = [];
        let loteAtual = [];
        let caracteres = 0;

        textos.forEach(({ index, texto }) => {
          if (caracteres + texto.length > 5000) {
            lotes.push(loteAtual);
            loteAtual = [];
            caracteres = 0;
          }
          loteAtual.push({ index, texto });
          caracteres += texto.length;
        });

        if (loteAtual.length > 0) lotes.push(loteAtual);

        for (const lote of lotes) {
          const response = await fetch(`https://translation.googleapis.com/language/translate/v2?key=${API_KEY}`, {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              q: lote.map(item => item.texto),
              target: destino
            })
          });

          if (!response.ok) {
            console.error("Erro ao traduzir:", response.status, await response.text());
            return;
          }

          const data = await response.json();
          if (!data.data || !data.data.translations) {
            console.warn("Nenhuma tradução recebida.");
            return;
          }

          const traducoes = data.data.translations.map(t => t.translatedText);
          lote.forEach((item, i) => {
            elementos[item.index].innerText = traducoes[i] || item.texto;
          });
        }

      } catch (error) {
        console.error("Erro ao buscar tradução:", error);
      }
    }

    const container = document.createElement("div");
    container.style.position = "fixed";
    container.style.top = "20px";
    container.style.right = "20px";
    container.style.display = "flex";
    container.style.gap = "10px";
    container.style.zIndex = "10000";

    const idiomas = [
      { codigo: "pt", img: "https://cdn-icons-png.flaticon.com/32/197/197386.png", nome: "Português" }, 
      { codigo: "es", img: "https://cdn-icons-png.flaticon.com/32/197/197593.png", nome: "Espanhol" } 
    ];

    idiomas.forEach((idioma) => {
      const botao = document.createElement("button");
      botao.style.border = "none";
      botao.style.background = "transparent";
      botao.style.cursor = "pointer";
      
      const img = document.createElement("img");
      img.src = idioma.img;
      img.alt = idioma.nome;
      img.title = idioma.nome;
      img.style.width = "32px";
      img.style.height = "32px";
      img.style.borderRadius = "50%";
      img.style.boxShadow = "0px 2px 5px rgba(0,0,0,0.3)";

      botao.appendChild(img);
      botao.onclick = () => traduzirPagina(idioma.codigo);
      container.appendChild(botao);
    });

    document.body.appendChild(container);
  }, 3000);
</script>