Indice
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. Per i dettagli vedere Internationalizzazione e localizzazione. |
Il comportamento dei programmi che supportano l'internazionalizzazione è
configurato dalla variabile d'ambiente "$LANG
" per
supportare la localizzazione. L'effettivo supporto delle funzionalità
dipendenti dalla localizzazione da parte della libreria
libc
richiede l'installazione dei pacchetti
locales
o locales-all
. Il pacchetto
locales
deve essere inizializzato correttamente.
Se non è installato né il pacchetto locales
né
locales-all
, il supporto delle funzionalità di
localizzazione è perso e il sistema usa i messaggi in inglese US e gestisce
i dati come ASCII. Questo comportamento è
uguale a quando "$LANG
" è impostato a
"LANG=
", "LANG=C
" o
"LANG=POSIX
".
Il software moderno, come GNOME e KDE ha il supporto per più lingue. È
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.
L'attuale sistema GUI del desktop Debian normalmente imposta la
localizzazione nell'ambiente GUI come
"LANG=xx_YY.UTF-8
". Qui "xx
" è il
codice ISO 639 di lingua e
"YY
" è il codice ISO
3166 di paese. Questi valori sono impostati dal dialogo GUI di
configurazione del desktop e cambiano il comportamento del programma. Vedere
Sezione 1.5.2, «La variabile "$LANG
"».
La più semplice rappresentazione di dati testuali è ASCII che è sufficiente per l'inglese e usa meno di 127 caratteri (rappresentabili con 7 bit).
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.
“double quoted text” is not "double quoted ASCII" ‘single quoted text’ is not 'single quoted ASCII'
Per poter gestire più caratteri, molti insiemi di caratteri e sistemi di codifica sono stati usati per supportare molte lingue (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 a 21 bit (cioè da 0 a10FFFF in notazione esadecimale).
Il sistema di codifica UTF-8 fa rientrare i codici Unicode in un flusso di dati ragionevole a 8 bit per la maggior parte compatibile con il sistema di elaborazione dei dati ASCII. Questo fa di UTF-8 la scelta moderna preferita. UTF sta per Unicode Transformation Format (formato di trasformazione di Unicode). Quando i dati in testo semplice ASCII sono convertiti in dati UTF-8, questi hanno esattamente lo stesso contenuto e dimensione di quelli ASCII originali. Perciò non si perde nulla utilizzando la localizzazione UTF-8.
Nella localizzazione UTF-8, se si usa un
programma applicativo compatibile, si possono visualizzare e modificare dati
di testo in qualsiasi lingua straniera, purché siano installati e abilitati
i tipi di carattere e i metodi di input richiesti. Per esempio, nella
localizzazione "LANG=it_IT.UTF-8
",
gedit
(1) (editor di testo per il desktop GNOME) può
visualizzare e modificare dati testuali in caratteri cinesi continuando a
presentare i menu in italiano.
Suggerimento | |
---|---|
Sia la nuova localizzazione standard " |
Nota | |
---|---|
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. |
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 pacchetto locales
non viene fornito con dati di localizzazione
pre-compilati. È necessario configurarlo.
# dpkg-reconfigure locales
Questo processo comprende 2 passi.
Selezionare tutti i dati di localizzazione richiesti per la compilazione in formato binario. (Assicurarsi di includere almeno una localizzazione UTF-8.)
Impostare il valore della localizzazione predefinita a livello di tutto il
sistema creando "/etc/default/locale
", per l'uso da parte
di PAM (vedere Sezione 4.5, «PAM e NSS»).
Il valore della localizzazione predefinita a livello di sistema impostato in
"/etc/default/locale
" può essere scavalcato dalla
configurazione con GUI delle applicazioni GUI.
Nota | |
---|---|
I sistemi di codifica tradizionali possono essere identificati da
" |
Il pacchetto locales-all
viene fornito con tutti i dati
di localizzazione pre-compilati. Dato che non crea
"/etc/default/locale
" può essere sempre necessario
installare anche il pacchettolocales
.
Suggerimento | |
---|---|
Il pacchetto |
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 programname
GNU gettext può gestire liste di priorità delle lingue di traduzione con la
variabile d'ambiente $LANGUAGE
. Per esempio:
$ export LANGUAGE="pt:pt_BR:es:it:fr"
Per ulteriori informazioni vedere info gettext
e leggere
la sezione "The LANGUAGE variable".
Il criterio di ordinamento dei caratteri con sort
(1) e
ls
(1) è influenzato dalla localizzazione. Esportando
LANG=en_US.UTF-8
l'ordinamento avviene nell'ordine
A->a->B->b...->Z->z
, mentre se si esporta
LANG=C.UTF-8
l'ordinamento avviene come in ASCII binario
A->B->...->Z->a->b...
.
Il formato della data di ls
(1) è influenzato dalla
localizzazione (vedere Sezione 9.3.4, «Visualizzazione personalizzata di date e orari»).
Il formato della data di date
(1) è influenzato dalla
localizzazione. Ad esempio:
$ unset LC_ALL $ LANG=en_US.UTF-8 date Thu Dec 24 08:30:00 PM JST 2023 $ LANG=en_GB.UTF-8 date Thu 24 Dec 20:30:10 JST 2023 $ LANG=es_ES.UTF-8 date jue 24 dic 2023 20:30:20 JST $ LC_TIME=en_DK.UTF-8 date 2023-12-24T20:30:30 JST
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.
Ogni caratteristica specifica della variabile d'ambiente
"$LANG
" può essere scavalcata impostando le variabili
"$LC_*
". Queste variabili d'ambiente a loro volta possono
essere scavalcate impostando la variabile
"$LC_ALL
". Vedere la pagina di manuale
locale
(7) per i dettagli. A meno di non avere forti
motivi per creare configurazioni complesse, stare lontani da esse e usare
solo la variabile "$LANG
" impostata ad una delle
localizzazioni UTF-8.
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
Per la console Linux e il sistema X Window, questi aggiornano i parametri di
configurazione in "/etc/default/keyboard
" e
"/etc/default/console-setup
". Viene anche configurato 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 GNOME nei sistemi desktop Wayland, Sezione 8.2.1, «L'input da tastiera per la console Linux e X Window» non può
gestire le lingue europee diverse dall'inglese. IBus è stato creato per supportare non solo le lingue
asiatiche, ma anche quelle europee. Le dipendenze dai pacchetti
dell'ambiente desktop GNOME raccomandano "ibus
"
attraverso "gnome-shell
". Il codice di
"ibus
" è stato aggiornato per integrare tutte le
fuzionalità delle opzioni di setxkbmap
e XKB. È
necessario configurare ibus
dalle "Impostazioni di GNOME"
o con "GNOME Tweaks" per l'input da tastiera multilingua.
Nota | |
---|---|
Se ibus è attivo, la configurazione classica della tastiera X tramite
|
Dato che l'ambiente desktop GNOME raccomanda "ibus
"
attraverso "gnome-shell
", "ibus
" è una
buona scelta come metodo di input.
L'input multilingua verso l'applicazione è elaborato così:
Keyboard Application | ^ | | +-> Linux kernel -> Input method (ibus) -> Gtk, Qt, X, Wayland +-- Engine--+
Ecco l'elenco dei pacchetti di IBus e del suo motore.
Tabella 8.1. Elenco di pacchetti di IBus e del suo motore
pacchetto | popcon | dimensione | localizzazioni supportate |
---|---|---|---|
ibus | V:198, I:245 | 1723 | infrastruttura per metodo di input che usa dbus |
ibus-mozc | V:1, I:3 | 944 | giapponese |
ibus-anthy | V:0, I:1 | 8856 | " " |
ibus-skk | V:0, I:0 | 242 | " " |
ibus-kkc | V:0, I:0 | 210 | " " |
ibus-libpinyin | V:1, I:3 | 2761 | cinese (per zh_CN) |
ibus-chewing | V:0, I:0 | 247 | " " (per zh_TW) |
ibus-libzhuyin | V:0, I:0 | 40995 | " " (per zh_TW) |
ibus-rime | V:0, I:0 | 73 | " " (per zh_CN/zh_TW) |
ibus-cangjie | V:0, I:0 | 119 | " " (per zh_HK) |
ibus-hangul | V:0, I:2 | 264 | coreano |
ibus-libthai | I:0 | 90 | thailandese |
ibus-table-thai | I:0 | 58 | thailandese |
ibus-unikey | V:0, I:0 | 318 | vietnamita |
ibus-keyman | V:0, I:0 | 161 | multilingue: motore Keyman per più di 2000 lingue |
ibus-table | V:0, I:1 | 2176 | motore di tabelle per IBus |
ibus-m17n | V:0, I:1 | 395 | multilingue: indico, arabico e altri |
plasma-widgets-addons | V:50, I:100 | 1992 | widget aggiuntivi per Plasma 5 contenenti Keyboard Indicator |
Nota | |
---|---|
Per il cinese, " |
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 GNOME in Wayland:
Installare il pacchetto con gli strumenti di input per il giapponese
ibus-mozc
(o ibus-anthy
) insieme ai
pacchetti che raccomanda, come im-config
.
Selezionare "Impstazioni" → "Tastiera" → "Input Sources" → fare clic su
"+
" in "Input Sources" → "Japanese" → "Japanese mozc (o
anthy)" e fare clic su "Aggiungi" se non è stato attivato.
Si possono scegliere più sorgenti di input.
Rieseguire il login nell'account utente
Impostare ciascuna 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.)
Suggerimento | |
---|---|
Se si desidera avere accesso ad un ambiente tastiera con solo alfabeto con
la tastiera fisica giapponese in cui Maiusc- |
La voce di menu GUI per im-config
(8) è "Input method".
In alternativa eseguire "im-config
" dalla shell
dell'utente.
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 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-GUI.)
L'ambiente GUI (Capitolo 7, Sistema GUI) può mostrare qualsiasi carattere in UTF-8 purché siano installati e abilitati i tipi di carattere richiesti. (La codifica dei dati dei tipi di carattere originali viene gestita 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 →
Nome del profilo → Compatibilità → Caratteri a
larghezza ambigua → Stretto
ncurses
: impostare l'ambiente export
NCURSES_NO_UTF8_ACS=0
.