2012-02-01 16 views
27

Devo impostare la cultura della mia applicazione tramite un file App.Config, in modo che "pt-BR" venga usato automaticamente per le date di analisi senza la necessità di informare manualmente la cultura per ogni operazione.Come si imposta CultureInfo.CurrentCulture da un file App.Config?

Per quanto ne so, c'è una sezione globalization che può essere definita all'interno della sezione system.web in un file Web.Config, ma sto eseguendo un'applicazione console e non riesco a capirlo.

Qualche idea?

risposta

22

non so un modo integrato per impostare da App.config, ma si può solo definire una chiave nel vostro app.config come questo

<configuration> 
    <appSettings> 
     <add key="DefaultCulture" value="pt-BR" /> 
    </appSettings> 
</configuration> 

e nell'applicazione di leggere quel valore e impostare la cultura

CultureInfo culture = new CultureInfo(ConfigurationManager.AppSettings["DefaultCulture"]); 
Thread.CurrentThread.CurrentCulture = culture; 
Thread.CurrentThread.CurrentUICulture = culture; 
+1

Non funziona per un programma di terze parti. –

+1

Penso che questo sia l'approccio da seguire se si desidera sovrascrivere la cultura di sistema nell'applicazione. Normalmente la cultura dovrebbe essere prelevata automaticamente dalle impostazioni del sistema operativo. Piuttosto che codificare duramente la cultura in questo modo, farei affidamento sui computer client che hanno impostato correttamente Regione e Lingua. – Mick

1

Non farlo da me, ma a quanto pare. Già si può cioè prima InitialiseComponent se è UICulture, è solo

Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-BR") 

eo

Thread.CurrentThread.CurrentUICulture = new CultureInfo("pt-BR") 

Tutto ciò che non si desidera utilizzare la cultura corrente per l'uso InvariantCulture

Personalmente , Preferirei lasciare la cultura attuale da solo. Utilizzare InvariantCulture per tutta la globalizzazione, I non desidera variare. Quindi impostare la coltura neutra nelle proprietà del progetto.

Ho sempre la sensazione di correggere la cultura corrente in modo che il codice funzioni nonostante che la scelta personale dell'utente sia diversa da essere una sorta di poliziotto antipatico.

+0

Per quanto riguarda il tuo punto "Personalmente" - Che cosa succede se stai implementando un sistema del Regno Unito nel sito di un cliente e se l'immagine dell'oro è la cultura USA predefinita? Succede tutto il tempo nel Regno Unito, poi riceviamo lamentele quando '{0: c}' mostra i segni del dollaro! – tommed

+2

Se vogliono che la cultura USA e £ s siano necessari, è vero? Penso che lo consideri un'app multivaluta a quel punto, vale a dire che ogni valore monetario avrebbe un attributo di valuta e lascerebbe la cultura ben lontana da essa, forse dal default della valuta. –

+0

Non sono d'accordo, è solo un peccato che ASP.NET ti fornisca queste cose gratuitamente, la globalizzazione della vergogna è parte di system.web – tommed

-2

utilizzando System.Threading;

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo ("bn-BD");

// Per il Bangladesh. Uso questa linea su ogni evento di caricamento del modulo di pagina