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

Post on 05-Dec-2014

1.770 Views

Category:

Education

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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 Экспертиза готовности продукта к локализации Интернационализация и локализация корпоративных

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

О компании

Вопросы?

top related