La classe CultureInfo contiene le informazioni su una lingua specifica, quali le convenzioni associate a una lingua, ai relativi dialetti, al paese, al calendario e alla cultura. La classe fornisce inoltre l'accesso a istanze, specifiche della lingua, di DateTimeFormatInfo, NumberFormatInfo, CompareInfo e TextInfo. Questi oggetti contengono le informazioni necessarie per le operazioni specifiche di una lingua, quali l'uso delle maiuscole e delle minuscole, la formattazione di date e numeri e il confronto tra stringhe.
La classe String utilizza in modo indiretto questa classe per ottenere informazioni sulla lingua predefinita.
Nomi e identificatori della lingua
I nomi delle lingue seguono lo standard RFC 1766 nel formato "<codicelingua2>-<codicepaese2>", dove <codicelingua2> è un codice di due lettere minuscole derivato da ISO 639-1 e <codicepaese2> è un codice di due lettere maiuscole derivato da ISO 3166. L'inglese americano, ad esempio, è "en-US". Nel caso in cui il codice a due lettere della lingua non sia disponibile, viene utilizzato il codice a tre lettere derivato da ISO 639-2. Per la lingua dhivehi, ad esempio, viene utilizzato il codice a tre lettere "div". In alcuni nomi di lingue sono presenti suffissi che specificano l'alfabeto. "-Cyrl", ad esempio, specifica l'alfabeto cirillico, "-Latn" quello latino.
I nomi e gli identificatori predefiniti della lingua riportati di seguito sono accettati e utilizzati da questa e da altre classi nello spazio dei nomi System.Globalization.
| Nome della lingua | Identificatore della lingua | Lingua - paese |
| '''' (stringa vuota) | 0x007F | lingua inglese |
| af | 0x0036 | Afrikaans |
| af-ZA | 0x0436 | Afrikaans - Sud Africa |
| sq | 0x001C | Albanese |
| sq-AL | 0x041C | Albanese - Albania |
| ar | 0x0001 | Arabo |
| ar-DZ | 0x1401 | Arabo - Algeria |
| ar-BH | 0x3C01 | Arabo - Bahrein |
| ar-EG | 0x0C01 | Arabo - Egitto |
| ar-IQ | 0x0801 | Arabo - Iraq |
| ar-JO | 0x2C01 | Arabo - Giordania |
| ar-KW | 0x3401 | Arabo - Kuwait |
| ar-LB | 0x3001 | Arabo - Libano |
| ar-LY | 0x1001 | Arabo - Libia |
| ar-MA | 0x1801 | Arabo - Marocco |
| ar-OM | 0x2001 | Arabo - Oman |
| ar-QA | 0x4001 | Arabo - Qatar |
| ar-SA | 0x0401 | Arabo - Arabia Saudita |
| ar-SY | 0x2801 | Arabo - Siria |
| ar-TN | 0x1C01 | Arabo - Tunisia |
| ar-AE | 0x3801 | Arabo - Emirati Arabi Uniti |
| ar-YE | 0x2401 | Arabo - Yemen |
| hy | 0x002B | Armeno |
| hy-AM | 0x042B | Armeno - Armenia |
| az | 0x002C | Azero |
| az-AZ-Cyrl | 0x082C | Azero (alfabeto cirillico) - Azerbaigian |
| az-AZ-Latn | 0x042C | Azero (alfabeto latino) - Azerbaigian |
| eu | 0x002D | Basco |
| eu-ES | 0x042D | Basco - Spagna |
| be | 0x0023 | Bielorusso |
| be-BY | 0x0423 | Bielorusso - Belarus |
| bg | 0x0002 | Bulgaro |
| bg-BG | 0x0402 | Bulgaro - Bulgaria |
| ca | 0x0003 | Catalano |
| ca-ES | 0x0403 | Catalano - Spagna |
| zh-HK | 0x0C04 | Cinese - Hong Kong S.A.R. |
| zh-MO | 0x1401 | Cinese - Macao S.A.R. |
| zh-CN | 0x0804 | Cinese - Cina |
| zh-CHS | 0x0004 | Cinese (semplificato) |
| zh-SG | 0x1004 | Cinese - Singapore |
| zh-TW | 0x0404 | Cinese - Taiwan |
| zh-CHT | 0x7C04 | Cinese (tradizionale) |
| hr | 0x001A | Croato |
| hr-HR | 0x041A | Croato - Croazia |
| cs | 0x0005 | Ceco |
| cs-CZ | 0x0405 | Ceco - Repubblica Ceca |
| da | 0x0006 | Danese |
| da-DK | 0x0406 | Danese - Danimarca |
| div | 0x0065 | Dhivehi |
| div-MV | 0x0465 | Dhivehi - Maldive |
| nl | 0x0013 | Olandese |
| nl-BE | 0x0813 | Olandese - Belgio |
| nl-NL | 0x0413 | Olandese - Paesi Bassi |
| en | 0x0009 | Inglese |
| en-AU | 0x0C09 | Inglese - Australia |
| en-BZ | 0x2809 | Inglese - Belize |
| en-CA | 0x1009 | Inglese - Canada |
| en-CB | 0x2409 | Inglese - Caraibi |
| en-IE | 0x1809 | Inglese - Irlanda |
| en-JM | 0x2009 | Inglese - Giamaica |
| en-NZ | 0x1409 | Inglese - Nuova Zelanda |
| en-PH | 0x3409 | Inglese - Filippine |
| en-ZA | 0x1C09 | Inglese - Sud Africa |
| en-TT | 0x2C09 | Inglese - Trinidad e Tobago |
| en-GB | 0x0809 | Inglese - Regno Unito |
| en-US | 0x0409 | Inglese - Stati Uniti |
| en-ZW | 0x3009 | Inglese - Zimbabwe |
| et | 0x0025 | Estone |
| et-EE | 0x0425 | Estone - Estonia |
| fo | 0x0038 | Faroese |
| fo-FO | 0x0438 | Faroese - Isole Fær Øer |
| fa | 0x0029 | Farsi |
| fa-IR | 0x0429 | Farsi - Iran |
| fi | 0x000B | Finlandese |
| fi-FI | 0x040B | Finlandese - Finlandia |
| fr | 0x000C | Francese |
| fr-BE | 0x080C | Francese - Belgio |
| fr-CA | 0x0C0C | Francese - Canada |
| fr-FR | 0x040C | Francese - Francia |
| fr-LU | 0x140C | Francese - Lussemburgo |
| fr-MC | 0x180C | Francese - Monaco |
| fr-CH | 0x100C | Francese - Svizzera |
| gl | 0x0056 | Galiziano |
| gl-ES | 0x0456 | Galiziano - Spagna |
| ka | 0x0037 | Georgiano |
| ka-GE | 0x0437 | Georgiano - Georgia |
| de | 0x0007 | Tedesco |
| de-AT | 0x0C07 | Tedesco - Austria |
| de-DE | 0x0407 | Tedesco - Germania |
| de-LI | 0x1407 | Tedesco - Liechtenstein |
| de-LU | 0x1007 | Tedesco - Lussemburgo |
| de-CH | 0x0807 | Tedesco - Svizzera |
| el | 0x0008 | Greco |
| el-GR | 0x0408 | Greco - Grecia |
| gu | 0x0047 | Gujarati |
| gu-IN | 0x0447 | Gujarati - India |
| he | 0x000D | Ebraico |
| he-IL | 0x040D | Ebraico - Israele |
| hi | 0x0039 | Hindi |
| hi-IN | 0x0439 | Hindi - India |
| hu | 0x000E | Ungherese |
| hu-HU | 0x040E | Ungherese - Ungheria |
| is | 0x000F | Islandese |
| is-IS | 0x040F | Islandese - Islanda |
| id | 0x0021 | Indonesiano |
| id-ID | 0x0421 | Indonesiano - Indonesia |
| it | 0x0010 | Italiano |
| it-IT | 0x0410 | Italiano - Italia |
| it-CH | 0x0810 | Italiano - Svizzera |
| ja | 0x0011 | Giapponese |
| ja-JP | 0x0411 | Giapponese - Giappone |
| kn | 0x004B | Kannada |
| kn-IN | 0x044B | Kannada - India |
| kk | 0x003F | Kazaco |
| kk-KZ | 0x043F | Kazaco - Kazakhstan |
| kok | 0x0057 | Konkani |
| kok-IN | 0x0457 | Konkani - India |
| ko | 0x0012 | Coreano |
| ko-KR | 0x0412 | Coreano - Corea |
| ky | 0x0040 | Kirghiso |
| ky-KG | 0x0440 | Kirghiso - Kirghizistan |
| lv | 0x0026 | Lettone |
| lv-LV | 0x0426 | Lettone - Lettonia |
| lt | 0x0027 | Lituano |
| lt-LT | 0x0427 | Lituano - Lituania |
| mk | 0x002F | Macedone |
| mk-MK | 0x042F | Macedone - Ex Repubblica Yugoslava di Macedonia |
| ms | 0x003E | Malese |
| ms-BN | 0x083E | Malese - Brunei |
| ms-MY | 0x043E | Malese - Malaysia |
| mr | 0x004E | Marathi |
| mr-IN | 0x044E | Marathi - India |
| mn | 0x0050 | Mongolo |
| mn-MN | 0x0450 | Mongolo - Mongolia |
| no | 0x0014 | Norvegese |
| nb-NO | 0x0414 | Norvegese (Bokmål) - Norvegia |
| nn-NO | 0x0814 | Norvegese (Nynorsk) - Norvegia |
| pl | 0x0015 | Polacco |
| pl-PL | 0x0415 | Polacco - Polonia |
| pt | 0x0016 | Portoghese |
| pt-BR | 0x0416 | Portoghese - Brasile |
| pt-PT | 0x0816 | Portoghese - Portogallo |
| pa | 0x0046 | Punjabi |
| pa-IN | 0x0446 | Punjabi - India |
| ro | 0x0018 | Rumeno |
| ro-RO | 0x0418 | Rumeno - Romania |
| ru | 0x0019 | Russo |
| ru-RU | 0x0419 | Russo - Russia |
| sa | 0x004F | Sanscrito |
| sa-IN | 0x044F | Sanscrito - India |
| sr-SP-Cyrl | 0x0C1A | Serbo (alfabeto cirillico) - Serbia |
| sr-SP-Latn | 0x081A | Serbo (alfabeto latino) - Serbia |
| sk | 0x001B | Slovacco |
| sk-SK | 0x041B | Slovacco - Slovacchia |
| sl | 0x0024 | Sloveno |
| sl-SI | 0x0424 | Sloveno - Slovenia |
| es | 0x000A | Spagnolo |
| es-AR | 0x2C0A | Spagnolo - Argentina |
| es-BO | 0x400A | Spagnolo - Bolivia |
| es-CL | 0x340A | Spagnolo - Cile |
| es-CO | 0x240A | Spagnolo - Colombia |
| es-CR | 0x140A | Spagnolo - Costa Rica |
| es-DO | 0x1C0A | Spagnolo - Repubblica Dominicana |
| es-EC | 0x300A | Spagnolo - Ecuador |
| es-SV | 0x440A | Spagnolo - El Salvador |
| es-GT | 0x100A | Spagnolo - Guatemala |
| es-HN | 0x480A | Spagnolo - Honduras |
| es-MX | 0x080A | Spagnolo - Messico |
| es-NI | 0x4C0A | Spagnolo - Nicaragua |
| es-PA | 0x180A | Spagnolo - Panama |
| es-PY | 0x3C0A | Spagnolo - Paraguay |
| es-PE | 0x280A | Spagnolo - Perù |
| es-PR | 0x500A | Spagnolo - Portorico |
| es-ES | 0x0C0A | Spagnolo - Spagna |
| es-UY | 0x380A | Spagnolo - Uruguay |
| es-VE | 0x200A | Spagnolo - Venezuela |
| sw | 0x0041 | Swahili |
| sw-KE | 0x0441 | Swahili - Kenya |
| sv | 0x001D | Svedese |
| sv-FI | 0x081D | Svedese - Finlandia |
| sv-SE | 0x041D | Svedese - Svezia |
| syr | 0x005A | Siriano |
| syr-SY | 0x045A | Siriano - Siria |
| ta | 0x0049 | Tamil |
| ta-IN | 0x0449 | Tamil - India |
| tt | 0x0044 | Tartaro |
| tt-RU | 0x0444 | Tartaro - Russia |
| te | 0x004A | Telugu |
| te-IN | 0x044A | Telugu - India |
| th | 0x001E | Thai |
| th-TH | 0x041E | Thai - Thailandia |
| tr | 0x001F | Turco |
| tr-TR | 0x041F | Turco -Turchia |
| uk | 0x0022 | Ucraino |
| uk-UA | 0x0422 | Ucraino - Ucraina |
| ur | 0x0020 | Urdu |
| ur-PK | 0x0420 | Urdu - Pakistan |
| uz | 0x0043 | Uzbeco |
| uz-UZ-Cyrl | 0x0843 | Uzbeco (alfabeto cirillico) - Uzbekistan |
| uz-UZ-Latn | 0x0443 | Uzbeco (alfabeto latino) - Uzbekistan |
| vi | 0x002A | Vietnamita |
| vi-VN | 0x042A | Vietnamita - Vietnam |
lingua inglese, lingue non associate ad alcun paese e lingue specifiche
Le lingue vengono in genere raggruppate in tre insiemi: la lingua inglese, le lingue non associate ad alcun paese e le lingue specifiche.
La lingua inglese non dipende dalle impostazioni linguistiche È possibile specificare la lingua inglese in base al nome tramite una stringa vuota ("") o in base all'identificatore di lingua 0x007F. InvariantCulture consente di recuperare un'istanza della lingua inglese. Questa è associata alla lingua inglese, ma non a un paese particolare. Può essere utilizzata praticamente in qualsiasi metodo, nello spazio dei nomi Globalization, in cui è necessaria una lingua.
Una lingua non associata ad alcun paese è una impostazione linguistica associata a una lingua ma non a un paese. Una lingua specifica è una impostazione linguistica associata a una lingua e a un paese. "fr", ad esempio, è una lingua non associata ad alcun paese, mentre "fr-FR" è una lingua specifica. Si noti che "zh-CHS" (Cinese semplificato) e "zh-CHT" (Cinese tradizionale) sono lingue non associate ad alcun paese.
La creazione di un'istanza di una classe CompareInfo per una lingua non associata ad alcun paese è sconsigliata poiché i dati contenuti sono arbitrari. Per visualizzare e ordinare i dati, specificare la lingua e la regione. Inoltre, la proprietà Name di un oggetto CompareInfo creato per una lingua non associata ad alcun paese restituisce soltanto il paese e non include la regione.
Esiste una gerarchia delle lingue, in cui il padre di una determinata lingua è la lingua di sistema e il padre di quest'ultima è la classe InvariantCulture. La proprietà Parent restituisce la lingua di sistema associata a una determinata lingua.
Se nel sistema non sono disponibili le risorse per la lingua specifica, verranno utilizzate quelle per la lingua di sistema. Se anche queste ultime non sono disponibili, verranno utilizzate le risorse incorporate nell'assembly principale. Per ulteriori informazioni sul processo di fallback delle risorse, vedere Creazione del package e distribuzione delle risorse.
L'elenco di lingue nell'API di Windows non è identico a quello in .NET Framework. La lingua di sistema zh-CHT "Cinese (tradizionale)", ad esempio, con l'identificatore di lingua 0x7C04 non è disponibile nell'API di Windows. Se è necessaria l'interoperabilità con Windows, ad esempio attraverso il meccanismo p/invoke, utilizzare una lingua specifica, definita nel sistema operativo. per assicurare la coerenza con le equivalenti impostazioni internazionali di Windows, identificate dalla medesima classe LCID.
Un oggetto DateTimeFormatInfo o NumberFormatInfo può essere creato solo per la lingua inglese o per lingue specifiche, non per le lingue non associate ad alcun paese.
Se la proprietà DateTimeFormatInfo.Calendar è l'oggetto TaiwanCalendar, ma la proprietà Thread.CurrentCulture non è "zh-TW", la proprietà DateTimeFormatInfo.NativeCalendarName, il metodo DateTimeFormatInfo.GetEraName e il metodo DateTimeFormatInfo.GetAbbreviatedEraName restituiscono una stringa vuota ("").
Impostazioni internazionali di Windows
Override del Pannello di controllo
L'utente può eseguire l'override di alcuni valori associati alla lingua corrente del sistema tramite le opzioni di Impostazioni internazionali del Pannello di controllo di Windows. L'utente, ad esempio, può scegliere di visualizzare la data in un diverso formato o di utilizzare una valuta diversa da quella predefinita per la lingua specificata.
Se la proprietà UseUserOverride è true e la lingua specificata corrisponde alla lingua corrente di Windows, la classe CultureInfo consentirà di utilizzare tali override, incluse le impostazioni dell'utente per le proprietà dell'istanza di DateTimeFormatInfo restituita dalla proprietà DateTimeFormat e le proprietà dell'istanza di NumberFormatInfo restituita dalla proprietà NumberFormat. Se le impostazioni utente non sono compatibili con la lingua associata alla classe CultureInfo, ad esempio, nel caso in cui il calendario selezionato non fa parte dei calendari specificati dalla proprietà OptionalCalendars, i risultati dei metodi e i valori delle proprietà sono indefiniti.
Per le lingue dell'area euro, in .NET Framework e in Windows XP l'euro è impostato come valuta predefinita, diversamente dalle versioni precedenti di Windows. Di conseguenza, se l'utente di una versione precedente di Windows non ha modificato la valuta tramite le opzioni di Impostazioni internazionali del Pannello di controllo, la valuta potrebbe non essere corretta. Per utilizzare l'impostazione predefinita di .NET Framework per la valuta, utilizzare un overload del costruttore di CultureInfo che accetta un parametro useUserOverride e impostarlo su false.
Ordinamenti alternativi
L'identificatore di lingua "0x0c0a" per "Spagnolo - Spagna" utilizza l'ordinamento internazionale predefinito. L'identificatore di lingua "0x040A", anch'esso per "Spagnolo - Spagna", utilizza l'ordinamento tradizionale. Se l'oggetto CultureInfo viene costruito tramite il nome della lingua"es-ES", il nuovo oggetto CultureInfo utilizzerà l'ordinamento internazionale predefinito. Per costruire un oggetto CultureInfo che utilizza l'ordinamento tradizionale, utilizzare l'identificatore di lingua "0x040A" con il costruttore. Per ulteriori informazioni sulle altre lingue con ordinamenti alternativi, vedere Confronto e ordinamento di dati per una lingua specifica.
Interfacce implementate
Questa classe implementa l'interfaccia ICloneable per consentire la duplicazione degli oggetti della classe CultureInfo. Implementa inoltre IFormatProvider per fornire funzioni di formattazione delle informazioni alle applicazioni.
Lingue, thread e domini applicazione
Esistono considerazioni univoche quando si utilizza un thread associato a un oggetto CultureInfo. Per ulteriori informazioni sulle lingue e i domini applicazione, vedere Domini applicazione e thread.