Опубликован: 02.08.2013 | Доступ: свободный | Студентов: 468 / 15 | Длительность: 18:38:00
Специальности: Программист
Самостоятельная работа 19:

Локализация и глобализация приложений

Пример локализации приложения

Используя ресурсы, определенные в файлах ресурсов для различных языков, мы можем, используя систему привязки данных, задавать локализованные ресурсы для необходимых свойств элементов в XAML-файлах. Кроме того, мы можем обращаться к локализованным ресурсом (которые подбираются автоматически в зависимости от настроек телефона) в C#-коде.

Здесь мы рассмотрим модифицированный пример "Globalization Sample" ("Пример глобализации"), http://code.msdn.microsoft.com/Globalization-Sample-a2237b7a. Он, рис. 27.2, помимо демонстрации кода для глобализации приложения, содержит пример локализации на несколько языков. Приложение изначально подготовлено для Windows Phone 7, проведено преобразование его к проекту для Windows Phone 8 – этим объясняется некоторые отличия в структуре проекта от проекта, созданного изначально для Windows Phone 8.

Проект приложения, демонстрирующего локализацию и глобализацию

увеличить изображение
Рис. 53.2. Проект приложения, демонстрирующего локализацию и глобализацию

В файле App.xaml (как в данном проекте, так и в проектах, создаваемых по шаблонам, есть объявление ресурса приложения, который используется для доступа к локализованным строкам (Листинг 53.1).

<Application.Resources>
        <local:LocalizedStrings xmlns:local="clr-namespace:sdkGlobalizationCS" 
x:Key="LocalizedStrings" />
</Application.Resources>
Листинг 53.1. Ресурс в файле App.xaml для локализации

Кроме того, в проекте располагается файл кода LocalizedString.cs – он нужен для работы системы локализации, предоставляя доступ к ресурсам приложения, Листинг 53.2.

namespace sdkGlobalizationCS
{
    public class LocalizedStrings
    {
        public LocalizedStrings()
        {
        }

        private static sdkGlobalizationCS.AppResources localizedResources = 
new sdkGlobalizationCS.AppResources();

        public sdkGlobalizationCS.AppResources LocalizedResources { get { return localizedResources; } }
    }
}
Листинг 53.2. Код файла LocalizedString.cs

В Листинге 53.3 приведен фрагмент кода файла MainPage.xaml. Он демонстрирует ссылки на локализованные ресурсы приложения при определении свойств элементов управления. При этом ссылки разрешаются и в режиме разработки (может потребоваться перестроение проекта), что позволяет видеть в окне конструктора экраны приложения, близкие к тем, которые будут выводиться при его испытании на эмуляторе или на реальном устройстве.

<!--TitlePanel contains the name of the application and page title-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0"
 Margin="12,17,0,28">
            <TextBlock Text="{Binding Path=LocalizedResources.AppTitle, 
Source={StaticResource LocalizedStrings}}" x:Name="textBlockPageTitle" 
FontSize="24" HorizontalAlignment="Center" />
        </StackPanel>
<Button x:Name="btnMessage" Content="{Binding Path=LocalizedResources.ButtonMsgText, 
Source={StaticResource LocalizedStrings}}"  
Grid.Column="1" HorizontalAlignment="Left" 
Margin="48,609,-1,0" VerticalAlignment="Top" 
Width="177" Click="btnMessage_Click"/>
Листинг 53.3. Фрагмент кода файла MainPage.xaml

Обратите внимание на то, что в приведенных фрагментах кода для задания текста, который выводится в заголовочной части окна приложения и текста, который представляет собой подпись к кнопке используется следующая запись:

Text="{Binding Path=LocalizedResources.AppTitle, 
Source={StaticResource LocalizedStrings}}"
Content="{Binding Path=LocalizedResources.ButtonMsgText, 
Source={StaticResource LocalizedStrings}}"

Text и Content – имена свойств элементов управления.

LocalizedStrings – имя ресурса, определенное в App.xaml

LocalizedResources.AppTitle и LocalizedResources.ButtonMsgText – это имена ресурсов, заданные в файлах ресурсов. В частности, LocalizedResourcesобъект, который определен в LocalizedStrings.cs, а AppTitle и ButtonMsgText – имена ресурсов в файлах ресурсов (рис. 27.3).

Один из файлов ресурсов

увеличить изображение
Рис. 53.3. Один из файлов ресурсов