From 257aab08ddb731087fc07cff623e39959e4d0b73 Mon Sep 17 00:00:00 2001 From: mhoennig Date: Mon, 24 Aug 2026 12:56:16 +0200 Subject: [PATCH] =?UTF-8?q?feat(news):=20=C3=BCbersetzter=20Hinweis=20auf?= =?UTF-8?q?=20die=20englischen=20Notizen,=20optisch=20zur=C3=BCckgenommen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wer die Oberfläche auf Japanisch stehen hat, sah einen japanischen Rahmen um englische Sätze — das kann man für eine fehlende Übersetzung halten. Ein Satz oben im Popup sagt jetzt, dass es Absicht ist, in allen neun Sprachen; klein und grau, damit er hinter dem Inhalt zurücksteht, zu dem er gehört. Bei englischer Oberfläche entfällt er. SPEC §9 und D58-Nachtrag. Co-Authored-By: Claude Opus 5 --- docs/DECISIONS.md | 17 +++++++++++++++++ docs/SPEC.md | 6 +++++- frontend/src/app.js | 17 ++++++++++++++++- frontend/src/style.css | 4 ++++ 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md index ca7e72b..30946a5 100644 --- a/docs/DECISIONS.md +++ b/docs/DECISIONS.md @@ -4185,3 +4185,20 @@ vollständig im Bild und wird an beiden Kanten getroffen (`elementFromPoint`), die Kopfzeile bleibt einreihig. 20 neue Tests in `frontend/tests/news.test.js`, darunter einer, der die **ausgelieferte** `docs/CHANGELOG.md` liest — ist sie unlesbar, stünde das Popup sonst leer da, ohne dass es jemand merkt. + +**Nachtrag — ein übersetzter Hinweis sagt, dass die Notizen englisch sind.** +Der Haupttext oben begründet die englischen Notizen und lässt den Betrachter +damit allein: Wer die Oberfläche auf Japanisch stehen hat, sieht einen +japanischen Rahmen um englische Sätze und kann das für einen Fehler halten — +für eine fehlende Übersetzung oder einen kaputten Sprachwechsel. Ein Satz +oben im Popup nimmt dem die Spitze: „Diese Übersicht wird leider nur auf +Englisch gepflegt", in allen neun Sprachen. + +**Er tritt optisch zurück** (klein, grau, ohne Rahmen und ohne Fläche): Es ist +eine Fußnote zum Inhalt, nicht der Inhalt. Der bernsteinfarbene +Besuchsvergleich darunter bleibt damit das erste, worauf der Blick fällt. + +**Bei englischer Oberfläche entfällt er** — dort wäre es eine Auskunft über +nichts. Der Schlüssel ist trotzdem in allen neun Sprachen angelegt, auch auf +Englisch: Ein Loch in der Tabelle lädt dazu ein, beim nächsten Durchsehen für +einen Fehler gehalten und „repariert" zu werden. diff --git a/docs/SPEC.md b/docs/SPEC.md index c0ea1b1..31e0177 100644 --- a/docs/SPEC.md +++ b/docs/SPEC.md @@ -690,7 +690,11 @@ gemerkt. Die **Notizen sind englisch**, auch wenn die Oberfläche in einer anderen Sprache steht: `docs/CHANGELOG.md` ist ein ausgeliefertes Artefakt mit weltweitem Publikum, wie der mitgelieferte Plan und `llms.md` (§13). Übersetzt ist alles -übrige — Titel, Knöpfe und die Datumsangaben. Siehe D58. +übrige — Titel, Knöpfe und die Datumsangaben. Damit das nicht wie ein Fehler +aussieht, steht **oben im Popup ein übersetzter Hinweis**, dass diese Übersicht +nur auf Englisch gepflegt wird; er ist klein und grau gehalten und tritt hinter +den Inhalt zurück, zu dem er gehört. Bei englischer Oberfläche entfällt er. +Siehe D58. ### Sprung zwischen Diagramm und Text Jeder Knoten kennt seine Zeilennummer im Notationstext; beide Richtungen sind diff --git a/frontend/src/app.js b/frontend/src/app.js index 1bb4e90..1e4c619 100644 --- a/frontend/src/app.js +++ b/frontend/src/app.js @@ -1906,6 +1906,7 @@ const I18N = { freshTooltip:"Neu in Produktion seit dem letzten Ansehen: {n}.", newsTooltip:"Neuigkeiten", newsTitle:"Neuigkeiten", + newsEnglish:"Diese Übersicht wird leider nur auf Englisch gepflegt.", newsEmpty:"Keine Einträge.", newsUnseen:"Neuigkeiten aus {n} Tagen, die du noch nicht angesehen hast.", newsSince:"Seit deinem letzten Besuch: {n} neu in Produktion.", @@ -2005,6 +2006,7 @@ const I18N = { freshTooltip:"New in production since you last looked: {n}.", newsTooltip:"What's new", newsTitle:"What's new", + newsEnglish:"This overview is only maintained in English.", newsEmpty:"Nothing recorded.", newsUnseen:"News from {n} days you haven't looked at yet.", newsSince:"Since your last visit: {n} new in production.", @@ -2104,6 +2106,7 @@ const I18N = { freshTooltip:"Nuevo en producción desde la última vez: {n}.", newsTooltip:"Novedades", newsTitle:"Novedades", + newsEnglish:"Lamentablemente, este resumen solo se mantiene en inglés.", newsEmpty:"Sin entradas.", newsUnseen:"Novedades de {n} días que aún no has visto.", newsSince:"Desde tu última visita: {n} nuevo en producción.", @@ -2203,6 +2206,7 @@ const I18N = { freshTooltip:"Nouveau en production depuis votre dernière visite : {n}.", newsTooltip:"Nouveautés", newsTitle:"Nouveautés", + newsEnglish:"Cet aperçu n'est malheureusement tenu à jour qu'en anglais.", newsEmpty:"Aucune entrée.", newsUnseen:"Nouveautés de {n} jours que vous n'avez pas encore consultées.", newsSince:"Depuis votre dernière visite : {n} nouveau en production.", @@ -2302,6 +2306,7 @@ const I18N = { freshTooltip:"Nowe na produkcji od ostatniego razu: {n}.", newsTooltip:"Nowości", newsTitle:"Nowości", + newsEnglish:"Niestety to zestawienie jest prowadzone tylko po angielsku.", newsEmpty:"Brak wpisów.", newsUnseen:"Nowości z {n} dni, których jeszcze nie oglądałeś.", newsSince:"Od twojej ostatniej wizyty: {n} nowe na produkcji.", @@ -2401,6 +2406,7 @@ const I18N = { freshTooltip:"Новое в продакшене с прошлого раза: {n}.", newsTooltip:"Новости", newsTitle:"Новости", + newsEnglish:"К сожалению, этот обзор ведётся только на английском языке.", newsEmpty:"Записей нет.", newsUnseen:"Новости за {n} дней, которые вы ещё не просматривали.", newsSince:"С вашего последнего визита: {n} новых в продакшене.", @@ -2500,6 +2506,7 @@ const I18N = { freshTooltip:"पिछली बार से उत्पादन में नया: {n}।", newsTooltip:"नया क्या है", newsTitle:"नया क्या है", + newsEnglish:"खेद है, यह विवरण केवल अंग्रेज़ी में ही रखा जाता है।", newsEmpty:"कोई प्रविष्टि नहीं।", newsUnseen:"{n} दिनों की खबरें, जो आपने अभी तक नहीं देखीं।", newsSince:"आपकी पिछली यात्रा से: {n} उत्पादन में नए।", @@ -2599,6 +2606,7 @@ const I18N = { freshTooltip:"自上次查看以来新上线:{n}。", newsTooltip:"最新动态", newsTitle:"最新动态", + newsEnglish:"很抱歉,此更新列表仅以英文维护。", newsEmpty:"暂无记录。", newsUnseen:"有 {n} 天的动态你还没有看过。", newsSince:"自你上次访问以来:{n} 项新上线。", @@ -2698,6 +2706,7 @@ const I18N = { freshTooltip:"前回以降に本番化されたもの:{n} 件。", newsTooltip:"更新情報", newsTitle:"更新情報", + newsEnglish:"申し訳ありませんが、この一覧は英語でのみ更新されます。", newsEmpty:"項目はありません。", newsUnseen:"まだ見ていない {n} 日分の更新があります。", newsSince:"前回の訪問以降:{n} 件が本番化されました。", @@ -3333,6 +3342,12 @@ function updateFreshBtn(){ } function renderNewsMenu(){ + /* Die Notizen sind englisch (D58) — wer die Oberfläche auf Japanisch stehen + hat, soll wissen, dass das Absicht ist und kein Fehler. Nicht für + englische Oberflächen: Dort wäre es eine Auskunft über nichts. Und optisch + zurückgenommen — es ist eine Fußnote zum Inhalt, nicht der Inhalt. */ + const hinweis = (lang !== 'en' && NEWS.length) + ? `
${esc(t('newsEnglish'))}
` : ''; const seit = (!newsKeySet && freshDocId === activeId && freshSet.size) ? `
${esc(t('newsSince', {n: freshSet.size}))}` + `
` @@ -3358,7 +3373,7 @@ function renderNewsMenu(){ newsMenu.innerHTML = `
${esc(t('newsTitle'))}` + `
` - + seit + (tage || `
${esc(t('newsEmpty'))}
`); + + hinweis + seit + (tage || `
${esc(t('newsEmpty'))}
`); } function openNewsMenu(){ renderNewsMenu(); diff --git a/frontend/src/style.css b/frontend/src/style.css index d6fc4a3..fd06af5 100644 --- a/frontend/src/style.css +++ b/frontend/src/style.css @@ -115,6 +115,10 @@ color:var(--muted);font-size:1rem;line-height:1;padding:2px 4px;border-radius:6px; } .newshead .newsclose:hover{color:var(--ink);background:rgba(36,52,71,.07)} + /* Fußnote zur Sprache der Notizen (D58-Nachtrag): klein, grau, ohne Rahmen + und ohne Fläche — sie soll gelesen werden können, aber hinter dem Inhalt + zurückstehen, zu dem sie gehört. */ + .newsnote{margin-top:7px;color:var(--muted);font-size:.73rem;line-height:1.45} /* „Seit deinem letzten Besuch" (D28) — die persönliche Hälfte, deshalb bernstein abgesetzt und oben, vor der allgemeinen Chronik. */ .newssince{