successivo
precedente
inizio
fine
indice generale
aiuto
indice analitico
volume
parte
TXT
HTML
PDF
pdf
gdoc
P4
Capitolo 13. Convenzioni nazionali
dpkg-reconfigure
13.3
locale
13.2
locale-gen
13.3
localedef
13.2
L'internazionalizzazione è l'azione con cui si realizza o si modifica un programma, in modo che sia in grado di funzionare utilizzando convenzioni nazionali diverse (principalmente la lingua dei messaggi che emette e il tipo di codifica usata). Il termine inglese a cui si fa riferimento è internationalization e si abbrevia convenzionalmente con la sigla «i18n», perché tra la lettera «i» e la lettera «n» di questa parola ci sono 18 lettere.
La localizzazione è la configurazione attraverso la quale si fa in modo che un programma determinato si adatti a funzionare secondo le particolarità linguistico-nazionali locali. Il termine inglese a cui si fa riferimento è localization e si abbrevia convenzionalmente con la sigla «l10n», perché tra la lettera «l» e la lettera «n» di questa parola ci sono 10 lettere.
I programmi accedono alle funzionalità relative alla localizzazione per mezzo di librerie. Nei sistemi GNU si tratta delle librerie C (GNU C Library). (1)
Questo capitolo mostra solo come abilitare la gestione delle impostazioni locali desiderate nel proprio sistema; per la selezione dell'adattamento locale preferito di ogni utente, si interviene all'interno di variabili di ambiente: LANG e LC_*, come descritto nella sezione 16.11.
13.1
Sigle identificative delle caratteristiche locali
Per consentire ai programmi di identificare la richiesta di adattarsi a delle caratteristiche locali, si usa una definizione in forma di stringa, con una sintassi particolare, che generalmente corrisponde a quella seguente:
linguaggio[_territorio[.insieme_di_caratteri]]
|
Il linguaggio viene espresso da una sigla di due sole lettere minuscole, secondo lo standard ISO 639 (tabella 13.4); il territorio viene espresso da una sigla di due sole lettere maiuscole, secondo lo standard ISO 3166 (tabella 13.5); l'insieme di caratteri è una sigla numerica che esprime lo standard ISO corrispondente.
Per esempio, it_CH.ISO-8859-1 identifica la lingua italiana riferita al territorio svizzero, con un insieme di caratteri ISO 8859-1.
Come si vede dal modello sintattico, le informazioni sulla destra possono essere omesse, ma in tal caso vengono determinate in modo predefinito.
Una variante molto comune di questa definizione è quella che riguarda i paesi che utilizzano l'Euro come valuta. In questi casi, può succedere di vedere notazioni del tipo:
Questa notazione è praticamente equivalente alla dichiarazione esplicita dell'insieme di caratteri. Questa cambia, rispetto al valore predefinito, per poter disporre di un simbolo necessario a rappresentare la valuta:
Con l'introduzione dell'insieme di caratteri universale (ISO 10646) e della codifica UTF-8, l'utilizzo di codifiche del tipo ISO 8859-n è superato. L'esempio seguente si riferisce alla configurazione ottimale per la lingua italiana, per l'utilizzo dell'insieme di caratteri universale:
13.2
Preparazione delle localizzazioni disponibili
Per poter configurare i programmi in modo da adeguarsi alle caratteristiche locali, è necessario che le definizioni necessarie siano disponibili. Si può verificare con il comando locale la disponibilità effettiva:
#
locale -a
[Invio]
Se quello che si ottiene è solo l'elenco seguente, significa che in pratica non sono disponibili delle varianti locali diverse dalla lingua inglese pura e semplice:
I programmi che sfruttano il meccanismo di localizzazione, si avvalgono della funzione locale(), descritta dalla pagina di manuale locale(7).
Le informazioni relative alla localizzazione sono divise in due parti: un file principale e una mappa per la traduzione di nomi simbolici di caratteri nella codifica effettiva da utilizzare. Questi file si trovano generalmente nelle directory /usr/share/i18n/
, ma per poter utilizzare le informazioni che contengono, si devono compilare i file in un formato binario; poi, questi file si collocano presumibilmente a partire dalla directory /usr/lib/locales/
. Pertanto, se anche sono disponibili le definizioni locali, possono mancare i file che poi servono alla funzione locale(); l'elenco che si ottiene da locale -a serve a comprendere cosa la funzione locale() è in grado di gestire.
Supponendo di voler compilare le definizioni riferite al modello di localizzazione corrispondente a it_IT.UTF-8, occorre fare riferimento ai file /usr/share/i18n/locales/it_IT
e /usr/share/i18n/charmaps/UTF-8
(se questi file sono compressi, appare probabilmente l'estensione .gz
, ma per usarli con localedef vanno prima ripristinati alle loro condizioni normali). I file che vengono generati dalla compilazione si inseriscono presumibilmente nella directory /usr/lib/locale/it_IT/
, che deve essere creata per l'occasione. In pratica si procede come nell'esempio seguente, attraverso il programma localedef:
#
mkdir /usr/lib/locale/it_IT
[Invio]
#
localedef -i /usr/share/i18n/locales/it_IT
\
\ -f /usr/share/i18n/locales/charmaps/UTF-8
\
\ /usr/lib/locale/it_IT
[Invio]
13.3
Configurazione delle localizzazioni nelle distribuzioni Debian
Le distribuzioni GNU Debian offrono la gestione della localizzazione attraverso un pacchetto apposito, con cui è possibile configurare quali definizioni locali gestire nel file /etc/locale.gen
.
Una volta aggiornato questo file, è sufficiente avviare il programma locale-gen per ottenere la ricompilazione delle definizioni locali desiderate:
#
locale-gen
[Invio]
Generalmente, il file /etc/locale.gen
viene creato da un altro programma interattivo, senza bisogno di interventi manuali, che poi si occupa anche di avviare locale-gen; precisamente si tratta del comando: dpkg-reconfigure locales.
#
dpkg-reconfigure locales
[Invio]
Figura 13.2. Aspetto del programma di configurazione delle definizioni locali che si intendono gestire nel sistema.
.------------------ Configuring Locales -------------------.
| You can choose locales to be generated by selecting |
| locales you want. Selected locales will be saved to |
| `/etc/locale.gen' file. You can also manually edit this |
| file. You need to run `locale-gen' after edit the file. |
| |
| Select locales to be generated. |
| |
| [*] id_ID ISO-8859-1 * |
| [*] is_IS ISO-8859-1 * |
| [*] it_CH ISO-8859-1 * |
| [*] it_IT ISO-8859-1 * |
| [*] it_IT.ISO-8859-1 ISO-8859-1 # |
| [*] it_IT.UTF-8 UTF-8 * |
| [*] it_IT@euro ISO-8859-15 * |
| [*] iw_IL ISO-8859-8 * |
| |
| <Ok> |
`----------------------------------------------------------'
|
A fianco del file /etc/locale.gen
è possibile trovare anche /etc/locale.alias
, che associa delle denominazioni più semplici, o comunque alternative, a quelle formali standard. Per esempio, osservando la direttiva seguente, si comprende che sarebbe indifferente usare la sigla italian oppure it_IT.ISO-8859-1.
...
italian it_IT.ISO-8859-1
...
|
|
Se possibile è meglio utilizzare soltanto configurazioni locali che prevedono l'uso dell'insieme di caratteri universale; pertanto, sempre così:
linguaggio_territorio.UTF-8
|
|
Tabella 13.4. Sigle che esprimono un linguaggio, secondo lo standard ISO 639.
aa | Afar | ab | Abkhazian | af | Afrikaans |
am | Amharic | ar | Arabic | as | Assamese |
ay | Aymara | az | Azerbaijani | ba | Bashkir |
be | Byelorussian | bg | Bulgarian | bh | Bihari |
bi | Bislama | bn | Bengali; Bangla | bo | Tibetan |
br | Breton | ca | Catalan | co | Corsican |
cs | Czech | cy | Welsh | da | Danish |
de | German | dz | Bhutani | el | Greek |
en | English | eo | Esperanto | es | Spanish |
et | Estonian | eu | Basque | fa | Persian |
fi | Finnish | fj | Fiji | fo | Faroese |
fr | French | fy | Frisian | ga | Irish |
gd | Scots Gaelic | gl | Galician | gn | Guarani |
gu | Gujarati | ha | Hausa | he | Hebrew (iw) |
hi | Hindi | hr | Croatian | hu | Hungarian |
hy | Armenian | ia | Interlingua | id | Indonesian (in) |
ie | Interlingue | ik | Inupiak | is | Icelandic |
it | Italian | iu | Inuktitut | ja | Japanese |
jw | Javanese | ka | Georgian | kk | Kazakh |
kl | Greenlandic | km | Cambodian | kn | Kannada |
ko | Korean | ks | Kashmiri | ku | Kurdish |
ky | Kirghiz | la | Latin | ln | Lingala |
lo | Laothian | lt | Lithuanian | lv | Latvian, Lettish |
mg | Malagasy | mi | Maori | mk | Macedonian |
ml | Malayalam | mn | Mongolian | mo | Moldavian |
mr | Marathi | ms | Malay | mt | Maltese |
my | Burmese | na | Nauru | ne | Nepali |
nl | Dutch | no | Norwegian | oc | Occitan |
om | (Afan) Oromo | or | Oriya | pa | Punjabi |
pl | Polish | ps | Pashto, Pushto | pt | Portuguese |
qu | Quechua | rm | Rhaeto-Romance | rn | Kirundi |
ro | Romanian | ru | Russian | rw | Kinyarwanda |
sa | Sanskrit | sd | Sindhi | sg | Sangro |
sh | Serbo-Croatian | si | Sinhalese | sk | Slovak |
sl | Slovenian | sm | Samoan | sn | Shona |
so | Somali | sq | Albanian | sr | Serbian |
ss | Siswati | st | Sesotho | su | Sundanese |
sv | Swedish | sw | Swahili | ta | Tamil |
te | Telugu | tg | Tajik | th | Thai |
ti | Tigrinya | tk | Turkmen | tl | Tagalog |
tn | Setswana | to | Tonga | tr | Turkish |
ts | Tsonga | tt | Tatar | tw | Twi |
ug | Uighur | uk | Ukrainian | ur | Urdu |
uz | Uzbek | vi | Vietnamese | vo | Volapuk |
wo | Wolof | xh | Xhosa | yi | Yiddish (ji) |
yo | Yoruba | za | Zhuang | zh | Chinese |
zu | Zulu | | | | |
|
Tabella 13.5. Sigle che esprimono una nazione, secondo lo standard ISO 3166, a due o a tre lettere. Maggiori dettagli sullo standard ISO 3166 sono accessibili presso http://www.ripe.net/lir-services/member-support/info/list-of-members/list-of-country-codes-and-rirs.
Territorio | Sigla | Sigla | Territorio | Sigla | Sigla |
AFGHANISTAN | AF | AFG | ÅLAND ISLANDS | AX | ALA |
ALBANIA | AL | ALB | ALGERIA | DZ | DZA |
AMERICAN SAMOA | AS | ASM | ANDORRA | AD | AND |
ANGOLA | AO | AGO | ANGUILLA | AI | AIA |
ANTARCTICA | AQ | ATA | ANTIGUA AND BARBUDA | AG | ATG |
ARGENTINA | AR | ARG | ARMENIA | AM | ARM |
ARUBA | AW | ABW | AUSTRALIA | AU | AUS |
AUSTRIA | AT | AUT | AZERBAIJAN | AZ | AZE |
BAHAMAS | BS | BHS | BAHRAIN | BH | BHR |
BANGLADESH | BD | BGD | BARBADOS | BB | BRB |
BELARUS | BY | BLR | BELGIUM | BE | BEL |
BELIZE | BZ | BLZ | BENIN | BJ | BEN |
BERMUDA | BM | BMU | BHUTAN | BT | BTN |
BOLIVIA | BO | BOL | BOSNIA AND HERZEGOWINA | BA | BIH |
BOTSWANA | BW | BWA | BOUVET ISLAND | BV | BVT |
BRAZIL | BR | BRA | BRITISH INDIAN OCEAN TERRITORY | IO | IOT |
BRUNEI DARUSSALAM | BN | BRN | BULGARIA | BG | BGR |
BURKINA FASO | BF | BFA | BURUNDI | BI | BDI |
CAMBODIA | KH | KHM | CAMEROON | CM | CMR |
CANADA | CA | CAN | CAPE VERDE | CV | CPV |
CAYMAN ISLANDS | KY | CYM | CENTRAL AFRICAN REPUBLIC | CF | CAF |
CHAD | TD | TCD | CHILE | CL | CHL |
CHINA | CN | CHN | CHRISTMAS ISLAND | CX | CXR |
COCOS (KEELING) ISLANDS | CC | CCK | COLOMBIA | CO | COL |
COMOROS | KM | COM | CONGO | CG | COG |
CONGO, THE DEMOCRATIC REPUBLIC OF THE | CD | COD | COOK ISLANDS | CK | COK |
COSTA RICA | CR | CRI | COTE D'IVOIRE | CI | CIV |
CROATIA (Hrvatska) | HR | HRV | CUBA | CU | CUB |
CYPRUS | CY | CYP | CZECH REPUBLIC | CZ | CZE |
DENMARK | DK | DNK | DJIBOUTI | DJ | DJI |
DOMINICA | DM | DMA | DOMINICAN REPUBLIC | DO | DOM |
EAST TIMOR | TL | TLS | ECUADOR | EC | ECU |
EGYPT | EG | EGY | EL SALVADOR | SV | SLV |
EQUATORIAL GUINEA | GQ | GNQ | ERITREA | ER | ERI |
ESTONIA | EE | EST | ETHIOPIA | ET | ETH |
FALKLAND ISLANDS (MALVINAS) | FK | FLK | FAROE ISLANDS | FO | FRO |
FIJI | FJ | FJI | FINLAND | FI | FIN |
FRANCE | FR | FRA | FRENCH GUIANA | GF | GUF |
FRENCH POLYNESIA | PF | PYF | FRENCH SOUTHERN TERRITORIES | TF | ATF |
GABON | GA | GAB | GAMBIA | GM | GMB |
GEORGIA | GE | GEO | GERMANY | DE | DEU |
GHANA | GH | GHA | GIBRALTAR | GI | GIB |
GREECE | GR | GRC | GREENLAND | GL | GRL |
GRENADA | GD | GRD | GUADELOUPE | GP | GLP |
GUAM | GU | GUM | GUATEMALA | GT | GTM |
GUINEA | GN | GIN | GUINEA-BISSAU | GW | GNB |
GUYANA | GY | GUY | HAITI | HT | HTI |
HEARD AND MC DONALD ISLANDS | HM | HMD | HOLY SEE (VATICAN CITY STATE) | VA | VAT |
HONDURAS | HN | HND | HONG KONG | HK | HKG |
HUNGARY | HU | HUN | ICELAND | IS | ISL |
INDIA | IN | IND | INDONESIA | ID | IDN |
IRAN (ISLAMIC REPUBLIC OF) | IR | IRN | IRAQ | IQ | IRQ |
IRELAND | IE | IRL | ISRAEL | IL | ISR |
ITALY | IT | ITA | JAMAICA | JM | JAM |
JAPAN | JP | JPN | JORDAN | JO | JOR |
KAZAKHSTAN | KZ | KAZ | KENYA | KE | KEN |
KIRIBATI | KI | KIR | KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF | KP | PRK |
KOREA, REPUBLIC OF | KR | KOR | KUWAIT | KW | KWT |
KYRGYZSTAN | KG | KGZ | LAO PEOPLE'S DEMOCRATIC REPUBLIC | LA | LAO |
LATVIA | LV | LVA | LEBANON | LB | LBN |
LESOTHO | LS | LSO | LIBERIA | LR | LBR |
LIBYAN ARAB JAMAHIRIYA | LY | LBY | LIECHTENSTEIN | LI | LIE |
LITHUANIA | LT | LTU | LUXEMBOURG | LU | LUX |
MACAO | MO | MAC | MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF | MK | MKD |
MADAGASCAR | MG | MDG | MALAWI | MW | MWI |
MALAYSIA | MY | MYS | MALDIVES | MV | MDV |
MALI | ML | MLI | MALTA | MT | MLT |
MARSHALL ISLANDS | MH | MHL | MARTINIQUE | MQ | MTQ |
MAURITANIA | MR | MRT | MAURITIUS | MU | MUS |
MAYOTTE | YT | MYT | MEXICO | MX | MEX |
MICRONESIA, FEDERATED STATES OF | FM | FSM | MOLDOVA, REPUBLIC OF | MD | MDA |
MONACO | MC | MCO | MONGOLIA | MN | MNG |
MONTSERRAT | MS | MSR | MOROCCO | MA | MAR |
MOZAMBIQUE | MZ | MOZ | MYANMAR | MM | MMR |
NAMIBIA | NA | NAM | NAURU | NR | NRU |
NEPAL | NP | NPL | NETHERLANDS | NL | NLD |
NETHERLANDS ANTILLES | AN | ANT | NEW CALEDONIA | NC | NCL |
NEW ZEALAND | NZ | NZL | NICARAGUA | NI | NIC |
NIGER | NE | NER | NIGERIA | NG | NGA |
NIUE | NU | NIU | NORFOLK ISLAND | NF | NFK |
NORTHERN MARIANA ISLANDS | MP | MNP | NORWAY | NO | NOR |
OMAN | OM | OMN | PAKISTAN | PK | PAK |
PALAU | PW | PLW | PALESTINIAN TERRITORY, OCCUPIED | PS | PSE |
PANAMA | PA | PAN | PAPUA NEW GUINEA | PG | PNG |
PARAGUAY | PY | PRY | PERU | PE | PER |
PHILIPPINES | PH | PHL | PITCAIRN | PN | PCN |
POLAND | PL | POL | PORTUGAL | PT | PRT |
PUERTO RICO | PR | PRI | QATAR | QA | QAT |
REUNION | RE | REU | ROMANIA | RO | ROU |
RUSSIAN FEDERATION | RU | RUS | RWANDA | RW | RWA |
SAINT KITTS AND NEVIS | KN | KNA | SAINT LUCIA | LC | LCA |
SAINT VINCENT AND THE GRENADINES | VC | VCT | SAMOA | WS | WSM |
SAN MARINO | SM | SMR | SAO TOME AND PRINCIPE | ST | STP |
SAUDI ARABIA | SA | SAU | SENEGAL | SN | SEN |
SERBIA AND MONTENEGRO | CS | SCG | SEYCHELLES | SC | SYC |
SIERRA LEONE | SL | SLE | SINGAPORE | SG | SGP |
SLOVAKIA (Slovak Republic) | SK | SVK | SLOVENIA | SI | SVN |
SOLOMON ISLANDS | SB | SLB | SOMALIA | SO | SOM |
SOUTH AFRICA | ZA | ZAF | SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS | GS | SGS |
SPAIN | ES | ESP | SRI LANKA | LK | LKA |
ST. HELENA | SH | SHN | ST. PIERRE AND MIQUELON | PM | SPM |
SUDAN | SD | SDN | SURINAME | SR | SUR |
SVALBARD AND JAN MAYEN ISLANDS | SJ | SJM | SWAZILAND | SZ | SWZ |
SWEDEN | SE | SWE | SWITZERLAND | CH | CHE |
SYRIAN ARAB REPUBLIC | SY | SYR | TAIWAN, PROVINCE OF CHINA | TW | TWN |
TAJIKISTAN | TJ | TJK | TANZANIA, UNITED REPUBLIC OF | TZ | TZA |
THAILAND | TH | THA | TOGO | TG | TGO |
TOKELAU | TK | TKL | TONGA | TO | TON |
TRINIDAD AND TOBAGO | TT | TTO | TUNISIA | TN | TUN |
TURKEY | TR | TUR | TURKMENISTAN | TM | TKM |
TURKS AND CAICOS ISLANDS | TC | TCA | TUVALU | TV | TUV |
UGANDA | UG | UGA | UKRAINE | UA | UKR |
UNITED ARAB EMIRATES | AE | ARE | UNITED KINGDOM | GB | GBR |
UNITED STATES | US | USA | UNITED STATES MINOR OUTLYING ISLANDS | UM | UMI |
URUGUAY | UY | URY | UZBEKISTAN | UZ | UZB |
VANUATU | VU | VUT | VENEZUELA | VE | VEN |
VIET NAM | VN | VNM | VIRGIN ISLANDS (BRITISH) | VG | VGB |
VIRGIN ISLANDS (U.S.) | VI | VIR | WALLIS AND FUTUNA ISLANDS | WF | WLF |
WESTERN SAHARA | EH | ESH | YEMEN | YE | YEM |
ZAMBIA | ZM | ZMB | ZIMBABWE | ZW | ZWE |
|
Tabella 13.6. Conversione tra le unità britanniche (imperiali) più comuni.
Grandezza | Unità di misura | Equivalenza |
Lunghezza | pollice (inch) | 1 in = 25,4 mm |
| piede (foot) | 1 ft = 12 in = 304,8 mm |
| iarda (yard) | 1 yd = 3 ft = 914,4 mm |
Massa | libbra (pound) | 1 lb = 453,592 37 g |
| oncia (ounce) | 1 oz = 1/16 lb = 28,349 523 1 g |
Volume | gallone (gallon)
USA | 1 galUSA = 3,785 412 dm3 |
| gallone (gallon) UK | 1 galUK = 4,546 09 dm3 |
|
1) GNU C Library GNU LGPL e altre licenze in base alla porzione di codice
«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net