Rocky Linux / Cambiare lingua e locale di sistema con localectl

Su Rocky Linux, localectl permette di verificare e cambiare la lingua e il locale predefiniti del sistema. Per impostare il coreano, installate glibc-langpack-ko se manca, eseguite localectl set-locale LANG=ko_KR.UTF-8 con i privilegi necessari e iniziate una nuova sessione di accesso.

Gli esempi principali mantengono il coreano e l’inglese; più sotto trovate anche i valori per l’italiano. Prima di modificare il sistema, annotate i valori iniziali di localectl status e locale: serviranno per il confronto e per ripristinare l’impostazione precedente. Le installazioni e le modifiche globali richiedono un account autorizzato a usare sudo.

sudo dnf install glibc-langpack-ko
sudo localectl set-locale LANG=ko_KR.UTF-8

Un locale è un insieme di regole linguistiche e regionali: può influire su messaggi, date, numeri, ordinamento e codifica dei caratteri. Se conta soprattutto la coerenza di log e automazioni, valutate se mantenere C.UTF-8 o en_US.UTF-8, anziché cambiare indiscriminatamente la lingua del server.

Controllare lingua e locale attuali

localectl status
locale

localectl status mostra il locale di sistema e la mappatura della tastiera della console. Il comando locale mostra invece le impostazioni effettive della shell corrente, comprese LANG, LC_TIME e LC_MESSAGES.

Una sessione già aperta può conservare le vecchie variabili d’ambiente dopo la modifica del valore globale. Confrontate quindi entrambi i comandi, senza presumere che un cambiamento in localectl status abbia aggiornato anche la shell in uso.

Trovare i locale disponibili e installare il pacchetto necessario

localectl list-locales
locale -a

Se nell’elenco manca un locale equivalente a ko_KR.UTF-8, installate il pacchetto per il coreano. Nell’output di locale -a potete incontrare anche una grafia come ko_KR.utf8: controllate i nomi effettivamente disponibili sulla macchina.

sudo dnf install glibc-langpack-ko

Per l’inglese, quando necessario, il pacchetto corrispondente è glibc-langpack-en. Per l’italiano, verificate glibc-langpack-it e il locale it_IT.UTF-8: il percorso è lo stesso, usando il pacchetto e il nome del locale desiderati. Questi pacchetti sono presenti negli indici ufficiali BaseOS x86_64 di Rocky Linux 9 e Rocky Linux 10; la disponibilità va comunque controllata nei repository abilitati sulla propria installazione.

dnf info glibc-langpack-ko
dnf provides '*/ko_KR*'

Il primo comando consulta le informazioni del pacchetto; il secondo cerca i pacchetti che forniscono percorsi corrispondenti al modello indicato. Dopo l’installazione, ripetete locale -a e localectl list-locales prima di impostare il valore globale. Non scegliete un locale assente ignorando gli avvisi.

Cambiare la lingua predefinita del sistema

Impostare il coreano

sudo localectl set-locale LANG=ko_KR.UTF-8

localectl gestisce la configurazione del locale di sistema tramite systemd e normalmente la registra in /etc/locale.conf. Il manuale ufficiale di locale.conf elenca le variabili ammesse nel file.

Per impostare l’italiano, installate prima glibc-langpack-it con sudo dnf install glibc-langpack-it, verificate che il locale sia disponibile e usate sudo localectl set-locale LANG=it_IT.UTF-8. Cambiare LANG non installa da solo i cataloghi di traduzione di ogni applicazione.

Impostare l’inglese o un locale UTF-8 neutro

sudo localectl set-locale LANG=en_US.UTF-8

L’inglese può agevolare la ricerca di errori nei log e nella documentazione. Se l’ambiente installato lo supporta, anche C.UTF-8 è utile per automazioni che richiedono UTF-8 e convenzioni poco dipendenti da una lingua. Verificate però le esigenze dello script: l’inglese statunitense non equivale al locale C per tutte le regole di ordinamento e formattazione.

Verificare l’applicazione della modifica e tornare al valore precedente

Uscite e accedete nuovamente, oppure aprite una nuova connessione SSH, quindi controllate:

localectl status
locale
printf '%s\n' "$LANG"

Nel caso coreano, cercate LANG=ko_KR.UTF-8 o il nome equivalente del locale scelto; per l’italiano il valore atteso è it_IT.UTF-8. Esaminate anche le variabili LC_*, che possono prevalere su LANG. Le impostazioni personali o quelle trasmesse dal client SSH possono a loro volta influire sulla sessione.

Normalmente non occorre riavviare il computer. Un servizio già in esecuzione può però conservare il proprio ambiente iniziale: se il locale del servizio è rilevante, controllate la sua configurazione systemd e pianificate un riavvio del solo servizio quando necessario. Per annullare la modifica globale, reimpostate con localectl set-locale i valori annotati in precedenza, poi verificate in una nuova sessione; non sovrascrivete eventuali altre impostazioni senza averle controllate.

