A template is constructed from a charstream. Everything that is not in "" will be outputted directly. Text in these markers will be interpreted is template scripting syntax. The following strings are valid: - will output "variablename". if "variablename" is an Outputable output this thing recursively. else turn it into a String (Object.toString()) and output it. - will translate "This is free Text." into the users language, (escaped) and output it. - Translate the last string. Output $var1,...,$varn replaced into the %s positions in the translated string. - will output the variable "variablename" but not HTML-escaped - will insert the variable "variablename" into the translated text but not HTML-escaped - will insert "some data" into the translated text - will insert "some data" into the translated text literally (not HTML-escaped) - ... Output/execute the text until "" only if $variable is Boolean.TRUE (<=> !Boolean.FALSE) or not null. - ... ... - ... If $variable is an "IterableDataset" Output/execute the text until "" repeated as $variable suggests. Special variables that $variable defines can be used in the inner text.