Mostra paginaRevisioni precedentiPuntano quiEsporta in PDFTorna su Questa pagina è in sola lettura. Puoi visualizzare il sorgente, ma non puoi modificarlo. Contatta l'amministratore se pensi che ci sia un errore. ====== Dizionario ====== **NOTA:** il dizionario è presente dalla versione **4.3.1** Il dizionario è uno strumento che permette di tradurre tutte le etichette configurate nel client, e quindi di localizzare l’applicazione che viene costruita con il framework. Nello specifico vengono tradotte: *AZIONI (**etichetta** e **descrizione**) *ATTRIBUTI (**etichetta** e **descrizione**) *CLASSI (**etichetta** e **descrizione**) *LAYOUT CONTAINER (**title**) *LAYER (**etichetta** e **descrizione**) *PROGETTI *MENUBARITEM (**etichetta**) *ACCORDIONPANEITEM (**etichetta**) *LEAFITEM (**etichetta**) *REPORT (**descrizione**) *PARAMETRI (**valore**) *AMBITI (**descrizione**) Inoltre il dizionario prevede la traduzione delle ‘label’ definite in alcuni **widget** come: *COMBOBOX *DBCOMBOBOX *DBIMAGECOMBOBOX *DOMAIN *LABEL La traduzione avviene mediante la definizione dei contenuti di tre tabelle: ***gwm_dictionary_keys** (colonna delle chiavi [**dic_key**])\\ {{:gwusermanual:interface:interface:gwm_dictionary_keys.png?nolink&200|}} ***gwm_dictionary_lang** (colonna delle lingue [**dic_lang**])\\ {{:gwusermanual:interface:interface:gwm_dictionary_lang.png?nolink&200|}} ***gwm_dictionary_values** (colonna delle chiavi [**dic_key**], delle lingue [**dic_lang**] e dei valori [**dic_value**])\\ {{:gwusermanual:interface:interface:gwm_dictionary_values.png?nolink&600|}} Per ciascuna chiave, che si riferisce a una etichetta definita nell’applicazione, dovranno essere definiti i rispettivi valori in tutte le lingue con cui si vuole localizzare l’applicazione ===== Modifiche Impostazioni Microsoft SQL Server Management ===== IN CASO DI TABELLE GIÀ ESISTENTI EFFETTUARE QUESTE MODIFICHE Per poter rendere la colonna **dic_key** delle tabelle **gwm_dictionary_values** e **gwm_dictionary_keys** case sensitive è necessario controllare che in **Strumenti > Opzioni > Finestre di progettazione > Progettazione tabelle e Progettazione database** non sia presente la spunta su **Impedisci il salvataggio delle modifiche per cui è necessario ricreare la tabella**. MODIFICHE COLONNE Una volta eseguita la procedura precedente modificare il parametro **Regole di confronto** della colonna **dic_key** delle due tabelle **gwm_dictionary_values e gwm_dictionary_keys**. Cliccare con il tasto destro in una tabella e selezionare **Progetta**. Selezionare la colonna **dic_key** e nella sezione **Proprietà colonna** in basso modificare il parametro **Regole di confronto** spuntando l'opzione **Distingui maiuscole/minuscole**. **Eseguire per entrambe le tabelle come sopra indicato** ===== Traduzione Messaggi Azioni ===== Per tradurre i messaggi delle azioni è necessario richiamare la funzione: ***actionMessagesTranslate(label, callback)** per la traduzione di un solo messaggio; ***actionMessagesMapTranslate(labelMap, callback)** per la traduzione di più messaggi. TRADUZIONE DI UN SOLO MESSAGGIO: <code javascript> //etichetta da tradurre var label = 'casa'; //chiamata della funzione di traduzione actionMessagesTranslate(label, function(response){ //recupero della traduzione var labelTranslated = response; //codice dopo la traduzione }); </code> TRADUZIONE DI PIU’ MESSAGGI: <code javascript> //etichette da tradurre var label1 = 'casa'; var label2 = 'mare'; //creazione mappa con le etichette var labelMap = { /*nome*/ /*contenuto*/ label1 : label1, label2 : label2 }; //chiamata della funzione di traduzione actionMessagesMapTranslate(labelMap, function(response){ //recupero della traduzione var label1Translated = response.label1; var label2Translated = response.label2; //codice dopo la traduzione }); </code> In questo caso va creata una mappa da passare alla funzione con tutte le label da tradurre; come **chiave** va usato il **nome della label** e come **valore** il suo **contenuto**. In entrambi i casi tutto il codice che segue la traduzione del messaggio dovrà essere inserito nella funzione di callback <nowiki>(//codice dopo la traduzione)</nowiki>. ===== Tradurre i Messaggi nei Groovy ===== Per poter tradurre i messaggi nei groovy occorre importare la libreria: **import org.springframework.context.i18n.LocaleContextHolder**; All'interno del metodo groovy è necessario recuperare la lingua da utilizzare, ovvero definire una variabile come segue: **def locale = LocaleContextHolder.getLocale()**; I metodi da utilizzare per tradurre un messaggio sono due: \\ **dictionaryService.groovyMessagesTranslate(messaggio_da_tradurre, locale)**; \\ Questo metodo deve essere utilizzato nel caso in cui il messaggio da tradurre sia una stringa classica, ovvero senza variabili al suo interno \\ **dictionaryService.groovyMessagesTranslateWithHM(messaggio_da_tradurre, mappa, locale**); \\ Questo metodo deve essere utilizzato quando la stringa da tradurre contiene anche delle variabili al suo interno. Ogni variabile che viene inserita nel messaggio deve essere racchiusa tra ${}. La mappa da passare al metodo deve contenere come tutte le variabili presenti nel messaggio (la chiave nella mappa è il nome variabile) e il loro corrispondente valore. Entrambi i metodi restituiscono il messaggio tradotto secondo la lingua recuperata tramite “locale” La Stringa da passare ai due metodi corrisponde alla chiave del messaggio importato da Admin nel dizionario. **ESEMPI:** dictionaryService.groovyMessagesTranslate <code groovy> import org.springframework.context.i18n.LocaleContextHolder; //recupera la lingua def locale = LocaleContextHolder.getLocale(); def message = "casa"; //chiamata della funzione di traduzione e salvataggio del risultato nella variabile String messageTranslated = dictionaryService.groovyMessagesTranslate(message,locale); </code> dictionaryService.groovyMessagesTranslateWithHM <code groovy> import org.springframework.context.i18n.LocaleContextHolder; //recupera la lingua def locale = LocaleContextHolder.getLocale(); def message = "Questo è l'account di ${userName}"; //creazione della mappa di variabili contenute nel messaggio def variableMap = new HashMap<String,Object>(); variableMap.userName = "ABA"; //chiamata della funzione di traduzione e salvataggio del risultato nella variabile String translatedMessage = dictionaryService.groovyMessagesTranslateWithHM(message, variableMap, locale); </code> ===== Traduzione Report ===== La traduzione dei valori nelle report avviene mediante la traduzione del **“Valore Espressione Default”** (iReport) / **“Espressione valore predefinito”** (Jaspersoft Studio) del parametro da tradurre. L’informazione si trova nelle **Proprietà** del **Parametro**. iReport {{:gwusermanual:interface:interface:report.png|}} Jaspersoft Studio {{:gwusermanual:interface:interface:paramet.png|}} **NOTE:** la traduzione avverrà per i parametri che hanno la classe uguale a “**java.lang.String**” e il campo “**valore espressione default**” **non vuoto**. ==== Caso d’Uso ==== Per creare una report localizzata è necessario seguire i seguenti passaggi: - Definire le etichette da tradurre nei parametri, creando un nuovo parametro per ogni etichetta. Il **nome del parametro non influisce** con la traduzione, **è consigliato** utilizzare nel nome la parola “**label**”; - Nella finestra **Proprietà** del parametro impostare come **Classe** / **Classe Parametro** il tipo **java.lang.String**; - Inserire in **Valore Espressione Default** / **Espressione valore predefinito** il contenuto che verrà tradotto. Il **Valore Espressione Default** non dovrà esse vuoto, altrimenti non verrà effettuata la traduzione; - Verificare che nelle tabelle **gwm_dictionary_keys** e **gwm_dictionary_values** siano presenti le chiavi delle etichette da tradurre. {{:gwusermanual:interface:interface:etichetta.png|}} ==== Descrizione Dettagliata sul Funzionamento ==== La traduzione delle report avviene sovrascrivendo il valore di default del parametro con la relativa traduzione, nel metodo **“createDefaultParameters”** della classe **GwReportService**. Prima della traduzione vengono effettuati dei controlli per verificare che il parametro non sia system defined (!parameter.isSystemDefined()) e che la classe sia una stringa (parameter.getValueClassName().equals("java.lang.String")). Inoltre viene controllato se il valore del parametro contiene delle virgolette e nel caso in cui esse siano presenti vengono rimosse. gwusermanual/interface/interface/dizionario.txt Ultima modifica: 2019/11/06 09:42(modifica esterna)