Al sistema → Amministrazione → Supporto linguistico → Testo. Posso solo scegliere le impostazioni locali standard, ma vorrei perfezionare. Ad esempio in Windows potrei personalizzare cose come il formato di ora e data, unità di misura, separatore decimale, valuta, ecc. manualmente – come posso farlo in Ubuntu?
Migliore risposta
Questa risposta dimostrerà come personalizzare completamente una locale, utilizzando facoltativamente una locale esistente come base. Il tipo di locale che verrà utilizzato in questa risposta è i18n
genere; tale tipo di locale sarà implicito in ogni menzione della parola "locale" nel corpo della risposta.
Trova una guida
La prima cosa di cui hai bisogno per personalizzare una lingua, è conoscere il formato della lingua. Questo editor di localizzazione web ha una descrizione completa di ogni campo in una locale, nonostante non sia utilizzabile da chiunque in modo immediato. Questa sarà la guida da usare.
Strumenti necessari
Gli unici strumenti di cui hai bisogno per lavorare con le impostazioni locali sono
- Un editor di testo. Qualsiasi andrà bene, anche se VIM eccellerà.
- Un convertitore da testo a Unicode. Ci si aspetterebbe molto che tu non ne abbia uno, quindi te ne fornirò uno semplice. Leggi la prossima sottosezione per ottenerlo.
Ti consiglio di creare una directory e di salvare su di essa tutto ciò che riguarda il lavoro che farai sulla locale.
Convertitore da testo a unicode (encodestr)
NOTA: se stai utilizzando caratteri non comuni potresti avere problemi con lo script che scrivo di seguito; potresti dare un'occhiata agli script alternativi collegati da nass .
Salva il codice seguente in un file. Questo file verrà identificato dal tuo sistema come uno script python, il che va bene perché è uno. Questa guida presuppone che tu abbia chiamato lo script encodestr
.
#!/usr/bin/env python3
import sys
def main():
if len(sys.argv) != 2:
exit(f'Usage: {sys.argv[0]} <string to encode>')
print(encode(sys.argv[1]))
def encode(s):
return ''.join(f"<U{ord(c):04X}>" for c in s)
if __name__ == '__main__':
sys.exit(main())
Dopo averlo salvato, dai il permesso di esecuzione del file:questo sarà utile. Puoi farlo usando nautilus, oppure eseguendo da terminale il seguente comando, nella directory in cui hai salvato lo script:chmod +x encodestr
.
Ora puoi testare questo script eseguendo nella stessa directory:./encodestr hello
. Dovresti ottenere un output uguale a <U0068><U0065><U006C><U006C><U006F>
.
Modifica una locale esistente
La modifica di una lingua esistente è il caso più semplice, poiché idealmente sceglierai una lingua che si adatta quasi totalmente alle tue esigenze, nel qual caso devi apportare solo piccole modifiche. Per personalizzarlo, puoi utilizzare la guida per sapere quali delle sezioni sono quelle che desideri modificare e come puoi modificarle. Tutte le localizzazioni installate risiedono in /usr/share/i18n/locales
, tuttavia la guida contiene praticamente tutte le impostazioni locali mai create.
Tuttavia, la prima cosa che noterai quando apri un locale è che leggerai parole inglesi tanto quanto strane <UXXXX>
codici. Dovrai essere in grado di creare questi codici:è qui che si trova encodestr
arriva lo script.
Quando sai quali sezioni devi modificare, devi conoscere ogni campo contenuto nella sezione.
Ad esempio, il LC_TIME
contiene il campo t_fmt
, e molti altri. Ogni campo ha una propria descrizione nella guida.
Ora che sai quali campi modificare, usa di nuovo la guida per scoprire quali valori accetta il campo.
Ad esempio, il campo t_fmt
accetta testo e le comuni variabili strfmt.
Proprio quando sai cosa scrivere sui campi che vuoi modificare, esegui il testo attraverso il encodestr
script per ottenere il suo equivalente codificato.
NOTA: Non tutti i campi devono essere codificati, utilizzare una locale esistente come riferimento se necessario.
Ad esempio, se vuoi avere il formato dell'ora Time: %T
nel t_fmt
campo, esegui ./encodestr "Time: %T"
; questo restituirà <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
e quindi avrai la riga t_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
nella tua lingua (nella rispettiva sezione, ovviamente).
Dopo aver modificato tutti i campi desiderati, dovrai procedere con l'installazione della locale sul sistema, in modo che possa essere utilizzata. Procedi alla sezione di installazione per questo.
Creazione di una localizzazione da zero
Invece di modificarne uno, l'altro metodo che puoi utilizzare per creare la tua locale personalizzata sta lavorando su di esso da zero. Questo non è molto difficile se, ancora una volta, usi la guida. Tuttavia, ecco un suggerimento utile:puoi copiare sezioni da altre località senza copiare e incollare effettivi metodi. Devi solo seguire questo formato:
LC_SECTION
copy "locale"
END LC_SECTION
Dove LC_SECTION
è la sezione che vuoi modificare e locale
è la lingua da cui vuoi copiare quella sezione.
Ad esempio, se desideri copiare il formato dell'ora nella lingua inglese, dovresti avere questo testo come file della lingua personalizzata:
LC_TIME
copy "en_GB"
END LC_TIME
E questo ti fa risparmiare un sacco di lavoro e assicura che qualsiasi modifica apportata alla locale di riferimento verrà rispecchiata nella tua.
Installazione della lingua personalizzata
I passaggi che mostrerò di seguito potrebbero non essere ottimali, ma funzionano.
-
Compila il tuo locale. Niente panico! Questo non richiede tempo. Basta eseguire il comando
sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -v
dovecustom
è il nome della tua località. -
Copia la tua locale in
/usr/share/i18n/locales/
directory. Avrai sicuramente bisogno di sudo privilegi per farlo, e puoi farlo con il comandosudo cp locale /usr/share/i18n/locales/
dovelocale
è il nome del file della tua locale personalizzata. -
Specifica la tua locale in
/var/lib/locales/supported.d/
. Ad esempio, crea un nome file/var/lib/locales/supported.d/asd
e aggiungi la rigacustom UTF-8
, dove custom è il nome della tua locale. -
Esegui il comando magico. In realtà non so cosa faccia esattamente questo comando, ma è fondamentale. Esegui
sudo locale-gen
. È molto probabile che generi riferimenti alle localizzazioni disponibili dove necessario. -
Dì al tuo sistema di usare la locale. Se vuoi che la locale venga usata a livello di sistema, modifica il
/etc/environment
file. In caso contrario, puoi modificare il tuo~/.profile
file o qualsiasi altro originato all'avvio. Se non sai cosa significa quest'ultimo non ti preoccupare, usa semplicemente il~/.profile
file. Per sapere cosa devi scrivere al suo interno, esegui prima illocale
comando. Dovrebbe pubblicare un elenco con elementi comeLANGUAGE
,LC_MESSAGES
,LC_CTYPE
e molti altri. Scriverai, per ciascuna delle sezioni che desideri (elencate dal comando precedente), su righe separate, questoSECTION="locale"
doveSECTION
è la sezione elocale
il nome della tua locale personalizzata.
Ad esempio, se vuoi utilizzare il formato dell'ora dai Paesi Bassi, ma la lingua inglese, scrivi:
LANGUAGE="en_GB:en"
LC_TIME="nl_NL"
NOTA: Se desideri utilizzare una lingua per ogni impostazione locale, scrivi LC_ALL="locale"
dove locale
è il nome della tua locale personalizzata. Se vuoi usare una localizzazione per tutto tranne che per la lingua, puoi scrivere LANG="locale"
e (su un'altra riga, ovviamente) LANGUAGE="locale":XX
dove XX
è il codice di 2 lettere per la lingua desiderata.
Ad esempio, se desideri utilizzare la locale olandese e la lingua inglese, puoi utilizzare:
LANG="nl_NL"
LANGUAGE="nl_NL:en"
Hai finito
La prossima volta che accedi, la tua lingua dovrebbe essere in uso. Puoi verificarlo eseguendo locale
comando di nuovo.
Si prega di commentare le incongruenze o le dichiarazioni false in questa guida!