Facebook Helper で日本語表示をする (20110511)

みなさん、こんにちは

暫く GW を挟んでしばらく WebMatrix ではなく Visual Studio LightSwitch という製品をいじってた関係で、Blog の更新が滞ってしまいました。
今回は Facebook Helper を使う時のちょっとした Tips を紹介します。

Facebook Helper では Facebook の「いいね!」ボタンをサイトに追加したり、コメント欄を追加したりといったことが出来るようになっています。

ただ、Facebook Helper ではそのまま使うとクライアントが日本語環境なのに英語で表示される…という仕様になっています。つまり、「いいね!」ボタンが「Like」になってしまいます。やっぱりこれは「いいね!」と表示させてあげましょう。

capture

実は、Facebook Helper には Language というプロパティがあり、そこで言語を設定しています。Facebook Helper はコードを見ることが出来るので、実際に中をのぞいてみましょう。

”App_Code” ディレクトリの中にある “Facebook.cshtml” が Facebook Helper の本体です。この84行目に Language のプロパティがあります。

 public static string Language {
    get {
        return (string) (ScopeStorage.CurrentScope[_language] ?? "en_US");
 }
    
    set {
        ScopeStorage.CurrentScope[_language] = value;
 }
}
 ここを見るとScopeStorage.CurrentScope[_language]に値がセットされていなければデフォルトで “en-us” を返すようになっています。
他の部分を探しても初期化処理をしていないので、どこかで設定この Language プロパティに “ja-jp” に設定してあげる必要があります。
 もし、”_PageStart.cshtml” を使用していればそこに記述してあげるのが良いかと思います。
 @Facebook.Language = "ja_jp"
 の一行を入れてあげれば日本語として表示されます。
 ただし、今度は日本語のみの表示になってしまうので、セッションからLocale を取得するのが得策です。
 ということで、
 @{
  Facebool.Language = new CultureInfo(Session.LCID).Name.Replace('-','_');  
}
 としてあげましょう。
 2011/5/12 追記:
CultureInfo が返してくるロケールは “ja-JP” ですが、Facebook が要求しているロケールは”ja_JP”形式です。
(ハイフンとアンダーバーの違い)
という事で、ハイフンとアンダーバーを置換する処理を追加しました。
 さらにやるとすれば Facebook.cshtml のプロパティ部分を直してしまうのもアリでしょう。
 便利な Helper ですが、ちょっとした工夫でさらにユーザーにとって使いやすくすることが出来ます。