トップ 検索 一覧 差分 ソース ヘルプ RSS ログイン

VB6における海外ソフトの日本語化手法

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秒