PBToolboxAI v1 ← Site

5. Langue et sens de lecture #

← Thèmes · Sommaire · Fonctions transverses →


Les composants comportent leurs propres libellés d'interface : menus contextuels, boutons de dialogue, actions des panneaux dockables, info-bulles des barres d'outils… Ces chaînes sont traduites par la bibliothèque, sans que vous ayez à les fournir.


5.1 Choisir la langue #

La langue est globale au processus. Posez-la une fois dans l'objet application, avant l'ouverture de la première fenêtre :

// Event open de l'objet application
PBT_SetLanguage("fr")
CodeLangue
enAnglais (défaut)
frFrançais
deAllemand
itItalien
esEspagnol
ptPortugais

Le dictionnaire est injecté avant le premier rendu de chaque composant : aucun libellé anglais ne clignote avant la traduction. Le changement à chaud est possible — tous les composants ouverts se re-libellent immédiatement.

// Bascule de langue depuis un menu de l'application
PBT_SetLanguage("de")

Une langue ne se règle pas composant par composant : une application affiche une seule langue à la fois. C'est un choix délibéré (cohérence de l'interface), à l'inverse du thème qui, lui, est surchargeable localement.


5.2 Adapter un libellé : of_set_translation #

Vous n'êtes pas prisonnier des dictionnaires livrés. of_set_translation(clé, texte) surcharge une chaîne d'interface, en priorité sur le dictionnaire de langue :

// Vocabulaire metier : parler de "volets" plutot que de "panneaux"
uo_dock.of_set_translation("dock.float", "Detacher le volet")
uo_dock.of_set_translation("dock.autohide", "Masquer le volet")
uo_dock.of_set_translation("dock.closePanel", "Fermer le volet")

Deux usages :

// Alimenter une langue maison depuis votre referentiel de traduction
uo_dock.of_set_translation("dock.float", of_traduire("DOCK_DETACHER"))
uo_dock.of_set_translation("dock.show",  of_traduire("DOCK_AFFICHER"))

La surcharge est posée sur l'instance ; elle est annulée par of_reset().

Les familles de clés #

Les clés suivent la forme <domaine>.<nom>. Les principales familles :

PréfixeConcerne
dock.*Panneaux dockables : détacher, masquer, fermer
toolbar.*Barre d'outils : déplacer la barre, débordement
tab.*Onglets : fermer
tile.* · tilesbox.*Tuiles : tailles, message « aucune tuile »
ribbon.*Ruban : réduire, développer
mb.*Boîte de message : boutons standard, afficher / masquer le mot de passe
webbrowser.*Navigateur : menu contextuel (précédent, suivant, actualiser)
picture.*Image : indication de déplacement
sb.*Barre d'état : son nom pour les lecteurs d'écran
color.*Sélecteur de couleur : OK / Annuler

💡 Pour connaître la clé exacte d'un libellé, ouvrez l'application de démonstration en anglais puis dans une autre langue : la chaîne qui change est celle du dictionnaire. La liste complète des clés est fournie avec la bibliothèque.


5.3 Sens de lecture : gauche-à-droite / droite-à-gauche #

Pour les langues qui s'écrivent de droite à gauche (arabe, hébreu), un seul appel bascule toute l'application :

// Event open de l'objet application
PBT_SetFlowDirection("rtl")     // "ltr" par defaut

Ce que cela change dans tous les composants, présents et futurs :

// Bascule a chaud
PBT_SetFlowDirection("ltr")

Comme le thème et la langue, le sens de lecture est injecté avant le premier rendu : un composant créé après la bascule naît déjà dans le bon sens.

⚠️ Le sens de lecture ne concerne que les composants PBToolboxAI. Les contrôles PowerBuilder natifs de vos fenêtres (champs de saisie, DataWindows) restent à votre charge.


5.4 Écrire du code prêt pour le RTL #

Le miroir est automatique pour la mise en page. Il ne peut pas l'être pour les valeurs que vous posez vous-même : si vous écrivez "left" en dur, ce sera à gauche dans les deux sens de lecture.

C'est pourquoi toutes les propriétés de placement de la bibliothèque utilisent des valeurs logiques, et non physiques :

Valeur logiqueEn écriture gauche → droiteEn écriture droite → gauche
startà gaucheà droite
endà droiteà gauche

Elles sont exposées sous forme de constantes, à lire sur l'objet auquel vous affectez la valeur :

// Alignement de texte, position d'un bandeau...
uo_titre.is_align      = uo_titre.ALIGN_START
uo_onglets.is_position = uo_onglets.POSITION_START

Les familles concernées : ALIGN_START / ALIGN_END (statictext, statusbar, picture), POSITION_START / POSITION_END (tab, dockcontainer), MARQUEE_START / MARQUEE_END (statictext).

Les anciennes valeurs physiques "left" et "right" restent acceptées partout : votre code existant continue de fonctionner à l'identique. Elles sont simplement figées — elles ne se retourneront pas en rtl.

Les deux exceptions volontaires #

Certains placements n'ont pas de « début de lecture » : ils restent physiques, et c'est intentionnel.


5.5 Récapitulatif #

RéglagePortéeOù l'appeler
PBT_SetLanguage (string as_lang)Processus entieropen de l'objet application
of_set_translation (string as_clé, string as_texte)Une instanceAprès création du composant
PBT_SetFlowDirection (string as_sens)Processus entieropen de l'objet application

Les trois réglages globaux — thème, langue, sens de lecture — se posent ensemble, au même endroit :

// Event open de l'objet application
PBT_SetLicense(gs_titulaire, gs_cle_licence)
PBT_SetDefaultTheme("fluent-light")
PBT_SetLanguage("fr")
PBT_SetFlowDirection("ltr")
PBT_Warmup()

Open(w_principale)

← Thèmes · Sommaire · Fonctions transverses →