Beim In-App-Development gibt es einige generische I18N Probleme:
-
Wenn ich im Demo den Reiter für die Workflows abwähle, ist eine der neuen Optionen [none(unknown).title] und es wird entsprechend ein fehlender I18N geloggt:
Missing resource '[none(unknown).title]'.
~~Der relevante Teil des Stacks: ~~
at com.top_logic.basic.util.DefaultBundle.getString(DefaultBundle.java:220) at com.top_logic.mig.html.layout.TabInfo.getLabel(TabInfo.java:114) at com.top_logic.layout.component.TabbedLayoutComponentResourceProvider.getLabelNullSafe(TabbedLayoutComponentResourceProvider.java:23)
Für diesen Tab lässt sich das Problem vermutlich einfach beheben. Aber es ist ein Beispiel für ein generelles Problem: Wenn eine Sicht "falsch" konfiguriert wird, verursacht das einen "Missing resource" Error, mit dem der Kunde nichts anfangen kann. Denn [none(unknown).title] kann er nicht in die Properties-Dateien eintragen. Und er sieht der Fehlermeldung auch nicht an, welche Sicht das Problem verursacht oder wie es behoben werden kann. Und was genau an der Sicht "falsch" konfiguriert ist, ist auch nicht klar. Daher sollte zuerst dieses generische Problem behoben werden. Das Problem für diese eine Sicht zu beheben, würde das generische Problem nur unsichtbar machen, bis ein Kunde darüber stolpert. Daher werde ich es nicht direkt in #25048 beheben. Da das konkrete Beispiel im Demo ist, sollte das die Kunden nicht betreffen, wenn ich dieses eine Beispiel nicht direkt repariere.
-
Wenn ein Dialog konfiguriert wird, habe ich beim nächsten Einloggen einen fehlenden I18N-Key im Log:
Missing resource [none(unknown).openAsDialog].
Letztlich kommt das none(unknown) von hier: LayoutComponent.Config.getResPrefix(), weil von der Konfiguration des Dialoges getResPrefix() verwendet wird, um das Label des Öffner-Knopfes zu erstellen. Und none(unknown) ist der Default.
-
Generell ist none(unknown) für den Kunden ungünstig, weil er im Zweifelsfall überhaupt nicht weiß, wo der herkommt und selbst wenn er das wüsste, nichts dagegen tun könnte. Und auch ich muss in solchen Fällen erst debuggen, um rauszufinden wo das herkommt. Gegen letzteres Problem würde es etwas helfen, wenn zumindest die Klasse mit rausgeschrieben werden, die den NoKey erzeugt.Noch besser wäre es die Verwendungen von NoKey / NoPrefix zu reduzieren. Wenn eine Komponente zum Beispiel keinen ResPrefix hat, warum muss sie NoPrefix liefern? Kann sie nicht zum Beispiel einen Prefix für "Komponente ohne ResPrefix" liefern? DEFAULT_COMPONENT_PREFIX?- Fehlermeldungen wie none(unknown) sind um Kontext-Informationen erweitert worden. Ist der tl:ResPrefix einer Komponentenkonfiguration nicht gesetzt, so wird statt des nichtsaussagenden tl:ResPrefix.NONE nun ein tl:NoPrefix mit dem, falls vorhanden, vollqualifizierten Namen der Komponente oder dem Namen der Implementierungsklasse als Fallback zurückgegeben.
-
Beim Anlegen eines Dialoges ist der Default für den Titel "Kein Inhalt". Wenn ich den Dialog öffne, wird aber statt eines leeren Dialog-Titels folgendes angezeigt:
[deprecated:3810f414-5858-41fd-bdf5-b48f2dbbcbaa.layout.xml#Dialog.title]|[deprecated:]
-
Wenn ich eine neue Sicht anlege, aber keinen Name eingebe, steht im Titel [none(unknown).title]. Ich habe einen leeren Titel erwartet.- Titel für Sichten sind jetzt Pflicht.
Test
Titel beim Erstellen von Sichten sind Pflicht. Ein Erstellen von einem Tab, Tabelle, Baum, etc. ohne Titel darf nicht möglich sein.