Come recuperare le traduzioni da codice in Sage X3

In Sage X3 ci sono diversi strumenti per gestire le traduzioni; vediamo come fare da programma per recuperare la traduzione di un testo.

Ci sono tre principali tabelle in cui le traduzioni vengono memorizzate:

  • tabella APLSTD, per i testi dei menu che si trovano tramite la funzione TXT
  • tabella TEXTE, per i testi individuati direttamente con un numero
  • tabella ATEXTRA, per i testi traducibili direttamente dall’utente finale, inseriti nelle tabelle degli oggetti

 

Tabella APLSTD (menu locali e messaggi)

Per recuperare i messaggi dalla tabella APLSTD basta utilizzare l’istruzione mess:

mess(numero_messaggio, capitolo,1)

che restituisce la traduzione del “messaggio/menu locale” indicato nella lingua correntemente utilizzata (vedi funzione TXT).

Se serve la traduzione in un’altra lingua, basta andare a modificare (e poi ripristinare) la lingua di sessione modificando la variabile globale GLANGUE.
Per esempio per recuperare la traduzione in inglese di un messaggio:

Local Char LINGUASESSIONE(3)
LINGUASESSIONE = GLANGUE
GLANGUE="ENG"
Infbox mess(numero_messaggio, capitolo, 1)
GLANGUE = LINGUASESSIONE

 

Le traduzioni sono contenute anche nei file menuLAN (menuita, menueng,…),
presenti nella cartella radice di ciascun dossier.
La funzione GENMENULOC (Sviluppo\Strumenti\Dizionario\Aggiornamento menu locali) è deputata all’aggiornamento di questi file.

I testi dei messaggi di servizio sono memorizzati anche in un file dentro la sottocartella LAN della cartella di installazione (..\runtime\LAN) .
Il nome del file è contenuto dentro la variabile di sistema  messname.

messname

Sage X3 messname

Questo file è comune a tutti i dossier.

 

Tabella TEXTE

La tabella TEXTE contiene tutte le traduzioni di quei messaggi identificati dal sistema con un numero.
Per recuperarne la traduzione si utilizza la funzione AFNC.TEXTE:

func AFNC.TEXTE(NUMEROMESSAGGIO)

Anche questa chiamata restituisce il testo di un determinato numero nella lingua di connessione.
Per modificare la lingua di traduzione bisogna procedere come nell’esempio precedente, modificando la variabile globale GLANGUE.

Tabella ATEXTRA

La tabella ATEXTRA contiene le traduzioni di tutti quei campi inserite in tabella con tipo AX1,  AX2, AX3,  AXX.

Questi campi in genere sono traducibili dall’utente finale attraverso il menu “Traduzione” collegato al campo stesso.

Sage X3 Translation field AXX AX1 AX2 AX3

Sage X3 Translation field AXX AX1 AX2 AX3

Per recuperare le traduzioni da programma si usa la funzione AFNC.TEXTRA:

func AFNC.TEXTRA("TABELLA","NOME_CAMPO","ID1","ID2")

Per capire i parametri da inserire basta andare a vedere i parametri impostati nel campo stesso:
cliccando sul menu contestuale “Parametri” del tipo dato

 

SageX3 Translation field AXX AX1 AX2 AX3 parameters

SageX3 Translation field AXX AX1 AX2 AX3 parameters

si accede alle impostazioni per pilotare il salvataggio sulla tabella ATEXTRA:

SageX3 Translation field AX1 AX2 AX3 AXX parameters values

SageX3 Translation field AX1 AX2 AX3 AXX parameters values

La seconda chiave, come si vede, può essere anche vuota,
l’importante è che sia salvaguardata l’univocità della tupla “Tabella-Campo-Chiave1-Chiave2”.

  • In questo esempio la chiamata restituisce la descrizione estesa del codice IMM della tabella diversa 901:
    func AFNC.TEXTRA("ATABDIV","LNGDES","901","IMM")
  • Qui invece restituisce la descrizione breve del codice contenuto in VARIABILE della tabella diversa 6052:
    func AFNC.TEXTRA("ATABDIV","SHODES","6052",VARIABILE)

Nell’help in linea di Sage, per il programma AFNC (TEXTRA, TEXTE), andare su riquadro Sviluppo, Sotto-programma.

 

Se si vuole inserire un campo di questo tipo in un oggetto, le fasi di modifica e caricamento in videata vanno gestite da codice;
in fase di modifica va utilizzata la chiamata Call MAJTEXTRA From ATEXTRA,
in fase di caricamento va utilizzata la chiamata Call LECTEXTRA From ATEXTRA.

  • Call MAJTEXTRA From ATEXTRA: fa la scrittura
    Call MAJTEXTRA([M:YXX0]YCAMPOAXX,"TABELLA","YCAMPOAXX",[F:YXX]CHIAVE1,[F:YPH]CHIAVE2) From ATEXTRA
  • Call LECTEXTRA From ATEXTRA: fa la lettura (questa chiamata viene usata anche da AFNC.TEXTRA)
    Call LECTEXTRA([M:YXX0]YCAMPOAXX,"TABELLA","YCAMPOAXX",[F:YXX]CHIAVE1,[F:YPH]CHIAVE2) From ATEXTRA
    come si vede, a differenza di AFNC.TEXTRA qui vanno specificati anche i campi coinvolti in videata e in tabella.

Anche in questo caso per utilizzare una lingua diversa da quella corrente bisogna modificare la variabile globale GLANGUE.

 

Va ricordato che tutte queste traduzioni, dopo essere state inserite, vanno “generate” tramite
la funzione GENTXTTRA (Sviluppo\Strumenti\Diversi\Aggiornamento testi traducibili):
in pratica viene aggiornato il file textraLAN (cioè textraita, textraeng, textrafra…).
Questa cosa è particolarmente importante per le stampe fatte tramite Crystal Report, che attingono le traduzioni da questi file.

 

Infine, a titolo di curiosità, per recuperare la traduzione breve direttamente dalla tabella ATEXTRA da programma:

If !clalev([F:YATX]) 
    Local File ATEXTRA [F:YATX] 
Endif 
Read[F:YATX]AXX0 = "ATABDIV";"SHODES";"ITA";"6052";+VARIABILE
TESTO = [F:YATX]TEXTE

dove AXX0 è l’indice della tabella ATEXTRA (CODFIC+ZONE+LANGUE+IDENT1+IDENT2)

Potrebbero interessarti anche...

Lascia un commento

Scopri di più da SageDev

Abbonati ora per continuare a leggere e avere accesso all'archivio completo.

Continue reading