by WebSurfer
2010年6月6日 16:20
日付の表示が日本向きでないところがもう一箇所見つかりました。
ウィジェットの Month List または Calendar をクリックして選択されたページを表示したとき、タイトルが日付で表示されるのですが、下の写真のように米国向けの表示になります。
どうでもよさそうな細かいこととは思いますが、この際徹底的に直すことにしました(笑)。
この 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");
}
}
// ・・・中略・・・
}
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)]→[言語の優先順位]ダイアログで言語の設定を変えられますので、興味のある方はお試しください。
他に、カレンダーについても日本語の場合の表示を変更しました。その話は別途アップします。
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) に書きましたので、ご覧ください。