* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Определение глобализации и локализации
8 февраля 2009
Терминами «глобализация» и «локализация» называют два разных, но взаимосвя- занных процесса. Под глобализацией понимают применение к существующим дан- ным формата, зависимого от культуры, а под локализацией — извлечение данных, соответствующих заданной культуре. Вот примеры, иллюстрирующие эти различия. • Глобализация. В некоторых странах при форматировании значений денежных единиц точкой разделяют разряды тысяч, а запятой отделяют целую часть от дробной в десятичных дробях. В приложении, реализующем глобализацию, зна- чения денежных сумм форматируются согласно стандартам региона, в котором оно используется.
• Локализация. В зависимости от страны, в которой используется приложение, на- звание формы можно отображать по-английски или по-французски. Локализо- ванное приложение извлекает и отображает строку на соответствующем языке в зависимости от региона, в котором оно используется. Концепция культур Термином «культура» при разработке приложений называется совокупность регио- нальных стандартов, принятых в стране, где используется приложение. В .NET Framework культура определяется специальным значением, которое называется ко- дом культуры. Код культуры — это значение, описывающее для инфраструктуры применяемый в данный момент язык. В код культуры дополнительно можно вклю- чить сведения о регионе, где приложение используется, Обычно код культуры со- стоит из одной пары букв — в этом случае он определяет только язык — либо ком- бинации из двух пар букв (кодов языка и региона соответственно), разделенных дефисом. Культуры, заданные двузначными кодами и определяющие только язык, называются нейтральными, а культуры, заданные четырехзначным кодом и опреде- ляющие язык и регион, называются специфичными. Вот несколько примеров кодов культур: • En — английский язык без указания региона; • еп-СА — канадский вариант английского языка; • af-ZA — африкаанс (Южная Африка); • ем— баскский язык без указания региона; • kn-IN — язык каннада (Индия); • tr — турецкий язык без указания региона. Полный список кодов культур вы найдете в разделе справочной системы .NET Framework, посвященному классу Culturelnfo. Коды большинства культур подчиняются такому формату, но есть и исключе- ния, о которых следует помнить: • Cy-uz-UZ — узбекский язык (Узбекистан) с кириллическим алфавитом; • Lt-uz-UZ — узбекский язык (Узбекистан) с латинским алфавитом; • zh-CHT— традиционное китайское письмо без указания региона; • zh-CHS — упрошенное китайское письмо без указания региона. Получение и установка текущей культуры Приложение автоматически считывает код культуры, заданный системными пара- метрами, и использует соответствующую культуру. Чтобы программно изменить текущую культуру приложения, запишите в соответствующее свойство экземпляр класса Culturelnfo, представляющий новую культуру. Этот класс содержит сведения о культуре и соответствующие инструкции для приложения, например информа- цию о календаре, формат денежных единиц, дат и т. д. Чтобы программно назна- чить культуру приложению, поместите в свойство CurrentThread.CurrentCulture но- вый экземпляр класса Culturelnfo. Класс Culturelnfo воспринимает в качестве пара- метра строку, представляющую код соответствующей культуры. Следующий при- мер демонстрирует способ замены текущей культуры франке-канадской: Visual Basic .NET System.Threading.Thread.CurrentThread.CurrentCulture - New System.Globalization.Culturelnfo("fr-CA") Visual C# System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.Culturelnfof'T r-CA"); Чтобы извлечь класс Culturelnfo, представляющий текущую культуру, вызовите класс Culture Info. CuirentCulture следующим образом: Visual Basic .NET Этот пример предполагает наличие оператора Imports System. Globalization Dim myCurrentCulture As Culturelnfo tnyCurrentCulture = Culturelnfo. CurrentCulture Visual C# // Этот пример предполагает наличие оператора using System. Globalization Culturelnfo myCurrentCulture; myCurrentCulture = Culturelnfo. CurrentCulture; Глобализация приложений Если записать в свойство Thread. Current Thread. CurrentCulture новый экземпляр клас- са Culturelnfo, все данные, форматируемые приложением, автоматически обновят- ся согласно правилам, принятым в установленной культуре, а данные, за формати- рование которых приложение не отвечает, останутся без изменений. Рассмотрим форму с единственным элементом управления Label, для которого программно за- дан следующий текст: Visual Basic .NET Labell.Text = "$500.00" Visual C# Labell.Text = "$500.00"; После этого текущую культуру установили в en-GB (Великобритания). Как вы думаете, какое значение отобразит надпись? Он останется прежним — $500.00. Смена культуры не повлияет на содержимое надписи, поскольку оно не отформа- тировано. Если же задать значение элемента управления Label следующим образом: Visual Basic .NET Labell.Text = Format(500, "Currency") Visual C# Labell.Text = (500).ToString{"C"); то при смене культуры на en-GB значение надписи изменится на J500.00, посколь- ку к нему применен формат денежных единиц, принятый в новой культуре. Обра- тите внимание, что сумма осталась прежней — изменился только формат. Локализация приложений Локализация позволяет изменять вид пользовательского интерфейса в зависимости от культуры. .NET Framework облегчает создание локализованных форм благодаря использованию файлов ресурсов. Эти файлы хранят данные для альтернативных версий форм, соответствующих различным культурам, поддерживаемым приложе- нием. Версия формы, загружаемая в период выполнения, определяется свойством Culturelnfo. CurrentUICulture.