Sui sistemi UNIX/Linux questa configurazione è chiamata locale POSIX [7] e standardizzata come IEEE Std 1003.1-2017 [3]. Tale locale può variare per il sistema nel suo insieme e i singoli account utente poiché ogni singolo utente può personalizzare il proprio ambiente di lavoro. In questo articolo ti spiegheremo come capire l'attuale configurazione locale su Debian GNU/Linux, per capire le sue singole viti di regolazione e come adattare il sistema alle tue esigenze.
Nota che questo articolo è su misura per Debian GNU/Linux Release 10 “Buster”. Salvo diversa indicazione, le tecniche qui descritte funzionano anche per i suoi derivati come Ubuntu o Linux Mint [8].
Che cos'è un locale??
In generale, un locale è un insieme di valori che riflettono la natura e le convenzioni di un paese o di una cultura. Tra l'altro questi valori sono memorizzati come variabili di ambiente che rappresentano la lingua, la codifica dei caratteri, la formattazione di data e ora, il formato carta predefinito, la valuta del paese e il primo giorno della settimana.
Come accennato in precedenza, esiste un'impostazione generale nota come "impostazione internazionale predefinita" e un'impostazione definita dall'utente. La localizzazione predefinita funziona a livello di sistema ed è memorizzata nel file /etc/default/locale. Il Listato 1 mostra la localizzazione predefinita su una Debian GNU/Linux usando il tedesco come lingua principale e unicode a 8 bit (UTF-8) come set di caratteri [11].
Listato 1: La localizzazione predefinita su una Debian GNU/Linux tedesca
$ cat /etc/default/locale # File generato da update-locale LANG=“de_DE.UTF-8” $ --Si noti che, contrariamente a Debian GNU/Linux, su alcune versioni precedenti di Ubuntu la configurazione locale a livello di sistema è memorizzata in /etc/locale.conf.
Le impostazioni definite dall'utente sono memorizzate come file nascosto nella tua directory home e i file effettivi che vengono valutati dipendono dalla shell di accesso che usi [6]. La tradizionale shell Bourne (/bin/sh) [4] legge i due file /etc/profile e ~/.profile, mentre la shell Bourne-Again (Bash) (/bin/bash) [5] legge /etc/profile e ~/.bash_profile. Se la tua shell di login è Z shell (/bin/zsh) [9], i due file ~/.zprofile e ~/.zlogin vengono letti, ma non ~/.profile a meno che non venga richiamato in modalità di emulazione Bourne shell [10].
L'avvio di una shell in un terminale in una sessione esistente risulta in una shell interattiva, senza login. Ciò potrebbe comportare la lettura dei seguenti file - ~/.bashrc per Bash e /etc/zshrc così come ~/.zshrc per Z shell [6].
Denominazione di una località
Come spiegato qui [12], il nome di un locale segue uno schema specifico. Il modello è costituito da codici lingua, codifica dei caratteri e descrizione di una variante selezionata.
Un nome inizia con un codice lingua di due lettere minuscole ISO 639-1 [13] o un codice lingua di tre lettere ISO 639-2 [14] se la lingua non ha un codice di due lettere. Ad esempio, è de per il tedesco, fr per il francese e cel per il celtico. Il codice è seguito per molte ma non tutte le lingue da un carattere di sottolineatura _ e da un codice paese di due lettere maiuscole ISO 3166 [15]. Ad esempio, questo porta a de_CH per il tedesco svizzero e fr_CA per un sistema di lingua francese per un utente canadese che probabilmente si trova in Québec.
Facoltativamente, un punto . segue il nome della codifica dei caratteri come UTF-8 o ISO-8859-1 e il segno @ seguito dal nome di una variante. Ad esempio, il nome [email protected] descrive l'impostazione per un sistema inglese per l'Irlanda con codifica dei caratteri UTF-8 e l'euro come simbolo di valuta.
Comandi e strumenti
Il numero di comandi relativi alle impostazioni locali è relativamente basso. L'elenco contiene le impostazioni locali che visualizzano esclusivamente le impostazioni locali correnti. Il secondo è localectl che può essere utilizzato per interrogare e modificare le impostazioni internazionali del sistema e del layout della tastiera. Per attivare una localizzazione entrano in gioco gli strumenti dpkg-reconfigure e locale-gen - vedi l'esempio sotto.
Mostra le impostazioni internazionali in uso
Il primo passo è capire la locale corrente sul tuo sistema usando il comando locale come segue:
Listato 2: mostra le impostazioni locali correnti
$ locale LANG=de_DE.LINGUA UTF-8= LC_CTYPE=“de_DE.UTF-8” LC_NUMERIC="de_DE.UTF-8”LC_TIME="de_DE.UTF-8” LC_COLLATE="de_DE.UTF-8” LC_MONETARY="de_DE.UTF-8”
LC_MESSAGES="de_DE.UTF-8” LC_PAPER="de_DE.UTF-8” LC_NAME="de_DE.UTF-8”
LC_ADDRESS="de_DE.UTF-8” LC_TELEPHONE="de_DE.UTF-8” LC_MEASUREMENT="de_DE.UTF-8”
LC_IDENTIFICATION="de_DE.UTF-8” LC_ALL= $ --
Si prega di notare che altre distribuzioni Linux diverse da Debian GNU/Linux possono utilizzare variabili di ambiente aggiuntive non elencate sopra. Le singole variabili hanno il seguente significato:
- LANG: determina la localizzazione predefinita in assenza di altre variabili di ambiente relative alla localizzazione locale
- LINGUA: elenco delle lingue di traduzione dei messaggi di fallback
- LC_CTYPE: Classificazione dei caratteri e conversione delle maiuscole
- LC_NUMERIC: formattazione numerica
- LC_TIME: formati di data e ora
- LC_COLLATE: Fascicolazione (ordinamento)
- LC_MONETARY: formattazione monetaria
- LC_MESSAGES: Formato di parole e risposte interattive
- LC_PAPER: formato carta predefinito per regione
- LC_NAME: formati dei nomi
- LC_ADDRESS: Convenzione utilizzata per la formattazione degli indirizzi stradali o postali
- LC_TELEPHONE: Convenzioni utilizzate per la rappresentazione dei numeri di telefono
- LC_MEASUREMENT: sistema di misurazione predefinito utilizzato all'interno della regione
- LC_IDENTIFICATION: metadati sulle informazioni locali locale
- LC_RESPONSE: Determina come le risposte (come Sì e No) appaiono nella lingua locale (non in uso da Debian GNU/Linux ma Ubuntu)
- LC_ALL: sovrascrive tutte le altre variabili locali (eccetto LANGUAGE)
Elenca le località disponibili
Successivamente, puoi elencare le versioni locali disponibili sul tuo sistema utilizzando il comando locale accompagnato dalla sua opzione -a. -a è l'abbreviazione di -all-locales:
Listato 3: Mostra le lingue disponibili
$ locale -a C C.UTF-8 de_DE@euro de_DE.utf8 it_IT.utf8 POSIX $ --Il listato 3 contiene due impostazioni internazionali sia per il tedesco (Germania) che per l'inglese (USA). Le tre voci C, C.UTF-8 e POSIX sono sinonimi e rappresentano le impostazioni predefinite appropriate per i dati che vengono analizzati da un programma per computer. L'output nel Listato 3 si basa sull'elenco delle versioni locali supportate memorizzate in /usr/share/i18n/SUPPORTED.
Inoltre, l'aggiunta dell'opzione -v (abbreviazione di -verbose) alla chiamata porta a un output molto più ampio che include i metadati LC_IDENTIFICATION su ogni locale. La Figura 1 mostra questo per la chiamata dal Listato 3.
Per vedere quali locali esistono già e quali necessitano di ulteriore aiuto per essere completati si può anche dare un'occhiata alla mappa del Locale Helper Project [20]. Gli indicatori rossi mostrano chiaramente quali locali sono incompiuti. La Figura 2 mostra le impostazioni locali per il Sudafrica che sembrano abbastanza complete.
Mostra le mappe dei caratteri disponibili
Il comando locale viene fornito con l'opzione -m che è l'abbreviazione di -charmaps. L'output mostra le mappe dei caratteri disponibili o i file di descrizione del set di caratteri [16]. Tale file ha lo scopo di "definire le caratteristiche per il set di caratteri codificati e la codifica per i caratteri specificati nel set di caratteri portatili e può definire la codifica per caratteri aggiuntivi supportati dall'implementazione" [16]. Il Listato 4 lo illustra con un estratto dell'intero elenco.
Listato 4: File di descrizione del set di caratteri
$ locale -m ANSI_X3.110-1983 ANSI_X3.4-1968 ARMSCII-8 ASMO_449 BIG5 BIG5-HKSCS… $ --Mostra le definizioni delle variabili locali
Ogni variabile utilizzata per una localizzazione ha una propria definizione. Usando l'opzione -k (abbreviazione di -keyword-name) il comando locale mostra questa impostazione in dettaglio. Il Listato 5 illustra questo per la variabile LC_TELEPHONE come è definita in un ambiente tedesco: il formato del numero di telefono, il formato del telefono nazionale, il codice di selezione internazionale, nonché il prefisso internazionale (prefisso internazionale) e il set di codici. Vedere il progetto Locale Helper [20] per una descrizione dettagliata dei valori.
Listato 5: I dettagli di LC_TELEPHONE
$ locale -k LC_TELEPHONE tel_int_fmt=“+%c %a %l” tel_dom_fmt=“%A %l”int_select=“00” int_prefix=“49” phone-codeset=“UTF-8” $ --
Modifica delle impostazioni locali correnti
La conoscenza della localizzazione diventa necessaria non appena si esegue un sistema che viene fornito con una localizzazione diversa da quella a cui si è abituati, ad esempio su un sistema live Linux. La modifica della localizzazione può essere eseguita in due modi: riconfigurando il pacchetto Debian locales [19] e aggiungendo la localizzazione richiesta utilizzando il comando locale-gen. Per l'opzione uno, l'esecuzione del comando seguente apre una finestra di dialogo di configurazione basata su testo mostrata nella Figura 3:
# dpkg-reconfigure locali
Premere la barra spaziatrice per scegliere le impostazioni internazionali desiderate dall'elenco mostrato nella finestra di dialogo e scegliere "OK" per confermare la selezione. La finestra di dialogo successiva ti offre un elenco di locali disponibili per il locale predefinito. Seleziona quello desiderato e scegli "OK". Ora vengono generati i file locali corrispondenti e la locale selezionata in precedenza è impostata per il tuo sistema.
Per l'opzione due, la generazione della localizzazione desiderata viene eseguita con l'aiuto del comando locale-gen. Il Listato 6 illustra questo per una configurazione francese:
Listato 6: Generazione di una localizzazione francese
locale-gen fr_FR.UTF-8Generazione delle impostazioni internazionali... fr_FR.UTF-8... fatto Generazione completata. # --
Per utilizzare la locale generata in precedenza come predefinita, esegui il comando nel Listato 7 per configurarla correttamente:
Listato 7: Impostazione manuale delle impostazioni internazionali
# update-locale LANG=fr_FR.UTF-8Non appena apri una nuova sessione di terminale, o accedi nuovamente al tuo sistema, le modifiche vengono attivate.
Compila un file di definizione delle impostazioni internazionali
Il comando localectl ti aiuta a compilare manualmente un file di definizione locale locale. Per creare un'impostazione francese, eseguire il comando come segue:
Listato 8: Compila una definizione locale locale
# localedef -i fr_FR -f UTF-8 fr_FR.UTF-8Conclusione
La comprensione delle impostazioni locali può richiedere del tempo poiché si tratta di una configurazione influenzata da diversi fattori. Abbiamo spiegato come capire la tua lingua attuale e come cambiarla correttamente. Adattare il sistema Linux alle tue esigenze dovrebbe essere molto più semplice per te d'ora in poi.
Link e riferimenti
- [1] Locale, Wiki Debian
- [2] ChangeLanguage, Come cambiare la lingua del tuo sistema Debian
- [3] POSIX Locale, The Open Group Base Specifications numero 7, edizione 2018
- [4] Bourne shell, Wikipedia
- [5] Guscio Bourne-Again, Wikipedia
- [6] Differenza tra shell di accesso e shell non di accesso?, StackExchange
- [7] Interfaccia del sistema operativo portatile (POSIX), Wikipedia
- [8] Linux Mint
- [9] Z shell, Wikipedia
- [10] Comandi incorporati della shell Zsh
- [11] UTF-8, Wikipedia
- [12] Come dovrei impostare il mio locale e quali sono le implicazioni di farlo?
- [13] ISO 639-1, Wikipedia
- [14] ISO 639-2, Wikipedia
- [15] ISO 3166, Wikipedia
- [16] File di descrizione del set di caratteri
- [17] Localizzazione, Wiki di Ubuntu
- [19] pacchetto Debian locales
- [20] Progetto di aiuto locale