Comprensione dei locali su Debian GNU/Linux

Comprensione dei locali su Debian GNU/Linux
Ogni sistema informatico viene fornito con la sua configurazione specifica per quanto riguarda il linguaggio del sistema e la codifica dei caratteri che è in uso. Sulla base di questa configurazione, i messaggi di errore, il sistema di aiuto e il feedback del programma vengono visualizzati sullo schermo.

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].

Nominare un locale

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.

Comandi e strumenti

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.

Mostra il locale che è in uso

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:

  • Lang: determina il locale predefinito in assenza di altre variabili di ambiente relative al locale
  • Lingua: elenco dei linguaggi di traduzione dei messaggi di fallback
  • LC_CTYPE: classificazione dei caratteri e conversione dei casi
  • LC_NUMERIC: formattazione numerica
  • LC_Time: formati di data e ora
  • LC_COLLATE: ORDINE COLLAZIONE (ordinamento)
  • LC_MONETARY: formattazione monetaria
  • LC_Messages: formato di parole e risposte interattive
  • LC_paper: dimensione della carta predefinita per la regione
  • LC_NAME: formati di nome
  • LC_ADDRESS: Convenzione utilizzata per la formattazione di indirizzi di strada 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 sulla localizzazione
  • LC_Response: determina come le risposte (come sì e no) compaiono nella lingua locale (non in uso da Debian GNU/Linux ma Ubuntu)
  • LC_ALL: sostituisce tutte le altre variabili locali (tranne la lingua)

Elenca locali disponibili

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.

Mostra mappe di personaggi disponibili

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… $ --

Mostra le definizioni delle variabili locali

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” $ --

Modifica del locale attuale

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.

Compilare un file di definizione locale

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

Conclusione

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.

Collegamenti e riferimenti
  • [1] locale, debian wiki
  • [2] Changelinguage, Come cambiare la lingua del tuo sistema Debian
  • [3] Posix Locale, The Open Group Base Specitions Numero 7, 2018 Edition
  • [4] Bourne Shell, Wikipedia
  • [5] Bourne-Again Shell, Wikipedia
  • [6] Differenza tra shell di accesso e shell non login?, StackExchange
  • [7] Interfaccia del sistema operativo portatile (POSIX), Wikipedia
  • [8] Linux Mint
  • [9] Z Shell, Wikipedia
  • [10] comandi incorporato con shell Zsh
  • [11] UTF-8, Wikipedia
  • [12] Cosa 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] locale, Wiki Ubuntu
  • [19] Locales Debian Package
  • [20] Progetto di supporto locale