特に国際化の予定はないけれど、ラベルの文字列やメッセージ情報を1か所に集めておくのは後々管理しやすそうなので、リソースを利用してみることにしました。
1、利用するのは非常に簡単。まず画面をこさえます。別にDefault.aspxでいいですよ(投げやり)
2、そしてソリューションエクスプローラのWebサイトの右クリックメニューから「ASP.NETフォルダの追加」で「App_LocalResources」を選択してフォルダを作成します。
3、作成した「App_LocalResources」フォルダ内にDefault.aspxのリソースファイルってことで新しい項目の追加でアセンブリ リソース ファイルを選択し名前を「Default.aspx.resx」として作成します。
4、リソースとしてとりあえず以下の2つを追加します。
名前 |
値 |
Title |
画面タイトル |
PageTitle.Text |
画面タイトル |
5、Default.aspxにラベルコントロールをこしらえます。
<asp:Label ID="PageTitle" runat="server" meta:resourcekey="PageTitle"></asp:Label>
ポイントは「meta:resourcekey」にリソースで設定した名前を設定するところでしょうかね。ただし、「Title」でも「PageTitle.Text」でも駄目で、ここでは「PageTitle」となります。リソース名とコントロールのIDが一致しない場合があるのはわかりますが、同じものを自動的に探してくれてもいいやん!と思ったりしました。(ボソッ
もうひとつの方法として以下のようにもできます。
<asp:Label ID="PageTitle" runat="server" Text="<%$ Resources:PageTitle.Text %>"></asp:Label>
こちらの場合、デザイナ表示した場合、リソースから文字列を取得して表示してくれます。どちらを利用するか悩みどころですねぇ。。。
ここまでできるならば、もちろんWebFormのTitleも設定できるだろうと、headタグのtitleタグにあーだこーだと設定を試みたのですが、うまくいきません。
仕方ないのでGoogleさんに聞いてみたところ、以下のようなページを発見!
Setting the Page Title using local resources for a content page in a master page
Please use following steps to use local resources to set content page's
title:
1) In the folder where the content page resides, create a subfolder
"App_LocalResources" if it doesn't exist yet;
2) In the subfolder, create a resource file named after the content page
file name, for example: "Default2.aspx.resx", and create a resource key
"PageTitle", set its content to your desired page title.
3) In the content page declaration, use following code to use the resource:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master"
UICulture="auto" AutoEventWireup="true" CodeFile="Default2.aspx.cs"
Inherits="Default2" Title="<%$ Resources:PageTitle %>" %>
If you want to add additional languages, just add more
"Default2.aspx.??.resx" to the "App_LocalResources" subfolder. You also
need to set UICulture="auto" in the @ Page directive or include a
<globalization uiCulture="auto"/> element in web.config if you need to use
different resources by client browser settings.
英語はダメでも言語でわかってしまうのがなんか面白いですねぇ。そ~かぁ頭の方で設定するのですねぇ。
あとはもちろんソース中からもリソースを取得できます。
方法 : プログラムでリソース値を取得する
こちらでもでてきますが、ASP.NETフォルダにもう1つのリソース保存用の「App_GlobalResources」ってのが追加できますが、こちらはサイトで共通利用するリソースを設定するといいみたいです。メッセージとか設定すると一元管理できてよろしいですね。
ここまでやっておけば、突然、「わが社は今後、国際化を図るんだ!!!」なんて宣言されてしまったときに新しいリソースとして、「Default.aspx.en-us.resx」なんてのをサクッと作成してやると、ものすごく評価されるかもしれません。
そこは、ま~中身によりますけどねw
そんなわけで、お試しあれ!
投稿日時 : 2007年4月17日 2:51