2012-03-14 10 views
5

Desidero conoscere l'impostazione o la posizione da cui System.Globalization.CultureInfo.CurrentCulture legge il suo valore.Da dove CultureInfo.CurrentCulture legge cultura

Sto utilizzando un computer portatile Windows 7 e ho cambiato le impostazioni regionali e di data e ora del mio sistema negli Stati Uniti.

ho ottenuto il mio codice di lavoro usando sotto impostazione nel web.config sotto

<globalization culture="en-US" /> 

Grazie

risposta

6

il MSDN dice

La cultura è una proprietà del thread in esecuzione. Questa proprietà di sola lettura equivale al recupero dell'oggetto CultureInfo restituito dalla proprietà Thread.CurrentCulture. Quando viene avviato un thread, la sua cultura viene determinata inizialmente chiamando la funzione Windows GetUserDefaultLocaleName.

In altre parole, si basa sul filo, strega ha un contesto ... nel contesto ASP.NET, che viene dalla Locale utilizzato nel browser cliente in primo luogo se si utilizzaServer Variables o Impostazioni di sistema su tutto il resto.

Sotto questo contesto Web si può ottenere con il metodo Server.Variables su HTTP_ACCEPT_LANGUAGE e otterrete qualcosa di simile:

en-US,en;q=0.8,pt-PT;q=0.6,pt;q=0.4 

Strega afferma che il browser client dispone di 3 lingue impostate, in cui il primo è en-US.

Tutto da System.Globalization viene dal Sistema definizioni proprio come l'immagine sotto mostra:

codice

enter image description here

sopra è:

<p> 
    <pre>System.Globalization.CultureInfo.CurrentCulture</pre> 
    is @System.Globalization.CultureInfo.CurrentCulture.EnglishName 
</p> 

Non importa quale browser è in uso, il definizione per System.Globalization verrà sempre dalla definizione del sistema operativo

enter image description here

+0

Grazie Balexandre, questa sembra essere una buona informazione. Ma ho appena controllato le impostazioni locali del mio browser e il suo en-US (sto usando firefox e ho controllato l'impostazione general.useragent.locale sotto about: config) anche i miei sistemi datetime e le impostazioni regionali sono state impostate su en-US. Ma ancora ottengo en-IN quando controllo System.Globalization.CultureInfo.CurrentCulture. Hai idea di dove mi sbaglio? – TechnicalSmile

+0

aggiunta immagine per una migliore comprensione ... – balexandre

2

Dopo aver trascorso 8 ore - trovare una soluzione grazie a Ronald - CultureInfo values differ between applications for the same culture. Is this a bug?

Si scopre che le impostazioni internazionali vengono memorizzate per ogni utente in Windows. Questo è qualcosa che dovrei essere a conoscenza. Aggiornamento del pool di applicazioni da eseguire mentre si produceva lo stesso risultato su entrambe le applicazioni .

Per essere onesti, ciò che è ancora confusa è come Servizio di rete (la rappresentano il pool di applicazioni correva sotto) è venuto ad avere il valore errato . Non sono nemmeno sicuro di come lo correggerei.

Edit:

Se è necessario aggiornare le impostazioni internazionali per gli account riservati. Tu hai due opzioni.

Control Panel > Regional Settings > Click the administrative tab and then select "Copy Settings". 

Nella schermata che lancia, assicurarsi si seleziona "schermo e il sistema account di benvenuto". Le versioni precedenti di Windows sono simili, credo. Per il tutore. Registro di sistema: HKEY_USERS> SID ...> Pannello di controllo> Internazionale. L'identificatore di sicurezza per il servizio di rete è: SID: S-1-5-20.

Assicurarsi che si riavvia il pool di applicazioni per le impostazioni abbiano effetto.

Ho fatto # 1 - e ha fatto un trucco per me!

+0

Grazie mille! Mi ha risparmiato molte ore :) –

1

In caso di ASP.NET, da

HKEY_USERS\S-1-5-20\Control Panel\International\

S-1-5-20 è l'identificatore di protezione del servizio di rete "utente" (http://support.microsoft.com/kb/243330)

Per altri tipi di applicazioni, fare riferimento alla documentazione della funzione GetUserDefaultLocaleName (https://msdn.microsoft.com/en-us/library/windows/desktop/dd318136%28v=vs.85%29.aspx)

Per un modo semplice di modificare la localizzazione di S-1-5-20, vedere la risposta di sitecorebasics