• IT
betterdocs-cat-icon 1-svg

Qualcosa è andato storto?

Condividi con noi la tua opinione per migliorare la nostra documentazione.

    Getting Started

    • Introduzione Instant Developer Cloud
    • Composizione della piattaforma
    • Struttura dei progetti
    • La programmazione relazionale
    • Apprendere l’uso di Instant Developer Cloud

    Struttura di un'applicazione

    • Introduzione (applicazione e sessione)
    • Le videate
    • Classi e librerie
    • Risorse e CSS
    • I pacchetti
    • Programmazione asincrona

    Struttura del database

    • Introduzione (struttura del database)
    • Definizione degli schemi relazionali
    • Scrittura di query ed esecuzione di comandi
    • Gestione dei database nel cloud
    • Il Cloud Connector

    Document Orientation

    • Introduzione Document Orientation
    • Definire Documenti e Collection
    • Utilizzo dei documenti
    • Estensione dei documenti

    Datamap

    • Introduzione Datamap
    • Creazione di liste di documenti
    • Modifica dei documenti con videate di dettaglio
    • Datamap innestate e ricorsive

    IonicUI

    • Introduzione IonicUi
    • Le pagine IonicUI
    • Definire il contenuto delle pagine
    • Il page controller
    • Il metodo app.popup
    • Videate come elementi visuali
    • Personalizzazione di IonicUI
    • Configurazione dei ruoli e degli accessi

    Pannelli e Griglie

    • Introduzione (Pannelli e Griglie)
    • Anatomia di un pannello
    • I pannelli a runtime

    Web API e file system

    • Introduzione Web API
    • Il file system
    • Consumare Web API
    • Esporre Web API
    • Web API in formato OData
    • Utilizzare Web API Instant Developer Foundation
    • Web API in formato OpenAPI

    Sincronizzazione

    • Introduzione sistema di sincronizzazione
    • Scambio di messaggi in tempo reale
    • Document Orientation Remota
    • Sincronizzazione del database offline

    Debugging e Test

    • Introduzione Debugging e Test
    • Strumenti e tecniche di debug
    • Test automatico delle applicazioni

    Traduzioni

    • Introduzione (traduzioni)
    • Processo di traduzione
    • Funzionamento del framework di localizzazione
    • Localizzazione di numeri e date

    Integrazioni di componenti esterni

    • Introduzione (integrazioni di componenti esterni)
    • Integrazione di componenti JavaScript
    • Integrazione di librerie di back-end
    • Integrazione di un plugin Cordova

    Launcher e Pubblicazione

    • Introduzione Launcher
    • I plugin nativi
    • Test delle applicazioni nei launcher
    • Pubblicazione sugli store
    • Configurazioni per gli store
    • Fase di build e di invio
    • Gestione dell’applicazione

    Analitiche e Feedback

    • Introduzione Analytics e Feedback
    • Installazione ed uso di Analytics
    • Raccolta dei feedback degli utenti

    Server di Produzione

    • Introduzione server di produzione
    • I server di Instant Developer Cloud
    • I server My Cloud
    • I server Self Managed
    • Tabella comparativa

    Cloud Connector

    • Cos’è il Cloud Connector
    • Installazione Cloud Connector
    • Configurazione
    • Installazione come servizio
    • Esempio di utilizzo
    • Controllo remoto
    • Note

    Team Works

    • Perché non basta GitHub?
    • Team Works: concetti base
    • Organizzazione del lavoro consigliata
    • Risoluzione dei problemi relativi a Team Works
    • Domande sull’utilizzo di Team Works

    Manuale PWA

    • Cos’è una PWA?
    • Creazione di una PWA su Instant Developer Cloud
    • Life Cycle
    • Installazione PWA
    • Funzionalità
    • Plugin
    View Categories

    Processo di traduzione

    Contenuti
    • Durante lo sviluppo
    • Preparazione alla localizzazione
      • Selezione delle liste valori da localizzare
      • Selezione delle stringhe da localizzare
      • Verifica delle stringhe originali da localizzare
    • Gestione della localizzazione
    • Andare a runtime
    • Traduzione di librerie e di applicazioni
    • Teamworks e gestione traduzioni
    • Localizzazione di versioni successive dell’applicazione
    • Errori di installazione relativi alla localizzazione

    Durante lo sviluppo #

    Il sistema di traduzioni di Instant Developer Cloud è pensato per essere completamente non invasivo in relazione al processo di sviluppo. 

    Gli sviluppatori non devono quindi avere alcuna particolare accortezza durante lo sviluppo dell’applicazione. Non devono nemmeno sapere a priori che l’applicazione dovrà prima o poi essere localizzata.

    L’unica indicazione da applicare, utile anche nel caso in cui l’applicazione non debba essere tradotta, è quella di utilizzare una particolare funzione per la composizione dei messaggi da mostrare all’utente. Vediamo un esempio. Invece che:

    let msg = “L’utente “ + nome + ” non esiste”;

    È opportuno utilizzare la seguente notazione:

    let msg = t(“L’utente @nome non esiste”, { nome : nome });

    La funzione t permette di comporre un messaggio dato un template e un oggetto che specifica i dati da sostituire. Nel template i parametri sono indicati da @ seguita dal nome della proprietà dell’oggetto passato come dati.

    In questo modo si ha il vantaggio di scrivere un codice più leggibile durante lo sviluppo. Inoltre, il messaggio è già pronto per la localizzazione. Nella fase di localizzazione infatti, è necessario fornire il massimo contesto possibile per avere una traduzione accurata. Localizzare il messaggio: “L’utente @nome non esiste” ha un certo contesto; tradurre separatamente le due stringhe “L’utente” e “non esiste” non fornisce lo stesso contenuto semantico ed il risultato sarà qualitativamente inferiore o addirittura errato.

    Instant Developer Cloud non consente l’uso delle stringhe template JavaScript ai fini della traduzione. L’uso della funzione di composizione t invece permette di attivare il framework di localizzazione per il messaggio ad essa applicato.

    Preparazione alla localizzazione #

    Vediamo ora quali operazioni devono essere fatte prima della fase di traduzione vera e propria. Queste operazioni devono essere effettuate tramite l’IDE di Instant Developer Cloud da parte di persone con conoscenza della struttura dell’applicazione. Non è richiesta invece esperienza di programmazione.

    Selezione delle liste valori da localizzare #

    Le liste valori possono essere usate per mostrare la descrizione associata ad un dato dell’applicazione nell’interfaccia utente. In questi casi, la lista valori dovrà essere localizzata. Il primo passaggio di preparazione, consiste quindi nella ricerca delle liste valori da localizzare.

    Tramite la funzione di ricerca dell’IDE è possibile trovare tutte le liste valori presenti nel progetto, come si vede nell’immagine seguente.

    ZlPdtKBjY IBD kKvuoN6W5Uofm0ydAjAsEhH4Y5RH qUcEEh7ds3TWCszhyz8X1cbsi b5LyUNwA0nkijLIl EKn6sgtoNoPCaQeIFSdowvUWZjqIQjaCf5 VKQF NgXD2JElkaPajn2IQ92sRnDw Instant Developer

    La ricerca avviene scrivendo @type:valuelist nel campo di ricerca ed impostando il contesto a ovunque. La selezione delle liste valori da tradurre deve avvenire solo negli oggetti del progetto, non in quelli dei package importati.

    Selezionando una lista valori, è possibile renderla localizzabile impostando il flag Traducibile nella barra delle proprietà. In questo modo il contenuto della lista verrà incluso nei dati del sistema di traduzione.

    Selezione delle stringhe da localizzare #

    La seconda operazione consiste nel selezionare le stringhe che dovranno essere localizzate rispetto a tutte quelle presenti nel sistema di traduzione. A tal fine si consiglia di operare come segue:

    1. Attivare il sistema di traduzione, tramite il menu personalizzato Localizzazione quando nell’albero viene selezionata l’applicazione da localizzare.
    QPpifOi7XfYU4WZ9SmrMvZMzTMp0P0rfRCNRfAU6ghNRC1z9jZEbzIkmLU6INgH7iHOIH8CF7LQxnq Instant Developer
    1. Aggiungere la prima lingua in cui si desidera localizzare l’applicazione, tramite il pulsante Aggiungi lingua in basso nella pagina di localizzazione.
    2ghzXyMDe352DYtEgDXdvDuOdN7VE9Q8YpWkKHgw0kqlynsnG0CFUvQ3IIMXZXdQr2ynhT9pCch4YUHZmzI Co9izJfLeb 0p3HV4BSHBWVIUTh49lshzKauEcL6iPpbAsud4Gijy3iIP2poRKo97A Instant Developer
    1. Dopo aver aggiunto una lingua, apparirà la lista delle stringhe non ancora definite, cioè per le quali non è ancora stato deciso se devono essere localizzate o meno. Il sistema di localizzazione estrae la lista delle stringhe dalle proprietà localizzabili degli elementi visuali, come ad esempio innerText, dalle stringhe nel codice gestite con la funzione t e dalle liste valori marcate come traducibili.
    2. In questo momento è importante decidere se una stringa deve essere localizzata o meno. Per ogni stringa della lista di quelle non definite, utilizzare i pulsanti sulla riga per effettuare questa decisione. Il pulsante con l’icona freccia permette di mostrare la posizione della stringa nel progetto, quindi la videata o il metodo in cui essa appare. In questo stato è possibile cliccare in ogni punto dello schermo per ritornare alla pagina di localizzazione.
    1M0worg2lm 3pkly0EYhoc6OY oLkJIOzLt0SlMYzCE4Ee9Txb nWmyGpGuPNBD0adPjhdeY28rD3p5AU bo I8TCvgJFSsZWLdcRsUsuHH0jTo1tyB8TuUhij83vQjakWStGvnv Tf90ks41SI45g Instant Developer

    I pulsanti Tutte localizzabili e Tutte non localizzabili permettono di modificare lo stato di tutte le righe presenti a video. Essi agiscono sulla selezione presente a video, in considerazione dell’eventuale ricerca effettuata tramite il campo Cerca in alto a destra.

    Attenzione: la selezione delle stringhe localizzabili è di fondamentale importanza. Rendere localizzabile una stringa che non deve esserlo potrebbe modificare il comportamento dell’applicazione. Al contrario, considerare non localizzabile una stringa che deve esserlo risulterà all’utente come un errore nell’interfaccia utente.

    Al termine della selezione è possibile confermare le modifiche cliccando sul pulsante Salva. In questo momento, nell’albero del progetto verrà creata o aggiornata una nuova risorsa di tipo Lingua con lo stesso nome della lingua da localizzare, come mostrato nell’immagine seguente. Questa risorsa contiene i dati di localizzazione di una specifica lingua e non deve essere modificata manualmente, perché è possibile causare incoerenze nel sistema di traduzione. Se viene cancellata, verranno perse le traduzioni in una determinata lingua. 

    Nota bene: dopo aver confermato le modifiche, occorre salvare il progetto perché le modifiche siano effettivamente registrate.

    Le stringhe non localizzabili sono consultabili selezionando la voce Non localizzabili nel campo di selezione in alto a sinistra. In questa lista è possibile invertire lo stato di localizzabilità per ogni stringa  tramite i pulsanti sulla riga, come già visto in precedenza.

    8uLsYcQ3YDMdOD2o8pcuEZPanjLkI9ZNnhOdj4szgY3TtXa8z8VVOtCPiXak7vln5JIF n29k1 931I7mg9g1 RQQWEb4Jq nbxJdo Instant Developer

    Verifica delle stringhe originali da localizzare #

    Prima di passare all’operazione di traduzione vera e propria, si consiglia di verificare la correttezza (ortografica, della forma e del significato) dei testi della lingua principale dell’applicazione, quella in cui è stato sviluppato il progetto, ovvero la lingua a partire dalla quale deve essere eseguita la traduzione. A tal fine è possibile selezionare la voce Modifica originali nel campo di selezione in alto a sinistra della pagina di localizzazione. In questa modalità di lavoro, è possibile modificare le stringhe originali. Cliccando il pulsante Salva, le modifiche effettuate verranno riportate nel codice sorgente o negli elementi delle videate relativi. Nota bene: sarà possibile modificare solo le stringhe selezionate come localizzabili.

    lDbqpLNrv64ZFTZf5BecUFaTvNA3RavtVPs1x1G12Ne 2vEKWTu Instant Developer

    Gestione della localizzazione #

    Dopo aver verificato le stringhe originali, è possibile iniziare la localizzazione vera e propria. A tal fine è possibile selezionare la voce Localizzabili dal campo di selezione in alto a destra nella pagina di localizzazione. Apparirà una lista come nell’esempio seguente:

    sUNTYR TxO5zXHgrf7Y 9 sRYTN5GN4uB5POjG6rUzBy0tWX1rlTYWlSwCjWtuuMHjfxGaspyiKf53k4ZT2faQrsD Q NFFtM cuSgTnG4pOAo8DAs2ct618BpGmLb8 UZXPC4RGCRy8BriBIEFNKg Instant Developer

    Per ogni stringa è possibile inserire direttamente la versione localizzata nelle varie lingue utilizzando i campi a sfondo giallo. I pulsanti presenti su ogni riga permettono rispettivamente di:

    • Rendere non localizzabile una stringa che in precedenza era stata ritenuta localizzabile o che il sistema di localizzazione ha identificato come localizzabile (icona X).
    • Verificare la posizione della stringa nel progetto (icona freccia).
    • Tradurre automaticamente la stringa utilizzando Google Translate (icona pergamena).

    Inserendo una traduzione, essa verrà copiata in tutte le stringhe uguali successive nella lista non ancora localizzate. È sempre necessario verificare ogni stringa perché lo stesso testo può avere traduzioni diverse in contesti diversi.

    I pulsanti in alto permettono di:

    • tradurre automaticamente tutte le stringhe non ancora localizzate presenti nella lista, tenendo in considerazione anche un’eventuale ricerca in corso.
    • Importare un file XML contenente delle traduzioni.
    • Esportare la lista attuale in formato XML, senza tenere conto di una eventuale ricerca in corso.

    L’esportazione e l’importazione dei file XML permettono di inviare un file di localizzazione ad un’agenzia esterna che può effettuare la traduzione utilizzando un software CAT. Quando le versioni localizzate vengono importate dal file XML, esse vengono marcate come definitive e appariranno nella lista con uno sfondo verde. Si considera infatti che solo le traduzioni create a seguito di un processo di localizzazione professionale possano essere considerate allo stato dell’arte, e quindi definitive.

    Nella parte alta della videata è presente un secondo campo di selezione che permette di selezionare:

    • tutte le stringhe localizzabili e le relative traduzioni, tramite la voce Mostra tutte;
    • tutte le stringhe da localizzare, almeno in una lingua, tramite la voce Mostra da localizzare;
    • tutte le stringhe non definitive tramite la voce Mostra non importate.

    Al termine dell’operazione di localizzazione, l’applicazione sarà pronta per il test e la distribuzione nelle varie lingue supportate.

    Andare a runtime #

    Quando l’applicazione contiene i dati di localizzazione come risorse di tipo lingua, è possibile testare la versione localizzata avviandola in anteprima nell’IDE, oppure installandola su un server di produzione.

    La lingua selezionata per una determinata sessione browser viene identificata automaticamente dalla lingua del browser, oppure può essere impostata da codice nell’evento app.onStart, impostando la proprietà app.langCode al codice lingua desiderato, formato da due caratteri. La seguente riga di codice, ad esempio, mostra l’applicazione in lingua francese.

    App.Session.prototype.onStart = function(request)
    {
      app.langCode = "fr";
      …
    }

    Se la risorsa corrispondente non è presente nel progetto, verrà utilizzata quella della lingua marcata come default nella videata popup per l’aggiunta della lingua. Se nessuna lingua è stata marcata come default, verranno utilizzate le stringhe originali.

    Modificando la proprietà app.langCode quando la sessione è già iniziata, la modifica avrà effetto solo sulle stringhe che vengono gestite dal sistema di localizzazione dopo la modifica. Se quindi viene eseguito uno script che contiene risorse localizzate, verranno utilizzate le versioni relative al nuovo valore; al contrario le videate aperte non subiranno modifiche. Se quindi si desidera modificare dinamicamente la lingua in cui viene mostrata l’applicazione, è necessario chiudere e riaprire tutte le videate, ed eventualmente ricaricare o aggiornare la visualizzazione del menu principale.

    Traduzione di librerie e di applicazioni #

    Abbiamo visto nei paragrafi precedenti che per aprire la videata di localizzazione occorre selezionare l’oggetto applicazione nell’albero del progetto: questo consente di creare all’interno dell’applicazione le risorse di tipo lingua necessarie alla sua localizzazione. A tal fine non vengono considerati solo le videate e gli script presenti nell’applicazione, ma anche quelli presenti in tutte le librerie che essa utilizza. Le stringhe da localizzare infatti, possono essere contenute anche nelle videate o nei metodi delle classi contenuti in una libreria del progetto.

    Se il progetto contiene più applicazioni, oppure se i componenti di libreria fanno parte di un componente che può essere esportato in altri progetti, può essere conveniente effettuare una localizzazione specifica di una determinata libreria. In questo modo le stringhe della libreria non verranno più considerate all’interno del processo di localizzazione delle applicazioni che la utilizzano. Per localizzare una libreria è possibile procedere esattamente come nel caso dell’applicazione, selezionando l’oggetto libreria nell’albero e poi usando il menù personalizzato Localizzazione. Il processo di localizzazione di una libreria permette di creare le risorse di tipo lingua all’interno della libreria stessa, e a questo punto essa verrà considerata come già localizzata quando si procede alla localizzazione delle applicazioni.

    Localizzando una libreria, quindi, si evita di doverla gestire per ogni applicazione contenuta nel progetto. Se la libreria viene esportata in un componente, quando viene importata viene considerata già localizzata e quindi non entra più nel processo di localizzazione delle applicazioni che la utilizzano.

    Nota bene: una libreria importata tramite un componente è un oggetto non modificabile. Se si desidera quindi modificare i dati di localizzazione è necessario sempre farlo nel progetto originale, quello da cui è stato esportato il componente.

    Teamworks e gestione traduzioni #

    Se un progetto è gestito da un gruppo di lavoro, occorre considerare come il sistema di localizzazione interagisce con il sistema di teamworking. In particolare:

    • Rendere localizzabile una stringa contenuta nel codice di un metodo e ritenuta non definita o non localizzabile modifica il codice del metodo.
    • Modificare le stringhe originali modifica i metodi o le videate in cui esse sono presenti.
    • Tutte le altre modifiche aggiornano le risorse di tipo lingua.

    Rispetto a Teamworks, queste modifiche devono essere considerate come ogni altra modifica al progetto, quindi si applicano le operazioni di commit, push, fetch, eccetera.

    Attenzione: le modifiche alle risorse di tipo lingua sono considerate come atomiche, quindi non è possibile modificarle contemporaneamente in due branch o fork diversi del progetto. I conflitti su queste risorse vengono risolti prendendo una versione o l’altra, senza unire insieme le variazioni effettuate su entrambe le versioni. È quindi necessaria un’attenta pianificazione delle operazioni di localizzazione per evitare all’origine tali conflitti.

    Localizzazione di versioni successive dell’applicazione #

    Dopo aver completato il processo di localizzazione relativo ad una versione dell’applicazione, il percorso di implementazione della stessa normalmente procede fino ad arrivare ad una versione successiva.

    A questo punto occorre considerare come cambia il processo di localizzazione della versione successiva dell’applicazione. In generale, le modifiche al progetto possono portare ai seguenti casi:

    • Aggiunta di nuove stringhe da localizzare o non definite.
    • Eliminazione di stringhe già localizzate.
    • Modifica di stringhe già localizzate.

    Le operazioni di localizzazione di una versione successiva dell’applicazione avvengono con gli stessi strumenti visti finora. In particolare:

    • La lista delle stringhe non definite conterrà tutte e sole le nuove stringhe da localizzare, che non siano state gestite nel codice tramite la funzione t.
    • I dati di localizzazione delle stringhe non più presenti nel progetto verranno eliminati al primo aggiornamento delle risorse di localizzazione.
    • Le stringhe modificate dovranno essere nuovamente localizzate. Non vengono mantenuti i dati di localizzazione precedenti. Se si utilizza un processo di localizzazione professionale, ovvero le stringhe vengono sempre esportate in un file XML per essere localizzate in un software CAT, sarà lo stesso software CAT a rilevare le modifiche. In questo modo il lavoro fatto sulle traduzioni precedenti delle stringhe modificate può essere parzialmente recuperato da chi utilizza il software CAT. Ciò, nel lungo termine, genera notevoli vantaggi a livello di tempi e di costi rispetto al ricorso alla traduzione manuale o automatica delle stringhe nel sistema di traduzione di Instant Developer Cloud. 

    Nella videata di gestione della localizzazione è possibile utilizzare il secondo campo di selezione per vedere la lista delle sole stringhe da localizzare. In questo modo è possibile intervenire solo sulla parte di progetto che è variata. Per quanto riguarda l’esportazione di file XML per le agenzie di traduzione, è possibile scegliere se esportare tutte le stringhe localizzabili, oppure solo quelle ancora da localizzare, a seconda del metodo di localizzazione desiderato dall’agenzia.

    Errori di installazione relativi alla localizzazione #

    Durante l’installazione di un’applicazione in un server di produzione, è possibile ricevere un errore relativo alla mancanza dei dati di localizzazione dell’applicazione. Quando infatti la console chiede al server IDE di compilare una build dell’applicazione, se essa contiene almeno una risorsa di tipo lingua si attiva un algoritmo di controllo che verifica se tutte le stringhe localizzabili sono effettivamente state localizzate e che non siano presenti stringhe non definite.

    In mancanza di una localizzazione completa, la build fallisce e non è possibile installarla. Per risolvere questo problema occorre aprire il progetto e inserire i dati di localizzazione, anche utilizzando il sistema di traduzione automatica.

    È possibile saltare il controllo della localizzazione in fase di build abilitando il flag Salta il controllo delle traduzioni nella videata delle opzioni di traduzione, che però è attivo solo se si abilita anche l’opzione di debug a runtime, in modo da marcare la build come di test e non come installazione definitiva.

    I 4ZhzmKNIyfulsQF3395t4IWCycdT12jtQujFAG9k6P2PC8ejhQW1xwBggePQ6SRugfUqCmedoaCQfnywZjG2FVu0cQuuHHrcYGr5niOPShPFWb8kseg9CzVBoLuQstTX3lrDXDnX1ztssV w9Hg Instant Developer
    Ti è stato utile?
    Aggiornato il 15 Aprile 2024
    Introduzione (traduzioni)Funzionamento del framework di localizzazione
    Contenuti
    • Durante lo sviluppo
    • Preparazione alla localizzazione
      • Selezione delle liste valori da localizzare
      • Selezione delle stringhe da localizzare
      • Verifica delle stringhe originali da localizzare
    • Gestione della localizzazione
    • Andare a runtime
    • Traduzione di librerie e di applicazioni
    • Teamworks e gestione traduzioni
    • Localizzazione di versioni successive dell’applicazione
    • Errori di installazione relativi alla localizzazione

    Caratteristiche

    • Perché Instant Developer
    • IDE e Ambiente di Sviluppo
    • Pubblicazione Web & Mobile
    • Software Life Cycle & DevOps
    • Database, Integrazione, Sync
    • Collaboration & Workflow

    Soluzioni

    • Freelance
    • Software House
    • Company IT
    • Casi di successo
    • Applicazioni Sviluppate

    Azienda

    • Chi Siamo
    • Contatti
    • Lavora con noi

    Risorse

    • Documentazione
    • Risorse e Tutorial
    • Blog
    • Starter Kit
    • Pricing
    • Inizia Ora
    Crea un account e Inizia Gratis
    • Seguici su Twitter
    • Seguici su Facebook
    • Seguici su LinkedIn
    • Seguici su YoutTubeSeguici su YouTube
    Questo sito è protetto dalla tecnologia reCAPTCHA Enterprise e si applicano l'Informativa sulla privacy e i Termini di servizio di Google.
    Google Policy | Termini
    © Pro Gamma - p.iva, c.f. e iscr. Camera di Commercio Bologna 01985091204 - Sede legale Via D'Azeglio, 51 40123 Bologna - Italia Pro Gamma Instant Developer® è un marchio registrato.
    Privacy Policy | Cookie Policy
    • IT