Практическое руководство. Установка значений Culture и UICulture для глобализации форм Windows Forms
Два значения для языка и региональных параметров для приложений Visual Basic и Visual C# определяют, какие ресурсы загружаются для приложения и как форматируются данные о денежных суммах, численные данные, даты и т. п. Загружаемые ресурсы зависят от значения параметра "UICulture", а параметры форматирования определяются значением параметра "Culture". Сначала приложение ищет значения для языка и региональных параметров в свойствах CurrentCulture и CurrentUICulture. Можно задать эти значения коде, как показано в следующей процедуре.
По умолчанию значением свойства CurrentCulture является системный параметр пользовательского языка, т. е. языка, который задается в разделе Региональные стандарты панели управления. По умолчанию значением свойства CurrentUICulture является язык пользовательского интерфейса операционной системы. В Windows 2000 и Windows XP MultiLanguage Edition значением параметра CurrentUICulture по умолчанию является язык пользовательского интерфейса для текущего пользователя.
В некоторых случаях разработчику может потребоваться, чтобы большая часть приложения изменялась в зависимости от языка и региональных параметров ОС или пользователя, но при этом определенное число или дата не изменялись. Можно поручить зависящим от языка и региональных параметров классам форматирование данных для инвариантной культуры, которая сопоставлена английскому языку без указания конкретного региона. Дополнительные сведения об этих классах содержатся в разделах Formatting for Different Cultures и System.Globalization. Дополнительные сведения об инвариантном языке см. в разделе InvariantCulture. Дополнительные сведения о возможных настройках языка и региональных параметров см. в разделе CultureInfo.
Установка параметров форматирования для определенного языка и региональных параметров
Для переопределения параметров пользователя и операционной системы служат свойства CurrentCulture и CurrentUICulture.
Обычно можно указать язык и региональные параметры так, чтобы каждый компонент пользовательского интерфейса приложения соответствовал данному языку и региональным параметрам. Поэтому необходимо задать язык и региональные параметры до вызова метода InitializeComponent.
' Put the Imports statements at the beginning of the code module Imports System.Threading Imports System.Globalization ' Put the following code before InitializeComponent() ' Sets the culture to French (France) Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR") ' Sets the UI culture to French (France) Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR")
// Put the using statements at the beginning of the code module using System.Threading; using System.Globalization; // Put the following code before InitializeComponent() // Sets the culture to French (France) Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR"); // Sets the UI culture to French (France) Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");
Примечание
Значение языка и региональных параметров должно всегда соответствовать конкретному языку и региональным параметрам (например, fr-FR), а не нейтральному (как например, fr).Причина в том, что нейтральное значение языка и региональных параметров (например, fr) может применяться ко всем регионам, в которых используется французский язык, в то время как, во Франции, Бельгии и Канаде используются разные денежные единицы.
Вызовите методы форматирования для инвариантного языка и региональных параметров для всех строк, которые должны остаться неизменными независимо от значения CurrentCulture.
Dim MyInt As Integer = 100 Dim MyString As String = MyInt.ToString("C", CultureInfo.InvariantCulture) MessageBox.Show(MyString)
int MyInt = 100; string MyString = MyInt.ToString("C", CultureInfo.InvariantCulture); MessageBox.Show(MyString);