.NETフォームをコントロールパネルの地域と言語の設定に合うように切り替える

便利な使い方、目的別操作方法、ソフトウエアの国際化にまつわる情報など。

.NETフォームをコントロールパネルの地域と言語の設定に合うように切り替える

Postby J.O. » Mon Jul 04, 2011 2:53 pm

.NETアプリケーションのフォーム(ボタン、テキスト、ラベルなど)をコントロールパネルの「地域と言語のオプション」で設定した内容に沿って切り替えるには、エントリーポイントに以下のコードを挿入します。(※フォームのコンストラクタでは反映されないことに注意!)

[C++]
Code: Select all
[STAThreadAttribute]
int main(array<System::String ^> ^args) {
System::Threading::Thread::CurrentThread->CurrentUICulture =
                System::Threading::Thread::CurrentThread->CurrentCulture;

[C#]
Code: Select all
[STAThread]
static void Main() {       
System.Threading.Thread.CurrentThread.CurrentUICulture =
                System.Threading.Thread.CurrentThread.CurrentCulture;

[VB]
Code: Select all
Public Sub New()
System.Threading.Thread.CurrentThread.CurrentUICulture = _
                System.Threading.Thread.CurrentThread.CurrentCulture


※World Wide Naviでは、C++とC#には、上記コードが書かれているWwnavi.Resource.Init()メソッドが自動でMainに挿入されます。

※VBでは初期状態で、Sub Newがないため、World Wide NaviではWwnavi.Resource.Init()を挿入しません。自分でVisual StudioからNewを作成し、その中のInitializeComponent()の前にWwnavi.Resource.Init()を挿入します。
(将来的には、VBの場合、Sub Newの存在判別をして、なければ自動作成して挿入できるようにする予定です。)


なお、.NETフォームを自動で多言語切り替えするには、Visual Studio内でLocalizableプロパティをtrueにし、LanguageをDefaultに設定します。

Sisulizerがあれば、ビルドしたexe(bin/Debug/MyApp.exeなど)を直接読み込んで翻訳されたdllを作成することができます。(resxなどを作成する必要がありません!)

Sisulizerでの翻訳については、以下の参照ください。
http://www1.kokusaika.jp/help/ja/wwnavi_sisu.html

但し、上記のようなカルチャーの切り替えや、プログラム内に埋めこまれているメッセージなどの言語切り替えには、World Wide Naviの文字列の外部化でresxを自動作成してから、ビルド->Sisulizerで翻訳という手順になります。

.NETフォームの多言語化については、World Wide Navi附属の以下の参考情報をご覧ください。

http://www1.kokusaika.jp/advisory/org/j ... ource.html
User avatar
J.O.
 
Posts: 154
Joined: Tue Mar 23, 2010 2:02 pm
Location: Tokyo, Japan

Return to TIPS & HOWTO

Who is online

Users browsing this forum: No registered users and 1 guest

cron