Новые возможности глобализации и локализации

В этом разделе описаны изменения, внесенные в классы и перечисления в пространстве имен System.Globalization платформы .NET Framework 4. Данный раздел содержит следующие подразделы.

  • Новые нейтральные языки и региональные параметры

  • Новые особые языки и региональные параметры

  • Обновленные значения свойств глобализации

  • Получение текущих сведений глобализации

  • Обработка строк

  • Сокращенное использование кодов языков

  • Свойства нейтральных языков и региональных параметров

  • Изменения в пользовательских языках и региональных параметрах

  • Неизмененные элементы

Новые нейтральные языки и региональные параметры

Платформа .NET Framework 4 поддерживает не менее 354 языков и региональных параметров, что значительно больше прежних 203 языков и региональных параметров в платформе .NET Framework 3.5. Многие из новых языков и региональных параметров являются нейтральными и добавлены для завершения родительской цепочки к корневому нейтральному языку и региональным параметрам. Например, к существующим региональным параметрам "Инуктитут (слоговое письмо, Канада)" и "Инуктитут (латиница, Канада) добавлено три нейтральных набора региональных параметров для языка инуктитут, как показано в следующей таблице.

Отображаемое название набора региональных параметров

Название языка и региональных параметров

Код языка

Инуктитут

Iu

0x005d

Инуктитут (слоговое письмо)

iu-Cans

0x785D

Инуктитут (слоговое письмо, Канада)

iu-Cans-CA

0x045D

Инуктитут (латиница)

iu-Latn

0x7C5D

Инуктитут (латиница, Канада)

Инуктитут (латиница, Канада)

0x085D

Новые особые языки и региональные параметры

В платформе .NET Framework 4 введены также новые особые наборы языков и региональных параметров, например, сербские. Во избежание конфликта отображаемых имен прежние версии параметров сербского языка переименованы в "Сербский (кириллица, Сербия и Черногория (бывшая))" и "Сербский (латиница, Сербия и Черногория (бывшая))". Эти языки и региональные параметры сохранены в платформе .NET Framework с существующими для них сведениями, включая их названия и коды.

Отображаемое название набора региональных параметров

Название языка и региональных параметров

Код языка

Сербский - Сербия (латиница)

sr-Latn-RS

0x241A

Сербский - Сербия (кириллица)

sr-Cyrl-RS

0x281A

Сербский - Черногория (латиница)

sr-Latn-ME

0x2C1A

Сербский - Черногория (кириллица)

sr-Cyrl-ME

0x301A

Отображаемые названия китайских языков и региональных параметров изменены в соответствии с соглашением об именах (название_языка ([набор_символов,] название_страны/региона)). В платформе .NET Framework 4 к отображаемым названиям zh-CHS и zh-CHT добавлено обозначение "прежних версий", чтобы отличить их от названий zh-Hans и zh-Hant. Для недавно введенного в Windows обозначения zh отображаемое название — "Китайский".

Отображаемое имя

Название языка и региональных параметров

Код языка

Китайский

zh

0x7804

Китайский (упрощенное письмо) устаревший

zh-CHS

0x0004

Китайский (традиционное письмо) устаревший

zh-CHT

0x7C04

Китайский (упрощенный)

zh-Hans

0x0004

Китайский (традиционное письмо)

zh-Hant

0x7C04

Китайский (упрощенное письмо, КНР)

zh-CN

0x0804

Китайский (традиционное письмо, Гонконг)

zh-HK

0x0C04

Китайский (традиционное письмо, Макао)

zh-MO

0x1404

Китайский (упрощенное письмо, Сингапур)

zh-SG

0x1004

Китайский (традиционное письмо, Тайвань)

zh-TW

0x0404

