«Локализатор исходного кода» предназначен для локализации программных продуктов путем изменения их исходных кодов без предварительной подготовки.
Программа может быть использована при разработке программного обеспечения на серверах сборки, для автоматической локализации исходного кода, но она может также применяться и на рабочих компьютерах пользователей для проверки орфографии в исходных кодах, текстовых файлах, буфере обмена и словарях переводов.
Специальная версия программы позволяет проводить обфускацию исходного кода.


 

среда, 29 октября 2014 г.

Поддержка формата XML на примере ResX

Программа локализации поддерживает ряд популярных текстовых форматов (VB,Delphi,INI,..) для работы с которыми был разработан специальный набор текстовых элементов, основанных на регулярных выражениях, для обработки структурированных текстовых данных, например, для описания синтаксиса Delphi. Специальные элементы позволяет не только выделить текст для локализации, но и производить различные действия над элементами, например, их объединение или реструктуризацию, см. рисунки - «до» и «после» оптимизации...


С помощью регулярных выражений можно обрабатывать и XML-файлы, но есть ряд ограничений по работе с ними.

Для полноценной работ с XML-файлами добавил поддержку XML-DOM, а для описания элементов XML для форматов ResX и др., вместо самостоятельно разработанных элементов описания выбора XML-элементов, воспользовался возможностью XPath.

Фрагмент исходного ResX:
  <data name="button" xml:space="preserve">
    <value>Test</value>
  </data>

Фрагмент конфигурации описания обработки формата XRes:
[file.type:resources.resx]
usefunction=readxmlelements
xmlelement= xpath=/root/data/value  value-tag=../value context-attr:xpath=../../data context-attr:attr=name


т.е. для xmlelement указывается основной элемент (xpath) и относительно него рассчитывается путь к текстовому элементу для локализации/проверки (value-...) и контексту (context-...).

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

Для получения текста контекста из тега (VB.NET):
tempctxt = tempxmlnode.SelectSingleNode(context_tag, xmlnamespace).InnerText

Для получения текста контекста из атрибута (VB.NET):
tempctxt = tempxmlnode.SelectSingleNode(context_attr_xpath, tempxmlnamespace).Attributes.GetNamedItem(context_attr_attr).InnerText

В данном случае немного «перехитрил» себя, указав переводимый элемент и пути от него с обращением к его предку и «обратно» к нему же для value, но это сделано для надежности связки data/value, а также для единообразия с описанием других, более сложных, xml-форматов.

Примечание: функционал доступен с версии 0.14.

Комментариев нет:

Отправить комментарий