37
Зубец Ярослав Softengi, Киев Современный подход к локализации на примере одного проекта

Современный подход к локализации на примере одного проекта

  • Upload
    sqalab

  • View
    1.775

  • Download
    5

Embed Size (px)

DESCRIPTION

Доклад Ярослава Зубца на конференции Application Developer Days-4. г.Минск 13 декабря 2013

Citation preview

Page 1: Современный подход к локализации на примере одного проекта

Зубец Ярослав

Softengi, Киев

Современный подход к локализации на примере одного проекта

Page 2: Современный подход к локализации на примере одного проекта

О докладчике

Зубец Ярослав

Team Lead, Softengi,

Украина, Киев

7 лет опыта разработки .NET приложений

MCPD Web Developer

Page 3: Современный подход к локализации на примере одного проекта

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

Глобализация — процесс , всемирной экономической

, политической культурной и .религиозной интеграции

ГлобализацияПО— процесс многократной

локализации на большое количество языков для

целевых групп различных .стран и культур

Page 4: Современный подход к локализации на примере одного проекта

I18n Интернационализа� ция (internationalization)

технологические приёмы разработки, упрощающие адаптацию продукта (такого как программное или аппаратное обеспечение) к языковым и культурным особенностям региона (регионов), отличного от того, в котором разрабатывался продукт.

L10n Локализа� ция (localization)

процесс адаптации программного обеспечения к культуре какой-либо страны. Как частность — перевод пользовательского интерфейса, документации и сопутствующих файлов программного обеспечения с одного языка на другой.

Page 5: Современный подход к локализации на примере одного проекта

Исходные данные

Проект:

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 месяцев

Page 6: Современный подход к локализации на примере одного проекта

Что предстоит сделать

1. Интернационализировать БД

2. Интернационализировать Business уровнь (.NET)

3. Интернационализировать UI

4. Сформировать материалы для переводчиков

5. Локализировать

Page 7: Современный подход к локализации на примере одного проекта

Ручной подход

Разделение кода по разработчикам и выполнение ручного вынесения ресурсов

Доступные ресурсы на проекте:

5 разработчиков, 2 архитектора, 5-7 тестировщиков

Page 8: Современный подход к локализации на примере одного проекта

Проблемы подхода

• Огромное количество багов

- человеческий фактор

• Наличие дубликатов- отсутствие анализа при вынесении ресурсов

• Трудности с отслеживанием объема работ

• Проблемы «долокализации» новой функциональности

Page 9: Современный подход к локализации на примере одного проекта

Результаты

Срок выполнения – 1.5 года (estimate – 1год) Большой объем тестирования Перенос релиза на неопределенный срок

Page 10: Современный подход к локализации на примере одного проекта

Второй шанс Автоматизированный подход

Основные цели:

- качественный анализ с целью определения литералов, которые необходимо локализировать

- максимальное уменьшение ручной работы

- сокращение временных затрат

Page 11: Современный подход к локализации на примере одного проекта

Шаг 1. Нахождение всех литералов для локализации

Тип файла 3rd party library

JS AjaxMin

CS NRefactory

HTML Html Agility Pack

SQL Microsoft ScriptDom

Покрывают 97% литералов приложения

Использование парсеров

Page 12: Современный подход к локализации на примере одного проекта

Объем локализации

Всего литералов ~ 200.000

91%

9%

Литералы, неотображаемые на UIЛитералы, подлежащие локализации

Page 13: Современный подход к локализации на примере одного проекта

Проблемы

Механизм отделения строк без дополнительной обработки не работает!

Нужно найти способ определения ненужных литералов

Page 14: Современный подход к локализации на примере одного проекта

Шаг 2. Фильтрация по простым правилам

• По файлу- автогенерируемые (*.design.cs)

- 3rd party libraries

• По содержимому- только цифры

- пустые строки

- символы не из алфавита

- идентификаторы

Примеры:

item.SetAttribute(ATTRIBUTE_NAME, field.IsPredefined ? "1" : "0");

_defaultSeparator = ",";

var EMPTY_GUID = '00000000-0000-0000-0000-000000000000';

Page 15: Современный подход к локализации на примере одного проекта

Результат применения простых правил

60%

40%

Объем локализации

Оставшиеся литералыОтсеянные литералы по простым правилам

Page 16: Современный подход к локализации на примере одного проекта

Шаг 3. Фильтрация на основе контекста использования

Семантическое дерево:

Page 17: Современный подход к локализации на примере одного проекта

Анализируемые значения

Функция в которую передается литерал

