- - PR -
[VB.NET]サテライトアセンブリを自作してフォームをローカライズしたい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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を参照し、ネットでも調べてみたのですが、結果が得られませんでした。 何か手順が足りないのか、それとも根本的に間違ってるのかもわからず、行き詰っています。 皆様に御教示いただければと思います。 よろしくお願いします。 |
|
投稿日時: 2005-08-26 07:55
ResourceManager コンストラクタの解説にあるように、このコンストラクタを使用してリソースにアクセスする際、リソースの名前は
型の完全限定名.カルチャ名.resources となっている必要があります。 al.exeでサテライトアセンブリを作成する際、/embedのnameパラメータに正しいリソースの名前を指定して下さい。 なお、ResourceManager クラスの解説によると、サテライトアセンブリでPrivateを指定してはいけないようです。 |
|
投稿日時: 2005-08-26 09:22
ご指摘のとおり、nameパラメータに完全限定名を指定したら、うまく動作しました。
ここからは補足ですが、Privateオプションを使用した場合も、同様に動きました。 確かにResourceManagerの解説ではPrivateを禁じていますが、チュートリアルのサンプルではPrivateを使用しているのも腑に落ちないところです。 ともかく、ありがとうございました。 |
1