Come posso personalizzare le impostazioni locali del sistema?

17

Al sistema Amministrazione Supporto della lingua testo. Posso solo scegliere le impostazioni standard, ma mi piacerebbe mettere a punto. Per esempio in Windows posso personalizzare le cose come formato di ora e data, misurare unità, separatore decimale, valuta, ecc manualmente - come posso farlo in Ubuntu?

    
posta Ivan 13.01.2011 - 06:34

2 risposte

21

Questa risposta dimostrerà come personalizzare completamente una locale, opzionalmente usando una localizzazione esistente come base. Il tipo di locale che verrà utilizzato in questa risposta è il tipo i18n ; tale tipo di locale sarà implicito in ogni menzione della parola "locale" nel corpo della risposta.

Trova una guida

La prima cosa che devi personalizzare un locale, è conoscere il formato della locale. Questo editor delle impostazioni internazionali ha una descrizione completa di ogni campo in una località, nonostante non sia utilizzabile da chiunque in un diritto -stanza via. Questa sarà la guida da usare.

Strumenti necessari

Gli unici strumenti che devi utilizzare con le impostazioni locali sono

  1. Un editor di testo. Qualsiasi farà, anche se VIM eccellerà.
  2. Un convertitore da testo a Unicode. Ci si aspetterebbe che non ne avessi uno, quindi ti fornirò uno semplice. Leggi la sottosezione successiva per ottenerlo.

Ti consiglio di creare una directory e di salvare tutto ciò che è relativo al lavoro che farai sulla locale.

Convertitore da testo a Unicode (encodestr)

NOTA: se utilizzi caratteri non comuni potresti avere problemi con lo script che scrivo di seguito; potresti voler dare un'occhiata agli script alternativi collegati da nass .

Salva il seguente codice 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/python

def encode(string):
    newstring = str()
    for ch in string:
        newstring += "<U%04X>" % ord(ch)
    return newstring

if __name__ == '__main__':
    import sys
    print encode(sys.argv[1])

Dopo averlo salvato, dai il permesso di esecuzione del file - questo ti tornerà utile. Puoi farlo usando nautilus, o eseguendo da un terminale il seguente comando, nella directory in cui hai salvato lo script: chmod +x encodestr .

Ora puoi testare questo script eseguendo sulla stessa directory: ./encodestr hello . Dovresti ottenere un output uguale a <U0068><U0065><U006C><U006C><U006F> .

Modifica una locale esistente

La modifica di una locale esistente è il caso più semplice, in quanto idealmente sceglierai una locale che si adatta alle tue esigenze quasi totalmente, nel qual caso devi apportare solo piccole modifiche. Per adattarlo, è possibile utilizzare la guida per sapere quali delle sezioni sono quelle che si desidera modificare e come è possibile modificarle. Tutte le localizzazioni installate risiedono in /usr/share/i18n/locales , tuttavia la guida contiene praticamente tutte le impostazioni locali create.

Tuttavia, la prima cosa che noterai quando apri un locale è che leggerete le parole inglesi tanto quanto i codici <UXXXX> strani. Dovrai essere in grado di creare questi codici - questo è dove arriva lo script encodestr .

Quando sai quali sezioni devi modificare, devi conoscere ogni campo contenuto nella sezione.

  

Ad esempio, la sezione LC_TIME contiene il campo t_fmt e molti altri. Ogni campo ha una sua descrizione su la 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 il testo e le comuni variabili strfmt .

Proprio quando sai cosa scrivere sui campi che vuoi modificare, esegui il testo attraverso lo script encodestr per ottenere il suo equivalente codificato.

NOTA: non tutti i campi devono essere codificati, se necessario utilizzare una locale esistente come riferimento.

  

Ad esempio, se si desidera avere il formato dell'ora Time: %T nel campo t_fmt , eseguire ./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 locale (nella sua rispettiva sezione, ovviamente).

Dopo aver modificato ogni campo che si desidera, sarà necessario procedere all'installazione delle impostazioni locali sul sistema, in modo che possa essere utilizzato. Passa alla sezione di installazione per questo.

Creazione di una locale da zero

Al contrario di modificarne uno, l'altro metodo che puoi utilizzare per creare le impostazioni locali personalizzate sta lavorando su di esso da zero. Questo non è molto difficile se - di nuovo - usi la guida . Ecco un suggerimento utile: puoi copiare sezioni da altre impostazioni locali senza effettivi metodi copia e incolla . Devi solo seguire questo formato:

