Indice
$LANG
"Il supporto per le lingue native o M17N (Multilingualization) per un software applicativo è ottenuto in 2 passi.
L'internazionalizzazione (I18N): per rendere un software capace di gestire potenzialmente localizzazioni multiple.
Localizzazione (L10N): per fare gestire dal software una localizzazione specifica.
![]() |
Suggerimento |
---|---|
Ci sono 17, 18 o 10 lettere tra le lettere "m" e "n", "i" e "n" o "l" e "n" in, rispettivamente, "multilingualization", "internazionalization" e "localization" che sono i termini inglesi corrispondenti a M17N, I18N e L10N. |
Il software moderno, come GNOME e KDE ha il supporto per le lingue native. È internazionalizzato rendendolo capace di gestire dati UTF-8 e localizzato fornendo i messaggi tradotti attraverso l'infrastruttura gettext(1). I messaggi tradotti possono essere forniti in pacchetti separati di localizzazione e possono essere selezionati semplicemente impostando al valore di localizzazione appropriato le variabili d'ambiente pertinenti.
La più semplice rappresentazione di dati testuali è ASCII che è sufficiente per l'inglese ed usa meno di 127 caratteri (rappresentabili con 7 bit). Al fine di supportare molti più caratteri per il supporto internazionale, sono stati inventati molti sistemi di codifica dei caratteri. Il sistema di codifica moderno e intelligente è UTF-8 che può in pratica gestire tutti i caratteri conosciuti (vedere Sezione 8.3.1, «Nozioni base sulla codifica»).
Vedere Introduzione all'i18n per i dettagli.
Il supporto internazionale per l'hardware viene abilitato con dati di configurazione dell'hardware localizzati.
Il sistema Debian può essere configurato per funzionare con molte disposizioni di tastiera internazionali.
Tabella 8.1. Elenco di metodi di riconfigurazione della tastiera
ambiente | comando |
---|---|
Console Linux |
dpkg-reconfigure --priority=low console-data
|
X Window |
dpkg-reconfigure --priority=low xserver-xorg
|
Ciò supporta l'input da tastiera per i caratteri accentati di molte lingue Europee tramite la funzione dead-key. Per le lingue asiatiche, è necessario il supporto per metodi di input più complessi, come IBus che sarà trattato in seguito.
La configurazione dell'input per più lingue per il sistema Debian è
semplificato dall'uso della famiglia di pacchetti IBus con il pacchetto
im-config
. Quello che segue è un elenco dei pacchetti
IBus.
Tabella 8.2. Elenco dei metodi di input supportati da IBus
pacchetto | popcon | dimensione | localizzazioni supportate |
---|---|---|---|
ibus * | V:0.5, I:0.6 | 1564 | infrastruttura per metodo di input che usa dbus |
ibus-mozc * | V:0.04, I:0.08 | 881 | giapponese |
ibus-anthy * | V:0.12, I:0.2 | 626 | " " |
ibus-skk * | V:0.02, I:0.04 | 420 | " " |
ibus-pinyin * | V:0.14, I:0.2 | 792 | cinese (per zh_CN) |
ibus-chewing * | V:0.01, I:0.05 | 196 | " " (per zh_TW) |
ibus-hangul * | V:0.02, I:0.05 | 172 | coreano |
ibus-table * | V:0.07, I:0.16 | 696 | motore di tabelle per IBus |
ibus-table-thai * | I:0.00 | 143 | thailandese |
ibus-unikey * | V:0.01, I:0.01 | 279 | vietnamita |
ibus-m17n * | V:0.04, I:0.08 | 159 | multilingue: indico, arabico e altri |
Il metodo kinput2 e altri classici metodi di input dipendenti dalla localizzazione per le lingue asiatiche esistono sempre, ma non sono raccomandati per i moderni ambienti X UTF-8. Gli insiemi di strumenti SCIM e uim costituiscono un approccio un po' più datato al metodo di input internazionale per gli ambienti X UTF-8 moderni.
Trovo che il metodo di input per il giapponese avviato dall'ambiente inglese
("en_US.UTF-8
") sia molto utile. Ecco come farlo con
Ibus.
Install the Japanese input tool package ibus-mozc
with
its recommended packages such as im-config
.
Eseguire "im-config
" da una shell utente e selezionare
"ibus
".
Select "System" → "Preferences" → "IBus Preferences" → "Input Method" → "Select an input method" → "Japanese" → "MOZC" and click "Add".
Rieseguire il login nell'account utente
Verificare le impostazioni con "im-config
".
Impostare il metodo di input e la modalità cliccando con il pulsante destro sulla barra degli strumenti GUI. (Si può ridurre la scelta di menu dei metodi di input.)
Avviare il metodo di input IBus con CTRL-SPAZIO.
Notare quanto segue.
im-config(8) si comporta in modo diverso a seconda se è eseguito da root o no.
im-config(8) abilita il miglior metodo di input sul sistema come impostazione predefinita senza alcuna azione dell'utente.
The GUI menu entry for im-config(8) is disabled as default to prevent cluttering.
Se si desidera inserire dell'input senza passare da XIM, impostare il valore
di "$XMODIFIERS
" a "none" quando si avvia un
programma. Una situazione di questo tipo potrebbe verificarsi quando si usa
l'infrastruttura di input in giapponese egg
in
emacs(1).
Dalla shell usare il comando seguente.
$ XMODIFIERS=none emacs
Per modificare il comando eseguito dal menu Debian, posizionare una
configurazione personalizzata in "/etc/menu/
" seguendo il
metodo descritto in "/usr/share/doc/menu/html
".
La console Linux può mostrare solamente un numero limitato di caratteri. (È necessario usare speciali programmi per terminale come jfbterm(1) per mostrare lingue non Europee nella console non-X.)
X Window può mostrare qualsiasi carattere in UTF-8 purché esistano i tipi di carattere richiesti. (La codifica dei dati dei tipi di carattere originali viene gestita dal sistema X Window in modo trasparente per l'utente.)
Questa sezione si concentra sulla localizzazione per applicazioni eseguite nell'ambiente X Window avviato da gdm(1).
La variabile d'ambiente "LANG=xx_YY.ZZZZ
" imposta la
localizzazione al codice di lingua "xx
", alla codice di
nazione "yy
" e alla codifica "ZZZZ
"
(vedere Sezione 1.5.2, «Variabile "$LANG
"»).
Il sistema Debian attuale normalmente imposta la localizzazione come
"LANG=xx_YY.UTF-8
" che fa uso della codifica UTF-8 con l'insieme di caratteri Unicode. Il sistema di codifica UTF-8 è un sistema multibyte e usa i punti del codice
in modo intelligente.I dati ASCII, che
consistono solamente di codici a 7 bit, sono comunque dati UTF-8 validi che
usano 1 solo byte per carattere.
I sistemi Debian precedenti impostavano la localizzazione come
"LANG=C
" o "LANG=xx_YY
" (senza
".UTF-8
").
Per "LANG=C
" o "LANG=POSIX
" viene
usato l'insieme di carattteri ASCII.
Il sistema di codifica tradizionale in Unix è usato per
"LANG=xx_YY
".
I sistemi di codifica tradizionale di fatto usati per
"LANG=xx_YY
" possono essere identificati controllando
"/usr/share/i18n/SUPPORTED
". Per esempio,
"en_US
" usa la codifica ISO-8859-1
" e
"it_IT@euro
" usa la codifica
"ISO-8859-15
".
![]() |
Suggerimento |
---|---|
Per il significato dei valori delle codifiche vedere Tabella 11.2, «Elenco dei valori delle codifiche e loro uso». |
La codifica UTF-8 è il sistema di codifica moderno e razionale per l'internazionalizzazione e permette di rappresentare i caratteri Unicode, cioè praticamente tutti i caratteri conosciuti. UTF sta per schemi Unicode Transformation Format (formato di trasformazione di Unicode).
È raccomandato l'uso della localizzazione UTF-8
per il desktop, per esempio "LANG=en_US.UTF-8
". La prima
parte della localizzazione determina i messaggi presentati dalle
applicazioni. Per esempio,
gedit(1)
(un editor di testi per il desktop GNOME) nella localizzazione
"LANG=it_IT.UTF-8
" può mostrare e modificare testi in
caratteri cinesi e allo stesso tempo presentare i menu in italiano, a patto
che siano installati i necessari tipi di carattere e metodi di input.
È raccomandabile anche impostare la localizzazione usando solamente la
variabile d'ambiente "$LANG
". Non vedo la convenienza
nell'impostare nella localizzazione UTF-8 una complessa combinazione di
variabili "LC_*
" (vedere
locale(1)).
Anche un testo in semplice inglese può contenere caratteri non ASCII; le virgolette singole destra e sinistra per esempio non sono disponibili in ASCII.
“citazione tra virgolette doppie” ‘citazione tra virgolette singole’
Quando dati di testo in puro ASCII sono convertiti in UTF-8 hanno esattamente gli stessi contenuto e dimensioni dei dati ASCII originali. Perciò non si può perdere nulla usando la localizzazione UTF-8.
Alcuni programmi usano più memoria dopo l'inclusione del supporto per l'internazionalizzazione. Questo avviene perché il loro codice è programmato per usare internamente UTF-32(UCS4) per supportare Unicode al fine di ottimizzare la velocità e consumano 4 byte per ogni dato di carattere ASCII, indipendentemente dalla localizzazione selezionata. Ancora una volta usando la localizzazione UTF-8 non si perde nulla.
I vecchi sistemi di codifica non UTF-8 specifici di produttori, tendono ad avere piccolissime, ma noiose, differenze per molte nazioni in alcuni caratteri come quelli grafici. L'uso del sistema UTF-8 da parte dei sistemi operativi moderni ha praticamente risolto questi problemi di conflitti tra le codifiche.
Per far sì che un sistema abbia accesso ad una localizzazione particolare, è
necessario che i dati della localizzazione siano stati compilati a partire
dal database della localizzazione. (Il sistema Debian non viene fornito con tutte le localizzazioni
disponibili già compilate a meno che non si sia installato il pachetto
locales-all
.) L'elenco completo delle localizzazioni
supportate disponibili per la compilazione è contenuto in
"/usr/share/i18n/SUPPORTED
" che elenca tutti i nomi
esatti delle localizzazioni. Il comando seguente elenca tutte le
localizzazioni UTF-8 già compilate in forma binaria.
$ locale -a | grep utf8
Si può riconfigurare il pacchetto locales
eseguendo il
comando seguente.
# dpkg-reconfigure locales
Questo processo comprende 3 passi successivi.
Aggiornare l'elenco delle localizzazioni disponibili
Compilarle in forma binaria
Impostare, per l'uso da parte di PAM (vedere Sezione 4.5, «PAM e NSS»)
il valore della localizzazione di sistema nel file
"/etc/defaults/locale
".
L'elenco delle localizzazioni disponibili dobrebbe includere
"en_US.UTF-8
" e tutte le lingue desiderate con
"UTF-8
".
La localizzazione predefinita raccomandata è
"en_US.UTF-8
" per l'inglese statunitense. Per le altre
lingue, assicurasi di scegliere la localizzazione con
"UTF-8
"; ognuna di queste può gestire qualsiasi carattere
internazionale.
![]() |
Nota |
---|---|
Benché l'impostazione della localizzazione a " |
Il valore della variabile d'ambiente "$LANG
" viene
impostato e modificato da molte applicazioni.
È impostato inizialmente dal meccanismo PAM di login(1) per i programmi nelle console Linux locali
È impostato inizialmente dal meccanismo PAM del display manager per tutti i programmi X
È impostato inizialmente dal meccanismo PAM per ssh(1) per i programmi nelle console remote
È modificato da alcuni display manager come gdm(1) per tutti i programmi X
È modificato dal codice di avvio della sessione X tramite
"~/.xsessionrc
" per tutti i programmi X (funzionalità di
lenny
)
È modificato dal codice di avvio della shell, ad esempio
"~/.bashrc
" per tutti i programmi in console
![]() |
Suggerimento |
---|---|
È una buona installare la localizzazione predefinita per tutto il sistema
come " |
Si può scegliere una localizzazione specifica solo sotto X Window, indipendentemente dalla localizzazione predefinita di sistema, usando la personalizzazione di PAM (vedere Sezione 4.5, «PAM e NSS») nel modo descritto in seguito.
Questo ambiente dovrebbe fornire la migliore esperienza desktop possibile mantenendo la stabilità. Si ha accesso ad un terminale a caratteri funzionante con messaggi leggibili, anche quando il sistema X Window non funziona. Ciò diventa essenziale per le lingue che usano caratteri non romani, come cinese, giapponese e coreano.
![]() |
Nota |
---|---|
Potrebbe essere disponibile un modo alternativo per ottenere lo stesso risulato, visti i miglioramenti che avvengono nei pacchetti dei gestori delle sessioni X, ma la lettura di quanto segue fornisce un metodo generico di base per l'impostazione della localizzazione. Per gdm(1), è possibile selezionare la localizzazione della sessione X dal suo menu. |
La riga seguente definisce la posizione del file dell'ambiente della lingua,
nel file di configurazione di PAM, come "/etc/pam.d/gdm
".
auth required pam_env.so read_env=1 envfile=/etc/default/locale
Cambiare tale riga nel modo seguente
auth required pam_env.so read_env=1 envfile=/etc/default/locale-x
Per il giapponese, creare un file
"/etc/defaults/locale-gdm
" permessi "-rw-r--r--
1 root root
" contenente quanto segue.
LANG="ja_JP.UTF-8"
Mantenere il file predefinito "/etc/defaults/locale
" per
l'uso da parte di altri programmi nel modo seguente.
LANG="en_US.UTF-8"
Questa è la tecnica più generica per personalizzare la localizzazione e rende localizzato il dialogo di selezione stesso del menu di gdm(1).
In alternativa in questo caso, si può semplicemente cambiare la
localizzazione usando il file "~/.xsessionrc
".
Per lo scambia di dati interpiattaforma (vedere Sezione 10.1.10, «Supporti di archiviazione removibili»), può essere necessario montare alcuni file system con codifiche particolari. Per esempio, mount(8), se usato senza opzioni, assume che venga usata la codifica CP437 per il file system vfat. È necessario fornire esplicitamente opzioni di montaggio per usare nomi di file UTF-8 o CP932.
![]() |
Nota |
---|---|
Quando una chiavetta USB inseribile a caldo viene automaticamente montata in un ambiente desktop moderno come GNOME, si può fornire una informazione di montaggio di questo tipo cliccando con il tasto destro sull'icona del dispositivo sul desktop, cliccare sulla scheda "Drive", cliccare per espandere "Impostazioni" ed inserire "utf8" in "Opzioni di mount:". La prossima volta che questa chiavetta di memoria verrà montata, sarà abilitato il montaggio con UTF-8. |
![]() |
Nota |
---|---|
Se si sta facendo l'aggiornamento di un sistema o spostando dischi da un sistema non UTF-8, i nomi di file con caratteri non ASCII potranno essere codificati con codifiche usate una volta e ora deprecate, come ISO-8859-1 o eucJP. Cercare aiuto sugli strumenti di conversione dei testi per convrtirli in UTF-8. Vedere Sezione 11.1, «Strumenti di conversione di dati testuali». |
Samba usa in modo predefinito Unicode per i
client più moderni (Windows NT, 200x, XP), ma usa CP850 per client più vecchi (DOS e Windows
9x/Me). Questo comportamento predefinito per i client più vecchi può essere
modificato usando "dos charset
" nel file
"/etc/samba/smb.conf
", per esempio usando "CP932" per il giapponese.
Esistono le traduzioni di molti dei messaggi di testo e dei documenti che sono mostrati nel sistema Debian, come messaggi di errore, output standard dei programmi, menu e pagine di manuale. L'insieme di strumenti GNU gettext(1) è usato come strumento di backend per la maggior parte delle attività di traduzione.
aptitude(8) fornisce in "Task" → "Localizzazione" un ampio elenco di utili pacchetti binari che aggiungono alle applicazioni messaggi localizzati e che forniscono documentazione nella versione tradotta.
Per esempio, si possono ottenere i messaggi localizzati per le pagine man
installando il pacchetto manpages-<LINGUA>
. Per
leggere le pagine man di <nomeprogramma> in italiano contenute in
"/usr/share/man/it/
", eseguire il comando seguente.
LANG=it_IT.UTF-8 man <nomeprogramma>
La disposizione dell'ordinamento dei caratteri con sort(1) è influenzata dalla lingua scelta dalla localizzazione. Le localizzazioni spagnola e inglese ordinano in modo diverso.
Il formato della data mostrato da
ls(1)
è influenzato dalla localizzazione. Il formato della data di
"LANG=C ls -l
" è differente da quello con
"LANG=en_US.UTF-8
" (vedere Sezione 9.2.5, «Visualizzazione personalizzata di date e orari»).
I caratteri di punteggiatura usati per i numeri sono diversi nelle varie
localizzazioni. Per esempio, nella localizzazione inglese mille virgola uno
è rappresentato come "1,000.1
", mentre nella
localizzazione in tedesco è mostrato come "1.000,1
". Si
può vedere questa differenza nei programmi per fogli di calcolo.