5. Sprache und Leserichtung #
← Designs · Inhalt · Übergreifende Funktionen →
Die Komponenten bringen ihre eigenen Oberflächenbeschriftungen mit: Kontextmenüs, Dialogschaltflächen, Aktionen der andockbaren Panels, Tooltips der Symbolleisten… Diese Zeichenfolgen werden von der Bibliothek übersetzt, ohne dass Sie sie liefern müssen.
5.1 Die Sprache wählen #
Die Sprache gilt prozessweit. Legen Sie sie einmalig im Anwendungsobjekt fest, bevor das erste Fenster geöffnet wird:
// open-Event des Anwendungsobjekts
PBT_SetLanguage("fr")
| Code | Sprache |
|---|---|
en | Englisch (Standard) |
fr | Französisch |
de | Deutsch |
it | Italienisch |
es | Spanisch |
pt | Portugiesisch |
Das Wörterbuch wird vor der ersten Darstellung jeder Komponente eingespielt: Es blitzt keine englische Beschriftung auf, bevor die Übersetzung erscheint. Ein Wechsel im laufenden Betrieb ist möglich — alle geöffneten Komponenten werden sofort neu beschriftet.
// Sprachumschaltung ueber ein Menue der Anwendung
PBT_SetLanguage("de")
Eine Sprache lässt sich nicht komponentenweise einstellen: Eine Anwendung zeigt immer nur eine Sprache an. Das ist eine bewusste Entscheidung (Einheitlichkeit der Oberfläche), anders als beim Design, das lokal überschrieben werden kann.
5.2 Eine Beschriftung anpassen: of_set_translation #
Sie sind nicht an die mitgelieferten Wörterbücher gebunden. of_set_translation(Schlüssel, Text) überschreibt eine Zeichenfolge der Oberfläche, mit Vorrang vor dem Sprachwörterbuch:
// Fachvokabular: von "Bereichen" statt von "Panels" sprechen
uo_dock.of_set_translation("dock.float", "Bereich abdocken")
uo_dock.of_set_translation("dock.autohide", "Bereich ausblenden")
uo_dock.of_set_translation("dock.closePanel", "Bereich schliessen")
Zwei Anwendungsfälle:
- Das Vokabular anpassen an die Fachlichkeit Ihrer Anwendung („Bereiche“ statt „Panels“, „Filialen“ statt „Gruppen“).
- Eine nicht mitgelieferte Sprache bedienen: Legen Sie Ihre eigenen Übersetzungen Schlüssel für Schlüssel fest, in der Sprache Ihrer Wahl, aus Ihrer eigenen Übersetzungstabelle.
// Eine eigene Sprache aus Ihrem Uebersetzungsbestand versorgen
uo_dock.of_set_translation("dock.float", of_traduire("DOCK_DETACHER"))
uo_dock.of_set_translation("dock.show", of_traduire("DOCK_AFFICHER"))
Die Überschreibung wird auf der Instanz gesetzt; of_reset() hebt sie auf.
Die Schlüsselfamilien #
Die Schlüssel folgen der Form <Bereich>.<Name>. Die wichtigsten Familien:
| Präfix | Betrifft |
|---|---|
dock.* | Andockbare Panels: abdocken, ausblenden, schließen |
toolbar.* | Symbolleiste: Leiste verschieben, Überlauf |
tab.* | Registerkarten: schließen |
tile.* · tilesbox.* | Kacheln: Größen, Meldung „keine Kachel“ |
ribbon.* | Menüband: minimieren, erweitern |
mb.* | Meldungsfenster: Standardschaltflächen, Kennwort anzeigen / ausblenden |
webbrowser.* | Webbrowser: Kontextmenü (zurück, vorwärts, neu laden) |
picture.* | Bild: Hinweis zum Verschieben |
sb.* | Statusleiste: ihr Name für Screenreader |
color.* | Farbauswahl: OK / Abbrechen |
💡 Um den genauen Schlüssel hinter einer Beschriftung zu ermitteln, öffnen Sie die Demo-Anwendung auf Englisch und dann in einer anderen Sprache: Die Zeichenfolge, die sich ändert, stammt aus dem Wörterbuch. Die vollständige Schlüsselliste wird mit der Bibliothek ausgeliefert.
5.3 Leserichtung: von links nach rechts / von rechts nach links #
Für Sprachen, die von rechts nach links geschrieben werden (Arabisch, Hebräisch), kippt ein einziger Aufruf die gesamte Anwendung:
// open-Event des Anwendungsobjekts
PBT_SetFlowDirection("rtl") // "ltr" ist der Standard
Was sich dadurch in allen Komponenten ändert, den heutigen wie den künftigen:
- die natürliche Ausrichtung von Texten und Beschriftungen;
- die Reihenfolge der Spalten, der Registerkarten, der Schaltflächen in der Symbolleiste;
- die Seite der Symbole, der Aufklapppfeile, der Chevrons;
- die Seite der Bildlaufleisten und der seitlichen Panels;
- die Richtung der Dropdown-Menüs und der Popups.
// Umschalten im laufenden Betrieb
PBT_SetFlowDirection("ltr")
Wie das Design und die Sprache wird die Leserichtung vor der ersten Darstellung eingespielt: Eine nach dem Umschalten erzeugte Komponente kommt bereits in der richtigen Richtung zur Welt.
⚠️ Die Leserichtung betrifft ausschließlich die PBToolboxAI-Komponenten. Die nativen PowerBuilder-Steuerelemente Ihrer Fenster (Eingabefelder, DataWindows) bleiben in Ihrer Verantwortung.
5.4 RTL-tauglichen Code schreiben #
Die Spiegelung erfolgt automatisch für das Layout. Für die Werte, die Sie selbst setzen, kann sie das nicht: Wenn Sie "left" fest verdrahten, steht es in beiden Leserichtungen links.
Deshalb verwenden alle Platzierungseigenschaften der Bibliothek logische und keine physischen Werte:
| Logischer Wert | Bei Schrift links → rechts | Bei Schrift rechts → links |
|---|---|---|
start | links | rechts |
end | rechts | links |
Sie werden als Konstanten bereitgestellt und sind an dem Objekt zu lesen, dem Sie den Wert zuweisen:
// Textausrichtung, Position eines Bandes...
uo_titre.is_align = uo_titre.ALIGN_START
uo_onglets.is_position = uo_onglets.POSITION_START
Die betroffenen Familien: ALIGN_START / ALIGN_END (statictext, statusbar, picture), POSITION_START / POSITION_END (tab, dockcontainer), MARQUEE_START / MARQUEE_END (statictext).
Die alten physischen Werte
"left"und"right"werden weiterhin überall akzeptiert: Ihr bestehender Code funktioniert unverändert weiter. Sie sind lediglich festgelegt — sie kippen inrtlnicht um.
Die zwei bewussten Ausnahmen #
Manche Platzierungen haben keinen „Leseanfang“: Sie bleiben physisch, und das ist Absicht.
- Toaster — ein Toast ist ein Systemfenster, das an einer Bildschirmecke verankert ist.
POSITION_BOTTOM_RIGHTbezeichnet eine physische Ecke, nicht ein Textende. - Die Zeichenflächen — Organigramm, Flussdiagramm, Knotengraph, Bildzuschnitt: Dort platzieren Sie Elemente an
x/y-Koordinaten. Eine kartesische Ebene dreht sich nicht mit der Sprache um; nur die Beschriftungen darin folgen der Leserichtung.
5.5 Zusammenfassung #
| Einstellung | Geltungsbereich | Wo aufzurufen |
|---|---|---|
PBT_SetLanguage (string as_lang) | Gesamter Prozess | open des Anwendungsobjekts |
of_set_translation (string as_clé, string as_texte) | Eine Instanz | Nach dem Erzeugen der Komponente |
PBT_SetFlowDirection (string as_sens) | Gesamter Prozess | open des Anwendungsobjekts |
Die drei globalen Einstellungen — Design, Sprache, Leserichtung — werden gemeinsam an derselben Stelle festgelegt:
// open-Event des Anwendungsobjekts
PBT_SetLicense(gs_titulaire, gs_cle_licence)
PBT_SetDefaultTheme("fluent-light")
PBT_SetLanguage("fr")
PBT_SetFlowDirection("ltr")
PBT_Warmup()
Open(w_principale)