[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]
L'internazionalizzazione è l'azione con cui si realizza o si modifica un programma, in modo che sia in grado di funzionare utilizzando convenzioni nazionali diverse (principalmente la lingua dei messaggi che emette e il tipo di codifica usata). Il termine inglese a cui si fa riferimento è internationalization e si abbrevia convenzionalmente con la sigla «i18n», perché tra la lettera «i» e la lettera «n» di questa parola ci sono 18 lettere.
La localizzazione è la configurazione attraverso la quale si fa in modo che un programma determinato si adatti a funzionare secondo le particolarità linguistico-nazionali locali. Il termine inglese a cui si fa riferimento è localization e si abbrevia convenzionalmente con la sigla «l10n», perché tra la lettera «l» e la lettera «n» di questa parola ci sono 10 lettere.
I programmi accedono generalmente alle funzionalità relative alla localizzazione per mezzo di librerie. Nei sistemi GNU si tratta generalmente delle librerie C (GNU C library). (1)
Questo capitolo mostra solo come abilitare la gestione delle impostazioni locali desiderate nel proprio sistema; per la selezione dell'adattamento locale preferito di ogni utente, si interviene all'interno di variabili di ambiente: LANG e LC_*, come descritto nel capitolo 58.
Per consentire ai programmi di identificare la richiesta di adattarsi a delle caratteristiche locali, si usa una definizione in forma di stringa, con una sintassi particolare, che generalmente corrisponde a quella seguente:
linguaggio[_territorio[.insieme_di_caratteri]]
Il linguaggio viene espresso da una sigla di due sole lettere minuscole, secondo lo standard ISO 639 (sezione 543); il territorio viene espresso da una sigla di due sole lettere maiuscole, secondo lo standard ISO 3166 (sezione 544); l'insieme di caratteri è una sigla numerica che esprime standard ISO corrispondente.
Per esempio, it_CH.ISO-8859-1 identifica la lingua italiana riferita al territorio svizzero, con un insieme di caratteri ISO 8859-1.
Come si vede dal modello sintattico, le informazioni sulla destra possono essere omesse, ma in tal caso vengono determinate in modo predefinito.
Una variante molto comune di questa definizione è quella che riguarda i paesi che utilizzano l'Euro come valuta. In questi casi, può succedere di vedere notazioni del tipo:
it_IT@euro
Questa notazione è praticamente equivalente alla dichiarazione esplicita dell'insieme di caratteri, che cambia per la necessità di avere un simbolo per rappresentare la valuta:
it_IT.ISO-8859-15
Per poter configurare i programmi in modo da adeguarsi alle caratteristiche locali, è necessario che le definizioni necessarie siano disponibili. Si può verificare con il comando locale la disponibilità effettiva:
#
locale -a
Se quello che si ottiene è solo l'elenco seguente, significa che in pratica non sono disponibili delle varianti locali diverse dalla lingua inglese pura e semplice:
C POSIX |
I programmi che sfruttano il meccanismo di localizzazione, si avvalgono della funzione locale(), descritta dalla pagina di manuale locale(7).
Le informazioni relative alla localizzazione sono divise in due parti: un file principale e una mappa per la traduzione di nomi simbolici di caratteri nella codifica effettiva da utilizzare. Questi file si trovano generalmente nelle directory /usr/share/i18n/
, ma per poter utilizzare le informazioni che contengono, si devono compilare i file in un formato binario che poi si collocano presumibilmente a partire dalla directory /usr/lib/locales/
. Pertanto, se anche sono disponibili le definizioni locali, possono mancare i file che poi servono alla funzione locale(); l'elenco che si ottiene da locale -a serve a comprendere cosa la funzione locale() è in grado di gestire.
Supponendo di voler compilare le definizioni riferite al modello di localizzazione corrispondente a it_IT.ISO-8859-1, occorre fare riferimento ai file /usr/share/i18n/locales/it_IT
e /usr/share/i18n/charmaps/ISO-8859-1
(se questi file sono compressi, appare probabilmente l'estensione .gz
, ma per usarli con localedef vanno prima ripristinati alle loro condizioni normali). I file che vengono generati dalla compilazione si inseriscono presumibilmente nella directory /usr/lib/locale/it_IT/
, che deve essere creata per l'occasione. In pratica si procede come nell'esempio seguente, attraverso il programma localedef:
#
mkdir /usr/lib/locale/it_IT
[Invio]
#
localedef -i /usr/share/i18n/locales/it_IT
<-'
`->-f /usr/share/i18n/locales/charmaps/ISO-8859-1
<-'
`->/usr/lib/locale/it_IT
[Invio]
Le distribuzioni GNU Debian offrono la gestione della localizzazione attraverso un pacchetto apposito, con cui è possibile configurare quali definizioni locali gestire nel file /etc/locale.gen
.
Una volta aggiornato questo file, è sufficiente avviare il programma locale-gen per ottenere la ricompilazione delle definizioni locali desiderate:
#
locale-gen
[Invio]
Generalmente, il file /etc/locale.gen
questo file viene creato da un altro programma interattivo, senza bisogno di interventi manuali, che poi si occupa anche di avviare locale-gen; precisamente si tratta del comando: dpkg-reconfigure locales.
#
dpkg-reconfigure locales
[Invio]
|
A fianco del file /etc/locale.gen
è possibile trovare anche /etc/locale.alias
, che associa delle denominazioni più semplici, o comunque alternative, a quelle formali standard. Per esempio, osservando la direttiva seguente, si comprende che diventa indifferente usare la sigla italian oppure it_IT.ISO-8859-1.
daniele @ swlibero.org
1) GNU C library GNU LGPL e altre licenze in base alla porzione di codice
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome internazionalizzazione.html
[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]