何事もやってみないと分からないもので、やってみるからこそ感動も生まれるわけで。

ごく基本的なグローバライズに関しては、ASP.NETの支援はやはりすごいです。鼻血出るかと思いました。

最初はちょっと苦労しました。サブフォルダにaspxを配置したら、App_LocalResourcesファイルはそのサブフォルダに作成する必要があるんですね。まあ、それはよいでしょう。

ASP.NETでリソースを使ってみるなどを参考にさせていただきましたが、画面に表示させるラベル文字をリソースから読み込むようにする方法としては二つあります。

<asp:Label ID=”LabelName1″ runat=”server” Text=”名前” meta:resourcekey=”Label1Resource1″></asp:Label>

<asp:Label ID=”LabelName2″ runat=”server” Text=”<%$ Resources:LabelName2.Text %>”></asp:Label>

一つはText属性とは別にmeta:resourcekeyを設定する方法、こちらはデザイナのプロパティを見ると「プロパティは暗黙的に式にバインドされています」と表示されます。
もう一つはText属性に対して、リソースの名前を指定する方法。こちらは「プロパティは式バインドされています」と表示されます。
どちらの方式でも、デザイナ画面で値を表示することができます。上の方式だとText属性の値が表示されますし、下の方式だとリソースの値が表示されます。
ちなみに、ここは結構重要だと思ってます。例えば
http://www.ibm.com/developerworks/jp/opensource/library/os-php-intl/index.html
のリスト 8. に「<input type = “submit” value=”{$submitbutton}” />」という形で嫌な書き方の片鱗が見えますが、これがずらりと並んだHTMLを直すのは正直勘弁と思ってしまいますので。 (メッセージファイルのIDによる呼び出しとかも本当は勘弁・・・)

で、どちらにするかという話になるわけですが、
方法 : ASP.NET Web サイトに対してリソース ファイルを作成する (Visual Studio)
に「ASP.NET Web ページからローカル リソース ファイルを生成するには」という記述があります。
[ツール] メニューの [ローカル リソースの生成] をクリックします。
これだけです。
これでそのサブフォルダにApp_LocalResourcesを作ってくれて、リソースファイルを作ってくれて、aspxの各項目にmeta:resourcekey=”xxx”を埋め込んでくれて、リソースファイルの値に現状のText等に設定されている値を埋め込んでくれるのです。
何を言っているかというと、何も考えずに普通に作った既存のaspxが1ページあたり10秒そこそこでグローバライズされるということです。あとは、そのリソースファイルを必要な言語分コピーしてローカライズすればよいということです。
鼻血出ますよね??

もっとも、この方法による生成は、既存リソースファイルを上書きしてしまうので、ちゃんと日本語ページなり英語ページなりを作ってから一発で生成するということにはなります(もちろんその後の手修正は可能ですが、何事も二重メンテナンスということは避けたいものです)。

ということで画面はこれで良いのではないでしょうか。次はメッセージ?(コードでのロケール判断・リソース読み込み)