VB6における海外ソフトの日本語化手法
DVD Flick日本語版でついに日本語化に手を付けてしまった猫科研究所だが、その日本語化の手法で悩むことがある。
- いちいち全てのコントロールのフォント設定(サイズも含む)を指定していられない。
- あまり変更しすぎるとパッチが膨大になり、本家の更新時に当たりにくくなる。
- とにかく面倒くさい。
で、色々考えていた。そんな中、今更MinGW/MSYSシリーズでgettextを含めるかどうか悩んでいたら、何かが繋がった。面倒なことは機械にやらせて、動的に変更すりゃいいじゃんと。
当該FormのForm_Loadで
Dim i As Long For i = 0 To Form1.Count - 1 Form1(i).FontName = "MS UI Gothic" Form1(i).FontSize = 10 Next i
等とすれば、そのフォームのフォントを一気に変更できるんじゃね?と。
元の英文をキーとしたDictionaryを作成すれば、起動時に一気にCaptionの文言を変更することもできそう。重そうだけど、そうしたらテキストファイルに書き出してリソースの切り出しができるなぁ。
なんて考えていたら、全く同じことを考えてる人が既にいた。そうか、For文の前に"On Error Resume Next"をつけるべきですか。
Private Sub Form_Load() On Error Resume Next Dim i As Long For i = 0 To Form1.Count - 1 With Form1(i) .FontName = "MS Pゴシック"'好きなのフォントを指定 .FontSize = 9'好きなのフォントサイズを指定 End With Next i End Sub
だそうです。
ただ、この方法には利点も欠点もある。
- 追加されたコントロールは取り敢えず原文のまま表示される。
- パッチのリジェクトを以てして削除されたコントロールを検出することはできない。
- とにかく全てを動的に変えるので起動が重くなる。
- 作り方によっては意図しない部分まで変えてしまう。
まぁ、思いついただけでDVD Flickに導入するつもりは今のところありません。
そういえば、本来のVB6ではどのように多言語化すべきなのかを知らない…。
最終更新時間:2009年06月30日 05時11分01秒