Глобализация для WPF
В этом разделе рассматриваются проблемы, которые следует иметь в виду при написании Windows Presentation Foundation (WPF) приложений для мирового рынка. Элементы программирования глобализации определяются в Microsoft .NET в System.Globalization
.
Глобализация XAML
XAML на основе XML и использует поддержку глобализации, определенную в XML спецификации. В следующих разделах описаны некоторые XAML функций, которые следует учитывать.
Ссылки символов
Ссылка символа сообщает модуль кода UTF16 конкретного Unicode символов, он представляет в десятичном или шестнадцатеричном формате. В следующем примере показано шестнадцатеричная ссылка символа для по КОПТСКИЙ ЗАГЛАВНОЙ буквы или «Ϩ»:
Ϩ
В следующем примере шестнадцатеричная ссылка символа. Обратите внимание, что он имеет x перед шестнадцатеричным числом.
Ϩ
кодировка
Поддерживает следующие кодировки XAML являются ASCII, Юникод UTF-16 и UTF-8. Оператор кодировки должен в начале XAML документа. Если атрибут кодировки и порядок байтов отсутствуют, по умолчанию в средстве синтаксического анализа используется кодировка UTF-8. Предпочтительные кодировки: UTF-8 и UTF-16. UTF-7 не поддерживается. Следующий пример демонстрирует указание кодировки UTF-8 в XAML файл.
?xml encoding="UTF-8"?
Атрибут Language
XAML использует XML: lang для представления атрибута языка элемента. Чтобы воспользоваться преимуществами CultureInfo класса, значение атрибута языка должно быть одним из параметров языка и региональных параметров, определенных классом CultureInfo. xml:lang наследуется в дереве элементов (правилами XML, не обязательно из-за наследования свойства зависимости), и его значение по умолчанию — пустая строка, если оно не назначено явно.
Атрибут языка полезно использовать для задания диалектов. Например, французский язык имеет разные написание, словарь и произношение во Франции, Квебеке, Бельгии и Швейцарии. Также китайский, японский и корейский совместно использовать точки кода в Юникод, но их идеограммы отличаются, и они используют полностью различные шрифты.
Следующие XAML примере fr-CA
атрибут языка для указания на канадский французский.
<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>
Юникод
XAML поддерживает все Юникод функций, включая суррогаты. До тех пор, пока кодировка может быть сопоставлен Юникод, поддерживается. Например, GB18030 представляет определенные символы, которые сопоставляются расширениям A и B и парам суррогатов китайского, японского и корейского. Следовательно, этот набор символов полностью поддерживается. Объект WPF приложение может использовать StringInfo для работы со строками без понимания того, имеют ли они суррогатные пары или несамостоятельные символы.
Проектирование международного интерфейса пользователя с XAML
В этом разделе описываются UI функций, которые следует учитывать при написании приложения.
Международный текст
WPF включает встроенную обработку для систем письма все поддерживаемые Microsoft .NET Framework.
В настоящее время поддерживаются следующие скрипты.
Арабский
бенгальский
деванагари
кириллица
Греческий
Гуджарати
гурмухи
Иврит
Идеографические скрипты
Каннада
Лаосский
Латиница
Малаялам
Монгольский
Ория
Сирийский
Тамильский
Телугу
мальдивский
Тайский *
Тибетский
- В этом выпуске отображение и изменение текста на тайском языке поддерживается; а разбиение по словам — нет.
В настоящее время не поддерживаются следующие скрипты.
Кхмерский
Старый хангыль (корейский)
бирманский
Сингальский
Обработчики всех систем письма поддерживают OpenType шрифты. OpenType шрифты могут включать OpenType макетные таблицы, которые позволяют создателям шрифтов проектировать более качественные международные и типографские шрифты. OpenType Таблицы макетов шрифтов содержат сведения о заменах, позиционирования глифа, обоснование и относительно базового уровня, включении приложений обработки текста для улучшения макетов текста.
OpenType шрифты разрешить обработку больших глиф наборами с помощью Юникод кодирования. Такая кодировка обеспечивает широкую международную поддержку и возможность использования типографских вариантов глифов.
WPF отрисовка текста реализована на базе Технология Microsoft ClearType субпиксельной технология, которая поддерживает независимость от разрешения. Это значительно улучшает читаемость и предоставляет возможность поддержки качественных документов журнального стиля для всех скриптов.
Международный макет
WPF предоставляет очень удобный способ поддержки горизонтальной, двунаправленной и вертикальной разметки. В инфраструктуре представления FlowDirection свойство может использоваться для определения макета. Ниже перечислены шаблоны направления текста:
LeftToRight — горизонтальная разметка для латиницы, восточноазиатских языков и т. д.
RightToLeft — двунаправленная разметка для арабского, иврита и т. д.
Разработка локализуемых приложений
При написании приложений для мирового рынка следует помнить, что приложения должны быть локализуемыми. В следующих разделах указано, на что обратить внимание.
Многоязыковой интерфейс пользователя
Многоязыковые интерфейсы пользователя (MUI) является Microsoft поддержка переключения UI с одного языка на другой. Объект WPF приложение использует модель сборок для поддержки MUI. Одно приложение содержит независимые от языка сборки, а также зависимые от языка сборки вспомогательных ресурсов. Точкой входа является управляемый EXE-файл в основной сборке. WPF загрузчик ресурсов использует преимущества платформы в диспетчере ресурсов для поддержки поиска и резервирования ресурсов. Многоязыковые вспомогательные сборки работают с одной и той же основной сборкой. Загружается сборка ресурсов зависит от CurrentUICulture текущего потока.
Локализуемый пользовательский интерфейс
WPF приложения используют XAML для определения их UI. XAML позволяет разработчикам задавать иерархию объектов с набором свойств и логику. Главным образом используется XAML является разработка WPF приложения, но его можно использовать для задания иерархии любых CLR объектов. Большинство разработчиков используют XAML для указания своего приложения UI и использовать язык программирования, например C# для реагирования на действия пользователя.
С точки зрения ресурсов XAML разработанный для описания зависящий от языка UI элемент ресурсов и поэтому должны быть локализуемыми для поддержки международных языков окончательный формат распространения. Так как XAML не может обрабатывать события, многие XAML приложения содержат блоки кода, чтобы сделать это. Дополнительные сведения см. в разделе Обзор XAML (WPF). Код исключается и компилируется в разные двоичные файлы при XAML файл преобразуется в BAML-форму XAML. Форма BAML файлов XAML, изображения и другие типы управляемых объектов ресурсов внедряются во вспомогательную сборку ресурсов, которая может быть локализована на другие языки, или в основную сборку, если локализация не требуется.
Note
WPF приложения поддерживают все ресурсы CLR, включая таблицы строк, изображений и т. д.
Разработка локализуемых приложений
Локализация означает адаптацию UI для разных языков и региональных параметров. Чтобы сделать WPF локализуемым, разработчикам нужно объединить все локализуемые ресурсы в сборку ресурсов приложения. Сборка ресурсов локализуется на разные языки, и код программной части использует модуль управления ресурсами API для загрузки. Один из файлов, необходимых для WPF приложения — это файл проекта (.proj). Все ресурсы, используемые в приложении, необходимо включить в файл проекта. В следующем примере из CSPROJ-файла показано, как это сделать.
<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>
Для использования ресурсов в приложении создайте экземпляр ResourceManager и загрузки ресурсов, которые вы хотите использовать. В следующем примере показано, как это сделать.
void OnClick(object sender, RoutedEventArgs e)
{
ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
Assembly.GetExecutingAssembly());
Text1.Text = rm.GetString("Message");
}
Использование ClickOnce с локализованными приложениями
ClickOnce — это новая технология развертывания Windows Forms, которая будет поставляться вместе с Visual Studio 2005. Она позволяет устанавливать и обновлять веб-приложения. При локализации приложения, которое было развернуто с помощью ClickOnce, просмотреть его можно только на локализованном языке и с соответствующими региональными параметрами. Например, если развернутое приложение локализуется на японский его можно просматривать только на японском языке Microsoft Windows не на английском языке Windows. Это представляет проблему, так как это распространенный сценарий для японского пользователям запускать английской версии Windows.
Чтобы решить эту проблему, можно задать резервный атрибут нейтрального языка. Разработчик приложения может при необходимости удалить ресурсы из основной сборки и указать, что ресурсы можно найти во вспомогательной сборке, соответствующей определенной культуре. Для управления этим процессом используйте NeutralResourcesLanguageAttribute. Конструктор NeutralResourcesLanguageAttribute класс имеет две подписи: одна принимает UltimateResourceFallbackLocation для указания расположения где ResourceManager должен извлекать резервные ресурсы: основную или вспомогательную сборку. В следующем примере показано использование атрибута. Для конечного расположения запасных, код вызывает ResourceManager для поиска ресурсов в подкаталоге «de» каталога текущей выполняемой сборке.
[assembly: NeutralResourcesLanguageAttribute(
"de" , UltimateResourceFallbackLocation.Satellite)]