• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

kaysiebke

Mitglied
Ich habe eine Übersetzungsfunktion für einen Tooltip in einem Formular erstellt. Die Funktion basiert auf JavaScript und nutzt ein Übersetzungsobjekt (translations), um Inhalte dynamisch zu ändern, wenn die Sprache gewechselt wird.

Das Problem: Der Tooltip-Inhalt wird nicht korrekt aktualisiert, obwohl andere Elemente wie Labels und Buttons erfolgreich übersetzt werden.

Hier ist der relevante Code:

HTML:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Tooltip Übersetzung</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <!-- Tooltip-Container -->
  <div id="tooltip-container" class="tooltip-container">
    <button id="tooltip-button" aria-describedby="tooltip-content">
      Tooltip anzeigen
    </button>
    <div id="tooltip-content" class="tooltip" role="tooltip">
      <p id="tooltip-description">Standardtext für den Tooltip</p>
      <ul>
        <li id="language-selection-info">Sprache auswählen</li>
        <li id="sku-info">SKU eingeben</li>
        <li id="description-info">Beschreibung eingeben</li>
        <li id="color-size-info">Farbe und Größe eingeben</li>
      </ul>
    </div>
  </div>

  <!-- Sprachwechsel-Buttons -->
  <div id="language-switch">
    <button class="language-button" data-lang="DE">Deutsch</button>
    <button class="language-button" data-lang="EN">Englisch</button>
  </div>

  <script src="script.js"></script>
</body>
</html>

Javascript:
const translations = {
  DE: {
    tooltip: {
      intro: "Dies ist der Tooltip auf Deutsch.",
      fields: {
        language: "Sprache auswählen.",
        sku: "Geben Sie die SKU ein.",
        description: "Beschreibung eingeben.",
        colorSize: "Farbe und Größe angeben.",
      },
    },
  },
  EN: {
    tooltip: {
      intro: "This is the tooltip in English.",
      fields: {
        language: "Select the language.",
        sku: "Enter the SKU.",
        description: "Enter the description.",
        colorSize: "Specify the color and size.",
      },
    },
  },
};

function updateTooltip(languageCode) {
  const langData = translations[languageCode]?.tooltip;
  if (!langData) return;

  // Aktualisiere Tooltip-Inhalte
  document.getElementById("tooltip-description").innerText = langData.intro;
  document.getElementById("language-selection-info").innerText = langData.fields.language;
  document.getElementById("sku-info").innerText = langData.fields.sku;
  document.getElementById("description-info").innerText = langData.fields.description;
  document.getElementById("color-size-info").innerText = langData.fields.colorSize;
}

// Event-Listener für Sprachwechsel
document.querySelectorAll(".language-button").forEach((button) => {
  button.addEventListener("click", () => {
    const lang = button.getAttribute("data-lang");
    updateTooltip(lang);
  });
});
 
Hallo Oliver77,danke für dein Link. Mein Problem ist das, wenn ich mein Formular die Sprache wechsel, dass zwar mein Label die entsprechende Sprach ändern, aber mein Tooltip nicht, obwohl ich die entsprechenden IDs gesetzt habe, damit es die Sprach abrufen kann aus dem JavaScript.
Da ich kein großartiger erklär, Bär bin hab ich mal das ganze auf codepen gesetzt
https://codepen.io/Kay-Siebke/pen/WbeexjK
 
Zuletzt bearbeitet:
Au Mann ist das viel Code, aber da sind Fehler drin.
Javascript:
 error: null // fehlt Komma
tooltip: {

Funktion hat keinen Namen
Javascript:
function (event) {
  const selectedLanguage = event.target.closest("button").getAttribute("data-lang");
  if (selectedLanguage) {
    applyLanguage(selectedLanguage);
  }
}
 
Danke Oliver 77 für deine guten Augen.Sobalt ich Zeit habe werde ich mich der vehler Korrektur annehmen !Ich weiß daß mein Java Script und html Bereich sehr umfangreich ist, dafür entschuldige ich mich viel mals.Deswegen habe ich es auch auf codpen gesetzt.
 
Zuletzt bearbeitet:
Danke Oliver77 für den Tipp mit dem NetBeans Editor. Mus mal schauen, ob das auch unter Linux zu installieren geht,

Ich habe deine Anmerkungen zu meinen Fehlern von dir umgesetzt und korrigiert. Funktioniert aber bisher immer noch nicht das ganze, aber danke für deine hinweise
 
Zuletzt bearbeitet:
Danke an alle für die Tipps. . Ich habe noch malle alle so gut es geht überarbeitet und die genannten Fehler behoben. Zusätzlich habe ich für die Problemfindung alles, was mit den Labels zu tun hat und funktioniert bei CodePen herausgenommen. Oliver77 ich habe dein Vorschlag aufgegriffen und gestern Nacht mal NetBeans bei mir installiert. Oliver77 da Sie sich mit NetBeans so gut auskennen, könnten sie vielleicht mal mein Java Script Bereich prüfen. Ich mus mich erst noch mit NetBeans einfuchsen, da ich mich damit noch nicht auskenne.

CodePen Beispiel
 
Zuletzt bearbeitet:
Du hast die Objekte, die verschachtelt sind, nicht korrekt aufgerufen:
Javascript:
  document.getElementById("sku-label").textContent = translation.sku; // falsch
 document.getElementById("sku-label").textContent = translation.tooltip.fields.sku // richtig

Die Hierarchie muss eingehalten werden!
 
Zuletzt bearbeitet:
Danke für den Hinweis Oliver77,dies werde ich beim zusamenstzen meines Java shripts Berücksichtigen.denn jetzt scheint endlich die Übersetzung des tooltips (ohne die Label) zu funktionieren
 
Zuletzt bearbeitet:
Zurück
Oben