2010-11-17 14 views
26

¿Cómo identificar el idioma del sistema operativo usando CultureInfo? P.ej. si el idioma en Windows está configurado en francés, necesito identificar el francés y cargar los datos del archivo de recursos fr.Obtener el idioma actual en CultureInfo

+4

Si está utilizando archivos de recursos .NET (los archivos '.resx'), el sistema maneja esto por usted. –

+0

Sí, lo sé, pero no agregué el archivo de recursos mandarín y la computadora se configuró en mandarín como idioma predeterminado, así que estoy buscando hacerlo bien. Gracias. – Sharpeye500

+0

Su respuesta podría ser esta http://stackoverflow.com/questions/329033/what-is-the-difference-between-currentculture-and-currentuiculture-properties-of – Raymund

Respuesta

44

Creo que algo como esto le daría la CultureInfo actual:

CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture; 

es eso lo que está buscando?

+1

Usaría CultureInfo.CurrentCulture que hace lo mismo, pero es más corto para escribir. Lamentablemente, ni CurrentCulture ni CurrentUICulture devuelven el idioma del sistema operativo. Primero se devuelve la configuración de formato actual, en segundo lugar se devuelve el idioma preferido de la interfaz de usuario del usuario. –

6

idioma del sistema actual se recupera usando:

CultureInfo.InstalledUICulture 

"Obtiene el CultureInfo que representa la cultura instalado con el sistema operativo."

InstalledUICulture

para establecerlo como idioma por defecto para el uso de hilo:

System.Globalization.CultureInfo.DefaultThreadCurrentCulture=CultureInfo.InstalledUICulture; 
9

Esto es lo que he usado:

var culture = System.Globalization.CultureInfo.CurrentCulture; 

y está funcionando :)

2

Probé {CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;} pero no funcionó para mí, ya que mi UI c ulture era diferente de mi cultura numérica/monetaria. Así que sugiero que uses:

CultureInfo currentCulture = Thread.CurrentThread.CurrentUICulture; 

esto le dará la cultura es la interfaz de usuario (textos en las ventanas, cuadros de mensaje, etc.).

0

para obtener los 2 caracteres ISO 639-1 usar el lenguaje identificador:
System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName;

Cuestiones relacionadas