# Localizzazione (sviluppo software)

In informatica (entro la localizzazione linguistica), la localizzazione è l'insieme dei processi di adattamento di un software – pensato e progettato per dato un mercato o un ambiente – ad altri mercati o ambienti (in particolare, ad altre nazioni e culture).

## Applicazione

La localizzazione si applica al prodotto che viene venduto su un mercato estero particolare e completa il prodotto stesso con le traduzioni del testo o con l'adattamento alla particolare cultura locale.
Alcuni dei campi di applicazione dei processi di internazionalizzazione e localizzazione sono:
* La lingua, in particolare il testo codificato (computer):
** alfabeti e sistemi di scrittura;
** sistemi di numerazione;
** direzione della scrittura (es. da sinistra verso destra e da destra verso sinistra).
* La data e l'ora: formato, calendari e fusi orari.
* La valuta e i pesi e le misure.
* Immagini e colori: questioni relative alla comprensibilità e all'appropriatezza culturale.
* Nomi, titoli, documenti d'identità, passaporti, numeri di telefono, indirizzi e codici postali internazionali.

## Localizzazione software

La localizzazione software è un processo di traduzione dell'interfaccia utente di un software da una lingua a un'altra e l'adattamento della stessa in accordo alla cultura straniera. Questo processo è molto complicato e spesso richiede sforzi particolari da parte dei team di sviluppo. Esistono strumenti che possono semplificare il processo di localizzazione. Molti di questi progetti vengono affidati ad aziende specializzate per diminuirne i costi.
La localizzazione software può anche fare riferimento all'adattamento di un software da una cultura a un'altra. Durante la localizzazione alcuni riferimenti a storia e cultura vengono sostituiti con equivalenti riferimenti locali che non modifichino il senso dell'originale.
Nei giochi a console, la localizzazione si occupa anche del controverso processo di produrre console e soprattutto cartridge che possano essere utilizzate solamente nella regione geografica per la quale sono state progettate. Per esempio, una cartridge europea potrebbe non funzionare in una console nordamericana. Inoltre la localizzazione include la modifica dei dialoghi e di altri elementi per meglio adattarsi al pubblico del paese. Un motivo per quest'operazione è legato alle differenze tra censure locali: le regole di autocensura di Nintendo, ad esempio, variano tra Stati Uniti d'America e Giappone.

### Difficoltà

Nell'ambito della creazione di prodotti software, l'internazionalizzazione e la localizzazione introducono compiti particolarmente impegnativi per gli sviluppatori, specialmente se il software non è progettato sin dall'inizio tenendo ben presente questi fatti. Una pratica comune è quella di separare i dati testuali e altri dati dipendenti dall'ambiente di utilizzo, dal codice del programma; in questo modo il supporto per un ambiente diverso, idealmente, richiederà soltanto modifiche in quelle risorse separate dal codice, semplificando enormemente il compito del localizzatore.
Il team di sviluppo necessita di qualcuno che comprenda le lingue e le culture straniere e che abbia discrete capacità tecniche; tale persona potrebbe essere difficile da trovare. Inoltre, la duplicazione delle risorse potrebbe diventare un incubo per la manutenzione. Per esempio, se un messaggio che viene mostrato all'utente viene modificato, tutte le versioni tradotte necessitano della stessa modifica. Sono disponibili alcune librerie software che aiutano quest'arduo compito, come ad esempio Gettext.
Da quando il software libero può essere liberamente modificato e ridistribuito, è di fatto più adatto all'internazionalizzazione. Molti software proprietari sono disponibili solo in lingue considerate economicamente convenienti, mentre il progetto KDE, per esempio, è stato tradotto in più di 70 lingue.

### Metodi

