2012年3月
« 1月   4月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

カテゴリー

最近のコメント

<!–:ja–>ASP.NET国際化プログラミング – リソース管理<!–:–><!–:en–>ASP.NET Internationalization Programming – Resource Administration<!–:–>

ソフトウェア国際化ツールWorld Wide Navi(ワールドワイドナビ)の国際化プログラミング参考情報から、ASP.NETの国際化の抜粋です。

1. ASPXにヘッダー追加
カルチャ(言語と地域)の設定をASPXのヘッダー部分に追加します。

Default.aspx

 <%@ Page Language="C#" ...%>
=><%@ Page Culture="auto"
UICulture="auto" Language="C#" ...%>

2. 文字列の外部化(リテラルの置換)
ASP.NETは、文字列リソースの管理のために、4つの構文を持っています。

  • 構文1は “<%=..%>” を必要とします。
  • “”" は構文2では切り落とされます。
  • 構文3は構文1と非常に似ていますが、
    少し違います。
  • 構文4ではmeta属性を追加することで、
    デフォルトのテキストを残すことが出来ます。
  • 構文3と4はASPタグのみにしか使えません。
Default.aspx

* 構文1. (タグテキストの置換) "<%="
 "Resources.Default." RESOURCE_KEY "%>"
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
 <title>This is a sample site!</title>
 => <title><%=Resources.
 Default.DefaultWwnaviMsg1%></title>
</head>
<body>

* 構文2. (プログラム内のリテラルの置換)
 "Resources.Default." RESOURCE_KEY
<div>
 <% Response.Write("Hello, World!"); %>
 => <% Response.Write(
Resources.Default.DefaultWwnaviMsg2); %>
</div> 

* 構文3. (ASPタグ内のテキストの置換)
 "<%$" "Resources.Default,"
RESOURCE_KEY "%>"
<asp:Label ID="Label1" runat="server"
Text="This is label 1.">
=><asp:Label ID="Label1" runat="server" Text=
"<%$Resources:Default,
DefaultWwnaviMsg3%>">
</asp:Label>

* 構文4. (ASPタグ内のmeta属性の追加)
 "meta:resourcekey="" RESOURCE_KEY """
<asp:Label ID="Label1" runat="server"
Text="This is label 1.">
=><asp:Label ID="Label2" runat="server" Text=
"This is label 1." meta:resourcekey=
"DefaultWwnaviMsg4" >
</asp:Label>

各文字列の場所に応じて、適切な構文を使う必要があります。
(ASPタグでは構文3または4どちらかが使えます。)

3. Resxファイルの作成
外部化された文字列をresx(リソース)ファイルに配置します。”App_GlobalResources”フォルダをプロジェクトディレクトリの直下に作成し、resxファイルをその下に、”ASPX_FILE_NAME(拡張子なし).resx”(*1)という名前で作成します。

PROJECT_DIRECTORY
 - App_GlobalResources
 - Default.resx
 - WebForm1.resx
 *1)構文4(meta属性)を使っている場合は、
拡張子を付ける必要があります(Default.aspx.resx)。
Default.resx 

<?xml version="1.0" encoding="utf-8"?>
<root>
 <xsd:schema id="root" xmlns=""
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
 ...
 </xsd:schema>
 ...
 <resheader name="writer">
 <value>System.Resources.ResXResourceWriter,
 System.Windows.Forms, Version=2.0.0.0,
  Culture=neutral,
 PublicKeyToken=b77a5c561934e089</value>
 </resheader>
 <data name="DefaultWwnaviMsg1" xml:space="preserve">
 (RESOURCE_KEY)
 <value>This is a sample clomid site!</value>
 (RESOURCE_STRING)
 </data>
</root>

4. コンパイルとローカリゼーション
ビルドと実行をしてください、ブラウザ内でリソース文字列が表示されるのが確認できるはずです。他の言語のリソースを追加したい場合は、ASPX_FILE_NAME.LOCALE_CODE(例:”ja”).resxをApp_GlobalResourcesに追加してください。

App_GlobalResources
 - Default.resx
... マスターリソース (例:英語)
 - Default.ja.resx
... ローカライズされたリソース (例:日本語)