PBToolboxAI v1 ← Site

5. Lingua e senso di lettura #

← Temi · Sommario · Funzioni trasversali →


I componenti portano con sé le proprie etichette di interfaccia: menu contestuali, pulsanti dei dialoghi, azioni dei pannelli ancorabili, tooltip delle barre degli strumenti… Queste stringhe sono tradotte dalla libreria, senza che Lei debba fornirle.


5.1 Scegliere la lingua #

La lingua è globale al processo. La imposti una sola volta nell'oggetto applicazione, prima dell'apertura della prima finestra:

// Event open dell'oggetto applicazione
PBT_SetLanguage("fr")
CodiceLingua
enInglese (predefinito)
frFrancese
deTedesco
itItaliano
esSpagnolo
ptPortoghese

Il dizionario viene iniettato prima del primo rendering di ogni componente: nessuna etichetta inglese lampeggia prima della traduzione. Il cambio a caldo è possibile — tutti i componenti aperti vengono rietichettati immediatamente.

// Cambio di lingua da un menu dell'applicazione
PBT_SetLanguage("de")

Una lingua non si imposta componente per componente: un'applicazione mostra una sola lingua alla volta. È una scelta deliberata (coerenza dell'interfaccia), a differenza del tema che invece è sovrascrivibile localmente.


5.2 Adattare un'etichetta: of_set_translation #

Non è prigioniero dei dizionari forniti. of_set_translation(chiave, testo) sovrascrive una stringa di interfaccia, con priorità sul dizionario di lingua:

// Vocabolario di settore: parlare di "sezioni" invece che di "pannelli"
uo_dock.of_set_translation("dock.float", "Stacca la sezione")
uo_dock.of_set_translation("dock.autohide", "Nascondi la sezione")
uo_dock.of_set_translation("dock.closePanel", "Chiudi la sezione")

Due impieghi:

// Alimentare una lingua propria dal proprio archivio di traduzione
uo_dock.of_set_translation("dock.float", of_traduire("DOCK_DETACHER"))
uo_dock.of_set_translation("dock.show",  of_traduire("DOCK_AFFICHER"))

L'override è impostato sull'istanza; viene annullato da of_reset().

Le famiglie di chiavi #

Le chiavi seguono la forma <dominio>.<nome>. Le famiglie principali:

PrefissoRiguarda
dock.*Pannelli ancorabili: staccare, nascondere, chiudere
toolbar.*Barra degli strumenti: spostare la barra, overflow
tab.*Schede: chiudere
tile.* · tilesbox.*Riquadri: dimensioni, messaggio « nessun riquadro »
ribbon.*Barra multifunzione: ridurre, espandere
mb.*Finestra di messaggio: pulsanti standard, mostrare / nascondere la password
webbrowser.*Browser web: menu contestuale (indietro, avanti, ricaricare)
picture.*Immagine: suggerimento di spostamento
sb.*Barra di stato: il suo nome per gli screen reader
color.*Selettore di colore: OK / Annulla

💡 Per conoscere la chiave esatta di un'etichetta, apra l'applicazione dimostrativa in inglese e poi in un'altra lingua: la stringa che cambia è quella del dizionario. L'elenco completo delle chiavi è fornito con la libreria.


5.3 Senso di lettura: da sinistra a destra / da destra a sinistra #

Per le lingue che si scrivono da destra a sinistra (arabo, ebraico), una sola chiamata ribalta l'intera applicazione:

// Event open dell'oggetto applicazione
PBT_SetFlowDirection("rtl")     // "ltr" per impostazione predefinita

Ciò che cambia in tutti i componenti, presenti e futuri:

// Cambio a caldo
PBT_SetFlowDirection("ltr")

Come il tema e la lingua, il senso di lettura viene iniettato prima del primo rendering: un componente creato dopo il cambio nasce già nel senso corretto.

⚠️ Il senso di lettura riguarda solo i componenti PBToolboxAI. I controlli PowerBuilder nativi delle Sue finestre (campi di immissione, DataWindow) restano a Suo carico.


5.4 Scrivere codice pronto per l'RTL #

Il ribaltamento è automatico per il layout. Non può esserlo per i valori che imposta Lei stesso: se scrive "left" in modo fisso, sarà a sinistra in entrambi i sensi di lettura.

Per questo motivo tutte le proprietà di posizionamento della libreria usano valori logici e non fisici:

Valore logicoNella scrittura sinistra → destraNella scrittura destra → sinistra
starta sinistraa destra
enda destraa sinistra

Sono esposti sotto forma di costanti, da leggere sull'oggetto a cui assegna il valore:

// Allineamento del testo, posizione di una fascia...
uo_titre.is_align      = uo_titre.ALIGN_START
uo_onglets.is_position = uo_onglets.POSITION_START

Le famiglie interessate: ALIGN_START / ALIGN_END (statictext, statusbar, picture), POSITION_START / POSITION_END (tab, dockcontainer), MARQUEE_START / MARQUEE_END (statictext).

I vecchi valori fisici "left" e "right" restano accettati ovunque: il Suo codice esistente continua a funzionare in modo identico. Sono semplicemente fissi — non si ribalteranno in rtl.

Le due eccezioni volute #

Alcuni posizionamenti non hanno un « inizio di lettura »: restano fisici, ed è intenzionale.


ImpostazionePortataDove chiamarla
PBT_SetLanguage (string as_lang)Intero processoopen dell'oggetto applicazione
of_set_translation (string as_clé, string as_texte)Una istanzaDopo la creazione del componente
PBT_SetFlowDirection (string as_sens)Intero processoopen dell'oggetto applicazione

Le tre impostazioni globali — tema, lingua, senso di lettura — si impostano insieme, nello stesso punto:

// Event open dell'oggetto applicazione
PBT_SetLicense(gs_titulaire, gs_cle_licence)
PBT_SetDefaultTheme("fluent-light")
PBT_SetLanguage("fr")
PBT_SetFlowDirection("ltr")
PBT_Warmup()

Open(w_principale)

← Temi · Sommario · Funzioni trasversali →