WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

日付表示の変更(3)

by WebSurfer 2010年6月6日 16:20

日付の表示が日本向きでないところがもう一箇所見つかりました。

ウィジェットの Month List または Calendar をクリックして選択されたページを表示したとき、タイトルが日付で表示されるのですが、下の写真のように米国向けの表示になります。

Title の日付表示

どうでもよさそうな細かいこととは思いますが、この際徹底的に直すことにしました(笑)。

この Title をレンダリングしているのはブログアプリのルート直下にある Default.aspx.cs の中の DisplayDateRange メソッドです。

その部分を、ブラウザの言語設定が日本語(ja-JP または ja)になっている場合は、"2010年6月6日" の形式で表示されるよう、以下のように修正しました。

private void DisplayDateRange()
{
  // ・・・中略・・・
  if (!string.IsNullOrEmpty(year) && 
      !string.IsNullOrEmpty(month))
  {
    // ・・・中略・・・
    PostList1.Posts = 
     Post.GetPostsByDate(dateFrom, dateTo).ConvertAll(
       new Converter<Post, IPublishable>(
         delegate(Post p) { return p as IPublishable; }));
    // 以下の部分を修正。
    System.Globalization.CultureInfo ci = 
      System.Threading.Thread.CurrentThread.CurrentUICulture;
    if (ci.Name == "ja-JP" || ci.Name == "ja")
    {
      Title = dateFrom.ToString("yyyy年M月");
    }
    else
    {
      Title = dateFrom.ToString("MMMM yyyy");
    }
  }
  else if (!string.IsNullOrEmpty(year))
  {
    // ・・・中略・・・
  }
  else if (!string.IsNullOrEmpty(specificDate) && 
           specificDate.Length == 10)
  {
    // ・・・中略・・・
    PostList1.Posts = 
     Post.GetPostsByDate(dateFrom, dateTo).ConvertAll(
       new Converter<Post, IPublishable>(
         delegate(Post p) { return p as IPublishable; }));
    // 以下の部分を修正。
    System.Globalization.CultureInfo ci = 
     System.Threading.Thread.CurrentThread.CurrentUICulture;
    if (ci.Name == "ja-JP" || ci.Name == "ja")
    {
      Title = date.ToString("yyyy年M月d日");
    }
    else
    {
      Title = date.ToString("MMMM d. yyyy");
    }
  }
  // ・・・中略・・・
}

Tags:

BlogEngine.NET

日付表示の変更(2)

by WebSurfer 2010年5月21日 00:00

先の投稿 日付表示の変更(1) で、日付の表示について「"yyyy年MM月dd日 HH:mm" としなかったのは、国際化対応にこだわったからです。」などと書いたのですが、結局 "2010年5月1日 12:00" 形式にしました。

今までの形式 "2010/05/01 12:00" では、日本語表示としてはどうしてもイマイチに思えたものですから。(汗)

でも、国際対応にはまだこだわっていて(笑)、ブラウザの言語の設定が日本語(ja-JP または ja)の時のみ "2010年5月1日 12:00" 形式とし、それ以外のときは BlogEngine のデフォルトの "d. MMMM yyyy HH:mm" 形式になるようにしました。

具体的には、PostView.ascx, CommentView.ascx で以下のようにしています(下記は PostView.ascx の場合です)。

<script runat="server"> protected void Page_PreRender(object sender, EventArgs e) { System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentUICulture; if (ci.Name == "ja-JP" || ci.Name == "ja") { Label1.Text = Post.DateCreated.ToString("yyyy年M月d日 HH:mm"); } else { Label1.Text = Post.DateCreated.ToString("d. MMMM yyyy HH:mm"); } } </script> <div class="post xfolkentry" id="post<%=Index %>"> <h1> <a href="<%=Post.RelativeLink %>" class="taggedlink"> <%=Server.HtmlEncode(Post.Title) %> </a> </h1> <span class="author"> by <a href="<%=VirtualPathUtility.ToAbsolute("~/") + "author/" + BlogEngine.Core.Utils.RemoveIllegalCharacters(Post.Author) %>.aspx"> <%=Post.AuthorProfile != null ? Post.AuthorProfile.DisplayName : Post.Author %> </a> </span> <asp:Label ID="Label1" runat="server" CssClass="pubDate"></asp:Label> ・・・後略・・・

ブラウザで、言語の設定を変えると表示が変わります。IE8 ですと、[インターネットオプション]→[全般]タブ →[言語(L)]→[言語の優先順位]ダイアログで言語の設定を変えられますので、興味のある方はお試しください。

他に、カレンダーについても日本語の場合の表示を変更しました。その話は別途アップします。

Tags:

BlogEngine.NET

日付表示の変更(1)

by WebSurfer 2010年5月4日 14:21
デフォルトの日付表示

日付と時間の表示が、デフォルトでは米国式で左のようになりますが、気に入らないので変更しました。

ブラウザの言語の選択を en-US にすれば「3. May 2010 11:37」というようになってそれなりなんですが、日本語での表示はちょっと冴えないですよね。

参考にしたのは、BlogEngine.NET の Documenattion の Theme Creation です。 そこに、PostView.ascx, CommentView.ascx の中で日付の書式が Post.DateCreated.ToString("d. MMMM yyyy HH:mm") と設定されているという記述を見つけ、 それを "yyyy/MM/dd HH:mm" に変更した結果が今の表示です。

まぁ、他人から見ればどっちもどっちかもしれませんけど、自分的には少しマシになったと思っています。 ちなみに、"yyyy年MM月dd日 HH:mm" としなかったのは、国際化対応にこだわったからです。(笑)

-------- 2010/5/21 追記-----------

結局 "2010年5月1日 12:00" 形式にしました。"2010/05/01 12:00" 形式では、日本語表示としてはどうしてもイマイチに思えたものですから。(笑)

詳しくは 日付表示の変更(2) に書きましたので、ご覧ください。

Tags:

BlogEngine.NET

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年3月  >>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

View posts in large calendar