Локализация Windows Phone 8 приложений
Я давно разрабатываю на платформе Microsoft. Net под Windows и C#, а недавно заинтересовался разработкой под мобильную ОС Windows Phone 8.
Для начала разберёмся с локализацией строковых переменных внутри самого приложения, а затем уже сделаем локализацию для названия приложения в списке программ и заголовок тайла для рабочего стола.
Для успешной локализации приложения важно отделить строковые ресурсы, зависящие от языка пользователя, от программного кода. Обычно для этого выносят локализуемые строки с таблицу файла ресурсов, а затем в XAML коде заменяют их на байндинги (bindings), а в простом коде используют ссылки на соответствующие ресурсы.
Исходным файлом для локализуемых строк является AppResources.resx, находящийся в папке Resources в проекте приложения. Он служит для хранения строковых значений для нейтрального языка приложения, которое задаётся в свойствах приложения (обычно это английский язык, но может быть и любым другим).
Для каждого языка (культуры), который поддерживает ваше приложение, создаётся отдельный ресурсный файл, ключи строк которого совпадают с нейтральным AppResources.resx, но их значения переведены на соответствующий язык. Эти файлы создаются когда вы добавляете поддерживаемую культуру в свойствах приложения и именуются с использованием кода этой культуры, например AppResources.
Итак, шаги по локализации приложения:
- В файле AppResources.resx создаём строки, которые необходимо отделить от кода и локализовать. Например, заголовки страниц, надписи на кнопках.
- Заменяем в XAML коде эти строки на выражения связывания вида
Здесь{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}
ApplicationTitle
— это ключ строкового ресурса, отвечающего за заголовок приложения. - Заменяем в коде приложения локализуемые строки на выражения вида
(гдеAppResources.NoTorchFound
NoTorchFound
— ключ строкового ресурса). - Билдим приложение, запускаем в эмуляторе или на реальном устройстве, проверяем, что все надписи отображаются корректно.
- Добавляем новые поддерживаемые языки. Для этого открываем страницу свойств приложения (Properties) и в списке поддерживаемых культур (Supported Culture) отмечаем галочками необходимые языки и культуры.
- Сохраняем проект. При этом Visual Studio сама создаёт необходимые файлы ресурсов для выбранных культур.
- В каждом локализованном файле ресурсов переводим значения строк на соответствующий язык.
- Билдим приложения, тестируем на эмуляторе или реальном устройстве.
Для локализации панели приложений (Application Bar
) необходимо создавать его из кода, поскольку XAML описание элементов ApplicationBarIconButton
и ApplicationBarMenuItem
не поддерживает динамического связывания для текста надписей. Пример из MSDN отлично это демонстрирует:
// Build a localized ApplicationBar
private void BuildLocalizedApplicationBar()
{
// Set the page's ApplicationBar to a new instance of ApplicationBar.
ApplicationBar = new ApplicationBar();
// Create a new button and set the text value to the localized string
// from AppResources.
ApplicationBarIconButton appBarButton =
new ApplicationBarIconButton(new
Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
appBarButton.Text = AppResources.AppBarButtonText;
ApplicationBar.Buttons.Add(appBarButton);
// Create a new menu item with the localized string from AppResources.
ApplicationBarMenuItem appBarMenuItem =
new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
ApplicationBar.MenuItems.Add(appBarMenuItem);
}
Вс, 20.01.2013