chore: Lokalisierung der UI-Texte ins Deutsche

- Übersetzung aller statischen Texte in der Benutzeroberfläche von Englisch nach Deutsch
- Inklusive Schaltflächen, Überschriften, Fehlermeldungen, Statusmeldungen und Tabellenüberschriften
This commit is contained in:
sebseb7
2026-04-05 00:53:27 +02:00
parent 5f26029cfe
commit e0a602135a

View File

@@ -538,7 +538,7 @@
<body>
<div class="container">
<div class="header">
<h1>🔍 Search Agent</h1>
<h1>🔍 Such-Agent</h1>
</div>
<div class="search-section">
@@ -558,45 +558,45 @@
id="questionInput"
autocomplete="off"
>
<button class="search-btn" id="searchBtn">Suche</button>
<button class="search-btn" id="searchBtn">Suchen</button>
</div>
<div class="loading" id="loading">
<div class="spinner"></div>
<p>Searching and analyzing results...</p>
<p>Suche und analysiere Ergebnisse...</p>
</div>
<div class="error" id="error"></div>
<div class="results" id="results">
<div class="result-section">
<h2>📝 Answer</h2>
<h2>📝 Antwort</h2>
<div class="answer" id="answer"></div>
</div>
<div class="result-section">
<h2>🔗 Most Relevant Sources</h2>
<h2>🔗 Relevanteste Quellen</h2>
<ul class="sources" id="sources"></ul>
</div>
<div class="result-section">
<h2>💡 Suggested Follow-up Searches</h2>
<h2>💡 Vorgeschlagene Folgesuchen</h2>
<div class="suggested-searches" id="suggestedSearches"></div>
</div>
<!-- Cost Breakdown Section -->
<div class="result-section">
<details class="cost-breakdown-details" id="costBreakdownDetails">
<summary class="cost-breakdown-summary">💰 Cost Breakdown</summary>
<summary class="cost-breakdown-summary">💰 Kostenaufschlüsselung</summary>
<div class="cost-breakdown-content">
<table class="cost-table" id="costTable">
<thead>
<tr>
<th>#</th>
<th>Type</th>
<th>Input</th>
<th>Output</th>
<th>Cost (USD)</th>
<th>Typ</th>
<th>Eingabe</th>
<th>Ausgabe</th>
<th>Kosten (USD)</th>
</tr>
</thead>
<tbody id="costTableBody">
@@ -614,9 +614,9 @@
<div style="display: flex; align-items: center; gap: 15px;">
<div class="connection-status">
<span class="status-dot" id="statusDot"></span>
<span id="statusText">Connecting...</span>
<span id="statusText">Verbinde...</span>
</div>
<button class="clear-logs-btn" id="clearLogsBtn">Clear</button>
<button class="clear-logs-btn" id="clearLogsBtn">Löschen</button>
</div>
</div>
<div class="log-container" id="logContainer">
@@ -655,8 +655,8 @@
eventSource.onopen = function() {
statusDot.className = 'status-dot connected';
statusText.textContent = 'Connected';
addLogEntry('Connected to log stream', 'info');
statusText.textContent = 'Verbunden';
addLogEntry('Mit Log-Stream verbunden', 'info');
};
eventSource.onmessage = function(event) {
@@ -690,7 +690,7 @@
eventSource.onerror = function(err) {
statusDot.className = 'status-dot disconnected';
statusText.textContent = 'Disconnected';
statusText.textContent = 'Getrennt';
console.error('SSE Error:', err);
// Attempt to reconnect after 3 seconds
@@ -764,7 +764,7 @@
async function performSearch() {
const question = questionInput.value.trim();
if (!question) {
showError('Please enter a question');
showError('Bitte geben Sie eine Frage ein');
return;
}
@@ -800,7 +800,7 @@
async function performSearchWithClarification(clarificationText) {
if (!clarificationData || !clarificationData.originalQuestion) {
showError('Clarification data not available');
showError('Klärungsdaten nicht verfügbar');
return;
}
@@ -859,13 +859,13 @@
id="clarificationSubmitBtn"
style="padding: 10px 20px; font-size: 1rem;"
>
Submit Clarification
Klärung einreichen
</button>
</div>
`;
// Clear sources since we're waiting for clarification
sourcesEl.innerHTML = '<li>Waiting for clarification...</li>';
sourcesEl.innerHTML = '<li>Warte auf Klärung...</li>';
// Add event listener for clarification submission
setTimeout(() => {
@@ -901,7 +901,7 @@
clarificationData = null;
// Display answer as HTML
answerEl.innerHTML = data.fullAnswerHTMLSnippet || '<p>No answer generated</p>';
answerEl.innerHTML = data.fullAnswerHTMLSnippet || '<p>Keine Antwort generiert</p>';
// Display sources
sourcesEl.innerHTML = '';
@@ -918,7 +918,7 @@
});
} else {
const li = document.createElement('li');
li.textContent = 'No sources available';
li.textContent = 'Keine Quellen verfügbar';
sourcesEl.appendChild(li);
}
@@ -936,7 +936,7 @@
suggestedSearchesEl.appendChild(btn);
});
} else {
suggestedSearchesEl.innerHTML = '<p style="color: #999;">No suggested searches available</p>';
suggestedSearchesEl.innerHTML = '<p style="color: #999;">Keine vorgeschlagenen Suchen verfügbar</p>';
}
// Display cost breakdown
@@ -956,7 +956,7 @@
});
} else {
const tr = document.createElement('tr');
tr.innerHTML = '<td colspan="5">No cost data available</td>';
tr.innerHTML = '<td colspan="5">Keine Kostendaten verfügbar</td>';
costTableBody.appendChild(tr);
}