LC_SECTION
copy "locale"
END LC_SECTION

Dove LC_SECTION è la sezione che desideri modificare e locale è la locale da cui vuoi copiare quella sezione.

  

Ad esempio, se vuoi copiare il formato dell'ora nelle impostazioni locali in inglese, questo testo sarà il tuo file delle impostazioni internazionali personalizzato:

LC_TIME
copy "en_GB"
END LC_TIME
  

Questo ti consente di risparmiare un sacco di lavoro e assicura che qualsiasi modifica apportata alle impostazioni locali di riferimento verrà rispecchiata alla tua.

Installazione delle impostazioni locali personalizzate

I passaggi che sto per mostrare sotto potrebbero non essere ottimali, ma funzionano.

  1. Compila le tue impostazioni internazionali. Non farti prendere dal panico! Questo non richiede tempo. Basta eseguire il comando sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -v dove custom è il nome della tua localizzazione.

  2. Copia le tue impostazioni internazionali nella directory /usr/share/i18n/locales/ . Avrai sicuramente bisogno di privilegi sudo per farlo, e puoi farlo con il comando sudo cp locale /usr/share/i18n/locales/ dove locale è il nome file della tua localizzazione personalizzata.

  3. Specifica le tue impostazioni internazionali in /var/lib/locales/supported.d/ . Ad esempio, crea un nome file /var/lib/locales/supported.d/asd e aggiungi la riga custom UTF-8 , dove personalizzato è il nome della tua locale.

  4. Esegui il comando magico. In realtà non so cosa fa esattamente questo comando, ma è fondamentale. Esegui sudo locale-gen . È molto probabile che generi riferimenti alle locali disponibili dove necessario.

  5. Dì al tuo sistema di usare le impostazioni locali. Se si desidera utilizzare le impostazioni internazionali in tutto il sistema, modificare il file /etc/environment . In caso contrario, è possibile modificare il file ~/.profile o qualsiasi altro che è stato originato all'avvio. Se non sai cosa significa quest'ultimo non ti preoccupare, usa solo il file ~/.profile . Per sapere cosa devi scrivere, per prima cosa esegui il comando locale . Dovrebbe pubblicare un elenco con elementi come LANGUAGE , LC_MESSAGES , LC_CTYPE e molti altri. Scriverai, per ciascuna delle sezioni che desideri (elencate dal comando precedente), su righe separate, questo SECTION="locale" dove SECTION è la sezione e locale il nome della tua locale personalizzata.

  

Ad esempio, se si desidera utilizzare il formato dell'ora dai Paesi Bassi, ma la lingua inglese, scrivere:

LANGUAGE="en_GB:en"
LC_TIME="nl_NL"

NOTA: se si desidera utilizzare una locale per ogni impostazione locale, scrivere LC_ALL="locale" dove locale è il nome delle impostazioni locali personalizzate. Se vuoi utilizzare 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 a 2 lettere per la lingua che desideri.

  

Ad esempio, se si desidera utilizzare la locale olandese e la lingua inglese, è possibile utilizzare:

LANG="nl_NL"
LANGUAGE="nl_NL:en"

Hai finito

Al prossimo accesso, le impostazioni internazionali dovrebbero essere in uso. Puoi testarlo eseguendo nuovamente il comando locale .

Commenta le incongruenze o le dichiarazioni false in questa guida!

    
risposta data Severo Raz 12.07.2012 - 09:49
7

Non sei sicuro del tipo di personalizzazione che desideri, ma puoi impostare alcune variabili locali utilizzando ~/.locale . Ad esempio, per ottenere messaggi in inglese ma l'ora del tedesco e i mi piace che uso

export LC_ALL=""
export LANG="en_GB.utf8"
export LC_CTYPE="de_DE.utf8"
export LC_NUMERIC="de_DE.utf8"
export LC_TIME="de_DE.utf8"
export LC_COLLATE="de_DE.utf8"
export LC_MONETARY="de_DE.utf8"
export LC_MESSAGES="en_GB.utf8"
export LC_PAPER="de_DE.utf8"
export LC_NAME="en_GB.utf8"
export LC_ADDRESS="de_DE.utf8"
export LC_TELEPHONE="de_DE.utf8"
export LC_MEASUREMENT="de_DE.utf8"
export LC_IDENTIFICATION="de_DE.utf8"

È anche possibile generare localizzazioni personalizzate. Vedi per es. questa guida per le date.

    
risposta data Carsten Thiel 13.01.2011 - 10:00

Leggi altre domande sui tag