// 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 "@inkscape:label"; 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 translations = { foreach "$translations/*" { | "«local-name()»":{ /* TODO */ | }`if "position()!=last()" > ,` } | }; | }