diff -r 577118ebd179 -r c89fc366bebd svghmi/i18n.ysl2 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/svghmi/i18n.ysl2 Thu Sep 02 21:36:29 2021 +0200 @@ -0,0 +1,54 @@ +// i18n.ysl2 + + +template "svg:tspan", mode="extract_i18n" { + if "string-length(.) > 0" line { + value "."; + } +} + +template "svg:text", mode="extract_i18n" { + msg { + attrib "id" value "@id"; + attrib "label" value "substring(@inkscape:label,2)"; + apply "svg:*", mode="extract_i18n"; + } +} + +const "translatable_texts", "//svg:text[starts-with(@inkscape:label, '_')]"; +const "translatable_strings" apply "$translatable_texts", mode="extract_i18n"; + +emit "preamble:i18n" { + const "translations", "ns:GetTranslations($translatable_strings)"; + > var langs = [ ["Default", "C"], + foreach "$translations/langs/lang" { + > ["«.»","«@code»"] + if "position()!=last()" > , + } + | ]; + | var translations = [ + foreach "$translatable_texts" { + const "n","position()"; + const "current_id","@id"; + const "text_unlinked_uses","$result_svg_ns//svg:text[@original = $current_id]/@id"; + > [[ + foreach "@id | $text_unlinked_uses" { + > id("«.»") + if "position()!=last()" > , + } + > ],[ + foreach "$translations/messages/msgid[$n]/msg" { + > " + foreach "line" { + value "."; + if "position()!=last()" > \\\\n + } + > " + if "position()!=last()" > , + } + > ]] + if "position()!=last()" > , + > \n + } + | ] +}