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

Preview:

DESCRIPTION

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

Citation preview

Михаил Галушко, Microsoft MVP

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

WinRT Apps

24 апреля 2014

Building Apps for Windows Phone 8.1 Jump Start

Building Windows Phone Store Apps using C# and XAML

Ключевые темы

Перспективы для разработчиковРазрабатываем Windows XAMLприложение с локализациейГлобализацияПеревод

Зачем локализировать свое приложение?

Доступность Windows Phone Store: 191 страна

Поддержка 54 языков

AfrikaansAlbanianArabicAzerbaijani (Latin)

BasqueBelarusianBulgarianCatalanChinese (Simplified)

Chinese (Traditional)

CroatianCzechDanishDutch

English (UK)

English (US)

EstonianFilipinoFinnishFrench (Canada)

French (France)

GalicianGermanGreekHausaHebrewHindiHungarian

26 языков добавлено в Windows Phone 8

IndonesianItalianJapaneseKazakhKoreanLatvianLithuanianMacedonianMalayNorwegian (Bokmål)

PersianPolishPortuguese (BR)

Portuguese (PT)

RomanianRussianSerbian (Latin)

SlovakSlovenianSpanish (Mexico)

Spanish (Spain)

SwedishTurkishUkrainianUzbek (Latin)

Vietnamese

50 languages supported in Windows Phone 8.0 4 языка добавлено в Windows Phone 8.1 Всего 54 языка

Приоритетные языки

Подробности: http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/06/21/tips-for-localizing-and-monetizing-your-app-for-windows-phone-users.aspx

ТОП языков по количеству пользователей (01 – 06.2013)

Поддерживают 8 языков

ТОП 15 приложений (WP7 & 8)

Если используете только английский – покрываете 25% пользователй. Вместе с китайским и испанским – увеличиваете покрытие до~60%, после добавления русского, итальянского, португальского и французского покрываете большинство пользователей.

Приоритетные регионы

Подробности: http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/06/21/tips-for-localizing-and-monetizing-your-app-for-windows-phone-users.aspx

Количество загрузок по регионам (01 – 06.2013) 12 из ТОП 15 приложений

доступны в более чем 187 странах.

Китай и Латинская Америка

скачивает в 2 раза больше, чем США

Улучшения для пользователя: поддержка языков

Панель управления языкамиДобавление языков на устройство

Все 54 языка предустановлены на телефонМожем задать список языков и отсортировать по приоритетностиЯзык определяется по регионуДополнительные данные по выбранным языкам будут скачены автоматически

Демо:Настройки языка и регионав Windows Phone 8.1

Разработка приложения с локализацией

Определение кода языкаПользователи указывают список языков в настройках устройстваРазработчик указывает список поддерживаемых языковЯзык указывается формате BCP-47Поддерживаются стандартные форматы (“en” – English) и региональные (“en-US”, “en-GB”, “en-HK”)

Windows определяет язык по совпадениюнастроек пользователя и разработчикаНапример, для значения “en-US” перебор идет в порядке:“en-US”, “en”, “en-GB” и тдЕсли не найдено совпадений – выбирается язык по-умолчанию

Отдельные локализации для каждого языка

<TextBlock x:Uid="Greeting" Text="" />

Используем ресурсы в коде:

Используем ресурсы в XAML:

var loader = new

Windows.ApplicationModel.Resources.ResourceLoader();

var string = loader.GetString('Farewell');

Локализация манифеста приложенияВы также можете локализировать поля в манифесте: название, описание..Укажите значение ms-resource:TokenName, где TokenName – название в файле ресурсов

Работа с параметро-зависимыми ресурсами Windows поддерживает автоматическую загрузку ресурсовВ коде или разметке вы указываете: imagname.ext без указания дополнительных параметров

Source=“Images/logo.png” вместоSource=“Images/en-US/logo.scale-180_contrast-white.png

Читайте в MSDN: How to name resources using qualifiers http://msdn.microsoft.com/en-us/library/windows/apps/hh965324.aspx

Multilingual App Toolkit (MAT)

Используем для локализации с помощью WP SDKИнтегрируется с Visual Studio 2013 и Windows Phone SDK для Windows Phone Store приложений, поддерживает: автоматический перевод, управления файлами с переводом.Помогает отслеживать изменения в переводахПредоставляет UI для управления языкамиПоддерживает стандарт XLIFFИнтегрируется с Microsoft Translator для перевода

Демо:Multilingual App Toolkit (MAT)

Языковые наборы MicrosoftТерминологияПереводы UI для продуктов MicrosoftГайды по локализации

Глобализация

API для глобализации

Windows.Globalization.CalendarGetTimeZone()ChangeTimeZone()TimeZoneAsString()IsDaylightSavingTime()

Windows.Globalization.DateTimeFormattingFormat(DateTime.Now, "America/Guatemala“)

Форматируем дату и время

// Use the Windows.Globalization.DateTimeFormatting.DateTimeFormatter class // to display dates and times using basic formatters. var sdatefmt = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("shortdate"); var stimefmt = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("shorttime"); // Obtain the date that will be formatted. var dateToFormat = DateTime.Now; // Perform the actual formatting. var sdate = sdatefmt.Format(dateToFormat); var stime = stimefmt.Format(dateToFormat); // Results for display. var results = "Short Date: " + sdate + "\n" + "Short Time: " + stime;

Стандартные компоненты используют текущие настройки приложения. Вы также можете задать любой формат для отображения данных:

Форматируем числа и валюту

// Determine the current users default currency. var userCurrency = Windows.System.UserProfile.GlobalizationPreferences.Currencies[0]; // Number to be formatted. var fractionalNumber = 12345.67; // Currency formatter using the current users preference settings for number formatting. var userCurrencyFormat = new Windows.Globalization.NumberFormatting.CurrencyFormatter(userCurrency); var currencyDefault = userCurrencyFormat.Format(fractionalNumber);

// Create a formatter initialized to a specific currency. // In this case it's the Euro with the default number formatting for France. var currencyFormatEuroFR = new Windows.Globalization.NumberFormatting.CurrencyFormatter("EUR", new[] { "fr-FR" }, "FR"); var currencyEuroFR = currencyFormatEuroFR.Format(fractionalNumber);

// Results for display. var results = "Fixed number (" + fractionalNumber + ")\n" + "With user's default currency: " + currencyDefault + "\n" + "Formatted Euro (fr-FR defaults): " + currencyEuroFR;

Используйте NumberFormatting для форматирования

Используем календарь

Календарь отличается в зависимости от региона и языкаСтандартные компоненты поддерживают текущие настройки приложенияИспользуйте класс Windows.Globalization.Calendar для работы с датами

Modern Resource Technology (MRT)

Наборы MRT

MRT определяет пакет ресурсов и изображений для каждой платформы и набора настроекПакеты AppX: fatpacks или bundlesFatpacks: содержит все варианты ресурсов (как XAP)Bundles: содержит только пакет ресурсов для текущих настроек пользователя

ПреимуществаПользователь скачивает только необходимый пакет ресурсовПакет занимает меньше места

Доп инфо: см. сессию 21: Подготовка к публикации приложения

The information contained in this document represents the current view of Microsoft Corp. on the issues discussed as of the date of publication. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information presented after the date of publication. This guide is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS DOCUMENT. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form, by any means (electronic, mechanical, photocopying, recording or otherwise), or for any purpose, without the express written permission of Microsoft. Microsoft may have patents, patent applications, trademarks, copyrights or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights or other intellectual property. The example companies, organizations, products, domain names, email addresses, logos, people, places, and events depicted herein are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, place, or event is intended or should be inferred.

Recommended