Утилита импорта строк локализации в среду разработки

9 0

Локализация интерфейса пользователя сложный процесс. Процесс становится ещё сложнее, если языков больше двух. О том, как добавить новый язык, можно почитать в статье https://club.directum.ru/post/162243 в разделе Локализация системы.

Задача

Сложность заключается в том, что тексты на другом языке желательно заполнять сразу в среде разработки, например, как только создал поле, диалог, вывод сообщения для пользователя. Если делать локализацию спустя какое-то время, то трудозатраты на это увеличиваются.

Но не всегда удается в проектных решениях заранее предусмотреть перевод для всех полей, диалогов, предупреждений и т.п.

При этом перевод профессионального переводчика получится лучше, чем у разработчика с помощью онлайн-сервиса.

Отсюда вытекает следующая сложность: передача строк локализации переводчику.

Разработчику нужно заходить в каждый тип документа, тип справочника, пройтись по всем полям, по заданиям, по результатам выполнения, по ресурсам модуля, ресурсам типов сущностей, ресурсам решения. И поштучно копировать каждую строку локализации, например, в excel-файл для последующего перевода. Также не стоит забывать, что при таком сборе строк локализации есть большая вероятность что-то пропустить.

После перевода строки локализации нужно обратно добавить в среду разработки. Это очередная сложность. Из excel-файла нужно вручную поштучно копировать в нужный тип сущности, в ресурсы решения, ресурсы модуля и другие объекты.

Решение

Облегчить процесс передачи строк локализации на перевод и обратную загрузку после перевода призвана утилита импорта строк локализации. Утилита выгружает локализованные строки в excel-файл и затем после перевода позволяет загрузить локализованные строки обратно в среду разработки.

Утилита разработана на C# и использует библиотеку OpenXML для работы с excel-файлами.

Принцип работы утилиты

 

1. Экспорт.

Разработчик указывает путь на папку локального рабочего репозитория в поле "Папка со строками локализации" и нажимает кнопку "Экспорт". Утилита осуществляет поиск всех resx-файлов в указанной папке и выгружает строки локализации в excel-файл. В результате работы утилиты получаем следующий excel-файл.

2. Передача на перевод.

Выгруженный excel-файл передается переводчику.

3. Валидация.

После перевода заполненный excel-файл необходимо импортировать в resx-файлы.

  1. Разработчик закрывает среду разработки.
  2. Разработчик запускает утилиту, заполняет поле "Папка со строками локализации", "Excel файл для импорта " и нажимает кнопку "Импорт"
  3. Далее происходит валидация строк локализации. В случае наличия ошибок импорт не запускается, а ошибки записываются в лог-файл, с указанием описания ошибки и номером строки в excel-файле.
Примеры ошибок:
1. Проверяется наличие подстановок во всех языках. 
Текст ошибки: Строка {0}. Найдено несоответствие форматов номеров в en, ru, kk строках. Проверьте наличие подстановок во всех языках.
2. Проверяется, чтобы Дополнительная информация совпадала во всех языках. 
Текст ошибки: Строка {0}. В дополнительной информации, всё что в квадратных скобках нельзя переводить. Там должны быть имена свойств сущности.
3. Проверка наличия resx-файла. 
Текст ошибки: В выбранной папке отсутствует resx файл "{0}". Импорт невозможен

4. Импорт.

Если ошибок нет, то производится импорт. Загрузка происходит для всех заполненных языков.

5. Проверка.

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

Итоги

Эту утилиту мы в компании Армадок применяли на нескольких проектах и шаблонных решениях в Казахстане и сэкономили немало времени при относительно небольших затратах на её разработку.

Отдельно напомню, что по рекомендациям необходимо все диалоги, предупреждения, ошибки и другие подобные объекты реализовывать через строки локализации. Иначе утилита не сможет помочь при локализации интерфейса пользователя, например, в случае добавления нового языка.

9
Авторизуйтесь, чтобы оценить материал.
3
Пока комментариев нет.

Авторизуйтесь, чтобы написать комментарий