アプリケーションの多言語化
アプリケーションを英語化する時に調べた事を備忘録として書いています。プログラムの技術について調べて纏めといたりしても、時間が経つと「あれ、どこ行ったっけ?」とか、纏めたものを見ても「これなんだっけ?」という事がよくあるので、自分の為にこのブログに書いておくと便利です^^;
フォームの英語化
すべてのフォームの英語版を作成します。プロパティーのLanguageを多言語化したい言語に変えます。ここでは英語(米国)にしました。本当は、既定値を英語にしておいた方がいいらしいのですが、とてもそこまでやってられないので今回は既定値は日本語です。これで英語版のフォームを作成していきます。
OSの言語を取得
OSの言語は
「System.Threading.Thread.CurrentThread.CurrentUICulture.Name」この値で取得できるようです。こちらの値が「en-US」の場合は、デフォルトで英語表記にするようにしました。
アプリケーションマニフェストファイルの設定
これは前からだったのですが、MuLogicalは高DPI対応しておらず、例えば私のパソコンのディスクトップの場合、125%に拡大表示しているのですが、
MuLogicalをインストールすると「あれ?文字が小さい」となっていました。フォームを拡大縮小設定に合わせるために、マニフェストファイルを設定します。プロジェクトに新しい項目の追加でマニフェストファイルを選択します。マニフェストファイルを開き以下の部分のコメントアウトを外します。これで出来ました。
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
MDI子フォームのサイズ設定
「MIDIエディットウィンドウ」などMDIの子フォームを表示する時に、前回のサイズを保存しておいて、それを再現するということをやっていたのですが、英語版にすると再表示する度に大きくなる・・・。クローズイベントの際に、「this.Size.Height、this.Size.Width」を保存しておいて、再表示する時に、前回の値を上記値に設定していたのですが、それが大きく設定されるんですよね。この事象を知っている方がいたら教えてほしいくらいなのですが、ここは力技で、1.12で割った値を設定すると大体ちょうどよくなるので、そのように対応しました。これはパソコンによっては見え方が違ってきてしまうかもしれません。。
このように、英語化はなかなか完全には行きませんでしたが、勉強にはなりました^^