• 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

    Introduzione (traduzioni)

    Contenuti
    • L’approccio tradizionale
    • Problemi dell’approccio tradizionale
    • L’approccio Instant Developer Cloud

    L’adattamento di un’applicazione ad un contesto multilingue è un compito complesso. I principali punti di intervento, in funzione della lingua della sessione, sono i seguenti:

    • Modifica delle proprietà degli elementi visuali e delle liste valori.
    • Modifica delle stringhe contenute nel codice.
    • Modifica dei formati di input e output dei numeri e delle date.
    • Modifica delle descrizioni di entità estratte dal database.

    Ovviamente non tutte le proprietà, le liste valori, le stringhe, i formati e le descrizioni devono risultare tradotte, solo quelle che si riferiscono ad un contesto multilingue.

    Per ottenere questo risultato occorre un sistema in grado di localizzare tutte le istanze di stringhe da tradurre, permettere ai traduttori di effettuare la traduzione conoscendo il contesto, infine un sistema che adatti l’output dell’applicazione verso il browser selezionando i dati di traduzione relativi alla lingua di ogni diversa sessione di lavoro.

    L’approccio tradizionale #

    L’approccio tradizionale, possibile anche con Instant Developer Cloud, è piuttosto semplice: utilizzare una mappa, cioè un insieme di elementi chiave-valore, per valorizzare ogni elemento visuale che contiene informazioni dipendenti dalla lingua. È quindi sufficiente un oggetto javascript definito a livello di applicazione che rappresenta le traduzioni di tutti gli oggetti traducibili, in tutte le lingue disponibili. Poi, tramite codice, si carica la traduzione corretta.

    Immaginiamo di avere quindi un oggetto così costituito:

    App.traduzioni = {
      ITEM_LABEL: {
        “it”: “Articolo”,
        “en”: “Item”,
        “ru”: “пункт”,
        …
      },
      …
    };

    In tutti i punti in cui ci si riferisce all’etichetta di un articolo è sufficiente scrivere la seguente riga di codice nell’evento onLoad oppure onRowComposition.

    $itemLabel.innerText = App.traduzioni.ITEM_LABEL[app.langCode];

    Dove app.langCode è la proprietà della sessione che rappresenta il codice della lingua (“it”, “en”, eccetera).

    Si potrebbe considerare anche un approccio più generale, creando un metodo che scorre la struttura degli elementi visuali di una videata e applica tutte le traduzioni in base al nome dell’elemento, ma come vedremo in seguito, questa non è un’opzione percorribile.

    Problemi dell’approccio tradizionale #

    I problemi che l’approccio tradizionale pone sono molti. Vediamo i principali:

    1. Durante lo sviluppo è necessario decidere da subito quali sono le informazioni che devono essere localizzate. Questa informazione, invece, non è così scontata ed è facile dimenticarsene, considerato che anche in un’applicazione costituita da dieci videate si può facilmente arrivare ad avere centinaia di stringhe localizzabili.
    2. Non è facile decidere se la medesima informazione deve avere lo stesso codice di traduzione o meno: dovendo rendere localizzabile la label Articolo in diverse videate, è vero che in tutte queste si deve usare sempre la stessa costante ITEM_LABEL? Oppure devono essere tutte diverse? Questa decisione spetterebbe ad un esperto linguista, non ad un programmatore che sta scrivendo il codice di traduzione.
    3. Se si hanno migliaia di proprietà traducibili, la modifica dell’oggetto di traduzione e la ricerca di proprietà già esistenti diventa impossibile o comunque molto costosa.
    4. Il caso precedente fa diventare ancora più inaffidabile l’utilizzo di un metodo di traduzione generico in base ai nomi degli elementi. Essi vengono scelti con altri criteri dai programmatori, basta che siano univoci, non certo con criteri linguistici.
    5. L’estrazione, la programmazione e l’implementazione dell’oggetto contenente le traduzioni è quindi un compito complesso che richiede tempo e quindi denaro. 
    6. Se poi l’applicazione deve diventare localizzabile dopo che essa è già stata sviluppata in modo non localizzabile, ad esempio perché cambiano le specifiche in una versione successiva, si tratta di una vera e propria riprogrammazione di almeno tutto il front-end.
    7. Anche il compito dei traduttori non è facile: ricevendo un oggetto JSON come quello precedente, non hanno minimamente idea del contesto in cui le informazioni devono apparire. Quindi la precisione della traduzione sarà minima, sotto allo stato dell’arte di una traduzione professionale, tanto vale usare Google Translate.
    8. Quando una stringa deve essere modificata nella lingua madre, ad esempio perché cambiano le funzioni dell’interfaccia utente, non è facile tenere traccia delle differenze fra una versione e la successiva. I traduttori dovrebbero utilizzare un software CAT (Computer-Assisted Translation) in grado di tracciare le differenze, ma questo non è sempre vero. Inoltre, l’affidabilità del tracciamento delle differenze dipende dalla struttura dei file che vengono dati in input a tali strumenti: se i file non sono strutturati in modo compatibile con i software CAT, il tracciamento in molti casi non è possibile. Comunque non è facile essere certi di non pubblicare un’applicazione parzialmente tradotta o con traduzioni non aggiornate, magari solo in alcune lingue.
    9. Anche la lingua madre di un’applicazione dovrebbe essere considerata come una traduzione, infatti se il contenuto testuale dell’interfaccia viene deciso dagli sviluppatori, occorre anche qui un esperto linguista per rendere più comprensibile l’applicazione all’utente finale.

    L’approccio Instant Developer Cloud #

    Solitamente il problema delle traduzioni viene considerato come “poco importante” dai reparti tecnici che si occupano di sviluppo. Dal punto di vista dell’utente finale, invece, avere una applicazione non tradotta o non comprensibile è un difetto di pari gravità ad un comportamento errato, forse in alcuni casi ancora peggiore. 

    Per convincersene è sufficiente provare ad installare un’applicazione non localizzata in una lingua non familiare, come ad esempio russo o cinese. Non sarà possibile nemmeno iniziare ad usarla.

    3 ZH1L64 Instant Developer

    Anche un sito molto famoso può essere inutilizzabile se non correttamente localizzato

    Visti i problemi che l’approccio tradizionale pone sia a livello di tempi e costi di sviluppo, sia, soprattutto, di precisione del risultato e vista l’importanza che l’utente finale pone su questo argomento, Instant Developer Cloud include un framework specifico e una serie di strumenti IDE ad esso dedicati.

    L’obiettivo di questi strumenti è di ottimizzare il processo di localizzazione degli elementi visuali, delle liste valori e delle stringhe inserite a livello di codice, sia nell’applicazione principale che in eventuali componenti importati, risolvendo tutti i problemi indicati sopra.

    I paragrafi seguenti illustrano il processo di preparazione e di traduzione. Al termine di questo libro verrà indicata una strategia per la traduzione delle descrizioni provenienti dal database.

    Ti è stato utile?
    Aggiornato il 15 Aprile 2024
    Processo di traduzione
    Contenuti
    • L’approccio tradizionale
    • Problemi dell’approccio tradizionale
    • L’approccio Instant Developer Cloud

    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