* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Получение и установка текущей культуры пользовательского интерфейса
8 февраля 2009
Культура, назначенная пользовательскому интерфейсу, также представлена экзем- пляром класса Culturefnfo, и может отличаться от культуры, заданной свойством Culturefnfo.CurrentCulture. Свойство CurrentCulture определяет правила форматиро- вания данных, а свойства CurrentVICulture — версию ресурсов, загружаемых в лока- лизованные формы в период выполнения. Получить значение свойства CurrentUICuhure можно так:
Visual Basic .NET ' Этот пример предполагает наличие оператора Imports System.Globalization Dim myCurrentCiJlture As Culturelnfo myCurrentCulture = Culturelnfo.CurrentUICulture Visual C# // Этот поимер предполагает наличие оператора using System.Globalization Culturelnfo myCurreritCulture; nyCurrentCuIture = Culturelnfo.CurrentUICulture; Пользовательскому интерфейсу назначают текущую культуру так же, как и при- ложению, — через объект Thread, представляющий текущий поток. Например, именно так можно назначить интерфейсу Тайскую культуру: Visual Basic .NET System.Threading.Thread.CurrentThread.CurrentUICulture - New System.Globalization.CultureInfo("th-TH") Visual C# System.Threading.Thread.CurrentThread.CurrentUICulture - new System. Globalization.CultureInfo("th-TH"); После установки текущей культуры ОС загружает соответствующие ресурсы, а если они недоступны — загружаются ресурсы для культуры по умолчанию. Примечание Назначать культуру пользовательскому интерфейсу следует до загруз- ки формы, отображающей локализованные ресурсы. Чтобы сделать это програм- мно, надо установить культуру в конструкторе главной формы или методе Main при- ложения по крайней мере до отображения ключевых элементов пользовательского интерфейса. Создание локализованных форм .NET Framework позволяет создавать локализованные формы с затратой минималь- ных усилий. Все формы поддерживают свойство Localizable, которое определяет, является ли форма локализуемой. Установив это свойство в true, вы сделаете форму локализуемой. Если свойство Localizahle установлено в true, Visual Studio .NET автоматически создает для нее соответствующие файлы ресурсов. Установив это свойство в (Defa и/г), вы зададите культуру по умолчанию для отображения интерфейса формы и ее элементов управления. Чтобы создать локализованную версию формы, назначьте свойству Language любое значение, отличное от (Default), — Visual Studio .NET ав- томатически создаст новый файл ресурсов для заданного языка и сохранит и, нем все значения, заданные для пользовательского интерфейса. Примечание Обычно локализуют строковые свойства элементов пользовательского интерфейса, но в принципе это можно сделать для любого свойства. Например, за- ставить кнопку изменять ее размер в зависимости от длины надписи на ней (для разных культур она отличается), а графическое окно — его вид в зависимости от текущей культуры. Чтобы просмотреть файл ресурсов формы, щелкните в окне Solution Explorer кнопку Show All Files и раскройте узел рядом с формой. Под формой отобразится список файлов ресурсов для всех языков, для которых имеются локализованные версии формы. > Создание локализованной формы 1. Установите свойство Localizable формы в true. 2. Создайте пользовательский интерфейс формы и переведите строковые и другие свойства его элементов на язык, для которого предоставляется локализация. 3. Создайте ресурсы интерфейса для культуры по умолчанию — они применяются, если культура не указана. 4. Задайте для свойства Language формы значение, определяющее соответствую- щую культуру. 5. Добавьте к вашей форме локализованное содержимое интерфейса. 6. Повторяйте пункты 4 и 5 для каждого языка, для которого планируется предос- тавить локализацию. 7. Выполните сборку приложения. Если свойство CurrentUfCulture определяет культуру, для которой есть локализа- ция, приложение загрузит нужную версию формы, прочитав соответствующие фай- лы ресурсов. Если для указанной культуры файлов ресурсов не существует, интер- фейсу назначается культура по умолчанию. Проверка информации, вводимой на разных языках Приложению может потребоваться механизм для проверки данных, вводимых на разных языках. Реализация в приложении, поддерживающем несколько языков, проверки вводимой с клавиатуры информации может оказаться нетривиальной за- дачей. Разработчик не всегда знает, какие символы используются в каждом языке, поддерживаемом приложением. А значит не сумеет корректно определить катего- рию символа, вводимого нажатием некоторых клавиш. Методы, поддерживаемые структурой Char, позволяют проверять данные, вве- денные на любом языке, так же, как это делается для языков, использующих латин- ский алфавит. Методы Char.hDigit, Char.IsLetter и ряд других возвращают коррект- ные значения независимо от использованного при вводе набора символов, что обес- печивает корректность работы кода, основанного на применении этих методов, не требуя его адаптации для каждого из поддерживаемых языков.