2012-10-16 14 views
6

Sto lavorando su un .net 4.5 applicazione che ha bisogno di essere linguale mult supporto multi-culture ecccreando personalizzati CultureInfo per paese, combinazione linguistica

Il seguente è semplice lista dei Paesi/lingue

  • Russia/Russo
  • Belgio/Francese
  • Belgio/olandese

Per tutto quanto sopra, v'è un oggetto CultureInfo che può essere creato in base ai nomi di coltura sopra

  • ru-RU
  • fr-BE
  • nl-BE

Quando l'utente entra nel sito, ho impostato Thread.CurrentThread.CurrentCulture e Thread.CurrentThread.CurrentUICulture per la cultura creata con i nomi di cui sopra ad es.

Thread.CurrentThread.CurrentCulture = new CultureInfo("nl-BE", false) 
Thread.CurrentThread.CurrentUICulture = new CultureInfo("nl-BE", false) 

Tutti i nomi di cui sopra sono nomi di colture validi.

No, tuttavia, ho bisogno di aggiungere un altro nome di cultura, lingua dell'inglese in Russia. Ma il problema è il codice en-RU non è valido, quindi quando creo new CultureInfo("en-RU", false) ottengo un valore CultureNotFoundException poiché en-RU non è valido.

Con questa cultura, desidero la formattazione ecc. Della Russia intorno a numeri, date ecc., Ma voglio che la lingua sul sito sia inglese. È possibile creare oggetti CultureInfo personalizzati per nomi di colture non validi con il comportamento del paese (Russia)?

risposta

4

Potrebbe essere necessario mescolare e mescolare e abbinare: un oggetto cultura per l'inglese che si utilizza per il testo inglese ma un oggetto cultura ru-Ru (russo) per la formattazione numerica.

O meglio ancora creare una lingua personalizzata che unisce i due

Create custom culture in ASP.NET

+0

Questa risposta è stata la prima e collegata a un articolo SO appropriato. Questo merita di essere la risposta. – Totero

0

Si dovrebbe usare CultureInfo.InvariantCulture Proprietà

La cultura è cultura invarianti-insensitive; è associato a la lingua inglese ma non con alcun paese/regione. Si specifica la cultura invariabile per nome utilizzando una stringa vuota ("") nella chiamata a un metodo di istanza CultureInfo. CultureInfo.InvariantCulture anche recupera un'istanza della cultura invariabile. Può essere utilizzato in quasi tutti i metodi nello spazio dei nomi System.Globalization a cultura. Gli oggetti restituiti da proprietà come CompareInfo, DateTimeFormat e NumberFormat riflettono anche il confronto delle stringhe e le convenzioni di formattazione della cultura invariabile.

CultureInfo.InvariantCulture Property

Questa è altra opzione Custom Global Application Culture

5

E 'possbile creare personalizzati CultureInfo oggetti per nome la cultura non valida

Sì.

Fare uso di CultureAndRegionInfoBuilder per aiutare a creare l'CultureInfo personalizzato. (NB: una volta che hai il codice per creare una cultura, le impostazioni per farlo possono essere salvate in XML e poi caricate, ad esempio da una risorsa, che dovrebbe richiedere meno codice in fase di esecuzione.)

+1

[Ecco qui] (http://en.csharp-online.net/Using_Custom_Cultures%E2%80%94Uses_for_Custom_Cultures) un buon tutorial per farlo. È scritto per .NET 2.0, quindi se stai usando una versione più recente di .NET potresti voler controllare se non è deprecato. –

+0

@dario_ramos il link è morto, purtroppo –

+0

@Sam, mi spiace sentirlo. ecco [l'ultima versione archiviata.] (https://web.archive.org/web/20130707154229/http://en.csharp-online.net/Using_Custom_Cultures%E2%80%94Uses_for_Custom_Cultures) Si prega di essere pazienti con il tempo di caricamento : P –