fix(i18n): Beschreibung-generieren-Button + Fehler-Toasts uebersetzbar
- Button-Span enhance-btn-text bekommt data-i18n. - app.js: Loading-State Wird generiert... / Generating... per T(). - Vier Fehler-Toasts (Default, 503, 429, 504) per T() lokalisiert. - Neue Keys enhance.* in de.json + en.json. - Cache-Buster app.js auf v=20260513c gebumpt.
Dieser Commit ist enthalten in:
@@ -341,7 +341,7 @@
|
||||
<div class="description-label-row">
|
||||
<label for="inc-description">Beschreibung / Kontext <span class="info-icon tooltip-below" id="description-info-icon" data-tooltip="Beschreibe den Vorfall möglichst genau: Was ist passiert? Wo? Wer ist beteiligt? Je präziser, desto bessere Ergebnisse."><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg></span></label>
|
||||
<button type="button" class="btn btn-secondary btn-small" id="btn-enhance-description" onclick="App.generateDescription()" disabled>
|
||||
<span id="enhance-btn-text">Beschreibung generieren</span>
|
||||
<span id="enhance-btn-text" data-i18n="modal.new_incident.enhance">Beschreibung generieren</span>
|
||||
<span id="enhance-spinner" class="spinner-inline" style="display:none;"></span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -729,7 +729,7 @@
|
||||
<script src="/static/js/components.js?v=20260513a"></script>
|
||||
<script src="/static/js/layout.js?v=20260316b"></script>
|
||||
<script src="/static/js/pipeline.js?v=20260501i"></script>
|
||||
<script src="/static/js/app.js?v=20260513b"></script>
|
||||
<script src="/static/js/app.js?v=20260513c"></script>
|
||||
<script src="/static/js/cluster-data.js?v=20260322f"></script>
|
||||
<script src="/static/js/tutorial.js?v=20260316z"></script>
|
||||
<script src="/static/js/chat.js?v=20260422a"></script>
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
"modal.new_incident.title_field": "Titel des Vorfalls",
|
||||
"modal.new_incident.description": "Beschreibung / Kontext",
|
||||
"modal.new_incident.enhance": "Beschreibung generieren",
|
||||
"modal.new_incident.enhance_loading": "Wird generiert...",
|
||||
"enhance.error_default": "Beschreibung konnte nicht generiert werden",
|
||||
"enhance.error_unavailable": "KI-Zugang aktuell nicht verfügbar. Bitte Administrator kontaktieren.",
|
||||
"enhance.error_busy": "KI ist gerade ausgelastet. Bitte kurz warten und erneut versuchen.",
|
||||
"enhance.error_timeout": "KI antwortet gerade nicht. Bitte erneut versuchen.",
|
||||
"modal.new_incident.visibility": "Sichtbarkeit",
|
||||
"modal.new_incident.visibility_public": "Öffentlich",
|
||||
"modal.new_incident.visibility_private": "Privat",
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
"modal.new_incident.title_field": "Incident title",
|
||||
"modal.new_incident.description": "Description / context",
|
||||
"modal.new_incident.enhance": "Generate description",
|
||||
"modal.new_incident.enhance_loading": "Generating...",
|
||||
"enhance.error_default": "Description could not be generated",
|
||||
"enhance.error_unavailable": "AI access currently unavailable. Please contact your administrator.",
|
||||
"enhance.error_busy": "AI is currently busy. Please wait briefly and try again.",
|
||||
"enhance.error_timeout": "AI is not responding. Please try again.",
|
||||
"modal.new_incident.visibility": "Visibility",
|
||||
"modal.new_incident.visibility_public": "Public",
|
||||
"modal.new_incident.visibility_private": "Private",
|
||||
|
||||
@@ -1906,7 +1906,7 @@ async generateDescription() {
|
||||
this._enhanceController = new AbortController();
|
||||
|
||||
btn.disabled = true;
|
||||
btnText.textContent = 'Wird generiert...';
|
||||
btnText.textContent = (typeof T === 'function') ? T('modal.new_incident.enhance_loading', 'Wird generiert...') : 'Wird generiert...';
|
||||
spinner.style.display = '';
|
||||
textarea.readOnly = true;
|
||||
textarea.classList.add('textarea--loading');
|
||||
@@ -1919,15 +1919,15 @@ async generateDescription() {
|
||||
if (err.name === 'AbortError') {
|
||||
// still
|
||||
} else {
|
||||
let msg = 'Beschreibung konnte nicht generiert werden';
|
||||
if (err.status === 503) msg = 'KI-Zugang aktuell nicht verfügbar. Bitte Administrator kontaktieren.';
|
||||
else if (err.status === 429) msg = 'KI ist gerade ausgelastet. Bitte kurz warten und erneut versuchen.';
|
||||
else if (err.status === 504) msg = 'KI antwortet gerade nicht. Bitte erneut versuchen.';
|
||||
let msg = (typeof T === 'function') ? T('enhance.error_default', 'Beschreibung konnte nicht generiert werden') : 'Beschreibung konnte nicht generiert werden';
|
||||
if (err.status === 503) msg = (typeof T === 'function') ? T('enhance.error_unavailable', 'KI-Zugang aktuell nicht verfügbar. Bitte Administrator kontaktieren.') : 'KI-Zugang aktuell nicht verfügbar. Bitte Administrator kontaktieren.';
|
||||
else if (err.status === 429) msg = (typeof T === 'function') ? T('enhance.error_busy', 'KI ist gerade ausgelastet. Bitte kurz warten und erneut versuchen.') : 'KI ist gerade ausgelastet. Bitte kurz warten und erneut versuchen.';
|
||||
else if (err.status === 504) msg = (typeof T === 'function') ? T('enhance.error_timeout', 'KI antwortet gerade nicht. Bitte erneut versuchen.') : 'KI antwortet gerade nicht. Bitte erneut versuchen.';
|
||||
else if (err.status === 403) msg = err.detail || 'Zugriff verweigert.';
|
||||
UI.showToast(msg, 'error');
|
||||
}
|
||||
} finally {
|
||||
btnText.textContent = 'Beschreibung generieren';
|
||||
btnText.textContent = (typeof T === 'function') ? T('modal.new_incident.enhance', 'Beschreibung generieren') : 'Beschreibung generieren';
|
||||
spinner.style.display = 'none';
|
||||
btn.disabled = title.length < 3;
|
||||
textarea.readOnly = false;
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren