Upload
sqalab
View
1.775
Download
5
Embed Size (px)
DESCRIPTION
Доклад Ярослава Зубца на конференции Application Developer Days-4. г.Минск 13 декабря 2013
Citation preview
Зубец Ярослав
Softengi, Киев
Современный подход к локализации на примере одного проекта
О докладчике
Зубец Ярослав
Team Lead, Softengi,
Украина, Киев
7 лет опыта разработки .NET приложений
MCPD Web Developer
Глобализация
Глобализация — процесс , всемирной экономической
, политической культурной и .религиозной интеграции
ГлобализацияПО— процесс многократной
локализации на большое количество языков для
целевых групп различных .стран и культур
I18n Интернационализа� ция (internationalization)
технологические приёмы разработки, упрощающие адаптацию продукта (такого как программное или аппаратное обеспечение) к языковым и культурным особенностям региона (регионов), отличного от того, в котором разрабатывался продукт.
L10n Локализа� ция (localization)
процесс адаптации программного обеспечения к культуре какой-либо страны. Как частность — перевод пользовательского интерфейса, документации и сопутствующих файлов программного обеспечения с одного языка на другой.
Исходные данные
Проект:
21 подсистема
Основные технологии:
ASP.Net (C#), XML/HTML/JavaScript, DB MS SQL Server
Файлы:
C# (*.cs) ~ 6000
SQL (stored procedures and functions) ~2500
Pages (aspx, html) ~ 600
JavaScript ~300
Срок выполнения: ~ 12 месяцев
Что предстоит сделать
1. Интернационализировать БД
2. Интернационализировать Business уровнь (.NET)
3. Интернационализировать UI
4. Сформировать материалы для переводчиков
5. Локализировать
Ручной подход
Разделение кода по разработчикам и выполнение ручного вынесения ресурсов
Доступные ресурсы на проекте:
5 разработчиков, 2 архитектора, 5-7 тестировщиков
Проблемы подхода
• Огромное количество багов
- человеческий фактор
• Наличие дубликатов- отсутствие анализа при вынесении ресурсов
• Трудности с отслеживанием объема работ
• Проблемы «долокализации» новой функциональности
Результаты
Срок выполнения – 1.5 года (estimate – 1год) Большой объем тестирования Перенос релиза на неопределенный срок
Второй шанс Автоматизированный подход
Основные цели:
- качественный анализ с целью определения литералов, которые необходимо локализировать
- максимальное уменьшение ручной работы
- сокращение временных затрат
Шаг 1. Нахождение всех литералов для локализации
Тип файла 3rd party library
JS AjaxMin
CS NRefactory
HTML Html Agility Pack
SQL Microsoft ScriptDom
Покрывают 97% литералов приложения
Использование парсеров
Объем локализации
Всего литералов ~ 200.000
91%
9%
Литералы, неотображаемые на UIЛитералы, подлежащие локализации
Проблемы
Механизм отделения строк без дополнительной обработки не работает!
Нужно найти способ определения ненужных литералов
Шаг 2. Фильтрация по простым правилам
• По файлу- автогенерируемые (*.design.cs)
- 3rd party libraries
• По содержимому- только цифры
- пустые строки
- символы не из алфавита
- идентификаторы
Примеры:
item.SetAttribute(ATTRIBUTE_NAME, field.IsPredefined ? "1" : "0");
_defaultSeparator = ",";
var EMPTY_GUID = '00000000-0000-0000-0000-000000000000';
Результат применения простых правил
60%
40%
Объем локализации
Оставшиеся литералыОтсеянные литералы по простым правилам
Шаг 3. Фильтрация на основе контекста использования
Семантическое дерево:
Анализируемые значения
Функция в которую передается литерал
Порядковый номер аргумента
Анализируемые значения
Оператор присваивания
Название тэга и аттрибут (для HTML)
<a href="www.softengi.com">Узнать больше о компании</a>
Результат применения правил на основе
контекста
25%
35%
40%
Объем локализации
Оставшиеся литералыОтсеянные литералы по простым правиламОтсеянные литералы по контексту
Итоги
Количество литералов для пересмотра ~ 50.000 (25%)
Хранение ресурсов
Варианты: в одном файле разбивать по сборкам по подсистемам
Плохо разложенные
по ресурсам строки мешают
переводам.
Категоризация литералов по области использования
Область Описание Пример
Global общие тексты кнопокобщие тексты сообщенийобщие строки для всего сообщенияобщие валидационные сообщения
Save, Cancel Help"Value is required"
Module Литералы, общие для всех страниц и контролов в рамках одного модуля
DashboardTask
Local Специфичные литералы для одной страниц или контрола или вспомагательного класс и т.д.
"Auto Fill" (on one of Tasks pages)
Категоризация литералов по смысловому значению
Exceptions
Validations
Pages
Javascripts
Xmls
Entities
Enums
Структура приложения
Root /
Resources / (global scope)
Exceptions.resx
Validations.resx
Pages.resx
Citations /
Resources / (module scope)
Pages.resx
Validations.resx
JavaScripts.resx
Xstls.resx
CitationEdit.aspx
CitationContextMenu.xml
MainForm.aspx
Локализация объектов (entities)
Около 15% литералов для локализации – имена сущностей или их свойств.
Результаты категоризации
Именование ключей• Resources.Pages.Command_Delete• Resources.Exceptions.InvalidCastException.NameNotValid• Citations.Resources.Validations.NameRequired• Security.Resources.Pages.ExpireUser.aspx.cs.Command_Revoke• Task.DueDate
У каждого литерала своя область действия
Локализация динамических страниц
(aspx, ascx)
Стандартный подход ASP.NET не подошел
Свой собственный ASP.NET Expression:
Локализация статических файлов
Типы файлов: Html, JavaScript, Xslt, Xml
Универсальный подход - сделать статические файлы динамическими.
Производительность благодаря кэшированию не пострадала!
Синтаксис вставки
Аналогично динамическим страницам!
Localization StudioНазначение
Работа со строками, выводимыми на интерфейс приложения:
Оценка состояния интернационализации
Обработка строк, создание ресурсных файлов
Управление правилами фильтрации литералов
Подготовка материалов для переводчиков
Управление переводами для разных культур.
Localization Studio
Дополнительные возможности
Для разработчиков• поиск литералов• нахождение дубликатов (для уменьшения стоимости переводов)• статистика по литералам
Для переводчиков• Импорт, экспорт ресурсов в Excel• Получение информации о контексте ресурса
Автоматизированный подход (результаты)
Срок выполнения – 6 месяцев Уменьшение дублирования ресурсов Повышение согласованности переводов Прозрачная поддержка циклов будущих релизов Улучшение прозрачности кода Сокращение циклов тестирования Уменьшение количества багов Организация взаимодействия с переводчиками
Идеи развития
Подключение к continuous integration Поддержка других типов проектов Адаптация под Agile Оказание услуг локализации другим проектам/компаниям
Intecracy Group
Международный консорциум, работающий в сфере высоких технологий. Консорциум Intecracy Group объединяет 10 IT-компаний, каждая из которых достигла наивысшего уровня компетенции в своем виде деятельности.
Localization Service Экспертиза готовности продукта к локализации Интернационализация и локализация корпоративных
приложений Обеспечение работ по переводу Тестирование локализации приложений
О компании
Вопросы?