L'attuale pratica prevalente è quella di inserire il testo delle applicazioni all'interno di stringhe che vengono caricate durante l'esecuzione del programma a seconda dei parametri locali impostati dall'utente. Queste stringhe, archiviate in file di risorse, sono relativamente semplici da tradurre. I programmi sono spesso progettati per fare riferimento alle librerie di risorse a seconda dei dati locali selezionati.
Per esempio, un programma scritto in C in questo modo:
non è internazionalizzato. Quindi per tradurre il messaggio, sarà necessario modificare il codice sorgente. Al contrario,
è internazionalizzato (grazie alla libreria Gettext): il programma andrà a cercare all'interno delle sue risorse localizzate una stringa di caratteri corrispondente a 'Fatal error: %s' nella lingua utilizzata dall'utente.
Perciò per far sì che un'applicazione supporti più lingue, lo sviluppatore dovrà progettare la sua applicazione in modo che selezioni le risorse linguistiche appropriate in fase di esecuzione dell'applicazione stessa. Il codice dell'applicazione quindi dovrà essere in grado di gestire, ad esempio, la verifica dei formati data inseriti e moltissimi altri tipi di dati che dipendono direttamente dalle impostazioni locali dell'utente. I moderni sistemi di sviluppo e i moderni sistemi operativi includono alcune librerie sofisticate per il supporto internazionale di questo tipo. Nonostante questo, molti ambienti di sviluppo ancora non hanno il completo supporto per Unicode, che complica drammaticamente il lavoro di traduzione, specialmente per le lingue dell'est e asiatiche.

### Il concetto di Locale