Родительская цепочка для китайских языков и региональных параметров теперь включает корневой набор для китайского языка. В следующих примерах показаны полные родительские цепочки для двух особых наборов китайского языка и региональных параметров.

  • zh-CN → zh-CHS → zh-Hans → zh → инвариант

  • zh-TW → zh-CHT → zh-Hant → zh → инвариант

Отображаемые названия "Тибетский (КНР)", "Французский (Монако)", "Тамазигхт (латиница, Алжир)" и "Испанский (Испания, международный тип)" также обновлены. Когда отображаемое название изменяется, это изменение обычно отражается в английском и исходном названиях; однако могут также изменяться названия согласно ISO и сокращенные названия набора символов, языка и страны.

Обновленные значения свойств глобализации

В платформе .NET Framework 4 также обновлены значения свойств глобализации, в частности наименования денежных единиц, форматы даты и времени, названия дней и месяцев, обозначения времени до полудня и после полудня и некоторые свойства форматирования чисел. В следующей таблице приведены примеры изменений наименований денежных единиц в классе System.Globalization.RegionInfo.

Название языка и региональных параметров

Наименование денежной единицы в версии 3.5

Наименование денежной единицы в версии 4

Мальтийский (Мальта)

Мальтийская лира

евро

sk-SK

словацкая крона

евро

sl-SI

Словенский толар

евро

tr-TR

турецкая лира

Турецкая лира

В следующей таблице приведен пример изменений в шаблоне краткого формата даты в классе System.Globalization.DateTimeFormatInfo.

Название языка и региональных параметров

Шаблон краткого формата даты в версии 3.5

Шаблон краткого формата даты в версии 4

ar-SA

дд/ММ/гг

мм/ДД/гггг

Дари (Афганистан)

дд/ММ/гг

гггг/М/д

Пашто (Афганистан)

дд/ММ/гг

гггг/М/д

pt-BR

д/М/гггг

мм/ДД/гггг

Изменены некоторые данные календаря, в частности названия дней и месяцев для многих языков (например, свойство DateTimeFormatInfo.ShortestDayNames для арабских языков). Некоторые языки с письмом справа налево (например, prs-AF, ps-AF и ug-CN) содержали неверные значения свойства TextInfo.IsRightToLeft и исправлены в данной версии.

Получение текущих сведений глобализации

Одна их основных характеристик глобализации в .NET Framework 4 — это возможность предоставления наиболее свежих сведений. Самые старые сведения о глобализации, предоставляемые в этом выпуске, это сведения, доступные на момент выпуска и только при условии запуска в среде Windows до версии 7. При выполнении в среде Windows 7 и более поздних версиях сведения о глобализации извлекаются непосредственно из операционной системы, т. е. пользователи получат наиболее свежие сведения о глобализации, обновив версию Windows. Клиенты, использующие Windows 7 и более поздние версии ОС, могут использовать унифицированный глобализованный интерфейс как для встроенных (Win32) приложений, так и для управляемых приложений (.NET).

Поскольку в постоянно изменяющемся мире сведения о глобализации подвержены изменениям в любое время, разработчикам не следует ожидать от свойств глобализации постоянства между выпусками или даже в пределах одного выпуска платформы .NET Framework. Это не является для пользователей .NET Framework новостью в поведении платформы. Свойства присущих только Windows языков и региональных параметров, поддерживаемые с версии .NET Framework 2, могут иметь другие значения при выполнении в других версиях Windows

Название языка и региональных параметров — наиболее стабильное свойство сведений о языках и региональных параметрах, поэтому предполагается, что оно сохранит свою стабильность и в будущих выпусках. Другие свойства (например, отображаемое название языка и региональных параметров) могут измениться в любое время. Поэтому приложения не должны зависеть от правописания отображаемого названия и любых других текстовых и числовых данных.

Механизм получения сведений о глобализации в платформе .NET Framework 4 изменен. Если приложение работает в Windows 7 или более поздних версиях, оно получает сведения о глобализации непосредственно от операционной системы. Если приложение работает в более ранней версии Windows (например, Windows Vista, Windows XP, Windows Server 2003 или Windows Server 2008), оно получает сведения о глобализации из внутреннего хранилища данных, чтобы обеспечить актуальность данных.

