Analogの言語ファイルとHTML妥当性

anadeco.plを作っていた時に、Analogが出力する解析結果のHTML文書が妥当でなくなる場合があることに気づきました。

どういう場合かと言うと、Analogでは解析結果の最後に処理にかかった時間も出力されてくるのですが、それが1秒未満だと、

処理時間: <1 秒.

となります。しかしこの部分のHTMLソースは

<br /><span class="runtimetitle">処理時間:</span> <1 秒.

と、< が文字参照にされずそのまま書かれるため、ここでinvalidとなるわけです。実用上としては些細な問題ですが、Analog 6.0 はXHTML 1.0 Strict文書をXML宣言つきで出力するところが割りと本気っぽいので、こういうところで妥当でなくなってしまうのは逆に勿体ないところ。

原因を探ってみると、Analogの言語ファイルのうち日本語用のもの(jpe.lng, jpj.lng, jps.lng, jpu.lng)の記述に問題があるためのようでした。この中で

## Used at the bottom of the report
レポート出力ソフト :
処理時間
<1

という記述があるために、処理時間が1秒未満の場合だけ < がそのまま出てくるようです。(見方を変えれば、Analog側で言語ファイルの記述をエスケープ処理しないため、とも言えるかもしれません)

取り敢えず自分のところでは、

## Used at the bottom of the report
レポート出力ソフト :
処理時間
&lt;1

と変更しました。

ちなみに英語の場合だと、言語ファイル(uk*.lng, us*.lng)の内容と出力されるHTMLは以下のようなものでした。

## Used at the bottom of the report
This analysis was produced by
Running time
Less than 1
<br /><span class="runtimetitle">Running time:</span> Less than 1 second.

つまり最後に「秒(second)」という単位がくるのは書式として固定されているようで、言語ファイルを書き換えるだけでは「1秒未満」とできないのが悩ましい感じです。