2010-02-17 9 views
12

Necesito una lista de culturas admitidas por .NET 3.5, independientemente del sistema operativo utilizado. Esto parece ser una gran lucha por obtener, ¡aunque no estoy seguro de por qué!¿Qué culturas son compatibles con la clase CultureInfo en .NET 3.5?

Edit: Arghh, no sabía que dependía del sistema operativo, eso explicaría la falta de documentación. ¿Alguna idea sobre qué es compatible con Mac/Linux OS también?

Gracias :)

+0

Por curiosidad, ¿por qué necesita la lista? – OregonGhost

+0

Solo para determinar qué lenguajes tendremos que crear para culturas personalizadas y qué podemos usar "de fábrica". Por ejemplo, recientemente me preguntaron si Welsh es compatible. –

+0

No olvide que lo que proporciona CultureInfo es básicamente unas cuantas cadenas (nombre en tres idiomas, códigos ISO, nombre de moneda) y el formato de fecha y número. Este último no requiere culturas especializadas en la mayoría de los casos, ya que son las mismas para la mayoría de las culturas relacionadas (es decir, la mayoría de los países europeos tienen el mismo formato numérico). Entonces la pregunta es, ¿necesitas una cultura galesa, o solo necesitas traducciones galesas? Por cierto, aunque eso no resolverá su problema general, cy-GB está disponible en CultureInfo como una cultura específica. Alguien que pida ayuda de Gales probablemente tendrá un ... – OregonGhost

Respuesta

8

Desafortunadamente, depende del sistema operativo. Consulte here para conocer el soporte de idioma predeterminado por sistema operativo.

Nota, la CultureInfo documentation advierte:

versiones de Windows o paquetes de servicios pueden cambiar las culturas disponibles.

En ASP.NET, es el navegador más importante que el sistema operativo. Puede decirle qué idioma prefiere el usuario a través del encabezado de solicitud Accept-Language (Sección 14.4). Si configuras la configuración de globalization de tu aplicación en enableClientBasedCulture = "true", ASP.NET intentará establecer automáticamente UICulture y Culture en el valor proporcionado por el navegador. Como alternativa, puede configurar Cultura manualmente mediante la inspección de la propiedad Request.UserLanguages:

Desafortunadamente, no hay manera de generar una lista exhaustiva de posibles idiomas de un sistema operativo o navegador. Lo más cercano es el IANA Language Subtag Registry. Este es el registro de idioma descrito en RFC 4646 - el documento que define las etiquetas CultureInfo de .NET.

Tenga en cuenta que no se garantiza que las etiquetas de idioma en Request.UserLanguages ​​sean válidas. Querrá revisarlos. HTTP 1.1 usa una recomendación anterior para language tags y no hay nada que impida que alguien envíe galimatías en el encabezado del idioma.

+0

Si se trata de una aplicación ASP.NET, supongo que quiere decir que se basa en el sistema operativo del servidor que aloja el sitio. –

+0

En ASP.NET, el navegador proporciona el idioma preferido. Actualizaré mi respuesta con recursos relevantes. –

1

Es posible crear cultivos personalizados, pero la clase predeterminada admite los cultivos proporcionados por el sistema operativo en el que se está ejecutando. Hay una referencia de las culturas supported by default on MSDN

+0

Si se trata de una aplicación ASP.NET, supongo que quiere decir que se basa en el sistema operativo del servidor que aloja el sitio. –

+0

@Fiona 'fraid so - sería posible que un cliente se conectara con una cultura que el servidor no comprende (tal vez "en-scouse") –

0

simplemente he comprobado con Cultura Explorer 2.0, hay una distinción entre culturas sólo para Windows instalados y culturas, así como cultivos de .NET Framework (que, al menos en mi sistema, sólo se contener culturas de solo idioma). Todos estos son compatibles con la clase CultureInfo (y RegionInfo, NumberFormatInfo, etc.).

También lo ejecuté en Mono (en Linux), es más o menos lo mismo, con los cultivos de .NET Framework y las culturas solo de Windows faltantes, pero las culturas específica y neutral están ahí. RegionInfo.CurrencyNativeName parece que no está implementado en mi versión Mono, por lo que se bloquea al seleccionar cualquier cultura.

Desafortunadamente, Culture Explorer 2.0 no está disponible actualmente desde ningún lugar (estaba en gotdotnet.com), lo descargué hace algún tiempo. Es una herramienta útil para tales cosas. Puede tener suerte para encontrar uno en algunos archivos.

+0

http://www.microsoft.com/middleeast/arabicdev/ DevTools/VSdotNET/samples/CultureExplorer.aspx – erikkallen

+0

@erikkallen: Esa es la primera versión de la herramienta. No tiene todas las categorías y solo admite el país .NET Invariant, culturas de idiomas específicos. No sé acerca de la licencia de Culture Explorer 2.0. Tal vez pueda subirla a CodePlex. – OregonGhost

+2

Encontré Culture Explorer 2.0 en todo su esplendor en [Máquina Waybach] (http://web.archive.org/web/20070218132812/http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid= b778ff2c-9142-4769-839a-094f51a6f9f4)! –

4

National Language Support (NLS) API Reference enumera la información de configuración regional y le permite seleccionar el sistema operativo.

Microsoft Locale Builder es una herramienta para crear configuraciones regionales personalizadas para Windows Vista y versiones posteriores.

Obtenga una lista de las culturas compatibles, incluidas las personalizadas, para el sistema operativo.

ejemplo de C#,

System.Globalization.CultureInfo[] cultures = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures); 
Cuestiones relacionadas