Sui sistemi UNIX/LINUX questa configurazione si chiama locali POSIX [7] e standardizzata come IEEE STD 1003.1-2017 [3]. Tale locale può variare per il sistema nel suo insieme e gli account utente singolo in quanto ogni singolo utente può individuare il suo ambiente di lavoro. In questo articolo ti spiegheremo come capire l'attuale configurazione della localizzazione su Debian GNU/Linux, per comprendere le sue viti di regolazione singola e come adattare il sistema alle tue esigenze.
Si noti che questo articolo è adattato a Debian GNU/Linux Release 10 "Buster". Salvo diversamente indicato, le tecniche qui descritte funzionano anche per i suoi derivati come Ubuntu o Linux Mint [8].
Cos'è un locale?
In generale, un locale è un insieme di valori che riflettono la natura e le convenzioni di un paese o una cultura. Tra gli altri questi valori sono archiviati come variabili di ambiente che rappresentano la lingua, la codifica dei personaggi, la formattazione della data e del tempo, la dimensione della carta predefinita, la valuta del paese e il primo giorno della settimana.
Come toccato in precedenza, esiste un'impostazione generale nota come "locale predefinita" e un'impostazione definita dall'utente. Il locale predefinito funziona a livello di sistema ed è archiviato nel file/etc/impostazione predefinita/locale. Listato 1 Visualizza il locale predefinito su una GNU Debian/Linux usando il tedesco come lingua principale e un Unicode a 8 bit (UTF-8) come set di caratteri [11].
Elenco 1: il locale predefinito su un Debian GNU/Linux tedesco
$ cat/etc/default/locale # file generato da update-locale lang = “de_de.UTF-8 "$ --
Si prega di notare che contrariamente a Debian GNU/Linux, su alcune precedenti versioni di Ubuntu la configurazione della localizzazione a livello di sistema è memorizzata su/etc/locale.conf.
Le impostazioni definite dall'utente sono archiviate come file nascosto nella 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/profilo e ~/.profilo, mentre la shell bourne-again (bash) (/bin/bash) [5] legge/etc/profilo e ~/.Bash_profile. Se la shell di accesso è z shell (/bin/zsh) [9], i due file ~/.zprofile e ~/.zlogin vengono letti, ma non ~/.Profilo se non invocato in modalità di emulazione della shell di Bourne [10].
L'avvio di una shell in un terminale in una sessione esistente si traduce in una shell interattiva non logina. Ciò può comportare la lettura dei seguenti file - ~/.Bashrc per bash e/etc/zshrc e ~/.ZSHRC per Z Shell [6].
Come spiegato qui [12], il nome di una locale segue uno schema specifico. Il modello è costituito da codici linguistici, codifica dei caratteri e descrizione di una variante selezionata.
Un nome inizia con un codice di lingua a due lettere ISO 639-1 minuscolo [13] o un codice di lingua a tre lettere ISO 639-2 [14] se la lingua non ha un codice a due lettere. Ad esempio, è DE per tedesco, fr per francese e cel per il Celtic. Il codice è seguito per molte ma non tutte le lingue da un sottolineaggio _ e da un codice paese maiuscole ISO 3166 di due lettere [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 en_ie.UTF-8@Euro descrive la configurazione per un sistema inglese per l'Irlanda con codifica dei caratteri UTF-8 e l'euro come simbolo valutario.
Il numero di comandi relativi ai locali è relativamente basso. L'elenco contiene una locale che visualizza esclusivamente le impostazioni di livello locale. Il secondo è LocalEctl che può essere utilizzato per interrogare e modificare le impostazioni del layout della localizzazione e della tastiera. Al fine di attivare un locale gli strumenti DPKG-Reconfigure e Locale-Gen entrano in gioco-vedi l'esempio seguente.
Il primo passo è capire la posizione corrente sul sistema utilizzando il comando locale come segue:
Elenco 2: mostra il locale corrente
$ Locale Lang = de_de.UTF-8 Lingua = 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 noti che altre distribuzioni Linux rispetto a Debian GNU/Linux possono utilizzare ulteriori variabili di ambiente non elencate sopra. Le singole variabili hanno il seguente significato:
Successivamente, è possibile elencare le località disponibili sul sistema utilizzando il comando locale accompagnato dalla sua opzione -a. -A è breve per -all -locals:
Elenco 3: mostra le locali disponibili
$ locale -a c c.UTF-8 de_de@euro de_de.utf8 en_us.UTF8 Posix $ --
Listato 3 contiene due impostazioni locali sia per tedeschi (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 analizzati da un programma per computer. L'output in List 3 si basa sull'elenco dei locali supportati memorizzati in/usr/share/i18n/supportati.
Inoltre, l'aggiunta dell'opzione -v (abbreviazione di -verbose) alla chiamata porta a un output molto più esteso che include i metadati LC_identification su ciascun locale. La Figura 1 mostra questo per la chiamata dall'elenco 3.
Per vedere quali locali esistono già e quali necessitano di ulteriore aiuto, potresti anche dare un'occhiata alla mappa del progetto Helper Locale [20]. I marcatori rossi mostrano chiaramente quali locali sono incompiuti. La Figura 2 mostra i locali per il Sudafrica che sembrano abbastanza completi.
Il comando locale viene fornito con l'opzione -m che è abbreviata per -carmaps. 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 codificato e la codifica per i caratteri specificati nel set di caratteri portatili e può definire la codifica per ulteriori caratteri supportati dall'implementazione" [16]. La lista 4 lo illustra con un estratto dell'intero elenco.
Elenco 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… $ --
Ogni variabile utilizzata per un locale viene fornita con la propria definizione. Utilizzando l'opzione -k (breve per -keyword -name) Il comando locale visualizza questa impostazione in dettaglio. Listato 5 illustra questo per la variabile LC_TELEPHONE in quanto è definita in un ambiente tedesco: il formato del numero di telefono, il formato telefonico domestico, il codice di selezione internazionale e il codice del paese (prefisso internazionale) e il set di codice. Vedere il progetto Helper Locale [20] per una descrizione dettagliata dei valori.
Elenco 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” Telephone-codeset = “UTF-8” $ --
Le conoscenze relative al locale diventano necessarie non appena si esegue un sistema che viene fornito con un locale diverso da quello a cui si è abituati, ad esempio su un sistema Linux Live. La modifica del locale può essere eseguita in due modi: riconfigurare il pacchetto Debian Locales [19] e aggiungere il locale richiesto utilizzando la Locale -Gen di comando. Per l'opzione uno, l'esecuzione del comando seguente apre una finestra di dialogo di configurazione basata sul testo mostrata nella Figura 3:
# DPKG-Reconfigure Locali
Premere la barra dello spazio per scegliere i locali desiderati dall'elenco mostrato nella finestra di dialogo e selezionare "OK" per confermare la selezione. La prossima finestra di dialogo offre un elenco di locali disponibili per la locale predefinita. Seleziona quello desiderato e scegli "OK". Ora, vengono generati i file locali secondo e la locale precedentemente selezionata è impostata per il sistema.
Per l'opzione due, la generazione del locale desiderato viene eseguita con l'aiuto della Gen-Gen di comando. La lista 6 lo illustra per una configurazione francese:
Elenco 6: generazione di un locale francese
Locale-Gen Fr_fr.UTF-8
Generare locali ... fr_fr.UTF-8… FATTO GENERAZIONE COMPLETO. # --
Per utilizzare il locale precedentemente generato come predefinito, eseguire il comando nell'elenco 7 per impostarlo correttamente:
Elenco 7: Impostazione manualmente la locale
# update-locale lang = fr_fr.UTF-8
Non appena si apri una nuova sessione di terminale o si riprogetta al sistema, le modifiche vengono attivate.
Il comando LocalEctl ti aiuta a compilare manualmente un file di definizione della localizzazione. Per creare un'impostazione francese esegui il comando come segue:
Elenco 8: compilare una definizione di locale
# localidef -i fr_fr -f utf -8 fr_fr.UTF-8
Comprendere i locali può richiedere del tempo in quanto è una configurazione che è influenzata da diversi fattori. Abbiamo spiegato come capire la tua posizione attuale e come cambiarla correttamente. ADPARARE il sistema Linux alle tue esigenze dovrebbe essere molto più facile per te da ora in poi.