- - PR -
カスタムコントロールの国際化対応について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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ドキュメントにて、デザイン時のプロパティグリッドに表示される注釈 (プロパティ欄の最下部に表示されるもの)も実装しているのですが、これを国際化 することは可能なのでしょうか? こちらについては、手がかりもない状況です。。 | ||||||||
|
投稿日時: 2007-11-22 09:54
ローカライズなソフトを作ったことはありませんが、上記の方法だけで、OSの対応言語から自動的に表示を変更してくれるということはしてくれないんじゃないかと思います。 ご希望の動作をさせるなら、Windows のバージョンの違いを取得して、内部的に切り替えてあげる必要があるんじゃないかな? _________________ R・田中一郎 - R.Tanaka.Ichiro’s Blog | ||||||||
|
投稿日時: 2007-11-22 11:06
R・田中一郎様
早速の返信ありがとうございます。
うーん・・元記事では「上記の方法」で、実行時の環境に合わせて切り替えてくれるとあるんですよね。 実際簡単なサンプルで確認もしております。 ・実行ファイルを国際化して、実行時に言語環境に合わせて表示させる。(動作確認済み) ・DLL(コントロール)を国際化して、デザイン時に言語環境に合わせて表示させる。(今回できていない) 前者は自動でやってくれるけど、後者は別の話でそこは自分で面倒見ないといけないということなんでしょうかね。。 | ||||||||
|
投稿日時: 2007-11-22 11:30
僕の誤解かもしれませんが、
と書かれていたので、OSの言語のバージョンで自動的に切り換えることはしないんじゃないかな、と思ったのです。 _________________ R・田中一郎 - R.Tanaka.Ichiro’s Blog | ||||||||
|
投稿日時: 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 だからなのではないでしょうか。 (あ、あてずっぽうなのであまりあてにしないでくださいね) _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2007-11-22 14:30
R・田中一郎様
ぽぴ王子様 返信ありがとうございます。 ぽぴ王子様、さっそくセッション拝見させていただきました。
「実行時の環境に合わせて切り替えをする」ことはできているんですが、「デザイン時」に規定の言語でしか表示されないのが今回の問題なのです。。 セッション中で刈歩氏がResourceManager で直接リソース取得・・というヒントを出しておられましたが、現時点の情報からは、コード編集してコンストラクタでリソース取得→設定するしかないのかな・・と考えております。 # NET "Compact" FrameWork ・・関わって2年弱ですが、曲者ですね。。 色々と痒いところに手が届かず、Web上でもあまり情報ないです。 NET "Compact" FrameWorkに、色々求めてしまうこっちが悪いのか・・^^; | ||||||||
|
投稿日時: 2007-11-22 14:47
デザイン時は VS の動作しているロケールで UI が表示されるわけで、当たり前の動作だと思います。
コードで実現するならそーなります。 あるいは、VS をそのロケールで実行するとか。 | ||||||||
|
投稿日時: 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セットの提供で、日本語環境でも英語環境でも、開発ができて欲しい。 というのが目論見です。 |