10.4. Impostazioni internazionali e della lingua

SUSE Linux è in larga misura internazionalizzato e può essere modificato in base alle esigenze locali. In altre parole, l'internazionalizzazione (I18N) consente di operare specifiche localizzazioni (L10N). Le abbreviazioni I18N e L10N derivano dalla prima e ultima lettera delle parole e in mezzo il numero di lettere che le separano.

Le impostazioni possono applicate tramite le variabili LC_ definite nel file /etc/sysconfig/language. Le impostazioni non controllano solo il supporto della lingua, ma anche le categorie Messaggi (lingua), Set di caratteri, Ordinamento, ora e data, Numeri e Valuta. Ciascuna di queste categorie può essere definita direttamente con la sua variabile o indirettamente con una variabile globale nel file language; consultare la pagina disponibile tramite il comando locale.

RC_LC_MESSAGES, RC_LC_CTYPE, RC_LC_COLLATE, RC_LC_TIME, RC_LC_NUMERIC, RC_LC_MONETARY

Queste variabili vengono trasferite alla shell senza il prefisso RC_ e rappresentano le categorie elencate. I profili della shell interessati sono elencati sotto. Per visualizzare l'impostazione attuale usare il comando locale.

RC_LC_ALL

Se impostata, questa variabile sovrascrive i valori delle variabili già dichiarate.

RC_LANG

Questa variabile è il valore alternativo se nessun'altra è impostata. Per default, SUSE Linux imposta solo RC_LANG in modo da consentire una semplice personalizzazione dei valori.

ROOT_USES_LANG

Questa variabile è controllata da yes o no. Se è impostata su no, root lavorerà sempre nell'ambiente POSIX.

Le altre variabili possono essere impostate tramite l'editor sysconfig YaST (vedere la Sezione 8.3.1, "Modifica della configurazione del sistema con l'editor di sysconfig fornito da YaST"). Il valore di una tale variabile contiene il codice lingua, il codice paese, la codifica e il modificatore. I singoli componenti sono collegati da caratteri speciali:

  LANG=<lingua>[[_<paese>].<codifica>[@<Modificatore>]] 

10.4.1. Alcuni esempi

I valori di lingua e paese devono sempre essere impostati insieme. L'impostazione della lingua è conforme allo standard ISO 639 disponibile all'indirizzo http://www.evertype.com/standards/iso639/iso639-en.html e all'indirizzo http://www.loc.gov/standards/iso639-2/. L'elenco dei codici paese è disponibile nella pagina su ISO 3166 all'indirizzo http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html.

I valori validi sono quelli per i quali è disponibile un file di definizione nella directory /usr/lib/locale. È possibile creare ulteriori file di definizione a partire dai file nella directory /usr/share/i18n usando il comando localedef. I file di definizione fanno parte del pacchetto glibc-i18ndata. Un file di definizione per it_IT.UTF-8 (italiano e Italia) può essere creato con:

 
localedef -i it_IT -f UTF-8 it_IT.UTF-8 
LANG=it_IT.UTF-8

Questa è l'impostazione di default se si seleziona Italiano Italia durante l'installazione. È possibile selezionare un'altra lingua, ma la codifica dei caratteri UTF-8 rimarrà invariata.

LANG=it_IT.ISO-8859-1

Questo valore imposta la lingua su Italiano, il paese su Italia e il set di caratteri su ISO-8859-1. Questo set di caratteri non supporta il simbolo dell'euro ma è utile con i programmi non aggiornati al supporto della codifica UTF-8. La stringa che definisce il set di caratteri (in questo caso ISO-8859-1) viene valutata da programmi come Emacs.

LANG=it_IT@euro

L'esempio precedente include in modo esplicito il simbolo Euro in un'impostazione di lingua. In pratica, questa impostazione è ormai obsoleta poiché la codifica UTF-8 attuale copre il simbolo Euro. È utile solo per quelle applicazioni senza supporto UTF-8 e con supporto ISO-8859-15.

SuSEconfig legge le variabili in /etc/sysconfig/language e scrive le modifiche necessarie in /etc/SuSEconfig/profile e in /etc/SuSEconfig/csh.cshrc. I valori di /etc/SuSEconfig/profile vengono letti o estratti da /etc/profile. I valori di /etc/SuSEconfig/csh.cshrc vengono estratti da /etc/csh.cshrc. In questo modo, le impostazioni sono disponibili in tutto il sistema.

Gli utenti possono sovrascivere i valori di default del sistema modificando il file ~/.bashrc. Se ad esempio non si desidera usare il valore globale it_IT per i messaggi dell'interfaccia, includere LC_MESSAGES=es_ES in modo da visualizzarli in Spagnolo.

10.4.2. Impostazioni internazionali in ~/.i18n

Se non si è soddisfatti delle impostazioni internazionali predefinite, è possibile modificarle in ~/.i18n. Le voci in ~/.i18n sovrascrivono le impostazioni predefinite del sistema in /etc/sysconfig/language. Utilizzare gli stessi nomi di variabile ma senza i prefissi dello spazio dei nomi RC_, ad esempio scrivere LANG anziché RC_LANG.

10.4.3. Impostazioni del supporto della lingua

I file della categoria Messaggi devono di regola essere sempre memorizzati nella directory della lingua corrispondente (come it), altrimenti non possono essere letti. Se si imposta LANG su it_IT e il file dei messaggi in /usr/share/locale/it_IT/LC_MESSAGES non esiste, viene estratto per impostazione di default il valore di /usr/share/locale/en/LC_MESSAGES.

È inoltre possibile definire una sequenza di valori alternativi, ad esempio, da bretone a francese, da catalano a spagnolo poi a portoghese:

LANGUAGE="br_FR:fr_FR"

LANGUAGE="gl_ES:es_ES:pt_PT"

Un altro esempio è dato dalle varianti Nynorsk e Bokmål del norvegese (con valore alternativo no):

LANG="nn_NO"

LANGUAGE="nn_NO:nb_NO:no"

oppure

LANG="nb_NO"

LANGUAGE="nb_NO:nn_NO:no"

Notare che in norvegese, anche la variabile LC_TIME viene impostata in modo diverso.

Uno dei problemi che possono sorgere è rappresentato dal separatore usato per delimitare gruppi di numeri che non vengono riconosciuti correttamente. Ciò si verifica se LANG viene impostato con un singolo codice lingua come de, e se il file di definizione glibc usato è ubicato in /usr/share/lib/de_DE/LC_NUMERIC. Di conseguenza, la variabile LC_NUMERIC deve essere impostata su de_DE in modo che la definizione del separatore possa essere letta dal sistema.

10.4.4. Ulteriori informazioni

  • Il manuale GNU C Library Reference, capitolo "Locales and Internationalization". È disponibile in glibc-info.

  • Markus Kuhn, UTF-8 and Unicode FAQ for Unix/Linux (Domande frequenti su UTF-8 e Unicode per Unix/Linux), all'indirizzo http://www.cl.cam.ac.uk/~mgk25/unicode.html.

  • Unicode-Howto, di Bruno Haible: /usr/share/doc/howto/en/html/Unicode-HOWTO.html.