- PR -

ユーザーコントロールの多言語対応

1
投稿者投稿内容
kavosblack
会議室デビュー日: 2006/09/28
投稿数: 3
投稿日時: 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")

以上
それでは宜しくお願いします。
THREE-ONE
常連さん
会議室デビュー日: 2006/08/17
投稿数: 36
投稿日時: 2006-09-29 01:22
DataBindingで動的に設定するとか
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-29 09:38
引用:

kavosblackさんの書き込み (2006-09-28 16:47) より:

問題となっている点は、作成したユーザーコントロールのTitleプロパティ(ラベルのText)がビルドした際、フォームデザイナにて「Me.****.Title = "*****"」とベタ書きにて作成されてしまい、リソースファイルでの多言語対応が行えないことです。


デザイナでの初期値は長さ 0 の文字列にしておいて、
InitializeComponent メソッドの後に独自に、

引用:

Me.****.Title = resources.GetObject("****.Title")


と、リソースから初期化するのはダメでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
kavosblack
会議室デビュー日: 2006/09/28
投稿数: 3
投稿日時: 2006-09-29 13:23
THREE-ONEさん、じゃんぬねっとさん回答ありがとうございます。

THREE-ONEさん
勉強不足で「DataBinding」の設定方法が良くわかっていないのですが、
今回は既存ソースをあまりいじらずに多言語対応を行いたいと要望があり、
リソースファイルでの管理が難しい場合は、constで情報を持ち、
各項目に設定する方法になると思われます。
(関連システムと同じ方法)

じゃんぬねっとさん
今回のリソースファイルでの管理方法だと、リビルドをした際にリソースファイルに
手で入力したユーザコントロールのプロパティ内容が消えてしまう現象が発生して
情報を取得できませんでした。

もう少し調査を行ってみたいと思います。
何かありましたら宜しくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-09-29 23:29
ちぃと繁雑な作業になるが、まぁ、我慢してくれ。

まず、Form の Language プロパティを、規定値に戻す。
件の、「ローカライズされない」ユーザコントロールを、すべてフォームから引っぺがす(必要があると思う)。
件の、「ローカライズしたい」プロパティに、System.ComponentModel.Localizable(true) アトリビュートを付加する。詳細は msdn を参照のこと。直訳風で理解に苦しむが。
ユーザコントロールをビルドする。
Form に、ユーザコントロールを張り直す。
ローカライズ作業を行う。


 問題は、「フォームからユーザコントロールを引っぺがす」必要があるかどうか。
これは検証していないので、是非検証して、報告してください。
Lanugage プロパティが規定値でないと、コントロールのポトペタが出来ないことは、確認しています。


経緯:::
きっと、属性で指定するはずだ。
国際化か、ローカライズでキーワード検索すれば見つかるだろう。
見つからない。。。
そうだ、目次だ。「国際化対応アプリケーションの開発」っと。ここだろう。
ない。。。
ユーザコントロールだから、「コンポーネントの開発」かもしれない。
国際化なんてのはないなぁ。。。
「コンポーネントのデザイン時属性」?ここに属性の一覧があるかな?
全部はないけど、一部はある。。。あった!

_________________
kavosblack
会議室デビュー日: 2006/09/28
投稿数: 3
投稿日時: 2006-10-04 16:23
Jittaさん回答ありがとうございます。
返信遅くなり申し訳ないです。

「フォームからユーザコントロールを引っぺがす」必要があるかどうかですが、
引っぺがさずにローカライズされました!

おかげさまで、大部分がリソースにて多言語化対応できました。
ありがとうございます。
また何かありましたら宜しくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-10-05 06:19
引用:

kavosblackさんの書き込み(2006-10-04 16:23)より:
「フォームからユーザコントロールを引っぺがす」必要があるかどうかですが、
引っぺがさずにローカライズされました!


フィードバック、ありがとうございます。

# こっちのスレッドの問題は、VB と C# の違いか。。。

_________________
1

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