[Koha-devel] [bug 6458]: need some help for a parsing problem in 'misc/translator/TTParser.pm'

Frère Sébastien Marie semarie-koha at latrappe.fr
Tue Jul 19 11:10:27 CEST 2011


Hi,

I have problem with bug 6458 (http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=6458).

I will resume the problem (as the bug report is "historical commented" and the problem not clearly pointed at the beginning):

Currently, the translation parser (use to apply po files) don't support template directive *in* tag. 

For example:
 <tagname attr1="value1" templateText attr2="value2" ...>

is interpreted like:
 <tagname attr1="value1" templateText="templateText" attr2="value2" ...>

This occurs rarely in templates, and generate a problem *only* when translation replacement occurs *also* in this tag.


Here a case not generating problem (in 'opac-user.tt'):
 <tr[% IF ( overdue ) %] class="overdue"[% END %]>

No problem, because a bad-parsed hash is not used, as the element contains no translated string, so the tag isn't rewrited [see 'tmpl_process3.pl': function 'text_replace_tag', rewrite occurs only if $translated_p]).



Here a case with problem (in 'sco/sco-main.tt'):
 <input type="button" value="Renew Item" [% UNLESS ( renew ) %] name="confirm"[% END %] class="renew" onclick="this.form.confirmed.value='1';this.form.submit();" />

TTParser read as:
 tagname=input
 attributes = {
   type = "button",
   value = "Renew Item",
   [% = "[%",
   unless = "UNLESS",
   %] = "%]",
   ...
 }

And as the value attribute is a translated string, this bad-parsed hash is used to rewrite the tag, resulting:
 <input value="Renouveler document" name="confirm" unless="UNLESS" %]="%]" renew="renew" end="END" )=")" type="button" onclick="this.form.confirmed.value='1';this.form.submit();" class="renew" (="(" [%="[%" />

which is not a valid template... and TT produce a blocking error.



So what to do ?
 1. works on TTParser.pm, in order to include case for DIRECTIVE in tag element ? (lot of work for rare occurences)
 2. works 'tmpl_process3.pl' for change the rewriting style of element (not using the parsed hash, using regexp for example) ? (not a strong method, and need some works too)
 3. discard the use of Template DIRECTIVE in tag element ? (adding a test case for report incorrect use of template *in* tag element, or a check in TTParser reporting "unallowed template form")
 4. discard the use of Template DIRECTIVE in tag element which contains translated string ? (same before, but more complex to implement)

Personnally, I prefer the 3 (or 4) choice... but what is your opinion about this ?

Thanks.
-- 
Frère Sébastien Marie
Abbaye Notre Dame de La Trappe
61380 Soligny-la-Trappe
Tél: 02.33.84.17.00
Fax: 02.33.34.98.57
Web: http://www.latrappe.fr/


More information about the Koha-devel mailing list