ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
日本語化あそび
日時: 2008/08/10 00:55
名前: lightbox



拡張子:
きちんとしたアプリケーションをきちんと日本語化するのは多くの時間が必要です。
この作業はとても大変で、バージョンが変わるとその労力が再び必要になります。

しかし、普段良く使う場所だけであれば短時間で可能ですし、
そもそも小さなツール類であればヒマな時に思いつきで実行できます。

で、それに必要なツールと言えば StirlingResource Hacker です。

他人に配布するのが目的であれば、WDiffOTL が必要になりますが、
個人的に使うのであれば、パッチのあたったプログラムをコピーして使えば良いです。
必要なフリーソフト
拡張子:
Stirling( バイナリエディタ )
http://www.vector.co.jp/soft/win95/util/se079072.html

Resource Hacker( 日本語版 : rh_japanese.zip )
http://www.angusj.com/resourcehacker/

WDiff( 差分配布用 )
http://www.vector.co.jp/soft/win95/util/se057654.html

OTL( テキスト定義ファイルからパッチ )
http://www.vector.co.jp/soft/win95/util/se385242.html
Stirling 右側のエリアに直接入って編集できますが、Delete や Insert しないように注意。 目的の場所は検索で簡単に探せます。 上のサンプル画像は、SHIFT_JIS で行ないましたが、いまどきなら キャラクタセットは Unicode に変更しておきます。 Resource Hacker 右側のエディタで変更したら、スクリプトをコンパイルしてから保存します。 変更すると変更前の残骸が別の場所に残る場合があるので、バイナリエディタ側 で検索する時は注意。 アイコンとかの変更も簡単。 メニューやダイアログの変更なんかは実際表示したものを見ながら可能。 WDiff HELPは解りづらいので、インターネットで使い方調べたほうが良いでしょう。 とにかく差分ファイル作って、自己展開(32ビット)を作ります。 それをオリジナルと同じディレクトリに置いて実行するとパッチがあたります。 OTL [任意の名前] というセクション1つに対して、アドレスを連ねていきます。 そして、連続するパッチデータを記述します。 単純パッチと違うところは、すぐ戻せるというところと、 矛盾したパッチしようとすると GUI 上で解るというところでしょうか。    ↓例
拡張子:
[パッチ]
ADDRESS1=B28C
DATA1=436C6970205061746820282F2920,2F2082C583528373815B20202020
ADDRESS2=B29C
DATA2=436C6970205061746820285C2920,5C2082C583528373815B20202020
固定長の変更のみであれば、以下のようなバッチファイルとスクリプトで、 パッチ定義ファイルを作成できます。 cnv.bat
拡張子:
fc /B ClipPath.dll.bak ClipPath.dll > patch.txt
cscript.exe cnv_patch.vbs
pause
cnv_patch.vbs
拡張子:
Set Fso	= CreateObject( "Scripting.FileSystemObject" )

on error resume next
Set InObj = Fso.OpenTextFile( "patch.txt", 1 )
if Err.Number <> 0 then
	Wscript.Echo Err.Description
	Wscript.Quit
end if
on error goto 0
Set OutObj = Fso.OpenTextFile( "patch.ini", 2, True )

OutObj.WriteLine "[ConvertFromFC]"

' **********************************************************
' 処理
' **********************************************************
nCnt = 0
Do While not InObj.AtEndOfStream

	Buffer = InObj.ReadLine
	if nCnt <> 0 then

		aData = Split( Buffer, ":" )
		aHex = Split( aData(1), " " )

		OUtObj.WriteLine "ADDRESS" & nCnt & "=" & Hex(Clng(( "&H" & aData(0) )))
		OutObj.WriteLine "DATA" & nCnt & "=" & aHex(1) & "," & aHex(2)

	end if

	nCnt = nCnt + 1

Loop

' **********************************************************
' ファイルクローズ
' **********************************************************
OutObj.Close
InObj.Close

Wscript.Echo "処理が終了しました"
作成された patch.ini
拡張子:
[ConvertFromFC]
ADDRESS1=B28C
DATA1=2F,43
ADDRESS2=B28D
DATA2=20,6C
ADDRESS3=B28E
DATA3=82,69
ADDRESS4=B28F
DATA4=C5,70
ADDRESS5=B290
DATA5=83,20
ADDRESS6=B291
DATA6=52,50
ADDRESS7=B292
DATA7=83,61
ADDRESS8=B293
DATA8=73,74
ADDRESS9=B294
DATA9=81,68
ADDRESS10=B295
DATA10=5B,20
ADDRESS11=B296
DATA11=20,28
ADDRESS12=B297
DATA12=20,2F
ADDRESS13=B298
DATA13=20,29
ADDRESS14=B29C
DATA14=5C,43
ADDRESS15=B29D
DATA15=20,6C
ADDRESS16=B29E
DATA16=82,69
ADDRESS17=B29F
DATA17=C5,70
ADDRESS18=B2A0
DATA18=83,20
ADDRESS19=B2A1
DATA19=52,50
ADDRESS20=B2A2
DATA20=83,61
ADDRESS21=B2A3
DATA21=73,74
ADDRESS22=B2A4
DATA22=81,68
ADDRESS23=B2A5
DATA23=5B,20
ADDRESS24=B2A6
DATA24=20,28
ADDRESS25=B2A7
DATA25=20,5C
ADDRESS26=B2A8
DATA26=20,29
メンテナンス

日本語化のポイント ( No.1 )
日時: 2008/08/09 22:31
名前: lightbox


日時: 2008/08/09 22:31
名前: lightbox
大別すると、2つに分かれます。

拡張子:
1) リソースエディタで可変長な変更をする

2) バイナリエティタで固定長な変更をする
1) は日本語化された ResHacker で、特になにも意識しないで変更します。 ひたすら日本語へと変更するだけで、誰にでも時間さえあれば可能です。 2) は注意が必要です。プログラムの変数部分や定数部分をを変更するので、 文字列の開始位置や変更可能なサイズは決まっています。
拡張子:
また、2) の場合 Unicode なのか、SHIFT_JIS なのかでキャラクタセット
を事前に変更する必要があります。

※ 以下のように、文字と文字の間に 00 が入っているのは、Unicode です。
拡張子:
以下のようにして、Unicode にキャラクタセットを変更してから変更します
拡張子:
サイズが変わらないように上書きで注意して変更します
( 00 00 と なっている部分にデータをかぶせないように )
拡張子:
↓パッチの結果
このアーティクルの参照用URLをクリップボードにコピー メンテナンス