Hinzugefügt
- Ein Theme zeigt die Sprachauswahl mit einer Zeile an:
nf_selecteur_langue(), nebennf_selecteur_theme()undnf_liens_legaux(). Die mitgelieferten Themes kopierten jeweils ihr Formular. - Die Dokumentation und die Versionshinweise, in allen sechs Sprachen. Die Wiki-Anleitungen — Installation, erste Schritte, Administration, Marketplace, mehrsprachige Website, Discord-Bot, Framework, ein Theme, ein Modul oder ein Widget erstellen — gab es nur auf Französisch und Englisch: Sie sind jetzt auch auf Deutsch, Spanisch, Italienisch und Portugiesisch geschrieben, mit den genauen Bezeichnungen, die der Bildschirm in jeder Sprache zeigt, und das Wiki liefert sie in der Sprache des Besuchers aus. Die Versionshinweise folgen: Die Wiki-Seite „Versionshinweise“ und die Blogbeiträge lassen sich in allen sechs Sprachen lesen. Maßgeblich bleibt das Französische; ein Test lehnt eine Übersetzung ab, die eine Version auslässt oder anders datiert.
- Die Vorschaubilder der Module und Widgets, neu gezeichnet. In Themes & Addons und im Marketplace war die Vorschau einer Erweiterung ein Foto von ihr bei der Arbeit — unlesbar, wenn sie keine Daten zu zeigen hatte: ein Rahmen, ein Titel, ein paar Zeilen. Jedes Modul und jedes Widget erhält jetzt eine gezeichnete Karte in der Bildsprache des Projekts: sein Symbol, sein Name und was es tut, in jeder Größe lesbar. Die Themes behalten das Foto ihrer Startseite: Ein Theme zeigt sich selbst.
- Die mitgelieferten Bibliotheken auf dem neuesten Stand, und eine Schutzvorrichtung, damit sie es bleiben. Der Texteditor wechselt zu TinyMCE 8 (die Reihe 7 verlor am 14. November ihre Unterstützung, und 8.9.3 behob eine Lücke in ihrem Plugin „media“) und die Symbole zu Font Awesome 7 — die 363 Symbole, die die Website verwendet, wurden vor dem Umstieg mit der neuen Sammlung abgeglichen, keines fehlt. Die doppelten Schriftdateien (.ttf) entfallen: Version 7 liefert nur noch das moderne Format, 715 KB weniger im Paket. Vor allem wacht eine neue Prüfung: Sie schlägt nicht bei jeder Veröffentlichung der Upstream-Projekte Alarm, lehnt aber ab, wenn die ausgelieferten Versionen seit mehr als drei Monaten nicht mit dem Register abgeglichen wurden. Eine Abhängigkeit wird nicht auf einen Schlag gefährlich — sie driftet ab, und diese Drift ist jetzt sichtbar.
- Push-Benachrichtigungen. Ein Mitglied kann seine Benachrichtigungen im Browser erhalten, auch wenn die Website geschlossen ist: eine Forennachricht, eine Reaktion, eine Erinnerung an ein Event. Der Administrator bietet es an (Einstellungen → Allgemeine Einstellungen → Push-Benachrichtigungen); jedes Mitglied schaltet es dann Gerät für Gerät in seinen Benachrichtigungseinstellungen ein, wählt Typ für Typ, was es auf diesem Weg erhält, und kann sich einen Test schicken. Ohne zusätzliche Bibliothek: Die Nachricht wird für diesen einen Browser verschlüsselt (RFC 8291) und im Namen der Website signiert (VAPID, RFC 8292) — der Push-Dienst des Browsers überträgt sie, ohne sie lesen zu können. Der Server schreibt nur an bekannte Push-Dienste (Google, Mozilla, Apple, Microsoft), nie an eine Adresse, die sich ein Mitglied ausgedacht haben könnte.
- Nebula und das Schaufenster-Theme erhalten eine Farbseite, und alle acht Themes eine Live-Vorschau. Akzent, Hintergrund, Text: Die Paletten von Nebula und des Schaufensters standen in ihren Stylesheets; sie lassen sich jetzt wie die der sechs anderen Themes einstellen, mit derselben Ablehnung einer unlesbaren Farbe. Und unter den Farbwählern jedes Themes übernimmt eine echte Seite der Website — Startseite, News oder Forum — die Farben, während man sie wählt, ohne etwas zu speichern, mit live gemessenen Kontrasten: Man sieht das Ergebnis, bevor man auf „Speichern“ klickt.
- Menülinks, öffentliche Räume, der eigene Titel eines Widgets und die Wiki-Seiten werden übersetzt. Damit bleibt kein Text, den der Betreiber schreibt, mehr ohne Sprache. Eine Wiki-Seite führt einen Verlauf PRO SPRACHE: Eine Übersetzung ins Italienische archiviert nichts von der französischen Fassung, und der italienische Verlauf zeigt nur seine eigenen Revisionen. Eine Unterhaltung zwischen Mitgliedern behält einen einzigen Namen für alle Beteiligten — nur öffentliche Räume werden übersetzt. Die Wiki-Seite „Versionshinweise“ gibt es jetzt auch auf Englisch.
- Shop, Spenden, Werbung, Zahlungspakete und Rekrutierung werden übersetzt. Name und Beschreibung eines Shop-Artikels, Titel und Beschreibung einer Spendenkampagne, der Titel einer Werbung, die Bezeichnung eines Pakets und ein ganzes Rekrutierungsangebot — Titel, Einleitung, Beschreibung, Voraussetzungen und die Fragen seines Bewerbungsformulars — werden jetzt Sprache für Sprache geschrieben. Die Fragen hatten keinen Bildschirm, um sie zu bearbeiten (man konnte sie nur hinzufügen oder löschen): Ein Stift öffnet sie jetzt, und dort werden sie übersetzt. Gemeinsam bleibt, was kein Text ist: der Preis, der Bestand, die Adresse einer Kampagne, der Code eines Werbenetzes, die im Team vergebene Rolle — und die Antworten der Bewerber, die die Frage so behalten, wie sie sie gelesen haben.
- Spielmodi, Karten, Sendungen des Webradios und Profilfelder werden übersetzt. „Compétitif 5v5“ wird für einen englischsprachigen Besucher zu „Competitive 5v5“, „Le réveil du serveur“ zu „The server wake-up“, und die Bezeichnung eines Profilfelds wird in jeder Sprache geschrieben. Ein Kartenname bleibt ein Eigenname, wird aber ebenfalls pro Sprache geschrieben, für wen „Faille de l'invocateur“ übersetzen möchte. Eine Entscheidung ist getroffen, und der Bildschirm sagt es: Die LISTE DER OPTIONEN eines Profilfelds bleibt gemeinsam — eine Option wird unverändert in der Antwort des Mitglieds gespeichert, und sie zu übersetzen, würde die bereits gegebenen Antworten unauffindbar machen.
- Event-Typen, Team-Rollen und Rubriken der Kleinanzeigen werden übersetzt. „Turnier“, „Kapitän“, „Hardware“: drei kurze Namen, die der Betreiber schreibt und die eine Website in sechs Sprachen in nur einer zeigte. Sie werden jetzt Sprache für Sprache geschrieben, und Besucher sehen sie überall in ihrer eigenen Sprache — in der Eventliste und auf den Eventseiten, im Kalender, in der Aufstellung eines Teams, im Verzeichnis der Kleinanzeigen und in den Administrationsbildschirmen.
- Eine Umfrage lässt sich bearbeiten, ohne ihre Stimmen zu verlieren — und sie lässt sich übersetzen. Bisher löschte das Speichern einer Umfrage alle ihre Antworten, um sie neu anzulegen, und mit ihnen alle STIMMEN: Ein Komma in der Frage zu korrigieren, kostete die ganze Umfrage (der Bildschirm sagte es, was es nicht billiger machte). Eine Antwort behält jetzt ihre Stimmen, solange sie in der Liste bleibt — korrigiert, verschoben oder übersetzt; nur eine ENTFERNTE Antwort verliert sie, und der Bildschirm sagt es mit ihrer Anzahl. Erst das macht eine Umfrage übersetzbar: die Frage, ihre Beschreibung und die Bezeichnung jeder Antwort werden Sprache für Sprache geschrieben, und das Schreiben der italienischen Fassung berührt die französische nicht mehr.
- Downloads, nützliche Links und die FAQ werden übersetzt. Titel und Beschreibung einer Datei oder eines Links, eine Frage und ihre Antwort sowie die Titel ihrer Kategorien hatten keine Sprache: Eine Website in sechs Sprachen zeigte sie in nur einer — sichtbar auf der englischen Demo, die „Pack de fonds d'écran“ und „Chaîne Twitch“ ankündigte. Sie werden jetzt Sprache für Sprache geschrieben, wie News oder Events: Der Bearbeitungsbildschirm öffnet die Sprache, in der man arbeitet, und sagt, welche, und Besucher sehen sie in ihrer Sprache — in der Bibliothek, im Linkverzeichnis, in den Widgets und in den Blöcken. Was keine Sprache hat (Adresse, Größe, Typ, Version, Zähler), bleibt gemeinsam, und was nur in einer Sprache geschrieben ist, bleibt in den fünf anderen sichtbar.
- Eine Theme-Farbe, die die Website unlesbar machen würde, wird abgelehnt. Die sechs Themes, bei denen man Akzent-, Text- und Hintergrundfarbe wählen kann, nahmen alles an: einen Akzent, der fast dem Hintergrund glich, und Links und Schaltflächen verschwanden; einen zu blassen Text, und die Seite war nicht mehr lesbar. Nichts warnte davor, und man musste die vorherige Farbe selbst wiederfinden. Jede Farbe wird jetzt an den beiden anderen gemessen — den gespeicherten, da die beiden Formulare getrennt speichern — und mit ihrem Wert abgelehnt, wenn sie sich nicht genug abhebt: 4,5 zu 1 für Text, 3 zu 1 für einen Akzent, wie es der Barrierefreiheitsstandard verlangt. Die Originalfarben aller neun Themes bestehen die Prüfung.
- Die mitgelieferten Bibliotheken aktualisiert. Der Texteditor (TinyMCE 7.6.1 → 7.9.3, das einen neueren HTML-Bereiniger mitbringt), die Statistikdiagramme (Chart.js 4.4.7 → 4.5.1) und die Auswahllisten (Tom Select 2.6.1 → 2.6.2). Die drei anderen — Bootstrap, flatpickr, Sortable — waren bereits auf der neuesten veröffentlichten Version. Die von Hand korrigierten Übersetzungen des Editors bleiben erhalten.
- Einunddreißig Bildschirmtitel sprachen in allen sechs Sprachen Französisch. „Updates“, „Neue Karte“, „Meine Meinung zur Bewerbung“, „Mein Konto verwalten“, „Partner“, „Rekrutierungsangebote“…: Titel von Panels, Fenstern und Schaltflächen liefen nicht durch die Übersetzungen und erschienen auf Französisch, gleich in welcher Sprache die Website war. Ihre Übersetzungen existierten bereits in allen sechs Sprachen — nur der Aufruf fehlte. Die Prüfung, die über fest eingetragene Texte wacht, ließ sie durch, weil sie annahm, diese Titel würden vom Produkt übersetzt, was tatsächlich nur bei FORMULAR-Bezeichnungen geschieht; sie unterscheidet die beiden jetzt.
- Drei Bildschirme erhalten das Design ihres Themes zurück. Das Stylesheet eines Widgets wird nach dem des Themes ausgeliefert: Wo beide dasselbe mit demselben Gewicht sagten, gewann das Widget, und das Theme zeichnete ins Leere — ein vorzeigbarer Bildschirm, ein gewolltes Design, das nie ausgeliefert wurde, und nichts, das es sagte. Das rechte Panel von Extend (wer online ist, der Chatraum) und seine großen Zahlen erhalten ihre Schrift und Farben zurück; die Profil-Reiter von Forge sind wieder eckig, unterstrichen und in Großbuchstaben, wie bei seinen Geschwister-Themes; und die Gesundheitsanzeige des Monitorings passt endlich in ihren Kreis, statt überzulaufen. Eine Prüfung lehnt jetzt jede Theme-Deklaration ab, die nie greifen könnte.
- Events werden übersetzt. Titel, Beschreibung, private Beschreibung und Ort eines Events hatten keine Sprache: Eine Website in sechs Sprachen zeigte sie in nur einer. Sie werden jetzt Sprache für Sprache geschrieben — der Bearbeitungsbildschirm öffnet die Sprache, in der man arbeitet, und sagt, welche. Besucher sehen ein Event überall, wo es erscheint, in ihrer Sprache: in der Liste, auf der Eventseite, im Kalender, in den Erinnerungen per E-Mail, in der Sitemap und im Widget. Was keine Sprache hat (die Daten, der Typ, das Bild, der Autor, die Teilnehmer), bleibt gemeinsam; ein in nur einer Sprache geschriebenes Event bleibt in den fünf anderen sichtbar.
- Der Palmarès wird übersetzt. Name eines Titels, sein Ort und sein Bericht hatten keine Sprache: Eine Website in sechs Sprachen zeigte sie in nur einer. Sie werden jetzt Sprache für Sprache geschrieben, wie der Rest — der Bearbeitungsbildschirm öffnet die Sprache, in der man arbeitet, und sagt, welche. Was keine Sprache hat (Datum, Platzierung, Teilnehmerzahl, Plattform, Team, Spiel), bleibt gemeinsam.
- Die Diashow wird übersetzt. Titel und Bildunterschrift einer Folie hatten keine Sprache: Eine Website in sechs Sprachen zeigte sie in nur einer. Sie werden jetzt Sprache für Sprache geschrieben, wie eine Seite oder eine Kategorie — die Administration schreibt in der Sprache, in der sie arbeitet, und sagt es über dem Feld. Besucher sehen die Folie in ihrer Sprache; eine in nur eine Sprache übersetzte Folie bleibt in den fünf anderen sichtbar (der Text der angefragten Sprache, sonst Französisch, sonst der zuerst geschriebene), und eine Folie ganz ohne Text behält ihr Bild. Beim Update geht nichts verloren: Der heutige Text wird in alle installierten Sprachen kopiert, da ihn heute jeder Besucher sieht.
- Die Sanktionen der Website folgen dem Mitglied auf Discord. Mit dem Bot 0.3.0 und seiner Funktion Verknüpfte Sanktionen (anfangs ausgeschaltet) gelten websiteweite Stummschaltungen und Sperren für das verknüpfte Discord-Konto des Mitglieds — ein Timeout für eine Stummschaltung, ein Bann für eine Sperre — und werden auf Discord aufgehoben, wenn sie auf der Website aufgehoben werden. Eine Verwarnung, eine Einschränkung oder ein Shadow-Ban werden nie übertragen. In der Gegenrichtung, und nur wenn man es einschaltet: Ein Moderator, dessen Discord-Konto mit einem dazu berechtigten Konto der Website verknüpft ist, kann auf Discord bannen oder einen Timeout verhängen, und die Website empfängt die Sanktion und beurteilt sie erneut, als wäre sie bei ihr ausgesprochen worden. Die Sanktionsliste sagt jetzt, woher jede einzelne stammt.
- Kollektive. Ein neues Modul bringt Mitglieder um ein Projekt zusammen, abgeschirmt von den anderen: eine Redaktion, ein Moderationsteam, eine Gruppe von Kreativen. In der Administration angelegt (Community → Kollektive), erhält ein Kollektiv einen privaten Forenbereich, den nur seine Mitglieder lesen, und — mit dem Bot 0.3.0 und seiner Funktion Kollektive — eine Rolle und einen privaten Kanal auf Discord. Sein Leiter fügt Mitglieder hinzu und gibt ihnen einen Rang (Administrator, Moderator, Mitglied) von der Seite des Kollektivs aus, ohne Administrator der Website zu sein; die Moderatoren moderieren seinen Bereich. Wird ein Kollektiv gelöscht, bleiben sein Bereich und sein Kanal, nur für Administratoren: Nichts, was dort geschrieben wurde, geht verloren.
- Mitgliedsbeiträge. Ein Verein zieht seine Mitgliedsbeiträge über die Website ein: Ein Mitglied zahlt online (Stripe) — oder die Administration erfasst einen bar oder per Scheck gezahlten Beitrag — und wird für den gewählten Zeitraum Vereinsmitglied. Es erhält die Rolle „Vereinsmitglied“, die man für beliebige Bereiche öffnen kann (einen reservierten Forenbereich, Seiten), und das Abzeichen der Gruppe „Vereinsmitglieder“. Sieben Tage vor Ablauf wird es erinnert; bei Ablauf wird ihm die Rolle entzogen. Die Mitgliedsbeiträge brauchen das Modul Gamification nicht, das Zahlungen bisher voraussetzten.
- Anderswo getätigte Spenden erfassen sich selbst. Ko-fi, HelloAsso, TipeeeStream und der PayPal-Button der Kampagnen: Jede Spende landet in der gewählten Kampagne, nur einmal, und der Fortschrittsbalken bewegt sich ohne manuelle Eingabe. Nichts wird ohne Nachweis erfasst — das Token von Ko-fi, die bei HelloAsso erneut gelesene Bestellung, die Bestätigung von PayPal. Eine bei HelloAsso bezahlte Mitgliedschaft macht das Mitglied der Website mit derselben E-Mail-Adresse zum Vereinsmitglied. Die Namen der Spender bei HelloAsso und PayPal werden nicht öffentlich angezeigt.
Sicherheit
- Der Discord-Bot meldet, dass er Administrator des Servers ist. Er braucht es nicht — der Einladungslink verlangt es nicht —, aber eine von Hand vergebene Rolle konnte ihm dieses Recht geben, und ein Administrator-Bot, dessen Token durchsickert, öffnet den ganzen Server. Jedes Mal, wenn er dem Server beitritt, sagt es das Protokoll des Bots, das die Administration anzeigt, und nennt die Berechtigungen, die seiner Rolle fehlen.
- Der Link von „/forum account link“ verknüpfte nicht immer das richtige Konto. Wer diesen Link von jemand anderem erhielt, verknüpfte das Discord-Konto dieser Person mit seinem EIGENEN Konto der Website — und da ein verknüpftes Konto die Anmeldung erlaubt, konnte derjenige, der den Link geschickt hatte, danach in das Konto seines Opfers gelangen. Die Verknüpfung wird jetzt bei Discord bestätigt: Die Website vergleicht die ID, die Discord ihr zurückgibt, mit der, die der Link nennt, und verknüpft nichts, wenn sie sich unterscheiden. Eine Warnung ersetzte diese Prüfung; sie genügte nicht.
Behoben
- Die Einstellung „Schriftart der Website“ sagte, die Schriften kämen von Google Fonts. Die Website liefert sie selbst aus, seit kein Besucher mehr zu Google geschickt wird: Die Beschreibung sagt es jetzt.
- Ein Addon-Update spielte alle seine Migrationen erneut ab. Das Lesen der bereits ausgeführten Migrationen kam
immer leer zurück: Bei jedem Update eines Moduls, Widgets oder Themes — über den Marketplace oder per Archiv —
wurden alle seine Migrationen erneut ausgeführt, und die, die Daten schreiben, schrieben sie ein zweites Mal. Jetzt
laufen nur noch die neuen.
check-db-queryüberwacht die Form, die den Fehler verursachte: eine vorbereitete, aber nie gesendete Abfrage. - Der Countdown kommender Ereignisse blieb leer. Sein Skript lebte in einem entfernten Theme: Die Liste der Ereignisse und die Seite eines Ereignisses zeigten eine Sanduhr neben nichts, in allen Themes. Es lebt jetzt beim Modul und schreibt die verbleibende Zeit in der Sprache der Seite („11 T 7h 22 Min.“, „11d 7h 22m“).
- Direkt nach einem Update konnte die Website noch den alten Code ausliefern. Der Cache von PHP (OPcache) behält den kompilierten Code einer Datei, bis er sie erneut prüft: meist zwei Sekunden, und bei Hostern, die diese Prüfung abschalten, bis zum Neustart von PHP. Das Update des Kerns, das eines Addons über den Marketplace und das Senden eines Archivs über „Hinzufügen“ gaben ihm nicht Bescheid: Eine Seite eines aktualisierten Moduls antwortete „Seite nicht gefunden“, bis seine neuen Adressen neu gelesen waren, und eine Website konnte mit einer Mischung aus altem und neuem Code laufen. Alle drei melden dem Cache jetzt jede Datei, die sie schreiben.
- Ein Addon per Archiv zu aktualisieren übersprang seine Migrationen — und löschte das Layout eines Themes. „Hinzufügen“ in Themes & Addons installierte das Addon neu, statt es zu aktualisieren: Die Änderungen an seiner Datenbank wurden als erledigt markiert, ohne ausgeführt zu werden, und ein Theme verlor alle seine Layouts samt ihren Widgets, ersetzt durch sein ursprüngliches Layout. Ein neueres Archiv aktualisiert jetzt wie über den Marketplace: Die Datenbank zieht mit, und das Layout bleibt das des Administrators.
- Im Live-Editor von Nebula waren die Vorschauen der Stile die von Forge: Orange auf Braun. Sie übernehmen jetzt die Farben von Nebula, die der Administrator gewählt hat. Dieselbe Korrektur für das Schaufenster-Theme.
- Ein Navigations-Widget, das ein Menü anzeigte, behielt eine eingefrorene Kopie davon. Es kopierte die Links des Menüs beim Speichern und vergaß sogar, welches Menü gewählt war: Ein später hinzugefügter oder umbenannter Link kam nie in der Navigation an. Das Menü wird jetzt bei jeder Anzeige neu gelesen, in der Sprache der Seite.
- Ein Link zu einem Abschnitt einer Wiki-Seite führte an den Anfang der Seite. Nur Überschriften der obersten Ebene trugen einen Anker: Ein Link zu einer Unterüberschrift fand nichts, und die Dokumentation, die oft auf einen genauen Abschnitt verweist („siehe Suchmaschinen“), ließ ihren Leser am Anfang der Seite stehen, in allen Sprachen. Die Unterüberschriften haben jetzt ihren Anker, und jeder Verweis der Dokumentation führt zu der Überschrift, die er nennt.
- Eine Wiki-Seite, die unter einer ihrer eigenen Unterseiten eingeordnet wurde, verschwand aus dem Inhaltsverzeichnis, mit ihrem ganzen Abschnitt: Der Bildschirm bot die Unterseiten als übergeordnete Seite an. Er tut es nicht mehr, und eine solche trotzdem gesendete Schleife wird abgelehnt.
- Das Bewerbungsformular antwortete „Fehler 500“, sobald ein Angebot eine optionale Frage stellte. Eine als leerer Text geschriebene Regel „keine“ wurde von der Formularbibliothek nicht verstanden, und die ganze Seite fiel aus. Gefunden beim Testen der Übersetzung der Fragen.
- Das Widget Rekrutierung verbarg Angebote ohne Bewerbung — also jedes gerade eröffnete Angebot. Das Modul war korrigiert worden; das Widget nicht.
- Eine als ganze Seite geöffnete Löschbestätigung zeigte nichts. In der Administration führte ein Link „Löschen“, in einem neuen Tab — oder ohne JavaScript — geöffnet, zu einer leeren Seite: keine Meldung, keine Schaltfläche, kein Weg zurück. Sie zeigt jetzt, was gelöscht werden soll, die Schaltfläche, die es tut, und einen Link zurück zum Modul.
- Die Seiten Moderation und Monitoring sahen nicht aus wie der Rest der Administration. Ihre Zahlenkarten, ihre Kopfbereiche und der Puls der Gesundheitsanzeige kamen aus einem Ersatz-Stylesheet — gedacht für Websites, die diese Bildschirme außerhalb der Administration zeigen —, das, zuletzt ausgeliefert, das Theme überschrieb. Der Ersatz greift jetzt nur noch dort, wo das Theme nichts sagt.
- Auf Portugiesisch ließ sich ein Konto nicht löschen. Der Bildschirm bat, „EXCLUIR“ abzutippen, während die Website „ELIMINAR“ erwartete: Die Bestätigung schlug jedes Mal fehl. Die fünf anderen Sprachen waren richtig. Eine Prüfung lehnt jetzt eine Anweisung ab, die ein anderes Wort zitiert als das, das die Website erwartet.
- Das Portugiesische vermischte Brasilien und Portugal. Achtzig Wendungen überprüft: usuário wird zu utilizador, senha zu palavra-passe, excluir zu eliminar, registro zu registo, und arquivo wird zu ficheiro, wenn eine Datei gemeint ist — und bleibt arquivo, wenn ein Archiv gemeint ist.
- Einige holprige englische Sätze: „All posts will be also deleted“ wird zu „will also be deleted“, in den vier Löschmeldungen, in denen es noch stand.
- Einen Inhalt zum ersten Mal übersetzen: Der Text ging verloren, ohne ein Wort. Eine News auf Französisch schreiben, die Administration auf Englisch umstellen, sie übersetzen und speichern: Nichts wurde behalten. Die Zeile dieser Sprache existierte noch nicht, und das Speichern berührte überhaupt keine Zeile — stillschweigend. Das galt für News, Blogbeiträge, Seiten, Kategorien, Galerien, Spiele, Teams, Gruppen und Partner. Eine Übersetzung legt jetzt ihre Zeile an.
- Noch nicht übersetzte Inhalte waren in der Administration dieser Sprache unauffindbar. Die Listen der News, der Blogbeiträge und der Seiten zeigten nur, was in der Sprache existierte, in der man arbeitet: Alles andere war unsichtbar, also unmöglich zu öffnen und zu übersetzen. Die Listen zeigen jetzt alles, mit dem besten verfügbaren Titel, und der Bearbeitungsbildschirm öffnet sich mit leeren Feldern, bereit für die Übersetzung.
- Das Umbenennen einer Gruppe löschte alle ihre Übersetzungen. Das Speichern zielte auf keine bestimmte Sprache: Es schrieb denselben Titel in jede Zeile der Gruppe — und schlug fehl, sobald die Website mehr als eine hatte.
- Ein Partner konnte nur eine Sprache haben. Die Übersetzungstabelle des Moduls Partner hatte als Schlüssel nur die Nummer des Partners: Eine zweite Sprache wurde abgelehnt oder überschrieb die erste. Sie führt jetzt eine Zeile pro Sprache, wie die sechzehn anderen Übersetzungstabellen, und einen Partner in einer neuen Sprache zu beschreiben, legt seine Zeile an, statt nichts zu schreiben.
- Der nächste Termin: Der Wochentag klebte an der Tageszahl. Im Datumsfeld des Widgets Der nächste Termin berührten sich die drei Zeilen — Wochentag, Tageszahl, Monat — und überlappten, sobald ein Theme seine Anzeigeschrift setzte: Die Ziffern ragten aus einer Zeilenhöhe heraus, die kürzer war als ihre Tinte. Die drei Zeilen behalten jetzt ihren Abstand in allen sieben Themes, im Hell- wie im Dunkelmodus. Dieselbe Korrektur für die großen Zahlen des Widgets Die Website in Zahlen.
- Pulse zeichnet endlich seine Widgets. Das Theme sah ein eigenes Aussehen für das Datumsfeld des Kalenders, die Zahlen der Website in Zahlen, die Woche und die Vorschaubilder der Galerie vor: Keines davon erschien, weil das Stylesheet des Widgets nach dem des Themes ausgeliefert wird und bei gleicher Spezifität gewann. Die Kachel von Pulse (abgerundete Ecken, große Ziffern, Schiefergrau) erscheint jetzt so, wie der Entwurf sie zeigte.