Есть ли набор констант или перечисление в пространстве имен системы/глобализации C#, которое содержит допустимые имена культуры?Константы для CultureInfo Имя
Я ищу что-то, так что я не должен вводить в «ан-ГБ» и т.д.
Есть ли набор констант или перечисление в пространстве имен системы/глобализации C#, которое содержит допустимые имена культуры?Константы для CultureInfo Имя
Я ищу что-то, так что я не должен вводить в «ан-ГБ» и т.д.
Нет, не существует. Список доступных культур зависит от системы - вы можете даже зарегистрировать новые пользовательские культуры, используя CultureAndRegionInfoBuilder.
Итак, если вы хотите этого, вам нужно будет создать собственное перечисление или константы для подмножества общих культур, которые вас интересуют, например.:
public static class KnownCulture
{
public readonly String EnglishUS = "en-US";
public readonly String EnglishGB = "en-GB";
... etc ...
}
или
public enum KnownLCID
{
EnglishUS = 0x409,
EnglishGB = 0x809,
...
}
Это аналогично KnownColor
перечисления: это не возможно создать перечисление всех возможных цветов, но это может иметь смысл иметь перечисление для часто используемых из них.
Я бы не ожидал, что Microsoft предоставит эквивалент KnownCulture
перечисления из коробки, так как это довольно чувствительно (почему моя культура не включена?).
«Я бы не ожидал, что Microsoft предоставит эквивалентное перечисление KnownCulture из коробки,« хорошо существуют стандарты iso, которые java locale следует за ... – NimChimpsky
Да, есть, GetCultures:
System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.SpecificCultures)
Это возвращает массив CultureInfo
объектов, так что если вы хотите, чтобы имена строк вы могли бы использовать что-то вроде:
IEnumerable<CultureInfo> cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
string[] names = cultures.Select(c => c.Name).ToArray();
Обратите внимание на «Культура Типы» перечисления (по ссылке MSDN). Я полагаю, наиболее полезными были бы NeutralCultures и SpecificCultures.
- NeutralCultures Культуры, которые связаны с языком, но не являются специфическими для страны/региона. Имена культур .NET Framework состоят из строчного двухбуквенного кода, полученного из ISO 639-1. Например: «en» (английский) - это нейтральная культура. Пользовательские культуры могут иметь любое имя, указанное пользователем, а не только двухбуквенный код. Инвариантная культура включена в массив культур, возвращаемых методом CultureInfo.GetCultures, который задает это значение.
- Конкретные культуры Культуры, характерные для страны/региона. Названия этих культур соответствуют RFC 4646 (Windows Vista и более поздние версии). Формат - «-», где - строчный двухбуквенный код, полученный из ISO 639-1, и представляет собой прописной двухбуквенный код, полученный из ISO 3166. Например, «en-US» для английского языка (США) является специфической культуры. Пользовательские культуры могут иметь любое имя, указанное пользователем, а не только стандартное имя.
- УстановленныеWin32Cultures Все культуры, которые установлены в операционной системе Windows. Обратите внимание, что не все культуры, поддерживаемые платформой .NET Framework, установлены в операционной системе.
- AllCultures Все культуры, которые поставляются с платформой .NET Framework, включая нейтральные и конкретные культуры, культуры, установленные в операционной системе Windows, и пользовательские культуры, созданные пользователем.
- UserCustomCulture Пользовательские культуры, созданные пользователем.
- ReplacementCultures Пользовательские культуры, созданные пользователем, которые заменяют культуры, поставляемые с .NET Framework.
http://msdn.microsoft.com/en-us/goglobal/bb896001.aspx –