net example espaƱol c# .net globalization

c# - example - Constantes para el nombre CultureInfo



cultureinfo datetime c# (2)

No, no hay. La lista de culturas disponibles es específica del sistema: incluso puede registrar nuevas culturas personalizadas utilizando CultureAndRegionInfoBuilder .

Entonces, si quieres esto, tendrás que crear tu propia enumeración o constantes para el subconjunto de culturas comunes que te interesan, por ejemplo:

public static class KnownCulture { public readonly String EnglishUS = "en-US"; public readonly String EnglishGB = "en-GB"; ... etc ... }

o

public enum KnownLCID { EnglishUS = 0x409, EnglishGB = 0x809, ... }

Esto es análogo a la enumeración KnownColor : no es posible crear una enumeración para todos los colores posibles, pero puede tener sentido tener una enumeración para los que se usan con frecuencia.

No esperaría que Microsoft proporcionara una enumeración KnownCulture equivalente fuera de la caja, ya que es bastante sensible (¿por qué no se incluye mi cultura?).

¿Hay un conjunto de constantes o una enumeración en el espacio de nombres de sistema / globalización de C # que contiene nombres de cultura válidos?

Estoy buscando algo para no tener que escribir "en-GB", etc.


Sí, hay, GetCultures :

System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.SpecificCultures)

Eso devuelve una matriz de objetos CultureInfo , por lo que si desea los nombres de cadena, podría usar algo como:

IEnumerable<CultureInfo> cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures); string[] names = cultures.Select(c => c.Name).ToArray();

Tenga en cuenta la enumeración "Tipos de cultura" (desde el enlace de MSDN). Supongo que los más útiles serían NeutralCultures y SpecificCultures .

  • Culturas neutrales Culturas que están asociadas con un idioma pero no son específicas de un país / región. Los nombres de las culturas de .NET Framework consisten en el código de dos letras en minúscula derivado de ISO 639-1. Por ejemplo: "en" (inglés) es una cultura neutral. Las culturas personalizadas pueden tener cualquier nombre especificado por el usuario, no solo un código de dos letras. La cultura invariante se incluye en la matriz de culturas devueltas por el método CultureInfo.GetCultures que especifica este valor.
  • Culturas específicas Culturas que son específicas de un país / región. Los nombres de estas culturas siguen a RFC 4646 (Windows Vista y posteriores). El formato es "-", donde es un código de dos letras minúsculas derivado de ISO 639-1 y un código de dos letras mayúsculas derivado de ISO 3166. Por ejemplo, "en-US" para inglés (Estados Unidos) es un cultura especifica Las culturas personalizadas pueden tener cualquier nombre especificado por el usuario, no solo un nombre compatible con el estándar.
  • InstalledWin32Cultures Todas las culturas que están instaladas en el sistema operativo Windows. Tenga en cuenta que no todas las culturas compatibles con .NET Framework se instalan en el sistema operativo.
  • Todas las culturas Todas las culturas que se suministran con .NET Framework, incluidas culturas neutrales y específicas, culturas instaladas en el sistema operativo Windows y culturas personalizadas creadas por el usuario.
  • UserCustomCulture Culturas personalizadas creadas por el usuario.
  • Culturas de reemplazo Culturas personalizadas creadas por el usuario que reemplazan culturas enviadas con .NET Framework.