Setup-Menü mit dynamischer Breite

  • Mir ist aufgefallen, dass im Menü "Setup/Replay" manche Texte abgeschnitten werden.

    Der beiliegende Patch ermittelt die Breite der Namens-Spalte dynamisch.
    Bitte mal ausprobieren, ob das OK ist. Insbesondere mit unterschiedlichen Sprachen und UTF-8 (ich hab's nur mit ISO-8859-1 getestet).

    Hinweis: Plugins bitte neu übersetzen.

  • Ist das eine theoretische Übelegung oder gibt es einen praktischen Fall? In den Texten vom Core-VDR sehe ich keinen.
    Die Texte in der ersten Spalte (und natürlich auch in der zweiten) sollten natürlich so ausgelegt sein, dass alles in das OSD passt.

  • Ist das eine theoretische Übelegung oder gibt es einen praktischen Fall? In den Texten vom Core-VDR sehe ich keinen.
    Die Texte in der ersten Spalte (und natürlich auch in der zweiten) sollten natürlich so ausgelegt sein, dass alles in das OSD passt.

    D.h. du vermutest dass Übersetzer nur eine vorgegebene maximale Länge für diese Texte verwenden(?) Dann solltest Du das für die Übersetzer dokumentieren.

  • D.h. du vermutest dass Übersetzer nur eine vorgegebene maximale Länge für diese Texte verwenden(?) Dann solltest Du das für die Übersetzer dokumentieren.

    Na gut, ich kann natürlich vorgeben, dass übersetzte Texte nicht länger sein dürfen als die englischen. Das wird sich aber nicht immer einhalten lassen. Im Zweifelsfall hilft nur ausprobieren.

  • Das scheint mir kein sinnvoller Ansatz zu sein. Denn mit dem Patch erscheint beispielsweise das Menü der Skin noPacity völlig ohne zweite Spalte:

    The content cannot be displayed because you do not have authorisation to view this content.

    Vorher hatte ich mir, weil der Standard zu knapp bemessen war, die Spaltenbreite passend gepatcht:

    The content cannot be displayed because you do not have authorisation to view this content.

    Automatik macht immer mal Probleme und weniger ist dann oftmals mehr. Warum also wählen wir nicht den im VDR üblichen Ansatz, die Breite der linken Spalte im Setup einstellen zu können? Dann kann es jeder so einstellen, wie es für seine Auswahl von Plugins den besten Kompromiss liefert.

    PS: Und einen problematischen Wert mit Ergebnissen wie oben kann man manuell in der setup.conf zurücksetzen. ;)

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.8.1 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, satip, screenshot, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Kannst du bitte noch eine Lösung posten, bei der ich nicht für jeden A/B-Vergleich den gesamten VDR samt Plugins ständig neu übersetzen muss?

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.8.1 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, satip, screenshot, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Na gut, ich kann natürlich vorgeben, dass übersetzte Texte nicht länger sein dürfen als die englischen. Das wird sich aber nicht immer einhalten lassen. Im Zweifelsfall hilft nur ausprobieren.

    > Im Zweifelsfall hilft nur ausprobieren.

    Weiß nicht. Dass der Übersetzer auch testet ist wohl eher nicht zu erwarten. Und wenn, müssten wir bei jedem Text dokumentieren an welcher Stelle im UI dieser Text verwendet wird. Damit der Übersetzer dann an dieser Stelle testen kann. Erscheint mir insgesamt zu aufwändig.


    > ich kann natürlich vorgeben, dass übersetzte Texte nicht länger sein dürfen als die englischen

    Englische Texte sind immer recht kurz. Von daher wäre die Vorgabe, dass übersetzte Texte max. 30% länger sein dürfen als englische Texte realistischer.

    Und wenn VDR dann noch automatisiert verifiziert (z.B. per DEFINE einschaltbar), dass alle Spalten groß genug für "Englische Texte + 30%" sind, könnten wir wieder mit einer festen Spaltenbreite arbeiten ...

    Aus meiner Sicht die beste Lösung

  • Übersetzern solche Vorgaben machen zu wollen bzw. müssen, erscheint mir etwas weltfremd.

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.8.1 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, satip, screenshot, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Kannst du bitte mal in cMenuSetupPage::Display() den Wert von t vor dem Aufruf von SetCols(t) ausgeben und posten?

    t = 41 + 5

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.8.1 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, satip, screenshot, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Post by kls (May 17, 2026 at 4:12 PM).

    This post was deleted by the author themselves: zu spät (May 17, 2026 at 4:12 PM).
  • Keine Ahnung was da vorher war, jetzt sieht es so aus:

    The content cannot be displayed because you do not have authorisation to view this content.

    Ich meinte im Übrigen ja auch den Vergleich von mit/ohne den Patch.

    PS: Ich hatte auch vorher schon make clean / make install über den VDR und alle Plugins laufen lassen…

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.8.1 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, satip, screenshot, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • In skinnopacity wird die Breite der ersten Spalte im Setup-Menu aktuell auf 40 gesetzt. Das gilt dann ja auch noch mit dem Patch von oben, oder wird das dann irgnoriert?
    Es sollte also auch mit dem Patch so aussehen, wie im Bild vom Beitrag #14.

    Warum es ohne dieses explizite Setzen der Breite, die 2. Spalte verschluckt, kann ich momentan nicht sagen. Ich würde da aber bei Gelegenheit mal recherchieren.

    Grüße
    kamel5

    VDR 2.8.1: ASUS Prime X470-PRO, Ryzen 7 5700X, 64GB, 10TB HD mit ZFS RaidZ, GT1030, Fedora 44 Kernel 7.0 X86_64, Devicebonding 2 x 1 auf 2, TT6400, DVBSky S952 V3

    Git-Repo: gitlab.com/kamel5

  • Wenn man erst einmal ein wenig Abstand gewonnen hat, kommen einem oft noch weitere Aspekte in den Sinn:

    • Kann man gewährleisten, dass ein solcher Ansatz für alle Skins verwendbar und nützlich ist?
    • Wie kann ein solcher Ansatz gleichermaßen für rein textbasierte wie grafische Oberflächen funktionieren?
    • Wie wirkt es sich aus, wenn die Schrift bewusst größer gewählt wird, um eine Sehschwäche auszugleichen?
    • Macht es Sinn, die Zahl der Zeichen als Maßstab heranzuziehen, sobald ein proportionaler Font verwendet wird? Oder müsste man stattdessen nicht vielmehr die Breite des Textes in Pixeln als Maßstab heranhiehen?
    • Wie geht man mit noch immer zu langen Texten um? Die Skin nOpacity etwa scrollt horizontal, sobald der Text des ausgewählten OSD-Elements nicht vollständig dargestellt werden kann. Das lässt sich sicherlich auch in textbasierten oder anderen grafischen Skins entsprechend einrichten, vielleicht sogar als Service in der Basisklasse einbetten.

    Sollte man also anstatt zu versuchen, eine optimale Spaltenbreite zu finden, nicht vielleicht einen anderen Ansatz verfolgen? Oder gibt es gar weitere Gedanken und Ideen hierzu in der Community?

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.8.1 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, satip, screenshot, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Wenn man sich die Diskussion so anschaut, merkt man erst, in was für eine Sackgasse man rennt, wenn man im Jahr 2026 noch versucht, UI-Layouts über die reine Anzahl von Zeichen zu berechnen.

    Die Idee, Übersetzern starre Vorgaben zu machen (oder gar "Englisch + 30%" automatisiert zu prüfen), ist gelinde gesagt weltfremd. Sprache lebt, und die deutsche Übersetzung braucht nun mal naturgemäß oft deutlich mehr Platz als ein knackiger englischer Begriff. Das darf nicht das Problem des Übersetzers sein, sondern die UI muss damit klarkommen.

    SHofmann legt da im letzten Beitrag den Finger genau in die Wunde:
    Solange Skins proportionale Schriftarten (TrueType) verwenden, ist die reine Anzahl der Zeichen (`t = 41 + 5`) als Layout-Basis mathematischer Zufall. Ein "M" braucht dreimal so viel Platz wie ein "i". Ein sauberer Ansatz müsste eigentlich die tatsächliche Textbreite in Pixeln (abhängig vom geladenen Font) ermitteln, anstatt blind Zeichen zu zählen.

    Wenn eine Automatik im Core dazu führt, dass bei grafischen Skins wie nOpacity plötzlich die zweite Spalte im Nirvana verschwindet, zeigt das doch nur, dass der starre "One-Size-Fits-All"-Ansatz für den Core nicht funktioniert.

    Bevor wir jetzt den Core mit harten Limits für Textlängen verkrüppeln, wäre die von SHofmann vorgeschlagene Lösung – die Spaltenbreite einfach wie gewohnt im Setup manuell einstellbar zu machen – der ehrlichste und stabilste Kompromiss für alle Beteiligten. Das spart auch das ständige Neuübersetzen für jeden A/B-Vergleich. ;)

  • Das Fehlen der zweiten Spalte lag daran, dass ich die Items als cMenuEditItem behandelt habe, es aber offensichtlich Fälle gibt, in denen auch direkt von cOsdItem abgeleitete Items verwendet werden.
    Beiliegender Patch fixt das.

    Ich habe cMenuEditItem::Name() dringelassen, damit Plugins nicht neu übersetzt werden müssen, wenn sie schon mit der vorherigen Version des Patches übersetzt wurden.

  • In skinnopacity wird die Breite der ersten Spalte im Setup-Menu aktuell auf 40 gesetzt. Das gilt dann ja auch noch mit dem Patch von oben, oder wird das dann irgnoriert?
    Es sollte also auch mit dem Patch so aussehen, wie im Bild vom Beitrag #14.

    40 ist genauso nur ein Schätzwert wie 36. Kann passen, muss aber nicht.
    Ich bin überzeugt, dass es mit der zweiten Version des Patches besser aussehen wird.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!