Современный подход к локализации
на примере одного проекта
Зубец Ярослав
Softengi, Киев
О докладчике
Зубец Ярослав
Team Lead, Softengi,
Украина, Киев
7 лет опыта разработки .NET приложений
MCPD Web Developer
Глобализация
Глобализация — процесс
всемирной экономической,
политической, культурной и
религиозной интеграции.
Глобализац...
I18n
ция (internationalization)
технологические приѐмы разработки, упрощающие адаптацию
продукта (такого как программное и...
Исходные данные
Проект:
21 подсистема
Основные технологии:
ASP.Net (C#), XML/HTML/JavaScript, DB MS SQL Server
Файлы:
C# (...
Что предстоит сделать
1.
2.
3.
4.
5.

Интернационализировать БД
Интернационализировать Business уровнь (.NET)
Интернациона...
Ручной подход
 Разделение кода по разработчикам и выполнение ручного
вынесения ресурсов

 Доступные ресурсы на проекте:
...
Проблемы подхода
• Огромное количество багов

- человеческий фактор
• Наличие дубликатов
- отсутствие анализа при вынесени...
Результаты
 Срок выполнения – 1.5 года (estimate – 1год)
 Большой объем тестирования
 Перенос релиза на неопределенный ...
Второй шанс
Автоматизированный подход
Основные цели:
- качественный анализ с целью определения литералов, которые
необходи...
Шаг 1. Нахождение всех
литералов для локализации
Использование парсеров
Тип файла

3rd party library

JS

AjaxMin

CS

NRe...
Объем локализации
Литералы, неотображаемые на UI
Литералы, подлежащие локализации
9%

91%

Всего литералов ~ 200.000
Проблемы
 Механизм отделения строк без дополнительной обработки
не работает!
 Нужно найти способ определения ненужных ли...
Шаг 2. Фильтрация по
простым правилам
•

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

•

По содержимом...
Результат применения
простых правил
Объем локализации

Оставшиеся
литералы

40%

60%

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

Семантическое дерево:
Анализируемые значения
Функция в которую передается литерал

Порядковый номер аргумента
Анализируемые значения
Оператор присваивания

Название тэга и аттрибут (для HTML)
<a href="www.softengi.com">Узнать больше...
Результат применения
правил на основе контекста
Объем локализации

25%
40%

35%

Оставшиеся
литералы
Отсеянные
литералы по...
Итоги
 Количество литералов для пересмотра ~ 50.000 (25%)
Хранение ресурсов
Варианты:
 в одном файле
 разбивать по сборкам
 по подсистемам

Плохо разложенные
по ресурсам строки ...
Категоризация литералов по
области использования
Область

Описание

Пример

Global

общие тексты кнопок
общие тексты сообщ...
Категоризация литералов
по смысловому значению
 Exceptions
 Validations
 Pages
 Javascripts
 Xmls
 Entities
 Enums
Структура приложения
Root /
Resources / (global scope)
Exceptions.resx
Validations.resx
Pages.resx
Citations /
Resources /...
Локализация объектов
(entities)
 Около 15% литералов для локализации – имена сущностей
или их свойств.
Результаты категоризации
 Именование ключей
•
•
•
•
•

Resources.Pages.Command_Delete
Resources.Exceptions.InvalidCastExc...
Локализация динамических
страниц (aspx, ascx)
Стандартный подход ASP.NET не подошел 

Свой собственный ASP.NET Expression...
Локализация статических
файлов
Типы файлов: Html, JavaScript, Xslt, Xml
 Универсальный подход - сделать статические файлы...
Синтаксис вставки
 Аналогично динамическим страницам!
Localization Studio
Назначение
Работа со строками, выводимыми на интерфейс приложения:

 Оценка состояния интернационализ...
Localization Studio
Дополнительные
возможности
Для разработчиков
• поиск литералов
• нахождение дубликатов (для уменьшения стоимости переводов...
Автоматизированный подход
(результаты)









Срок выполнения – 6 месяцев
Уменьшение дублирования ресурсов
Повыш...
Идеи развития





Подключение к continuous integration
Поддержка других типов проектов
Адаптация под Agile
Оказание у...
О компании
Intecracy Group
Международный консорциум, работающий в сфере высоких
технологий. Консорциум Intecracy Group объ...
Вопросы?
Современный подход к локализации на примере одного проекта
Upcoming SlideShare
Loading in...5
×

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

1,740
-1

Published on

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

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,740
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Есть важное различие между интернационализацией и локализацией. Интернационализация — это адаптация продукта для потенциального использования практически в любом месте, в то время как локализация — это добавление специальных функций для использования в некотором определённом регионе. Интернационализация производится на начальных этапах разработки, в то время как локализация — для каждого целевого языка.
  • Система, предоставляющая клиентам по всему миру возможность отслеживать выбросы, создавать отчетность и соблюдать стандарты охраны окружающей среды на основе SaaS модели.
  • Рассказать устно
  • Определение литералов по регулярным выражениям
  • Добавить слайд с фото синтаксического дерева
  • Объяснить откуда 9 процентов
  • Нарисовать проценты
  • Усно расказать какие типы хранения есть. resx
  • Количество regressionтестирования с 6 до 1
  • Современный подход к локализации на примере одного проекта

    1. 1. Современный подход к локализации на примере одного проекта Зубец Ярослав Softengi, Киев
    2. 2. О докладчике Зубец Ярослав Team Lead, Softengi, Украина, Киев 7 лет опыта разработки .NET приложений MCPD Web Developer
    3. 3. Глобализация Глобализация — процесс всемирной экономической, политической, культурной и религиозной интеграции. Глобализация ПО— процесс многократной локализации на большое количество языков для целевых групп различных стран и культур.
    4. 4. I18n ция (internationalization) технологические приѐмы разработки, упрощающие адаптацию продукта (такого как программное или аппаратное обеспечение) к языковым и культурным особенностям региона (регионов), отличного от того, в котором разрабатывался продукт. L10n ция (localization) процесс адаптации программного обеспечения к культуре какой-либо страны. Как частность — перевод пользовательского интерфейса, документации и сопутствующих файлов программного обеспечения с одного языка на другой.
    5. 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 месяцев
    6. 6. Что предстоит сделать 1. 2. 3. 4. 5. Интернационализировать БД Интернационализировать Business уровнь (.NET) Интернационализировать UI Сформировать материалы для переводчиков Локализировать
    7. 7. Ручной подход  Разделение кода по разработчикам и выполнение ручного вынесения ресурсов  Доступные ресурсы на проекте: 5 разработчиков, 2 архитектора, 5-7 тестировщиков
    8. 8. Проблемы подхода • Огромное количество багов - человеческий фактор • Наличие дубликатов - отсутствие анализа при вынесении ресурсов • Трудности с отслеживанием объема работ • Проблемы «долокализации» новой функциональности
    9. 9. Результаты  Срок выполнения – 1.5 года (estimate – 1год)  Большой объем тестирования  Перенос релиза на неопределенный срок
    10. 10. Второй шанс Автоматизированный подход Основные цели: - качественный анализ с целью определения литералов, которые необходимо локализировать - максимальное уменьшение ручной работы - сокращение временных затрат
    11. 11. Шаг 1. Нахождение всех литералов для локализации Использование парсеров Тип файла 3rd party library JS AjaxMin CS NRefactory HTML Html Agility Pack SQL Microsoft ScriptDom Покрывают 97% литералов приложения
    12. 12. Объем локализации Литералы, неотображаемые на UI Литералы, подлежащие локализации 9% 91% Всего литералов ~ 200.000
    13. 13. Проблемы  Механизм отделения строк без дополнительной обработки не работает!  Нужно найти способ определения ненужных литералов
    14. 14. Шаг 2. Фильтрация по простым правилам • По файлу - автогенерируемые (*.design.cs) - 3rd party libraries • По содержимому - только цифры - пустые строки - символы не из алфавита - идентификаторы Примеры: item.SetAttribute(ATTRIBUTE_NAME, field.IsPredefined ? "1" : "0"); _defaultSeparator = ","; var EMPTY_GUID = '00000000-0000-0000-0000-000000000000';
    15. 15. Результат применения простых правил Объем локализации Оставшиеся литералы 40% 60% Отсеянные литералы по простым правилам
    16. 16. Шаг 3. Фильтрация на основе контекста использования Семантическое дерево:
    17. 17. Анализируемые значения Функция в которую передается литерал Порядковый номер аргумента
    18. 18. Анализируемые значения Оператор присваивания Название тэга и аттрибут (для HTML) <a href="www.softengi.com">Узнать больше о компании</a>
    19. 19. Результат применения правил на основе контекста Объем локализации 25% 40% 35% Оставшиеся литералы Отсеянные литералы по простым правилам Отсеянные литералы по контексту
    20. 20. Итоги  Количество литералов для пересмотра ~ 50.000 (25%)
    21. 21. Хранение ресурсов Варианты:  в одном файле  разбивать по сборкам  по подсистемам Плохо разложенные по ресурсам строки мешают переводам.
    22. 22. Категоризация литералов по области использования Область Описание Пример Global общие тексты кнопок общие тексты сообщений общие строки для всего сообщения общие валидационные сообщения Save, Cancel Help "Value is required" Module Литералы, общие для всех страниц и контролов в рамках одного модуля Dashboard Task Local Специфичные литералы для одной страниц или контрола или вспомагательного класс и т.д. "Auto Fill" (on one of Tasks pages)
    23. 23. Категоризация литералов по смысловому значению  Exceptions  Validations  Pages  Javascripts  Xmls  Entities  Enums
    24. 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
    25. 25. Локализация объектов (entities)  Около 15% литералов для локализации – имена сущностей или их свойств.
    26. 26. Результаты категоризации  Именование ключей • • • • • Resources.Pages.Command_Delete Resources.Exceptions.InvalidCastException.NameNotValid Citations.Resources.Validations.NameRequired Security.Resources.Pages.ExpireUser.aspx.cs.Command_Revoke Task.DueDate  У каждого литерала своя область действия
    27. 27. Локализация динамических страниц (aspx, ascx) Стандартный подход ASP.NET не подошел  Свой собственный ASP.NET Expression:
    28. 28. Локализация статических файлов Типы файлов: Html, JavaScript, Xslt, Xml  Универсальный подход - сделать статические файлы динамическими.  Производительность благодаря кэшированию не пострадала!
    29. 29. Синтаксис вставки  Аналогично динамическим страницам!
    30. 30. Localization Studio Назначение Работа со строками, выводимыми на интерфейс приложения:  Оценка состояния интернационализации  Обработка строк, создание ресурсных файлов  Управление правилами фильтрации литералов  Подготовка материалов для переводчиков  Управление переводами для разных культур.
    31. 31. Localization Studio
    32. 32. Дополнительные возможности Для разработчиков • поиск литералов • нахождение дубликатов (для уменьшения стоимости переводов) • статистика по литералам Для переводчиков • Импорт, экспорт ресурсов в Excel • Получение информации о контексте ресурса
    33. 33. Автоматизированный подход (результаты)         Срок выполнения – 6 месяцев Уменьшение дублирования ресурсов Повышение согласованности переводов Прозрачная поддержка циклов будущих релизов Улучшение прозрачности кода Сокращение циклов тестирования Уменьшение количества багов Организация взаимодействия с переводчиками
    34. 34. Идеи развития     Подключение к continuous integration Поддержка других типов проектов Адаптация под Agile Оказание услуг локализации другим проектам/компаниям
    35. 35. О компании Intecracy Group Международный консорциум, работающий в сфере высоких технологий. Консорциум Intecracy Group объединяет 10 ITкомпаний, каждая из которых достигла наивысшего уровня компетенции в своем виде деятельности. Localization Service     Экспертиза готовности продукта к локализации Интернационализация и локализация корпоративных приложений Обеспечение работ по переводу Тестирование локализации приложений
    36. 36. Вопросы?
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×