- PR -

[VB.NET]サテライトアセンブリを自作してフォームをローカライズしたい

1
投稿者投稿内容
ListRun
会議室デビュー日: 2005/08/25
投稿数: 9
投稿日時: 2005-08-25 22:56
こんにちは。
VB.NETの多国語対応について調査しています。

サテライトアセンブリを自作する方法でフォームをローカライズしたいのですが、うまくいきません。サンプルとして、フォームのタイトルをデフォルトでは英語で表示させて、カルチャが日本(ja-JP)の場合は日本語で表示させるようなアプリを作ろうとしています。

具体的に行っている手順は以下のとおりです。
(アプリ名:MultiLanguage、多国語化するフォーム名:Form2)
1)アプリケーションを作成する
  Form2のlocalizableをTrueにする。
2)Winresでフォームをデザインする
  タイトルを日本語で記述。
  カルチャ=ja-JPで保存
  (Form2.ja-JP.resxファイルを生成)
3)Resgenでresxファイルをresourcesファイルに変換する
  resgen Form2.ja-JP.resx Form2.ja-JP.resources
  (Form2.ja-JP.resourcesファイルを生成)
4)アセンブリリンカでサテライトアセンブリを生成する
  al /out:MultiLanguage.resources.dll /v:1.0.0.0 /c:ja-JP /embed:Form2.ja-JP.resources,Form2.ja-JP.resources,Private
  (MultiLanguage.resources.dllファイルを生成)
5)4)のdllファイルを、bin/ja-JPフォルダに配置

これで実行すれば、日本語のタイトルが表示されると思ったのですが、結果は規定の英語で表示されてしまいました。
基本的にはMSDNを参照し、ネットでも調べてみたのですが、結果が得られませんでした。

何か手順が足りないのか、それとも根本的に間違ってるのかもわからず、行き詰っています。
皆様に御教示いただければと思います。
よろしくお願いします。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2005-08-26 07:55
ResourceManager コンストラクタの解説にあるように、このコンストラクタを使用してリソースにアクセスする際、リソースの名前は
型の完全限定名.カルチャ名.resources
となっている必要があります。
al.exeでサテライトアセンブリを作成する際、/embedのnameパラメータに正しいリソースの名前を指定して下さい。
なお、ResourceManager クラスの解説によると、サテライトアセンブリでPrivateを指定してはいけないようです。
ListRun
会議室デビュー日: 2005/08/25
投稿数: 9
投稿日時: 2005-08-26 09:22
ご指摘のとおり、nameパラメータに完全限定名を指定したら、うまく動作しました。

ここからは補足ですが、Privateオプションを使用した場合も、同様に動きました。
確かにResourceManagerの解説ではPrivateを禁じていますが、チュートリアルのサンプルではPrivateを使用しているのも腑に落ちないところです。

ともかく、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)