Создание пользовательских CultureInfo для страны, языковой комбинации

Я работаю над приложением.net 4.5, которое должно быть многоязычным с поддержкой нескольких культур и т. Д.

Ниже приведен примерный список стран / языков

  • Россия Русский
  • Бельгия / Французский
  • Бельгия / Голландский

Для всего вышеперечисленного есть объект CultureInfo, который может быть создан на основе указанных выше названий культур.

  • р-RU
  • FR-BE
  • NL-BE

Когда пользователь заходит на сайт, я устанавливаю Thread.CurrentThread.CurrentCulture и Thread.CurrentThread.CurrentUICulture для культуры, созданной с указанными выше именами, например.

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

Все вышеперечисленные названия являются действительными названиями культур.

Нет, однако, мне нужно добавить другое название культуры, английский язык в России. Но проблема в том, что код en-RU недействителен, поэтому при создании new CultureInfo("en-RU", false) Я получаю исключение CultureNotFoundException, так как en-RU недействителен.

В этой культуре я хочу, чтобы форматирование и т. Д. В России включало цифры, даты и т. Д., Но я хочу, чтобы язык на сайте был английский. Возможно ли создание пользовательских объектов CultureInfo для недопустимых названий культур с поведением страны (Россия)?

3 ответа

Можно ли создавать собственные объекты CultureInfo для недопустимого имени культуры?

Да.

Использовать CultureAndRegionInfoBuilder чтобы помочь создать кастом CultureInfo, (NB. Как только у вас есть код для создания культуры, настройки для этого можно сохранить в XML и затем загрузить, например, из ресурса, который должен нуждаться в меньшем количестве кода во время выполнения.)

Возможно, вам придется смешивать, смешивать и сочетать - иметь объект культуры для английского языка, который вы используете для английского текста, но объект культуры ru-Ru (русский) для числового форматирования.

Или даже лучше создать собственную культуру, комбинирующую

Создать собственную культуру в ASP.NET

Вы должны использовать CultureInfo.InvariantCulture Имущество

Инвариантная культура нечувствительна к культуре; это связано с английским языком, но не с какой-либо страной / регионом. Вы указываете инвариантную культуру по имени, используя пустую строку ("") при вызове метода создания экземпляров CultureInfo. CultureInfo.InvariantCulture также извлекает экземпляр инвариантной культуры. Его можно использовать практически в любом методе пространства имен System.Globalization, для которого требуется культура. Объекты, возвращаемые свойствами, такими как CompareInfo, DateTimeFormat и NumberFormat, также отражают соглашения о сравнении строк и форматировании инвариантной культуры.

CultureInfo.InvariantCulture Property

Это другой вариант Custom Global Application Culture

Другие вопросы по тегам