В такой новой модели получения сведений о глобализации определения некоторых типов CultureTypes изменятся, поскольку сведения о глобализации извлекаются из разных источников в зависимости от операционной системы. Члены WindowsOnlyCultures и FrameworkCultures CultureTypes теперь устарели. При попытке использования этих членов компилятор выдает предупреждение, хотя компиляция завершается успешно. При использовании члена WindowsOnlyCultures языки и региональные параметры не возвращаются, а член FrameworkCultures возвращает все языки и региональные параметры. Другие члены CultureTypes имеют те же определения, что и ранее.

Обработка строк

Многие классы .NET Framework, в том числе CharUnicodeInfo, CompareInfo, StringInfo, TextInfo и TextElementEnumerator в пространстве имен System.Globalization, реализуют правила сортировки, нормализации и использования прописных и строчных букв, а также извлекают сведения о символах Юникод. В платформе .NET Framework 4 эти функции синхронизированы с Windows 7, что обеспечивает более широкие возможности лингвистической сортировки и использования прописных и строчных букв для китайского, японского и корейского языков, а также устранение многих проблем, выявленных клиентами. Самое важное изменение — обеспечение соответствия стандарту Юникод 5.1, благодаря чему добавлена поддержка около 1400 символов, включая новые символы, стрелки, диакритические знаки, математические символы, ККЯ-штрихи, идеографические символы и цифры языков малаялам и телугу. Кроме того, Юникод 5.1 улучшает сортировку и использование прописных и строчных букв для символов следующих видов письменности: латиницы, бирманской, арабской, греческой, монгольской, кириллицы, гурмухи, ория, тамильской, телугу и малаялам. Благодаря Юникоду 5.1 также добавлена поддержка следующих видов письменности: сунданской, лепча, ол-чики, ваи, саураштра, кайях ли, реджангской и тямской.

Во многих случаях (например, для индексирования баз данных) требуется согласованное поведение при обработке строк в разных версиях Windows. Платформа .NET Framework 4 гарантирует согласованное поведение операций обработки строк независимо от версии Windows.

Существующие приложения, которые создают индексы баз данных или ключи сортировки хранилищ, могут зависеть от поведения сортировки и использования прописных и строчных букв в платформе .NET Framework 2.0 или 3.5. Для поддержки этих приложений платформа .NET Framework 4 позволяет разработчикам применять поведение сортировки и использования прописных и строчных букв прежних версий путем включения в файл конфигурации приложения элемента <CompatSortNLSVersion>. Правила сортировки и использования прописных и строчных букв прежних версий могут также применяться на основе домена приложения путем вызова метода AppDomainSetup.SetCompatibilitySwitches с параметром "NetFx40_LegacySecurityPolicy" при настройке домена приложения. Следует отметить, что успех восстановления поведения прежних версий зависит от наличия в локальной системе библиотеки динамической компоновки sort00001000.dll.

Платформа .NET Framework 4 обеспечивает несколько вариантов сортировки для некоторых языков и региональных параметров. Например, для немецкого языка и региональных параметров (Германия) по умолчанию используется словарный порядок сортировки, а в качестве альтернативного порядка сортировки поддерживается порядок сортировки, как в телефонной книге. Для китайского языка (упрощенное письмо, КНР) по умолчанию поддерживается порядок сортировки по произношению, а дополнительно предоставлен порядок сортировки по числу штрихов. Чтобы задать альтернативный порядок сортировки, можно создать объект CultureInfo, используя код языка или название альтернативного порядка сортировки. Из платформы .NET Framework 4 удалены три альтернативных порядка сортировки, поскольку их не рекомендуется использовать в Windows. При попытке создать объект CultureInfo с использованием кода языка этих нерекомендуемых альтернативных порядков сортировки вызывается исключение CultureNotFoundException. В следующей таблице перечислены альтернативные порядки сортировки, поддерживаемые платформой .NET Framework.

