- - PR -
ユーザーコントロールの多言語対応
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-09-28 16:47
既存システムの多言語化対応をVB.Net2003にて行っています。
対応方法はリソースファイル管理にて行っています。 詳細は↓参照をお願いします。 http://www.atmarkit.co.jp/fdotnet/dotnettips/314winmultilang/winmultilang.html 問題となっている点は、作成したユーザーコントロールのTitleプロパティ(ラベルのText)が ビルドした際、フォームデザイナにて「Me.****.Title = "*****"」とベタ書きにて作成 されてしまい、リソースファイルでの多言語対応が行えないことです。 出来ることならフォームデザイナにて、下記のようにリソースファイルから情報を取得する よう作成できればと思っていますが、可能なのでしょうか? また可能であれば、設定方法を教えて下さい。 Me.****.Title = resources.GetObject("****.Title") 以上 それでは宜しくお願いします。 | ||||||||
|
投稿日時: 2006-09-29 01:22
DataBindingで動的に設定するとか
| ||||||||
|
投稿日時: 2006-09-29 09:38
デザイナでの初期値は長さ 0 の文字列にしておいて、 InitializeComponent メソッドの後に独自に、
と、リソースから初期化するのはダメでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-09-29 13:23
THREE-ONEさん、じゃんぬねっとさん回答ありがとうございます。
THREE-ONEさん 勉強不足で「DataBinding」の設定方法が良くわかっていないのですが、 今回は既存ソースをあまりいじらずに多言語対応を行いたいと要望があり、 リソースファイルでの管理が難しい場合は、constで情報を持ち、 各項目に設定する方法になると思われます。 (関連システムと同じ方法) じゃんぬねっとさん 今回のリソースファイルでの管理方法だと、リビルドをした際にリソースファイルに 手で入力したユーザコントロールのプロパティ内容が消えてしまう現象が発生して 情報を取得できませんでした。 もう少し調査を行ってみたいと思います。 何かありましたら宜しくお願いします。 | ||||||||
|
投稿日時: 2006-09-29 23:29
ちぃと繁雑な作業になるが、まぁ、我慢してくれ。
まず、Form の Language プロパティを、規定値に戻す。 件の、「ローカライズされない」ユーザコントロールを、すべてフォームから引っぺがす(必要があると思う)。 件の、「ローカライズしたい」プロパティに、System.ComponentModel.Localizable(true) アトリビュートを付加する。詳細は msdn を参照のこと。直訳風で理解に苦しむが。 ユーザコントロールをビルドする。 Form に、ユーザコントロールを張り直す。 ローカライズ作業を行う。 問題は、「フォームからユーザコントロールを引っぺがす」必要があるかどうか。 これは検証していないので、是非検証して、報告してください。 Lanugage プロパティが規定値でないと、コントロールのポトペタが出来ないことは、確認しています。 経緯::: きっと、属性で指定するはずだ。 国際化か、ローカライズでキーワード検索すれば見つかるだろう。 見つからない。。。 そうだ、目次だ。「国際化対応アプリケーションの開発」っと。ここだろう。 ない。。。 ユーザコントロールだから、「コンポーネントの開発」かもしれない。 国際化なんてのはないなぁ。。。 「コンポーネントのデザイン時属性」?ここに属性の一覧があるかな? 全部はないけど、一部はある。。。あった! _________________ | ||||||||
|
投稿日時: 2006-10-04 16:23
Jittaさん回答ありがとうございます。
返信遅くなり申し訳ないです。 「フォームからユーザコントロールを引っぺがす」必要があるかどうかですが、 引っぺがさずにローカライズされました! おかげさまで、大部分がリソースにて多言語化対応できました。 ありがとうございます。 また何かありましたら宜しくお願いします。 | ||||||||
|
投稿日時: 2006-10-05 06:19
フィードバック、ありがとうございます。 # こっちのスレッドの問題は、VB と C# の違いか。。。 _________________ |
1