Программа локализации поддерживает ряд популярных текстовых форматов (VB,Delphi,INI,..) для работы с которыми был разработан специальный набор текстовых элементов, основанных на регулярных выражениях, для обработки структурированных текстовых данных, например, для описания синтаксиса Delphi. Специальные элементы позволяет не только выделить текст для локализации, но и производить различные действия над элементами, например, их объединение или реструктуризацию, см. рисунки - «до» и «после» оптимизации...
С помощью регулярных выражений можно обрабатывать и XML-файлы, но есть ряд ограничений по работе с ними.
Для полноценной работ с XML-файлами добавил поддержку XML-DOM, а для описания элементов XML для форматов ResX и др., вместо самостоятельно разработанных элементов описания выбора XML-элементов, воспользовался возможностью XPath.
Фрагмент исходного ResX:
Фрагмент конфигурации описания обработки формата 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.
С помощью регулярных выражений можно обрабатывать и 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
Для контекста, основанного на атрибутах, необходимо указать путь к тегу и название атрибута.
Для получения текста контекста из тега (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.
Комментариев нет:
Отправить комментарий