|
Программирование >> Автоматически обновляемые приложения
Культура Рассмотрим понятие культур поподробнее. Идентификатор культуры (culture identifier) состоит и кода языка и кода страны/региона. Полный список идентификаторов культур можно посмотреть в документации .NET Framework SDK, а в табл. 14.1 мы приводим лишь небольшой список, взятый из этой документации. Таблица 14.1. Список идентификаторов культур
Обратите внимание, что имя культуры может состоять только из кода языка (маленькие буквы) или сочетания кода языка и кода страны/региона. Важно понимать разницу между этими культурами. Культуры, в которых указан только код языка, называются нейтральными (neutral) или только языковыми (language-only), а культуры, в которых используется код страны, называются конкретными (specific). При локализации программ важно учитывать тип культуры. Например, для вывода текстовых сообщений достаточно языка культуры. Но если ваше приложение будет оперировать символами валют, датами и т. п., то необходимо в этом случае использовать конкретную культуру. Как правило, культура для пользовательского интерфейса приложения задается системой неявно, на основе региональных стандартов, или явно, программным способом. Для каждого потока текуидая культура определяется отдельно. Каждый поток наследует культуру, установленную Windows по умолчанию. Сменить ее можно, используя пространство имен System. Threading. j Листинг 14.2, Заполнение элемента TreeView информацией о культурах private void Forml Load(object sender. System.EventArgs e) { TreeNode tempNode; Добавляем к дереву нейтральные культуры, как корневые узлы foreach (Culturelnfo CultureX in Cultureinf о. GetCultures (CultureTypes.NeutralCultures)) tempNode = new TreeNode(CultureX.EnglishName + [ + CultureX.Name + ] ); Приложение Culture Explorer Прежде чем мы изучим процесс создания локализованных приложений, давайте сначала рассмотрим пример, позволяющий глубже понять, как управлять культурами. В качестве основы я взял замечательный пример, опубликованный еще в 2002 году в журнале MSDN Magazine. И хотя этот пример был написан еще для Visual Studio .NET 2003, он без проблем конвертировался в новый проект под Visual Studio 2005. Так как прошло уже много времени, и не все имеют возможность прочитать эту статью, я постараюсь пересказать самые важные и интересные детали, в ней описанные. Кроме того, я внес в проект небольшие косметические изменения, но в целом программа осталась такой же, как было описано в статье. С помощью этого приложения мы сможем просматривать установленные культуры, управлять текущей культурой в период выполнения, а также видеть в реальном времени, как влияет смена культуры на различные типы информации. Добавим на форму элементы управления TreeView и Listview и свяжем их разделителем (элемент управления Splitter). Для элемента Tree-view установим свойства Sorted в true И HideSelection В false. Для элемента Listview СВОЙСТВО View установим В значение Details И свойство GridLmes В true. Кроме ТОГО, ДОбавим в Listview ЭЛементы ColumnHeader, В которых будет отображаться выводимая информация о культуре. Теперь настало время заняться кодом программы. Сначала подключим к проекту два пространства имен: using System.Globalizations-using System.Threading; Теперь нам необходимо заполнить элемент TreeView информацией обо всех культурах. Сделаем это на этапе загрузки формы (листинг 14.2). В первом операторе foreach мы добавляем в дерево TreeView все нейтральные культуры в качестве корневых узлов. Экземпляр класса Culturelnfo всегда представляет в .NET определенную культуру (нейтральную или конкретную). С помощью статического метода GetCultures класса Culturelnfo мы можем получить список всех нейтральных культур, используя перечисление CultureTypes. На основе полученной информации формируем первый уровень дерева, последовательно добавляя каждую культуру. Далее мы создаем строку с описанием названия культуры, а саму культуру добавляем в свойст- tempNode.Tag = CultureX; treeViewl.Nodes.Add(tempNode); Перебираем все конкретные культуры и добавляем каждую из них к родительской нейтральной культуре в дереве foreach (Culturelnfo CultureX in Culturelnfo.GetCultures(CultureTypes.SpecificCultures)) foreach (TreeNode NodeX in treeViewl.Nodes) { if (NodeX.Tag.Equals(CultureX.Parent)) { tempNode = new TreeNode(CultureX.EnglishName + [ + CultureX.Name + ] ); tempNode.Tag = CultureX; tempNode.ForeColor = Color.Red; foreach (Culturelnfo CultureY in Culturelnfo.GetCultures( CultureTypes.InstalledWin32Cultures)) if (CultureY.Equals(CultureX)) { tempNode.ForeColor = Color.Black; break; NodeX.Nodes.Add(tempNode); break;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |