def to_html(options={})
      numBlocks = blocks.length
      blockOptions = Array.new(numBlocks)
      for i in 0...numBlocks do
        blockOptions[i] = {}
      end
      for key in options.keys do
        value = options[key]
        if value.kind_of? Array
          for i in 0...([value.length, numBlocks].min) do
            blockOptions[i][key] = value[i]
          end
        else
          for i in 0...numBlocks do
            blockOptions[i][key] = value
          end
        end
      end
      blockHtmls = (0...(blocks.length)).map{|i| @blocks[i].to_html(blockOptions[i])}
      "<div class=\"translation\">\n  " + 
        (@title ? "<div class=\"title\">#{@title}</div>\n  " : "") +
        blockHtmls.join("").chomp("\n").gsub("\n", "\n  ") + 
        "\n</div>\n"
    end
def to_html(options={})
      numBlocks = blocks.length
      blockOptions = Array.new(numBlocks)
      for i in 0...numBlocks do
        blockOptions[i] = {}
      end
      for key in options.keys do
        value = options[key]
        if value.kind_of? Array
          for i in 0...([value.length, numBlocks].min) do
            blockOptions[i][key] = value[i]
          end
        else
          for i in 0...numBlocks do
            blockOptions[i][key] = value
          end
        end
      end
      blockHtmls = (0...(blocks.length)).map{|i| @blocks[i].to_html(blockOptions[i])}
      "<div class=\"translation\">\n  " + 
        (@title ? "<div class=\"title\">#{@title}</div>\n  " : "") +
        blockHtmls.join("").chomp("\n").gsub("\n", "\n  ") + 
        "\n</div>\n"
    end
Initialize from the blocks
 A translation is equal to another translation that has the same blocks
 (equality is only used for testing)
 Convert to HTML as a *<div>* of CSS class "translation" that contains the HTML
 outputs from the blocks.
 Options for Helpers::text_to_html can be provided as single true/false value, or, as arrays
 of values, in which case the individual values are mapped to the corresponding blocks.