In informatica, locale è il gruppo di parametri che definisce la lingua, il paese e qualsiasi altra variante specifica, scelti dall'utente per la visualizzazione dell'interfaccia. Normalmente un identificatore locale è formato da un identificatore di lingua (in minuscolo) e da un identificatore di regione (in maiuscolo).
Di seguito sono riportate alcune lingue parlate e utilizzate comunemente in più di una nazione e i loro relativi identificatori locali:
Albanese :
| Identificatore | Regione |
| sq-AL | Albania |
| sq-KS | Kosovo |
| sq-MK | Macedonia del Nord |
Arabo :
| Identificatore | Regione |
| ar-AE | Emirati Arabi Uniti |
| ar-BH | Bahrein |
| ar-DZ | Algeria |
| ar-EG | Egitto |
| ar-IL | Israele |
| ar-IQ | Iraq |
| ar-JO | Giordania |
| ar-KW | Kuwait |
| ar-LB | Libano |
| ar-LY | Libia |
| ar-MA | Marocco |
| ar-MR | Mauritania |
| ar-OM | Oman |
| ar-PS | Palestina |
| ar-QA | Qatar |
| ar-SA | Arabia Saudita |
| ar-SD | Sudan |
| ar-SO | Somalia |
| ar-SY | Siria |
| ar-TD | Ciad |
| ar-TN | Tunisia |
| ar-YE | Yemen |
Bengalese :
| Identificatore | Regione |
| bn-BD | Bangladesh |
| bn-IN | India |
| bn-SG | Singapore |
Chamorro :
| Identificatore | Regione |
| ch-GU | Guam |
| ch-MP | Isole Marianne Settentrionali |
Cinese :
| Identificatore | Regione |
| zh-CN | Cina |
| zh-SG | Singapore |
| zh-TW | Taiwan |
Coreano :
| Identificatore | Regione |
| ko-KP | Corea del Nord |
| ko-KR | Corea del Sud |
Croato :
| Identificatore | Regione |
| hr-BA | Bosnia ed Erzegovina |
| hr-HR | Croazia |
Danese :
| Identificatore | Regione |
| da-DK | Danimarca |
| da-GL | Groenlandia |
Francese :
| Identificatore | Regione |
| fr-AD | Andorra |
| fr-BE | Belgio |
| fr-BF | Burkina Faso |
| fr-BI | Burundi |
| fr-BJ | Benin |
| fr-CA | Canada |
| fr-CD | Repubblica Democratica del Congo |
| fr-CF | Repubblica Centrafricana |
| fr-CG | Repubblica del Congo |
| fr-CH | Svizzera |
| fr-CI | Costa d'Avorio |
| fr-CM | Camerun |
| fr-DJ | Gibuti |
| fr-FR | Francia |
| fr-GA | Gabon |
| fr-GB | Regno Unito |
| fr-GF | Guyana francese |
| fr-GN | Guinea |
| fr-GP | Guadalupa |
| fr-HT | Haiti |
| fr-IT | Italia |
| fr-KM | Comore |
| fr-LB | Libano |
| fr-LU | Lussemburgo |
| fr-MC | Principato di Monaco |
| fr-MG | Madagascar |
| fr-ML | Mali |
| fr-MQ | Martinica |
| fr-NC | Nuova Caledonia |
| fr-PF | Polinesia Francese |
| fr-PM | Saint-Pierre e Miquelon |
| fr-RE | Réunion |
| fr-RW | Ruanda |
| fr-SC | Seychelles |
| fr-TD | Ciad |
| fr-TG | Togo |
| fr-VU | Vanuatu |
| fr-WF | Wallis e Futuna |
| fr-YT | Mayotte |
Greco :
| Identificatore | Regione |
| el-CY | Cipro |
| el-GR | Grecia |
Inglese :
| Identificatore | Regione |
| en-AG | Antigua e Barbuda |
| en-AI | Anguilla |
| en-AS | Samoa |
| en-AU | Australia |
| en-BB | Barbados |
| en-BM | Bermuda |
| en-BN | Brunei |
| en-BS | Bahamas |
| en-BW | Botswana |
| en-BZ | Belize |
| en-CA | Canada |
| en-CK | Isole Cook |
| en-CM | Camerun |
| en-DM | Rep. Dominicana |
| en-ER | Eritrea |
| en-ET | Etiopia |
| en-FJ | Figi |
| en-FK | Isole Falkland |
| en-FM | Micronesia |
| en-GB | Regno Unito |
| en-GD | Grenada |
| en-GH | Ghana |
| en-GI | Gibilterra |
| en-GM | Gambia |
| en-GU | Guam |
| en-GY | Guyana |
| en-IE | Irlanda |
| en-IL | Israele |
| en-IO | Territorio britannico dell'Oceano Indiano |
| en-JM | Giamaica |
| en-KE | Kenya |
| en-KI | Kiribati |
| en-KN | Saint Kitts e Nevis |
| en-KY | Isole Cayman |
| en-LC | Santa Lucia |
| en-LR | Liberia |
| en-LS | Lesotho |
| en-MP | Isole Marianne Settentrionali |
| en-MS | Montserrat |
| en-MT | Malta |
| en-MU | Mauritius |
| en-MW | Malawi |
| en-NA | Namibia |
| en-NF | Isola Norfolk |
| en-NG | Nigeria |
| en-NR | Nauru |
| en-NU | Niue |
| en-NZ | Nuova Zelanda |
| en-PG | Papua Nuova Guinea |
| en-PH | Filippine |
| en-PK | Pakistan |
| en-PN | Isole Pitcairn |
| en-PR | Porto Rico |
| en-PW | Palau |
| en-RW | Ruanda |
| en-SB | Isole Salomone |
| en-SC | Seychelles |
| en-SG | Singapore |
| en-SH | Sant'Elena |
| en-SL | Sierra Leone |
| en-SO | Somalia |
| en-SZ | eSwatini |
| en-TC | Turks e Caicos |
| en-TK | Tokelau |
| en-TO | Tonga |
| en-TT | Trinidad e Tobago |
| en-UG | Uganda |
| en-US | Stati Uniti |
| en-VC | Saint Vincent e Grenadine |
| en-VG | Isole Vergini britanniche |
| en-VI | Isole Vergini Americane |
| en-VU | Vanuatu |
| en-WS | Samoa |
| en-ZA | Sudafrica |
| en-ZM | Zambia |
| en-ZW | Zimbabwe |
Irlandese :
| Identificatore | Regione |
| ga-GB | Regno Unito |
| ga-IE | Irlanda |
Italiano :
| Identificatore | Regione |
| it-CH | Svizzera |
| it-HR | Croazia |
| it-IT | Italia |
| it-SI | Slovenia |
| it-SM | San Marino |
| it-VA | Città del Vaticano |
Lingala :
| Identificatore | Regione |
| ln-CD | Repubblica Democratica del Congo |
| ln-CG | Repubblica del Congo |
Malay :
| Identificatore | Regione |
| ms-BN | Brunei |
| ms-MY | Malaysia |
| ms-SG | Singapore |
Olandese :
| Identificatore | Regione |
| nl-AN | Antille olandesi |
| nl-AW | Aruba |
| nl-BE | Belgio |
| nl-NL | Paesi Bassi |
| nl-SR | Suriname |
Portoghese :
| Identificatore | Regione |
| pt-AO | Angola |
| pt-BR | Brasile |
| pt-CV | Capo Verde |
| pt-GW | Guinea-Bissau |
| pt-MZ | Mozambico |
| pt-PT | Portogallo |
| pt-ST | São Tomé e Príncipe |
Romeno :
| Identificatore | Regione |
| ro-MD | Moldavia |
| ro-RO | Romania |
Serbo :
| Identificatore | Regione |
| sr-BA | Bosnia ed Erzegovina |
| sr-YU | Serbia e Montenegro |
Sindhi :
| Identificatore | Regione |
| sd-IN | India |
| sd-PK | Pakistan |
Spagnolo :
| Identificatore | Regione |
| es-AR | Argentina |
| es-BO | Bolivia |
| es-CL | Cile |
| es-CO | Colombia |
| es-CR | Costa Rica |
| es-CU | Cuba |
| es-DO | Rep. Dominicana |
| es-EC | Ecuador |
| es-ES | Spagna |
| es-GQ | Guinea Equatoriale |
| es-GT | Guatemala |
| es-HN | Honduras |
| es-MX | Messico |
| es-NI | Nicaragua |
| es-PA | Panama |
| es-PE | Perù |
| es-PR | Porto Rico |
| es-PY | Paraguay |
| es-SV | El Salvador |
| es-US | Stati Uniti |
| es-UY | Uruguay |
| es-VE | Venezuela |
Svedese :
| Identificatore | Regione |
| sv-FI | Finlandia |
| sv-SE | Svezia |
Swahili :
| Identificatore | Regione |
| sw-KE | Kenya |
| sw-TZ | Tanzania |
Swati :
| Identificatore | Regione |
| ss-SZ | eSwatini |
| ss-ZA | Sudafrica |
Tamil :
| Identificatore | Regione |
| ta-IN | India |
| ta-SG | Singapore |
Tedesco :
| Identificatore | Regione |
| de-AT | Austria |
| de-BE | Belgio |
| de-CH | Svizzera |
| de-DE | Germania |
| de-DK | Danimarca |
| de-IT | Italia |
| de-LI | Liechtenstein |
| de-LU | Lussemburgo |
Tswana :
| Identificatore | Regione |
| tn-BW | Botswana |
| tn-ZA | Sudafrica |
Turco :
| Identificatore | Regione |
| tr-BG | Bulgaria |
| tr-CY | Cipro |
| tr-TR | Turchia |
Ungherese :
| Identificatore | Regione |
| hu-HU | Ungheria |
| hu-SI | Slovenia |
Urdu :
| Identificatore | Regione |
| ur-IN | India |
| ur-PK | Pakistan |
L'identificatore di regione è particolarmente importante, ad esempio, per tutte quelle applicazioni che utilizzano il fuso orario.

## Nomi alternativi e abbreviazioni

Il termine inglese localization viene spesso abbreviato come L10N (o l10n o L10n), dove le due lettere indicano la prima ed ultima della parola, e il numero di lettere omesse dalla parola stessa..
Questa abbreviazione evita la confusione tra le diverse grammatiche inglesi (localisation, dall'inglese britannico, e localization, dall'inglese statunitense).
Allo stesso modo Internationalization viene spesso abbreviato come I18N (o i18n o I18n). I termini internazionalizzazione e localizzazione sono a volte erroneamente accumulate nel termine globalization (g11n), che ha però un significato diverso.
Meno utilizzate sono le abbreviazioni "p13n" per personalization, "m17n" per multilingualization e "r3h" per reach, intesa come raggiungimento di un sito web da diversi paesi e mercati. Un altro concetto legato ai suddetti è l'abbreviazione "a11y" per accessibility, che riguarda l'adattamento dei prodotti per persone disabili o con limitazioni dovute all'età.