Порядковый номер аргумента

Page 18: Современный подход к локализации на примере одного проекта

Анализируемые значения

Оператор присваивания

Название тэга и аттрибут (для HTML)

<a href="www.softengi.com">Узнать больше о компании</a>

Page 19: Современный подход к локализации на примере одного проекта

Результат применения правил на основе

контекста

25%

35%

40%

Объем локализации

Оставшиеся литералыОтсеянные литералы по простым правиламОтсеянные литералы по контексту

Page 20: Современный подход к локализации на примере одного проекта

Итоги

Количество литералов для пересмотра ~ 50.000 (25%)

Page 21: Современный подход к локализации на примере одного проекта

Хранение ресурсов

Варианты: в одном файле разбивать по сборкам по подсистемам

Плохо разложенные

по ресурсам строки мешают

переводам.

Page 22: Современный подход к локализации на примере одного проекта

Категоризация литералов по области использования

Область Описание Пример

Global общие тексты кнопокобщие тексты сообщенийобщие строки для всего сообщенияобщие валидационные сообщения

Save, Cancel Help"Value is required"

Module Литералы, общие для всех страниц и контролов в рамках одного модуля

DashboardTask

Local Специфичные литералы для одной страниц или контрола или вспомагательного класс и т.д.

"Auto Fill" (on one of Tasks pages)

Page 23: Современный подход к локализации на примере одного проекта

Категоризация литералов по смысловому значению

Exceptions

Validations

Pages

Javascripts

Xmls

Entities

Enums

Page 24: Современный подход к локализации на примере одного проекта

Структура приложения

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

Page 25: Современный подход к локализации на примере одного проекта

Локализация объектов (entities)

Около 15% литералов для локализации – имена сущностей или их свойств.

Page 26: Современный подход к локализации на примере одного проекта

Результаты категоризации

Именование ключей• Resources.Pages.Command_Delete• Resources.Exceptions.InvalidCastException.NameNotValid• Citations.Resources.Validations.NameRequired• Security.Resources.Pages.ExpireUser.aspx.cs.Command_Revoke• Task.DueDate

У каждого литерала своя область действия

Page 27: Современный подход к локализации на примере одного проекта

Локализация динамических страниц

(aspx, ascx)

Стандартный подход ASP.NET не подошел

Свой собственный ASP.NET Expression:

Page 28: Современный подход к локализации на примере одного проекта

Локализация статических файлов

Типы файлов: Html, JavaScript, Xslt, Xml

Универсальный подход - сделать статические файлы динамическими.

Производительность благодаря кэшированию не пострадала!

Page 29: Современный подход к локализации на примере одного проекта

Синтаксис вставки

Аналогично динамическим страницам!

Page 30: Современный подход к локализации на примере одного проекта
Page 31: Современный подход к локализации на примере одного проекта

Localization StudioНазначение

Работа со строками, выводимыми на интерфейс приложения:

Оценка состояния интернационализации

Обработка строк, создание ресурсных файлов

Управление правилами фильтрации литералов

Подготовка материалов для переводчиков

Управление переводами для разных культур.

Page 32: Современный подход к локализации на примере одного проекта

Localization Studio

Page 33: Современный подход к локализации на примере одного проекта

Дополнительные возможности

Для разработчиков• поиск литералов• нахождение дубликатов (для уменьшения стоимости переводов)• статистика по литералам

Для переводчиков• Импорт, экспорт ресурсов в Excel• Получение информации о контексте ресурса

Page 34: Современный подход к локализации на примере одного проекта

Автоматизированный подход (результаты)

Срок выполнения – 6 месяцев Уменьшение дублирования ресурсов Повышение согласованности переводов Прозрачная поддержка циклов будущих релизов Улучшение прозрачности кода Сокращение циклов тестирования Уменьшение количества багов Организация взаимодействия с переводчиками

Page 35: Современный подход к локализации на примере одного проекта

Идеи развития

Подключение к continuous integration Поддержка других типов проектов Адаптация под Agile Оказание услуг локализации другим проектам/компаниям

Page 36: Современный подход к локализации на примере одного проекта

Intecracy Group

Международный консорциум, работающий в сфере высоких технологий. Консорциум Intecracy Group объединяет 10 IT-компаний, каждая из которых достигла наивысшего уровня компетенции в своем виде деятельности.

Localization Service Экспертиза готовности продукта к локализации Интернационализация и локализация корпоративных

приложений Обеспечение работ по переводу Тестирование локализации приложений

О компании

Page 37: Современный подход к локализации на примере одного проекта

Вопросы?