Название языка и региональных параметров

Язык - страна/регион

Название и код языка для типа сортировки по умолчанию

Название и код языка для альтернативного типа сортировки

zh-HK

Китайский - Гонконг

По умолчанию: 0x00000c04

zh-HK_stroke: 0x00020c04

ja-JP

Японский - Япония

По умолчанию: 0x00000411

ja-JP_unicod: 0x00010411

ko-KR

Корейский - Корея

По умолчанию: 0x00000412

ko-KR_unicod: 0x00010412

Сокращенное использование кодов языков

В платформе .NET Framework 4 методы ToString и ToString используют названия языков и региональных параметров без кодов языков для всех языков и региональных параметров. Например, .NET Framework 4 возвращает значение "en-US CompareInfo - en-US" вместо значения "en-US CompareInfo – 1033", которое возвращалось в предыдущих версиях платформы .NET Framework.

Свойства нейтральных языков и региональных параметров

В предыдущих версиях платформы .NET Framework при попытке приложений получить доступ к свойствам нейтральных языков и региональных параметров, например к свойству DateTimeFormatInfo.FirstDayOfWeek, вызывалось исключение. В платформе .NET Framework 4 свойства нейтральных языков и региональных параметров возвращают значения, отражающие конкретный язык, являющийся доминирующим для данного нейтрального языка и региональных параметров. Например, нейтральный набор параметров для французского языка получает значения большинства своих свойств из набора параметров для французского языка (Франция). Свойство FirstDayOfWeek возвращает значение DayOfWeek.Monday, отражающее значение этого свойства во французском языке (Франция).

Однако некоторые свойства (например, название языка) имеют значения, отличающиеся от доминирующего языка. Например, название языка в нейтральном наборе параметров для норвежского языка — "норвежский", а в конкретном языковом варианте норвежского, "букмол (Норвегия)", название языка — "норвежский (букмол)".

В платформе .NET Framework 4 некоторые свойства и методы нейтральных языков и региональных параметров возвращают значения, отражающие конкретные языки и региональные параметры вместо нейтральных. Два примера такого изменения — свойство KeyboardLayoutId и метод GetConsoleFallbackUICulture класса CultureInfo.

  • Изменения значения KeyboardLayoutId

    Название языка и региональных параметров

    Версия 3.5

    Версия 4

    ar

    1

    1025

    es

    10

    1034

    fr

    12

    1036

    zh-CHS

    4

    2052

  • Изменения значения GetConsoleFallbackUICulture

    Название языка и региональных параметров

    Версия 3.5

    Версия 4

    af

    af

    af-ZA

    de

    de

    de-DE

    en

    en

    en-US

    ja

    ja

    ja-JP

Изменения в пользовательских языках и региональных параметрах

Нейтральные заменяющие языки и региональные параметры, созданные платформой .NET Framework версии 2.0, в платформе .NET Framework 4 не загружаются.

При регистрации заменяющего языка и региональных параметров с помощью класса CultureAndRegionInfoBuilder переопределенные сведения из пользовательского языка и региональных параметров недоступны непосредственно процессу, создавшему этот пользовательский язык. Однако процессы, запущенные после регистрации этого пользовательского языка и региональных параметров, могут читать переопределенные сведения.

Неизмененные элементы

Текстовая информация, кодирование, функции календаря и компоненты международных доменных имен (IDN) в платформе .NET Framework 4 не изменены. Эти элементы продолжают функционировать, как ранее.

Журнал изменений

Дата

Журнал

Причина

Май 2010

Отмечено, что восстановление сортировки и сравнения прежних версий зависит от библиотеки sort00001000.dll.

Исправление ошибки содержимого.