Cambiare lingua solo nel terminale corrente

Per modificare l’ambiente della shell corrente e dei processi avviati da essa, senza cambiare il valore globale, esportate la variabile:

export LANG=ko_KR.UTF-8

L’impostazione vale per le categorie che non sono già sovrascritte da variabili più specifiche o da LC_ALL. Per passare un valore a un solo comando, anteponete l’assegnazione al comando:

LANG=C.UTF-8 dnf info bash

L’assegnazione davanti a dnf non cambia il valore di LANG nella shell chiamante. Anche in questo caso un LC_ALL o un LC_MESSAGES già impostato può prevalere: per forzare tutte le categorie di un singolo comando potete usare LC_ALL=C.UTF-8 dnf info bash, se quel locale è disponibile.

Le modifiche esportate in questo modo scompaiono chiudendo la shell, purché non siano state aggiunte ai file di avvio. Per tornare subito alla situazione iniziale, ripristinate i valori precedenti delle sole variabili modificate, oppure rimuovete con unset una variabile che prima non era impostata. Negli script che richiedono messaggi, ordinamento o formati prevedibili, specificate il locale necessario nel contesto del comando.

Capire la precedenza di LANG e LC_*

Variabile Funzione Aspetto da considerare
LANG Locale predefinito per le categorie prive di una variabile specifica Di solito basta per cambiare la lingua, se non esistono valori con priorità superiore.
LC_MESSAGES Lingua dei messaggi dei programmi Consente di modificare i messaggi mantenendo separati i formati di date e numeri.
LC_TIME Rappresentazione di date e orari Uno script che interpreta date localizzate può smettere di funzionare correttamente.
LC_ALL Sovrascrive i valori delle altre categorie di locale Utile per diagnosi temporanee; non è ammesso in /etc/locale.conf.

Per le categorie di locale, l’ordine è LC_ALL, poi la variabile specifica LC_*, infine LANG, considerando i valori non vuoti. Se LC_ALL è impostato, modificare soltanto LANG può quindi non cambiare il risultato. Il manuale locale(7) del progetto Linux man-pages descrive categorie e precedenza.

env | grep -E '^(LANG|LC_)'

Questo filtro mostra solo le variabili che iniziano con LANG o LC_ e comprende quindi anche LANGUAGE. Nei programmi che usano GNU gettext, LANGUAGE può scegliere una lista prioritaria di lingue per i messaggi: se il testo resta in una lingua inattesa, controllate anche questa variabile e le impostazioni proprie dell’applicazione.

Risolvere i problemi con i caratteri coreani

  • Verificate che il locale UTF-8 richiesto compaia in locale -a.
  • Controllate che client SSH ed emulatore di terminale usino UTF-8.
  • Accertatevi che il carattere tipografico scelto contenga i glifi coreani.
  • Verificate eventuali impostazioni di lingua o codifica specifiche dell’applicazione.
  • Controllate che script e file di dati siano realmente salvati in UTF-8.

Locale e supporto dei caratteri tipografici sono problemi separati: anche con il locale coreano corretto, un terminale privo dei glifi necessari può mostrare quadratini vuoti. Cambiare il locale non converte automaticamente la codifica dei file già esistenti.

Domande frequenti

Perché la lingua della shell non cambia dopo localectl?

La shell esistente conserva l’ambiente ricevuto all’accesso. Aprite una nuova sessione o una nuova connessione SSH e verificate con locale. Se il risultato differisce ancora dal valore globale, controllate le variabili con priorità superiore e le impostazioni personali.

È opportuno impostare il coreano su tutti i server?

Dipende dalle esigenze del gruppo operativo e delle automazioni. L’inglese o C.UTF-8 possono essere più pratici quando cercate messaggi di errore in inglese o dovete mantenere prevedibile l’output degli script.

Si può eseguire un solo comando in inglese?

Sì, anteponendo un’assegnazione come LANG=C.UTF-8 COMANDO. Se esistono valori LC_* che prevalgono su LANG, applicate il locale al comando tramite LC_ALL e controllate anche LANGUAGE per i messaggi GNU gettext. Verificate sempre con locale -a che il locale sia disponibile.

Cambiare il locale modifica anche la disposizione della tastiera?

No. Locale linguistico e mappatura della tastiera della console sono impostazioni distinte, entrambe visibili in localectl status. In un terminale SSH remoto, la disposizione della tastiera dipende normalmente dal sistema del client.

Riepilogo

Per impostare il coreano su Rocky Linux, installate il pacchetto necessario e usate localectl set-locale LANG=ko_KR.UTF-8 con i privilegi appropriati. Confermate il risultato in una nuova sessione tramite localectl status e locale.

Su un server in produzione, considerate anche formati di date e numeri, ordinamento e automazioni. La documentazione RHEL 9 sulla configurazione del locale di sistema illustra la procedura di base applicabile a questo ambiente; per le opzioni del programma potete consultare anche il manuale ufficiale di localectl.