edouard@3108: // i18n.ysl2
edouard@3108: 
edouard@3108: 
edouard@3108: template "svg:tspan", mode="extract_i18n" {
edouard@3108:     if "string-length(.) > 0" line {
edouard@3108:         value ".";
edouard@3108:     }
edouard@3108: }
edouard@3108: 
edouard@3108: template "svg:text", mode="extract_i18n" {
edouard@3108:     msg {
edouard@3108:         attrib "id" value "@id";
Edouard@3112:         attrib "label" value "substring(@inkscape:label,2)";
edouard@3108:         apply "svg:*", mode="extract_i18n";
edouard@3108:     }
edouard@3108: }
edouard@3108: 
edouard@3108: const "translatable_texts", "//svg:text[starts-with(@inkscape:label, '_')]";
edouard@3108: const "translatable_strings" apply "$translatable_texts", mode="extract_i18n";
edouard@3108: 
edouard@3108: emit "preamble:i18n" {
edouard@3108:     const "translations", "ns:GetTranslations($translatable_strings)";
edouard@3144:     > var langs = [ ["Default", "C"],
Edouard@3116:     foreach "$translations/langs/lang" {
edouard@3144:         > ["«.»","«@code»"]
Edouard@3116:         if "position()!=last()" > ,
edouard@3108:     }
Edouard@3116:     | ];
Edouard@3116:     | var translations = [
Edouard@3116:     foreach "$translatable_texts" {
Edouard@3116:         const "n","position()";
edouard@3126:         const "current_id","@id";
edouard@3126:         const "text_unlinked_uses","$result_svg_ns//svg:text[@original = $current_id]/@id";
edouard@3126:     >   [[
edouard@3126:         foreach "@id | $text_unlinked_uses" {
edouard@3126:             > id("«.»")
edouard@3126:             if "position()!=last()" > ,
edouard@3126:         }
edouard@3126:     > ],[
Edouard@3116:         foreach "$translations/messages/msgid[$n]/msg" {
Edouard@3116:             > "
Edouard@3116:             foreach "line" {
Edouard@3116:                 value ".";
Edouard@3116:                 if "position()!=last()" > \\\\n
Edouard@3116:             }
Edouard@3116:             > "
Edouard@3116:             if "position()!=last()" > ,
Edouard@3116:         }
Edouard@3116:         > ]]
Edouard@3116:         if "position()!=last()" > ,
Edouard@3116:         > \n
Edouard@3116:     }
Edouard@3116:     | ]
edouard@3108: }