- PR -

カスタムコントロールの国際化対応について

投稿者投稿内容
tozan
会議室デビュー日: 2006/11/09
投稿数: 7
お住まい・勤務地: 京都
投稿日時: 2007-11-21 20:08
お世話になります。

VS2005にて、C#+.NetCompactFrameWorkの環境で、カスタムコントロールを作成しており、
海外環境でも使ってもらおうとしております。

デザイナでフォームにカスタムコントロールを貼り付けたときに、カスタムコントロール内
のメッセージ(Label、ListViewのColumnsなどのText)を英語環境なら英語で、日本語環境な
ら日本語で表示されるようにしたいのですが、うまくいきません。

どちらの環境でも、(規定値)の英語で表示されてしまいます。

こちらで試した手順は以下のとおりです。

・カスタムコントロール作成時に、参照元記事の内容に準じて、LocalizableをTrueに設定。
Languageを(規定値)のメッセージは英語とし、日本語(日本)で日本語メッセージを実装してビルド。


・英語版WinXP+英語版VS2005 の環境でカスタムコントロールを使用(フォームに貼り付け)
→メッセージ英語で表示される。

・日本語版WinXP+日本語版VS2005 の環境でカスタムコントロールを使用(フォームに貼り付け)
→メッセージが英語で表示される。(日本語で表示されてほしい)

過去、以下のようなスレッドがあったのですが、
今回のものとは主旨が違うようで・・
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33855&forum=7


また、XMLドキュメントにて、デザイン時のプロパティグリッドに表示される注釈
(プロパティ欄の最下部に表示されるもの)も実装しているのですが、これを国際化
することは可能なのでしょうか?
こちらについては、手がかりもない状況です。。

R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-11-22 09:54
引用:

tozanさんの書き込み (2007-11-21 20:08) より:

・カスタムコントロール作成時に、参照元記事の内容に準じて、LocalizableをTrueに設定。
Languageを(規定値)のメッセージは英語とし、日本語(日本)で日本語メッセージを実装してビルド。



ローカライズなソフトを作ったことはありませんが、上記の方法だけで、OSの対応言語から自動的に表示を変更してくれるということはしてくれないんじゃないかと思います。
ご希望の動作をさせるなら、Windows のバージョンの違いを取得して、内部的に切り替えてあげる必要があるんじゃないかな?
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
tozan
会議室デビュー日: 2006/11/09
投稿数: 7
お住まい・勤務地: 京都
投稿日時: 2007-11-22 11:06
R・田中一郎様

早速の返信ありがとうございます。

引用:
ローカライズなソフトを作ったことはありませんが、上記の方法だけで、OSの対応言語から自動的に表示を変更してくれるということはしてくれないんじゃないかと思います。



うーん・・元記事では「上記の方法」で、実行時の環境に合わせて切り替えてくれるとあるんですよね。
実際簡単なサンプルで確認もしております。

・実行ファイルを国際化して、実行時に言語環境に合わせて表示させる。(動作確認済み)
・DLL(コントロール)を国際化して、デザイン時に言語環境に合わせて表示させる。(今回できていない)

前者は自動でやってくれるけど、後者は別の話でそこは自分で面倒見ないといけないということなんでしょうかね。。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-11-22 11:30
引用:

tozanさんの書き込み (2007-11-22 11:06) より:

うーん・・元記事では「上記の方法」で、実行時の環境に合わせて切り替えてくれるとあるんですよね。



僕の誤解かもしれませんが、

引用:

英語版WinXP+英語版VS2005 の環境でカスタムコントロールを使用(フォームに貼り付け)
→メッセージ英語で表示される。

・日本語版WinXP+日本語版VS2005 の環境でカスタムコントロールを使用(フォームに貼り付け)
→メッセージが英語で表示される。(日本語で表示されてほしい)



と書かれていたので、OSの言語のバージョンで自動的に切り換えることはしないんじゃないかな、と思ったのです。
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-11-22 11:52
この多言語化の話は、以前わんくま勉強会にて話題に挙がったことがあります。
■ わんくま同盟 東京勉強会 #5 「ぽぴ王子と愉快な家来たち」Day
http://wankuma.com/seminar/20070323tokyo5/Default.aspx
ちょっと古いですが、このセッションで刈歩菜良(≠ぢゃまいかを)氏が語られていました。

なので「実行時の環境に合わせて切り替えをする」ことは可能なのだと思います。もしかするとデザイン時も。

ただ問題は、これが .NET Compact FrameWork だということです。
元記事では「.NET Compact Framework で使用できる」とは一言も書かれていませんし、Compact Framework の性質を考えると、こういった機能は真っ先に省かれるであろうと思います。

ということで、動かないのは .NET Compact Framework だからなのではないでしょうか。
(あ、あてずっぽうなのであまりあてにしないでくださいね)
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
tozan
会議室デビュー日: 2006/11/09
投稿数: 7
お住まい・勤務地: 京都
投稿日時: 2007-11-22 14:30
R・田中一郎様
ぽぴ王子様

返信ありがとうございます。

ぽぴ王子様、さっそくセッション拝見させていただきました。

引用:
なので「実行時の環境に合わせて切り替えをする」ことは可能なのだと思います。もしかするとデザイン時も。



「実行時の環境に合わせて切り替えをする」ことはできているんですが、「デザイン時」に規定の言語でしか表示されないのが今回の問題なのです。。

セッション中で刈歩氏がResourceManager で直接リソース取得・・というヒントを出しておられましたが、現時点の情報からは、コード編集してコンストラクタでリソース取得→設定するしかないのかな・・と考えております。


NET "Compact" FrameWork ・・関わって2年弱ですが、曲者ですね。。
色々と痒いところに手が届かず、Web上でもあまり情報ないです。
NET "Compact" FrameWorkに、色々求めてしまうこっちが悪いのか・・^^;
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-11-22 14:47
引用:

「デザイン時」に規定の言語でしか表示されないのが今回の問題なのです。。



デザイン時は VS の動作しているロケールで UI が表示されるわけで、当たり前の動作だと思います。

引用:

コード編集してコンストラクタでリソース取得→設定するしかないのかな・・と考えております。



コードで実現するならそーなります。

あるいは、VS をそのロケールで実行するとか。
tozan
会議室デビュー日: 2006/11/09
投稿数: 7
お住まい・勤務地: 京都
投稿日時: 2007-11-22 15:31
渋木宏明(ひどり)様

返信ありがとうございます。

VSを実行しているロケールは、それぞれUS/日本になっています。

いったん、整理させていただきます。
繰り返しになるかもしれませんが・・

-------------------
カスタムコントロール
-------------------
・スマートデバイス向けプロジェクト(コントロールライブラリ)
・規定の言語は英語で実装
・Localizable=True、Language=日本語(日本)にして、日本語リソースを実装
------

------
環境A
------
・英語版WindowsXP
・英語版VisualStudio2005
・ロケール:US
・VirtualPC 2007上で動作
------

------
環境B
------
・日本語版WindowsXP
・日本語版VisualStudio2005
・ロケール:日本
------

環境A/Bで、それぞれVB.Netのスマートデバイス向けプロジェクトのフォームに
カスタムコントロールを貼り付け。

環境A :デザイナ上でカスタムコントロールのメッセージは英語で表示
環境B :デザイナ上でカスタムコントロールのメッセージは英語で表示(日本語で出て欲しい)


カスタムコントロールを用意して、開発環境を提供しようとしているのですが、。
なんとか、バイナリ1セットの提供で、日本語環境でも英語環境でも、開発ができて欲しい。
というのが目論見です。

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