マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

  • リソースファイル(マネージリソースファイル)は、
  • 文字列や画像などのリソース情報をKey-Valueで保持する、
    拡張子が .resources または .resx のファイルのことである。
  • いろいろな言語のリソースファイルを用意すると、
    多言語対応のアプリケーションを作成できる。
  • アセンブリ・ファイル(dll, exe)に含められる。

特徴

仕組み

  • *.resxファイル と *.designer.cs(vb)ファイルから成る。
  • *.resxファイル
    埋め込まれたリソースとして埋め込まれるXMLファイル。
  • *.designer.cs(vb)ファイル
    埋め込まれたリソースを読み取るコードが自動生成される。

メッセージ等の隠蔽化が可能

  • アセンブリ・ファイル(dll, exe)に含められるため、改竄されにくい。
  • ただし、リソースファイルの修正を反映するには再ビルドが必要。
    ※ ILSpy等の逆アセンブルツールにてリソースファイルの内容が抽出されることは防げない

実行中の差し替えが可能

  • リソースファイルをdllに含めることにより、実行時に差し替えが可能

文字列以外も扱うことが可能

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

多言語化対応が可能

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

詳細

作成方法

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

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

  • Visual Studioでリソースを作成、編集できる。
  • 通常 Key-Value だが、画像 / アイコン / テキスト・ファイルも追加できる。
  • Visual Studioでリソース中に改行コードを入れる方法

リソース作成画面にて

[Shift]+[Enter]キー

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

.NETプログラムからリソースファイルを作成する方法

リソースファイルを作成するAPIが用意されている。

テキストファイルからリソースファイルを作成する方法

.txtファイルからリソースファイルを作成するResgen.exeが用意されている。

使用方法

リソースファイルの使用方法には下記の様なものがある。

Visual Studio上で既存のリソースファイルを開く

  • *.resxファイルを開く。
  • カスタム・ツールを設定する。
    • ダブルクリックしてデザイナのDDLからInternal or Publicを選択する。
    • プロパティ・グリッドのカスタム・ツールに以下を設定する。
      • ResXFileCodeGenerator?(Internal)
      • PublicResXFileCodeGenerator?(Public)
  • これにより、
    • *.resxファイルと、
    • *.designer.cs(vb)ファイルが

グループ化される。

Internal、Publicの選定基準と利用方法

  • Internal
    エントリ・アセンブリ ※1 内でのみ使用する場合コチラを選択する。
    (※ 1: 現在の AppDomain? のエントリポイントを含むアセンブリ)
  • Public
    • 他のアセンブリで利用する場合コチラを選択する。
    • この場合、双方のアセンブリのルート名前空間を一致させる必要がある。

.NETプログラムからリソースファイルを使用する方法

  • *.designer.cs(vb)に実装された、
    プロパティ・プロシージャ経由でリソースにアクセスできる。
  • リソースファイルを使用するAPIが用意されている。

制限事項

  • リソースの名前に"="(半角イコール)を含めることができません。
  • リソースの値にLF(Line Feed)を含めることができません。

多言語対応

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

リソースの構造

  • ファイル名と拡張子の間にカルチャ名を挿入して
    カルチャ向けのリソースファイルを作成する。
  • 下位カルチャ用のリソースファイルには差分のみ定義可能。
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   英語(米国)用リソースファイル

フォールバック機能

リソースファイルのフォールバック機能とは

  • 使用するリソースファイルをシステムが判断することを指す。
  • CurrentUICultureのカルチャと一致するリソースファイルが存在しない場合、親カルチャ用のリソースファイルを順に検索する。

フォールバックのカスタマイズ

  • Parentプロパティで上位のカルチャを取得可能なので単純なアルゴリズムで作成可能。
  • また、メッセージを言語毎に用意するのであればTwoLetterISOLanguageName?プロパティで2階層目の値を取得することが可能なため、その値で分岐すれば良い。

参考

サテライトアセンブリ

  • サテライトアセンブリ(*.resources.dllという名称)
    カルチャ名フォルダに配置される。

UIの多言語対応

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

Windows FormsASP.NET Web Formsで実装の方法が異なる。

Windows Formsの場合

ASP.NETの場合

WPF/Silverlightの場合

参考

msdn.microsoft.com

.NET Tips (VB.NET,C#...)


Tags: :.NET開発, :国際化対応


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-12-01 (土) 18:46:08 (16d)