トップ 検索 一覧 ヘルプ 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の文言を変更することもできそう。重そうだけど、そうしたらテキストファイルに書き出してリソースの切り出しができるなぁ。

なんて考えていたら、[全く同じこと|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ではどのように多言語化すべきなのかを知らない…。