!!!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の文言を変更することもできそう。重そうだけど、そうしたらテキストファイルに書き出してリソースの切り出しができるなぁ。 なんて考えていたら、[全く同じこと|http://www.gprj.net/wiki/index.php?title=%E7%92%B0%E5%A2%83%E3%81%AE%E7%9B%B8%E9%81%95%E3%81%AB%E3%82%88%E3%82%8B%E8%B5%B7%E5%8B%95%E6%99%82%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E3%81%B8%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95(VB6)]を考えてる人が既にいた。そうか、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ではどのように多言語化すべきなのかを知らない…。