Dalla versione 2.5 è stata ampliata la gestione del multilingua che ora include anche i record "fissi" presenti a database.
Le lingua disponibili a gestionale sono definite nella tabella zz_langs:
E' possibile selezionare la lingua da utilizzare nel gestionale da Strumenti/Impostazioni/Generali/Lingua.
Essa viene letta da codice tramite la funzione getDefault() e impostata nel core tramite la funzione setDefault():
Il valore predefined della tabella zz_langs non è legato alla selezione delle lingua corrente, ma è un'impostazione interna che non va modificata, perchè consente la corretta funzionalità delle traduzioni. Essa infatti permette di impostare il valore predefinito per la ricerca di stringhe fisse a livello di codice tramite la funzione getPredefined().
Questo valore viene definito nel core da setPredefined():
Con la nuova gestione delle lingue per ogni tabella che contiene un valore testuale è presente una corrispondente tabella_lang che contiene il riferimento all'id_record del record da tradurre, l'id_lang che corrisponde alla lingua, e il title ovvero la traduzione del record.
Ad esempio la tabella co_stati_documento conterrà l'id, name, icona e colore
mentre la tabella co_stati_documento_lang conterrà la traduzione in italiano con id_lang = 1 e quella in inglese con id_lang = 2 (come definito in zz_langs) per ogni id_record.
Per poter gestire facilmente le traduzioni a livello di codice sono state introdotte queste nuove funzioni:
Con questa funzione è possibile impostare il valore di una traduzione nella tabella $table_lang a partire dall'oggetto iniziale.
Ad esempio, si potrà aggiornare la traduzione di uno stato documento a partire dall'oggetto $stato con:
$id_lang di default è impostato nella lingua in uso dal gestionale, per forzare l'aggiornamento della traduzione di un record in una lingua diversa da quella impostata di default è necessario passare alla funzione anche l'$id_lang.
Con questa funzione è possibile leggere il valore di una traduzione nella tabella $table_lang a partire dall'oggetto iniziale.
Ad esempio, per recuperare la traduzione di uno stato documento a partire dall'oggetto $stato si dovrà utilizzare:
$id_lang di default è impostato nella lingua in uso dal gestionale, per forzare la lettura della traduzione di un record in una lingua diversa da quella impostata di default è necessario passare alla funzione anche l'$id_lang.
Con questa funzione è possibile cercare l'id_record corrispondente a una determinata traduzione.
Ad esempio, per recuperare l'id_record dello stato documento "Bozza", si dovrà utilizzare:
$id_lang di default è impostato nella lingua in uso dal gestionale, per forzare la ricerca in un'altra lingua diversa da quella impostata di default è necessario passare alla funzione anche l'$id_lang.