AJAX]ローカリゼーション対応を行うには?」では、ファイル・システム上に配置したJavaScriptコードをローカライズする方法について紹介した。これはこれで有効なアプローチであるが、カスタムのコントロールを開発するようなケースではJavaScriptのコードはアセンブリに組み込むのが一般的だ。そのようなケースでは前掲のTIPSで紹介したアプローチは利用できない。そこで本稿では、アセンブリに組み込まれたJavaScriptのコードにリソースを適用し、ローカライズする方法について紹介する。LibでAJAX対応コントロールを開発しよう(前編)」で紹介したDialogButtonコントロール(DialogButtonExtender)を修正し、リソースから取得したメッセージをダイアログ表示するものとする。JavaScript組み込みコントロールそのものの作成手順については本稿では割愛するので、元の記事の方を参照いただきたい。言語設定が「日本語」のクライアントで[表示]ボタンをクリック言語設定が「英語」のクライアントで[表示]ボタンをクリック[表示]ボタンをクリックすると、リソースから取得したメッセージをダイアログ表示(クライアントの言語設定によって表示言語を切り替え)それではさっそく、具体的な手順を見ていくことにしよう。Toolkitを利用可能な状態にしておく必要がある。本サンプルを動作させるには、アプリケーション構成ファイル(Web.config)に対して、カルチャに関する設定を行っておく必要がある。AJAX]グローバリゼーション対応を行うには?」の手順1を参照していただきたい。リソース・ファイルを追加するアセンブリにリソースを組み込む場合には、(JavaScriptコードではなく)通常の.resxファイルとしてリソースを定義すればよい。Project)の直下にリソース・ファイルとして「Greeting.resx」「Greeting.ja-JP.resx」「Greeting.de.resx」を追加する。リソース・ファイルの追加/編集方法については、「TIPS:[ASP.NET]リソース・ファイル活用で国際化対応ページを構築するには?」をご参照いただくとして、ここでは以下の表の要領でそれぞれのリソース・ファイルにそれぞれのリソースを定義しておこう。JavaScriptコードとリソースとを関連付けるJavaScriptコードと参照するリソース・ファイルを関連付けるには、ExtenderクラスにScriptResource属性を宣言すればよい。この例であれば、具体的にはDialogButtonExtenderクラスに対して、以下の属性のコード(太字部分)を追加する。"MyRes")>リソース・ファイルの関連付けを行うコード(上:DialogButtonExtender.cs、下:DialogButtonExtender.vb)ScriptResource属性(System.Web.UI名前空間)は、JavaScriptから参照するリソース・ファイルを関連付けるための属性である。ScriptResource属性の一般的な構文は、以下のとおり。"リソースの型名")>ScriptResource属性の構文(上:C#、下:VB)スクリプト/リソースのパスには、それぞれ関連付けるスクリプト・ファイル、リソース・ファイルのパスを「プロジェクト名.フォルダ名.ファイル名」の形式で指定すればよい。リソースの型名はJavaScript側からリソース個々のキーにアクセスするためのプレフィックスとなる。ここでは“MyRes”と指定しているので、リソース・ファイル内のmorningキーにアクセスするには、「MyRes.morning」とすればよい。Behaviorオブジェクトからリソースを参照するこれでリソースを利用するための準備は完了だ。あとは、Behaviorオブジェクトから実際にリソースを参照してみよう。ここでは、ターゲット要素がクリックされたときに実行される_onClickイベント・ハンドラを以下(太字部分)のように書き換えるものとする。this.get_events().getHandler('Closed');......中略......}ターゲット要素がクリックされたときに実行される_onClickイベント・ハンドラ先ほども述べたように、リソースの内容を参照するには、「リソースの型名.キー名」で記述すればよい。Extenderコントロールの動作を確認するExtenderコントロールの準備ができたら、別記事の要領でビルドを済ませる。エクスプローラからプロジェクト配下の「/Bin/Debug」(または「/Bin/Release」)フォルダを確認すると、「プロジェクト名.dll」(ここではMyAjaxLib.dll)、および、リソースごとのフォルダ(ここでは「de」「ja-JP」フォルダ)ができているはずなので、これをWebサイト配下の「/Bin」フォルダに配置する。あとは、別記事で作成済みのDialogButtonServer.aspxに配置してあるScriptManagerコントロールのEnableScriptLocalizationプロパティをtrueに設定するだけだ。以上を理解したら、実際にDialogButtonServer.aspxを実行してみよう。ブラウザの言語設定によって、冒頭のような結果が得られれば成功だ。オプション]ダイアログを表示し、そのダイアログの[全般]タブにある[言語]ボタンから変更できる。参考までに、出力されているJavaScriptのコードの中身も確認してみよう(実際に出力されるコードは、例えば「/MsAjaxLib/ScriptResource.axd?d=IM4MYW6yp8fc3lFQB8BivX_3gPXIw9lh32h9GILIYoqktNZ4t1-K2ii2LnDi2eHO0&amp;t=633428601391562500」のようなパスで参照できる。このパスは、ブラウザの[ソースの表示]で確認してほしい)。(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();実際に出力されたJavaScriptのコードこのリストのように、もともと定義されたBehaviorオブジェクトのコード末尾に、リソース定義のためのオブジェクト・リテラル(太字部分)が追加されていることが確認できるはずだ。このように、アセンブリに組み込まれたリソースは、Behaviorオブジェクトに対してオブジェクト定義として追加されることで認識されるわけだ。より自動抽出したものです。7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。TranslatorはPowerPoint用のアドイン。