* 目次 [#o6265dd0]
#contents

*概要 [#u9a525a1]

-リソースファイル(マネージリソースファイル)は、

--文字列や画像などのリソース情報をKey-Valueで保持する、~
拡張子が .resources または .resx のファイルのことである。

--いろいろな言語のリソースファイルを用意すると、~
多言語対応のアプリケーションを作成できる。

--アセンブリファイル(dll,exe)に含められる。

-参考~
--リソースファイルからリソースを取得する: .NET Tips: C#, VB.NET~
http://dobon.net/vb/dotnet/programing/resourcemanager.html

*特徴 [#jcc6b1af]

**メッセージ等の隠蔽化が可能 [#iafdc4e0]
-アセンブリファイル(dll,exe)に含められるため、改竄されにくい。

-ただし、リソースファイルの修正を反映するには再ビルドが必要。~
※ ILSpy等の逆アセンブルツールにてリソースファイルの内容が抽出されることは防げない

**実行中の差し替えが可能 [#e51a06bf]
-リソースファイルをdllに含めることにより、実行時に差し替えが可能

-参考
--ResourceManager.ReleaseAllResources メソッド (System.Resources)~
http://msdn.microsoft.com/ja-jp/library/system.resources.resourcemanager.releaseallresources.aspx

**文字列以外も扱うことが可能 [#td614c9f]
リソースファイルに画像などのバイナリファイルを文字列と同様に含めることが可能である。~
この際、BASE64エンコードされた文字列がresxファイルに格納される。

-参考
--リソースファイルからリソースを取得する: .NET Tips: C#, VB.NET~
http://dobon.net/vb/dotnet/programing/resourcemanager.html

**多言語化対応が可能 [#mdf325f7]
[[カルチャ]]を使用し、対応したリソースファイルから情報を取得することで~
文言や、UI要素の多言語対応が可能となる(詳細は後述)。


*作成方法 [#ne6b622e]
リソースファイルの作成方法には下記の様なものがある。

**Visual Studio上でリソースファイルを作成、編集する [#x6e51353]

-Visual Studioでリソースを作成、編集できる。

--参考
---Visual Studioでリソースを管理する: .NET Tips: C#, VB.NET~
http://dobon.net/vb/dotnet/programing/vsresource.html

-Visual Studioでリソース中に改行コードを入れる方法

>リソース作成画面にて
>>[Shift]+[Enter]キー

>を押下すると改行コードを挿入できる。

--参考
---文字列のリソースに改行コードを埋め込むには?[VS 2005、VS 2008] - @IT~
http://www.atmarkit.co.jp/fdotnet/dotnettips/825resourcesstrlf/resourcesstrlf.html

**.NETプログラムからリソースファイルを作成する方法 [#h786d960]
リソースファイルを作成するAPIが用意されている。

-参考
--プログラムによる .resx ファイルの使用~
http://msdn.microsoft.com/ja-jp/library/vstudio/gg418542.aspx~
---.resxファイルの作成

**テキストファイルからリソースファイルを作成する方法 [#o43d80b1]
.txtファイルからリソースファイルを作成するResgen.exeが用意されている。~

-参考
--@IT:.NET TIPS [ASP.NET]リソース・ファイル活用で国際化対応サイトを構築するには? - C# VB.NET Webフォーム~
http://www.atmarkit.co.jp/fdotnet/dotnettips/192aspmultilang/aspmultilang.html
--Resgen.exe (リソース ファイル ジェネレーター)~
http://msdn.microsoft.com/ja-jp/library/ccec7sz1.aspx

*制限事項 [#b01689ed]
-リソースの名前に"="(半角イコール)を含めることができません。
-リソースの値にLF(Line Feed)を含めることができません。

*多言語対応 [#i8d141f1]
スレッド毎に保持しているCurrentUICultureに設定されている[[カルチャ]]を使用して、~
対応したリソースファイルから情報を取得することで文言や、UI要素の多言語対応が可能となる。

**リソースの構造 [#q30f144d]
-ファイル名と拡張子の間に[[カルチャ]]名を挿入して~
各[[カルチャ]]向けのリソースファイルを作成する。

-下位カルチャ用のリソースファイルには差分のみ定義可能。

 R1.resx       既定カルチャ用リソースファイル
 ├R1.ja.resx     日本語用リソースファイル
 ├R1.en.resx     英語用リソースファイル
 ├R1.zh-Hans.resx  簡体字中国語用リソースファイル
 └R1.zh-Hant.resx  繁体字中国語用リソースファイル
 
 R2.resx       既定カルチャ用リソースファイル
 ├R2.ja-JP.resx   日本語(日本)用リソースファイル
 └R2.en-US.resx   英語(米国)用リソースファイル

**フォールバック機能 [#e79f2f05]
-リソースファイルのフォールバック機能とは、~
使用するリソースファイルをシステムが判断することを指す。

-CurrentUICultureの[[カルチャ]]と一致するリソースファイルが~
存在しない場合、親カルチャ用のリソースファイルを順に検索する。

-参考
--ローカリゼーション用リソースの階層編成~
http://msdn.microsoft.com/ja-jp/library/vstudio/756hydy4.aspx

**UIの多言語対応 [#f18796ed]
リソースファイルを使用することで、UIの多言語対応が可能である。

-WindowsフォームとWebフォームで実装の方法が異なる。

--Windowsフォームの場合は、~
各カルチャ用の画面をデザイナ上で作成するとリソースファイルが自動的に作成される。~

--Webフォームの場合は、~
各カルチャ用のリソースファイルを用意しておきASPXファイルにコードを記述する。~

 Windowsフォームの機能で以下には対応していないことが判明しています。
 ・コントロールの階層型プロパティ値をカルチャ毎に変える
 ・GridView/ListViewの列の順番をカルチャ毎に変える
 できることを確認しながら実装する様にしてください

***参考 [#fc7cf7f9]
-ASP.NET
--@IT:.NET TIPS [ASP.NET]リソース・ファイル活用で国際化対応サイトを構築するには?~
http://www.atmarkit.co.jp/fdotnet/dotnettips/192aspmultilang/aspmultilang.html

-Windows Forms
--@IT:.NET TIPS Windowsフォームを多言語対応にするには?~
http://www.atmarkit.co.jp/fdotnet/dotnettips/314winmultilang/winmultilang.html
--C#による多言語対応アプリケーション開発のコツ(1-3):CodeZine~
http://codezine.jp/article/detail/3288
--多言語対応 - C# フォーム しっかり入門~
http://www.wgag.net/csforms/0087.html

*参考 [#w42d4e18]

-グローバリゼーションとローカリゼーションのベスト プラクティス~
http://msdn.microsoft.com/ja-jp/library/aa291552.aspx
-Visual Studio のグローバリゼーションおよびローカリゼーションの名前空間~
http://msdn.microsoft.com/ja-jp/library/3xbc3357.aspx
-ローカリゼーションとグローバリゼーション (Visual Basic 6.0 ユーザー向け)~
http://msdn.microsoft.com/ja-jp/library/150x5ys0.aspx
-Windows Phone のグローバリゼーションとローカリゼーション~
http://msdn.microsoft.com/ja-jp/library/ff637522.aspx

-アプリケーションのグローバライズとローカライズ~
http://msdn.microsoft.com/ja-jp/library/vstudio/1021kkz0.aspx
--アプリケーションのグローバル化~
http://msdn.microsoft.com/ja-jp/library/vstudio/eaa7b9c0.aspx
---Windows フォームのグローバル化~
http://msdn.microsoft.com/ja-jp/library/vstudio/9xdxwwkc.aspx
---ASP.NET のグローバリゼーションおよびローカリゼーション~
http://msdn.microsoft.com/ja-jp/library/vstudio/c6zyy3s9.aspx
---グローバライズとローカライズ(WPF)~
http://msdn.microsoft.com/ja-jp/library/vstudio/ms753931.aspx


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS