enhancement
(Nutzer-sichtbar)
Ziel
Die Modellelemente der Engine (Module, Typen, Attribute, Klassifikatoren) sollen durchgängig eine Beschreibung besitzen, die als Tooltip an der Oberfläche erscheint — im Modell-Editor, in Formularen und in Tabellenköpfen. Bisher haben nur einzelne Elemente einen .tooltip-Eintrag; für die große Mehrheit sieht der Nutzer nur das Label und muss sich die Bedeutung aus dem Namen erschließen.
Betroffen sind die model.*.messages_{en,de}.properties unter WEB-INF/conf/resources/ der jeweiligen Module. Der Schlüssel ist model.<Modul>[.<Typ>[.<Bestandteil>]].tooltip, aufgelöst über TLModelI18N bzw. TooltipVisitor.
Konventionen
- Ein bis zwei Sätze pro Element, die die Bedeutung erklären, nicht den Namen wiederholen.
- Inhalt am Code belegen, nicht am Namen raten: Storage-Mapping, Wrapper-Implementierung und Verwendungsstellen entscheiden, was ein Attribut tatsächlich bedeutet.
- Overriding-Attribute bekommen keinen eigenen Eintrag. TLModelI18N.getI18NKey setzt für überschreibende Bestandteile einen Fallback auf den Schlüssel der definition; der Tooltip wird also von der deklarierenden Stelle geerbt. Ein eigener Eintrag wäre ein Duplikat.
- Beide Sprachen gleichzeitig pflegen. Die model.*-Ressourcen sind nicht generiert (anders als die messages_*.properties unter src/main/java/META-INF/), en und de werden von Hand gepflegt und müssen denselben Schlüsselvorrat haben.
- Normalform einhalten: UTF-8, Schlüssel sortiert, key = value — das ist genau das, was com.top_logic.tools.resources.ResourceFile#writeTo schreibt.
Migration
- Das Feld für den Benutzernamen eines Accounts trägt jetzt das Label „Benutzername“ statt „Login“. Scripted Tests, die das Feld über sein Label adressieren (label="Login" in einer FormInput-Aktion), müssen auf das neue Label umgestellt oder neu aufgezeichnet werden (die Engine-Tests wurden entsprechend angepasst).
- Im Zuge der Überarbeitung wurden Ressourcen-Schlüssel gelöschter Modellteile entfernt (u. a. model.tl.bpe.bpml.Edge.label, model.tl.bpe.bpml.Task.label, model.tl.bpe.bpml.Task.labelFunction) und die model.mandatorStructure.*-Einträge in das Bundle orgStructureMessages verschoben. Die Auflösung erfolgt über den Schlüssel, eine Anwendung, die diese Schlüssel in eigenen Bundles überschreibt, ist nicht betroffen; Überschreibungen der Schlüssel gelöschter Modellteile sind obsolet.