Cricche in Chromium

Chromium è il progetto open source alla base di Google Chrome.

Il team di Chromium ha scelto di sviluppare il nuovo browser in modo nativo, senza sfruttare framework multipiattaforma che avrebbero potuto semplificare architettura e localizzazione (a probabile scapito delle prestazioni). Esistono quindi 3 varianti dello stesso progetto, che hanno come target i sistemi Windows, Mac OS X e GNU/Linux.

La struttura di internazionalizzazione di Chromium è ancora in via di sviluppo, ma è guidata da un approccio di tipo single source. Le stringhe vengono infatti centralizzate in file specifici, che vengono poi compilati tramite il metodo più appropriato per la piattaforma.

Lo schema seguente mostra il flusso generale. Un primo abbozzo ufficiale di documentazione è disponibile qui.

Chromium - Schema di internazionalizzazione

I file principali GRD contengono tutte le stringhe originali inglesi e i riferimenti ai file satellite XTB che includono le relative traduzioni (uno per lingua).

Questi ultimi file vengono aggiornati “magicamente” da Google, che esporta regolarmente le stringhe inglesi nuove o aggiornate dai file GRD e ne fornisce la traduzione in tutte le lingue supportate, importando nel repository i relativi file XTB aggiornati.

La traduzione viene gestita tramite la Translation Console, il sistema utilizzato internamente da Google e alla base del progetto pubblico GIYL (Google In Your Language).

In fase di compilazione di Chromium, lo strumento GRIT utilizza i file GRD e XTB per creare due risorse distinte: i file RC e i file PAK.

Le risorse RC sono destinate ai sistemi Windows, e vengono successivamente compilate come file DLL da Visual Studio.

Le risorse PAK vengono invece utilizzate così come sono nei sistemi Mac OS X e GNU/Linux. Questo formato PAK è una semplice lista indicizzata codice-stringa, archiviata in una forma binaria studiata per essere leggibile indipendentemente dalla piattaforma. All’interno del codice di Chromium, apposite funzioni “mascherano” le strutture di internazionalizzazione “native” per estrarre le stringhe direttamente dalle risorse PAK.

Questo sistema single source è complessivamente efficiente, ma la sostituzione meccanica di stringhe non permette di raggiungere la flessibilità delle soluzioni native, che forniscono un controllo più puntuale sugli aspetti grafici delle interfacce localizzate (un esempio sono i problemi di troncamento già verificatisi in passato).

Un problema diverso è invece il flusso di localizzazione “opaco” dei file XTB. Chiunque volesse sviluppare un browser basato su Chromium dovrebbe infatti predisporre un proprio sistema per la creazione e il mantenimento delle stringhe tradotte.

Per capire il problema è sufficiente considerare come esempio la stringa Under the Hood, attualmente contenuta nel file generated_resources.grd:

<message name=”IDS_OPTIONS_ADVANCED_TAB_LABEL”
desc=”The title of the Under the Hood tab”>

Under the Hood
</message>

La traduzione italiana corrispondente è inclusa nel file generated_resources_it.xtb:

<translation id=”1709220265083931213″>
Roba da smanettoni
</translation>

Il numero magico è una chiave univoca che proviene dalla Translation Console. Lo sviluppatore che non può avervi accesso deve calcolarlo in altro modo, sfruttando la funzione FingerPrint dello strumento GRIT.

Questa procedura “manuale” dimostra come la struttura dei file XTB non sia sufficientemente “open” a causa degli attributi id. In realtà per capirlo basta analizzare il codice dello strumento GRIT.

L’insieme di tutte le stringhe correlate a un dato codice è infatti definito clique, ovvero “cricca”. E se ci sono cricche in un prodotto che si chiama Chromium…😉

Una Risposta to “Cricche in Chromium”

  1. Open, corretamente « Premere il tasto ANY Says:

    […] modo simile a quanto accade per Google Chrome, la traduzione viene eseguita “di nascosto” e proposta agli occhi del mondo […]

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...


%d blogger cliccano Mi Piace per questo: