2005-07-22

1 comments に違和感がある人に

投稿されたそれぞれの記事の最後には 0 comments, 1 comments, 2 comments という風に、コメント数が表示されていますよね。
これを正しい英語にこだわって、ブログ上でも no comment, 1 comment, 2 comments と表記させようというのが今回の目的。

といってもクリボウが考えたのではないのです。
僕としてはそんなに 1 comments に違和感も感じず、したがって問題意識もナシナシなのですが、やはり海外の人でこれにこだわっている人がいます。

BLOGGER TEMPLATES > Personalize the comments link

ここでは JavaScript の変数 a にコメント数を代入して、その a によって表記を切り替えるということをしています。
このコメント数を代入、というところでテンプレートタグが使われているんですね。

この仕組みを使うときには、BloggerHacks-ja さんが紹介されているように、<noscript> を書いて、JavaScript が OFF の場合に従来の表記をさせるということも大事かと思います。


従来の表記に違和感を感じないと書きつつ、カッコつけて取り入れてみたクリボウでした。

ちなみに、<a> の中の改行は 1 comment  の最後のように、ブラウザによってはスペースとして扱われる場合があるので、注意が必要かと。


追記

結局、クリボウの場合は <head> 内に

<script type="text/javascript">
  function writeCommentCount(cnt,low) {
    var str = ((cnt == 0)? "No":"" + cnt) + " Comment" + ((cnt > 1)? "s":"");
    if (low) str = str.toLowerCase();
    document.write(str);
  }
</script>

を書き、コメント数表記(<a> の中)の部分には

<script type="text/javascript">writeCommentCount(<$BlogItemCommentCount$>,true);</script><noscript><$BlogItemCommentCount$> comments</noscript>

と書くことにしました(改行なしの1行です)。
コメント数による条件分岐の部分を使いまわして、ちょっとでもページのサイズを小さくしようという魂胆なのでした。

ちなみに上記赤字の部分を false に変えると、No Comment のように単語の頭が大文字になります。クリボウはメイン・アーカイブページと、アイテムページとで、(あまり意味はないけれど)大文字小文字を使い分けています。

4 comments:

さくら said...

初めまして。さくらと申します。
これずっと探していたのです!
海外のサイトで一度だけ直っているサイトをちらっとみかけたのですが、どこだったかわからなくなってしまって検証できずじまいで忘れてしまっていました。
クリボウ様に本当に感謝しております。
ありがとうございました。

kuribo said...

どういたしまして。
自分の書いた記事が人の役に立ったようで、僕もうれしいです。
コメントありがとうございます。

ボンボンバカボン said...
This comment has been removed by the author.
ボンボンバカボン said...

はじめまして。ボンボンバカボンと申します。

> コメント数表記(<a> の中)の部分には

><script type="text/javascript">writeCommentCount(<$BlogItemCommentCount$>,true);</script><noscript><$BlogItemCommentCount$> comments</noscript>

>と書くことにしました(改行なしの1行です)。

とのことですが、「<a>の中の部分」をもう少し詳しく教えて頂けないでしょうか? 私のでは、

<a class='comment-link' expr:href='data:post.addCommentUrl' expr:onclick='data:post.addCommentOnclick'><b:if
cond='data:post.numComments == 1'>1 <data:top.commentLabel/><b:else/><data:post.numComments/> <data:top.commentLabelPlural/></b:if></a>

にあたるかと思うのですが...

どうぞ、よろしくお願いします。