📒Gestione del multilingua

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.

Utilizzo del multilingua

Per poter gestire facilmente le traduzioni a livello di codice sono state introdotte queste nuove funzioni:

setTranslation($field, $value, $id_lang = null)

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:

$stato->setTranslation('title', $descrizione);

$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.

getTranslation($field, $id_lang = null)

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:

$stato->getTranslation('title');

$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.

getByField($field, $value, $id_lang = null)

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:

$stato_bozza = (new Stato())->getByField('title', 'Bozza);

$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.

Last updated