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.4.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.
Avvertimento | |
---|---|
Questo capito sta diventando non aggiornato dato che è basato su Debian 7.0
( |
Il sistema Debian può essere configurato per funzionare con molte
disposizioni di tastiera internazionali usando i pacchetti
keyboard-configuration
e
console-setup
.
# dpkg-reconfigure keyboard-configuration # dpkg-reconfigure console-setup
Ciò configura la tastiera per la console Linux e i parametri di
configurazione di X Windows in "/etc/default/keyboard
" e
"/etc/default/console-setup
". Configura anche il tipo di
carattere per la console Linux.
Molti caratteri non ASCII, inclusi quelli accentati usati da molte lingue europee, possono essere resi disponibili con il "tasto morto" (dead key), il tasto AltGr e il tasto di composizione (compose).
Per le lingue asiatiche è necessario il supporto per metodi di input più complessi, come IBus che sarà trattato in seguito.
L'input multilingua verso l'applicazione è elaborato così:
Tastiera Applicazione | ^ | | +-> kernel Linux -> metodo di input -> Gtk, Qt, o X
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.1. Elenco dei metodi di input supportati da IBus
pacchetto | popcon | dimensione | localizzazioni supportate |
---|---|---|---|
ibus | V:8, I:12 | 45417 | infrastruttura per metodo di input che usa dbus |
ibus-mozc | V:1, I:2 | 897 | giapponese |
ibus-anthy | V:0, I:1 | 8500 | " " |
ibus-kkc | V:0, I:0 | 214 | " " |
ibus-skk | V:0, I:0 | 244 | " " |
ibus-pinyin | V:0, I:2 | 1425 | cinese (per zh_CN) |
ibus-chewing | V:0, I:0 | 415 | " " (per zh_TW) |
ibus-hangul | V:0, I:1 | 218 | coreano |
ibus-table | V:0, I:1 | 979 | motore di tabelle per IBus |
ibus-table-thai | I:0 | 46 | thailandese |
ibus-unikey | V:0, I:0 | 256 | vietnamita |
ibus-m17n | V:0, I:0 | 154 | 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
per GNOME3:
Installare il pacchetto con gli strumenti di input per il giapponese
ibus-anthy
insieme ai pacchetti che raccomanda, come
im-config
.
Eseguire "im-config
" da una shell utente e selezionare
"ibus
" come metodo di input.
Selezionare "Settings" → "Keyboard" → "Input Sources" → fare clic su
"+
" in "Input Sources" → "Japanese" → "Japanese (anthy)"
e fare clic su "Add".
Selezionare "Japanese" e fare clic su "Add" per supportare la disposizione giapponese di tastiera senza conversione di caratteri. (Si possono scegliere più fonti di input.)
Rieseguire il login nell'account utente
Verificare le impostazioni con "im-config
".
Impostare la fonte di input cliccando con il pulsante destro sull'icona della barra degli strumenti GUI.
Passare da una all'altra delle fonti di input installate con SUPER-SPAZIO. (SUPER è solitamente il tasto Windows.)
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.
La voce di menu GUI per im-config(8) è disabilitata in modo predefinito per evitare sovraffollamenti.
Se si desidera inserire dell'input senza passare da XIM (meccanismo usato da
X), 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)
mentre è disabilitato ibus
. 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.)
Nella localizzazione dell'Asia dell'est i caratteri di disegno di riquadri, i caratteri greci e cirillici possono essere visualizzati più larghi della larghezza desiderata e causare un output su terminale non allineato (vedere Unicode Standard Annex #11).
Questo problema può essere aggirato:
gnome-terminal
: Modifica → Preferenze → Profili →
Modifica → Compatibilità → Caratteri a larghezza ambigua → Stretto
ncurses
: impostare l'ambiente export
NCURSES_NO_UTF8_ACS=0
.
Questa sezione si concentra sulla localizzazione per applicazioni eseguite nell'ambiente X Window avviato da gdm3(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, «La 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». |
L'insieme di caratteri Unicode può rappresentare praticamente tutti i caratteri conosciuti con un intervallo di codici da 0 a10FFFF in notazione esadecimale. La sua memorizzazione richiede almeno 21 bit.
Il sistema di codifica UTF-8 fa rientrare i codici Unicode in un flusso di dati ragionevole a 8 bit compatibile con il sistema di elaborazione dei dati ASCII. UTF sta per 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 ricurve destra e sinistra per esempio non sono disponibili in ASCII.
“citazione tra virgolette doppie” non è uguale a "citazione tra virgolette doppie ASCII" ‘citazione tra virgolette singole’ non è uguale a 'citazione tra virgolette singole ASCII'
Quando dati di testo in puro ASCII sono convertiti in UTF-8 hanno contenuto e dimensioni esattamente identici a quelli 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 sia stato installato il pacchetto
locales-all
.) L'elenco completo delle localizzazioni
supportate disponibili per la compilazione è disponibile 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 dovrebbe 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 gdm3(1) per tutti i programmi X
È modificato dal codice di avvio della sessione X tramite
"~/.xsessionrc
" per tutti i programmi X
È modificato dal codice di avvio della shell, ad esempio
"~/.bashrc
" per tutti i programmi in console
Suggerimento | |
---|---|
È una buona idea 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 gdm3(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/gdm3
".
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/default/locale-x
"
permessi "-rw-r--r-- 1 root root
" contenente quanto
segue.
LANG="ja_JP.UTF-8"
Mantenere il file predefinito "/etc/default/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 gdm3(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.7, «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 italiano è mostrato come "1.000,1
". Si
può vedere questa differenza nei programmi per fogli di calcolo.