(for Internet Explorer)
← ▼ ▲
↑
SyncFilesT の設定ファイルの詳細
/SyncFilesT/ModuleFiles
（1つ）
モジュールを構成するファイルの集合
@module_name
子ノードに指定するファイルが所属するモジュールの名前。
/SyncFilesT/ModuleFiles/TargetFiles
（1つ、または、複数）
ターゲット。 モジュールの子ノード
@index
@target_name
@path
ターゲットの名前。 表の列のタイトルに表示されます。
ファイルが入ったフォルダーのパス。 相対パスの基準は、設定ファイルが
入っているフォルダー。
このターゲットに対応する description 属性の値の中の要素番号。 先頭は 1。
複数のターゲットで同じ要素番号を共有することも可能です。
/SyncFilesT/ModuleFiles/File
（1つ、または、複数）
ファイル。 モジュールの子ノード
@kind
@description
@name
@line_num
Kind値。 ファイルの種類を表す番号。 ターゲットが異なるときにファイル名が
異なるときに、同じ番号を割り当て、比較対象にします。
Description値。 同じ内容であるべきファイルを表す文字の並び。CSV形式。
空白文字は、ファイルが存在しないことを表します。
ファイル名。
FA File Name 形式
設定ファイル内の行番号。 自動的に更新されます。
/SyncFilesT/ModuleFiles/CommittedFile
（０、1つ、または、複数）
コミットしたファイルのリビジョン
@hash
ファイルの内容のハッシュ値。 MD5形式。
@revision
リビジョン。 形式は、モジュール名\Kind値\リビジョン番号\Description値。
例： ModuleX\1\01\A
/SyncFilesT/HashList
（０、または、1つ）
コミットしたファイルの場所
@path
MD5 リスト
のパス
１つのモジュールに対して、複数の ModuleFiles タグを指定できます。
。 同じ名前のファイルが１つしかないときは、
フォルダー名を指定する必要はありません。
<< SyncFilesT
詳細
参考
→ 新規作成
→ サンプル
← ▼ ▲
SyncFilesX
同じ、または、ほぼ同じ内容に保つことが求められる２つのファイルがあるとき、その片方または両方
の内容がそれぞれで更新されても、改めて同じ、または、同様の差分があるように戻す（同期する）
ことを支援します。 前回 同期したときの内容のとの差分も確認できるので、差分が追加すべき内容
なのか、削除すべき内容なのかを確認することもできます。
SyncFilesX スクリプト
'------------------------------------------------------------[FileInScript.xml]
'<SyncFilesX>
'<SynchronizingSet
' base_name="ModuleX : 環境A"
' work_name="ModuleX : 環境B"
' base="..\Project\Base"
' path="..\Project\Work"
' synced_base="_synced\1_Base"
' synced_path="_synced\1_Work">
'
'<File path="Image.bmp"/>
'<File path="SourceCpp.cpp" base="Source.c"/>
'
'<Folder same="yes" path="SubFolder"/>
'<File same="no" path="SubFolder\porting.c"/>
'
'<Folder same="clone" path="CloneFolder"/>
'
'</SynchronizingSet>
'</SyncFilesX>
'-----------------------------------------------------------[/FileInScript.xml]
Sub Main( Opt, AppKey )
SyncFilesX_App AppKey, new_FilePathForFileInScript( Empty )
End Sub
'--- start of vbslib include ------------------------------
： （vbslib をインクルードして main を呼び出すコード）
環境A用フォルダー
環境B用フォルダー
ほぼ同じ内容に保つ
Image.bmp
Image.bmp
Source.c
SourceCpp.cpp
printf( "Hello!\n" );
std::cout << "Hello!" << std::endl;
（ Source.c とペア）
ペアとなるファイルの内容が適切な関係にある状態（同期された状態）になったら、コミットと呼ぶ
操作をします。 SyncFilesX におけるコミットは、同期された状態のコピーを作成することです。
コミットした後は、ペアの片方のファイルを更新しても、コミット時のファイルのコピーがあるので、
それを参考に、もう片方のファイルを更新することができます。 ただし、更新をどのように反映
させるべきかは Diff ツールを使って人間が反映させてください。
同期管理フォルダー (_patch or _synced)
SyncFilesX （メイン・スクリプト）
前回、同期したときの環境A用フォルダー
前回、同期したときの環境B用フォルダー
[ 親: スクリプト・データ・ファイル (vbslib付属) ]
コミットしたらここにコピーされる
vbslib include
SyncFilesX.vbs
SyncFilesX を使うときは、Diff ツールが必要です。
→ Setting_getDiffCmdLine
設定部分の行頭には、' が必要です。
→ new_FilePathForFileInScript
関連
→ IsSynchronizedFilesX
<SyncFilesX>
<Variable name="${Synced}" value="_synced"/>
<SynchronizingSet
base_name="ModuleX : 環境A"
work_name="ModuleX : 環境B"
base="B"
path="W"
synced_base="${Synced}\BaseSub"
synced_path="${Synced}\WorkSub">
<File path="UpdateBoth.txt"/>
</SynchronizingSet>
</SyncFilesX>
FileInScript.xml に書く設定には、以下の SynchronizingSet タグを使用できます。
SynchronizingSet タグがあるときは、どの SynchronizingSet タグのセットを選択するかの
メニューが追加されます。
${Synced} は、Variable タグの変数の値に
置き換わります。
つまり、左の場合、
synced_base="_synced\BaseSub" になります。
Image.bmp ファイルに対するそれぞれのパスは次のようになります。
..\Project\Base\Image.bmp
環境A：
環境B：
前回、コミットしたときの環境B：
前回、コミットしたときの環境A：
_synced\Base\Image.bmp
..\Project\Work\Image.bmp
_synced\Work\Image.bmp
SourceCpp.cpp (Source.c) ファイルに対するそれぞれのパスは次のようになります。
same="no" が設定されているこのファイルは、同期しても内容が異なります。 ただし、
前回、同期した内容との差分を、同期相手に反映する必要があります。 same 属性
は、yes か no を明示的に指定することもできますが、省略すると前回の同期内容が
同じかどうかと今回の同期内容が同じかどうかが異なるときに警告します。
_synced\Work\SourceCpp.cpp
..\Project\Work\SourceCpp.cpp
_synced\Base\Source.c
前回、コミットしたときの環境A：
前回、コミットしたときの環境B：
環境B：
..\Project\Base\Source.c
環境A：
UpdateBoth.txt ファイルに対するそれぞれのパスは次のようになります。
_synced\WorkSub\UpdateBoth.txt
W\UpdateBoth.txt
_synced\BaseSub\UpdateBoth.txt
前回、コミットしたときの環境A：
前回、コミットしたときの環境B：
環境B：
B\UpdateBoth.txt
環境A：
また、Variable タグを使って、変数を定義できます。
Variable タグで定義した変数の参照は、
path, base, synced_path, synced_base
に指定できます。
→ new_LazyDictionaryClass
→ new_PathDictionaryClass_fromXML
File タグと Folder タグについての補足
SubFolder フォルダーは、フォルダーの中にある（サブフォルダーも含めた）ファイルが
同期対象です。 ただし、SubFolder\porting.c ファイルは、同期しても内容が異なります。
前回、コミットしたときのファイルやフォルダーのパスを指定するときは、synced_base
属性や synced_path 属性を記述します。
同期をとるファイルやフォルダーを設定します。
環境Aをアプリケーション環境（統合）、環境Bを個別環境（ベース以外の単体）とすることが
よくあります。
→ ヒント
下記のサンプルのような .vbs ファイルを作成してください。
親子関係（統合-個別関係）ではないときは、更新が多い方のフォルダーの中の同期管理フォル
ダーに、「SyncFilesX による同期は、関係先のフォルダーにあります」のようなメモだけあると
よいでしょう。 そこに、関係先のモジュール名の一覧があるとよいでしょう。
構成するモジュールごとに、同期管理フォルダーを作成するとよいでしょう。
→ SyncFilesX_Class
SynchronizingSet タグの ID 属性を指定すると、その値が画面に表示されます。
例： <SynchronizingSet ID="A" ... と指定すると 1. [A] と表示。
SyncFilesX タグの used_ID 属性を指定すると、ID 属性が一致する SynchronizingSet タグ
だけ有効になります。
例： <SyncFilesX used_ID="A" ... と指定すると、<SynchronizingSet ID="A" ... のみ有効。
ソース
→ SyncFilesX ソース
→ スクリプト・データ・ファイル (vbslib)
→ UpdateModule
番号またはコマンド >SyncFilesX
-------------------------------------------------------------------------------
>SyncFilesX
同じ、または、ほぼ同じ２つのフォルダー（またはファイル）があって、その両方または
片方の内容を更新したときに、その２つを同期（マージ）することを支援します。 ただ
し、この作業では、前回同期したときの２つのバックアップが必要です。
４つのパス（NewWork, NewBase, SynchronizedWork, SynchronizedBase）を入力してくだ
さい。
NewWork：新しいワークのフォルダーまたはファイルのパス>
NewBase：新しいベースのフォルダーのパス>
SynchronizedWork：前回同期したときのワークのフォルダーのパス>
SynchronizedBase：前回同期したときのベースのフォルダーのパス>
前回コミット時のベース: "_synced\Base"
前回コミット時のワーク: "_synced\Work"
*:同期されていないファイル、=:未同期でワークとペースの内容が同じ
-------------------------------------------------------------------------------
■ベース（ModuleX : 環境A）: "..\Project\Base"
■ワーク（ModuleX : 環境B）: "..\Project\Work"
1. .=. Image.bmp
2. *!. SourceCpp.cpp
91. 再スキャンして一覧する
92. ルート・フォルダーを開く
99. 終了
番号 >2
-------------------------------------------------------------------------------
ベース：C:\ProjectX\Project\Base\Source.c"
ワーク：C:\ProjectX\Project\Work\SourceCpp.cpp"
ベース・ファイルとワーク・ファイルは「同じ内容」でした
手動で同期したら、コミットしてください。
-------------------------------------------------------------------------------
★ベース（ModuleX : 環境A）: Source.c (変更)
★ワーク（ModuleX : 環境B）: SourceCpp.cpp (不変)
1. Diff で開く：同期するファイル (*異なる) [ ベース / ワーク ]
2. Diff で開く：前回の同期 (=同じ) [ ベース / ワーク ]
4. Diff で開く：ベース (変更) [ 前回コミット時 / 現在 ]
5. Diff で開く：ワーク (不変) [ 前回コミット時 / 現在 ]
44.Diff で開く：[ 前回コミット時のベース / ベース / ワーク ]
55.Diff で開く：[ ベース / ワーク / 前回コミット時のワーク ]
6. ファイルまたはフォルダーを開く
7. 再スキャンする
8. 同期をコミットする
9 または Enter : 戻る
番号 >
SyncFilesX
PatchAndBackUp
の更新内容を見ることにも使えます。
→ SyncFilesX スクリプト
概要
→ 概要
→ その他のヒント
テスト
→ SyncFilesX ソース
<File path="SourceCpp.cpp" base="Source.c"
synced_path="OldSourceCpp.cpp" synced_base="OldSource.c"/>
→ SyncFilesMenuLib.vbs
→ ファイルの改名・結合・分離・部分移動があったとき
→ T_SyncFilesX フォルダー
→ ModuleAssort
また、フォルダーを同期するときは、同期をとる必要があるファイルを一覧します。
ペアにするファイル名や相対パスが異なるときでも対応できます。
→ SyncFilesT
→ SyncFilesX ソース
→ SyncFilesX を内部で使うツールとの比較
← ▼ ▲
SyncFilesX を内部で使うツールとの比較
Base
Merged
Right
Left
ThrerWayMerge
NewBase
OldWork
NewWork
OldBase
SyncFilesX 内部
Patch&BackUp
OldTarget
NewTarget
Patch
BackUp
UpdateModule
ModuleNew
TargetMerged
ModuleSync
TargetSync
SyncFilesX.xml
path
synced_base
synced_path
base
← ▼ ▲
ファイルの改名・結合・分離・部分移動があったとき
CrossBefore フォルダーを作成する。
CrossBefore フォルダーとは、
Before から全部or一部を移動しただけのファイルが入ったフォルダーです。 内容は変更されていません。
CrossBefore\1A、CrossBefore\2A は、1A のファイル構成に従います。
CrossBefore\1B、CrossBefore\2B は、1B のファイル構成に従います。
Natural Docs のタグが追加されたり、キーワードが修正されたりすることもあります。
MakeCrossOld.vbs を実行。
初回は、CrossByTool にできます。 そのコピーが、CrossBefore にできます。
また、1A, 1B, 2A, 2B を、Before、BeforeNoTag にコピーします。
SyncFilesX.vbs を CrossBefore にコピーして起動したとき、追加・削除のファイルは無いはずです。
２回目は、CrossByToolNew にできます。
diff "CrossTool\*", "CrossToolNew\*" の差分を
diff "CrossTool\*", "CrossToolNew\*", "CrossBefore\*" へ反映させてください。
diff "Before\*", "CrossByToolNew\*"
1A のファイル構成を変えていないときは、"Before\1A", "CrossBefore\1A" に差分は無いはずです。
1B のファイル構成を変えていないときは、"Before\1B", "CrossBefore\1B" に差分は無いはずです。（後記）
２回目の MakeCrossOld.vbs で差分が追加されたときは、1A、1B が Before からコピーされていない
可能性があります。
__Moved_Sections.txt でエラーが出たとき（差分が出たとき）は、
● Before\*、1A、1B の中に、Natural Docs のタグを追加、または、編集する
● MakeCrossOld.vbs に改名を設定
して、MakeCrossOld.vbs を再実行してください。 （●1A、1B は、未編集なら Before からコピーできます）
CrossByToolNew\*\__Moved_Sections.txt で、ERROR NotFoundInBefore や ERROR NotRequestedFromNew
になっているキーワードについては、全文検索して、状況と合うように同様の対処をします。
たとえば、Function: Foo の場合、Function と Foo の両方が検索のキーになります。
新規追加されたセクション（NotFoundInBefore エラー）は、もし余分だったら後で同期するときに分かるので、
クロス処理（ここ）においては無視できますが、前回のファイルに Natural Docs のタグだけがないとき
（grep で見つかるとき）は対処する必要があります。
削除されたセクション（NotRequestedFromNew エラー）は、削除が正しいなら無視してよい。
以上の問題がなくなったら、次へ。
SyncFilesX.vbs で 1A、1B について、最新のファイル名や内部構成（内容以外）になるように、
ファイル名を変更したり、テキスト セクションを移動したりします。 Natural Docs のキーワードやコードは
変更しません。 ファイルのコミットはしません。
確認したら、CrossBefore、CrossByTool、CrossByToolNew を削除し、一度だけ、MakeCrossOld.vbs を
再実行します。
diff "Before\*", "CrossBefore\*"
以下は、対処されているはずです。 そうでなければ、diff "Before\*", "CrossByToolNew\*" へ戻る。
"Before" にあるファイルの内容がすべて "CrossBefore" にあること。 失っていないこと。
CrossByToolNew\*\__Moved_Sections.txt にリストアップされている内容が同じであること。
diff "Before", "CrossBefore" の右は、１つのセクションだけ CrossBefore からコピーした一時新規ファイル
2A, 2B を削除して代わりに CrossBefore\2A、CrossBefore\2B からコピーする。
（元の 2A, 2B は、BeforeNoTag にあります）
1A, 1B は CrossBefore\1A、CrossBefore\1B とすでに同じはずです。
__Moved_Sections.txt は 2A, 2B に入れません。
● SyncFilesX で同期を実行。
SyncFilesX を起動、または、再スキャンする。 ただし、起動直後に追加・削除のファイルがないはず。
同期したら、1A, 1B を Masters に入れます。 .moas にSynchronized タグの追加が必要なら追加します。
● CrossBefore\* も Masters に入れます。 * は、1A, 1B, 2A, 2B です。
CrossBefore と BeforeNoTag に差分がなければ、入れる必要はありません。
Masters 内のフォルダー名は、同期前のリビジョン番号+_xfor_+今回できた最新のリビジョン番号。 _Tmp は外す。
*_xfor_* フォルダーは、上記 CrossBefore フォルダーのバックアップです。
1A の例：02_xfor_03、 1B の例： 01_xfor_03。 すでにあるときは、同じ内容のはずです。
CrossBefore にできている __Moved_Sections.txt も Masters に入れます。
<< SyncFilesX
SyncFilesX
CrossBack
Before
CrossTool
CrossToolNew
現在作業中の SyncFilesX に、<Folder path="."/> がないと、新規または削除が表示されない
ことがあるので注意してください。
1A
1B
2B
2A
… SyncFilsX 開始時の 1A〜2B
… Back からファイルの移動だけ行った結果。 マージ開始時の 1A〜2B
… Back からファイルの移動だけを自動的に行った結果（前回）
… Back からファイルの移動だけを自動的に行った結果（今回）
… 4way マージ
前回同期したときのファイルと新しいファイルの中で、一部のコードが別のファイルに移動していたりしたときは、
その移動だけを行った中間リビジョンを作成しなければ、前回との差分を知ることができません。
中間リビジョンを作成して同期する方法を示します。
← ▼ ▲
その他のヒント
環境A, B とも、同期する関数AがファイルAに、同期する関数BがファイルBにあるとき、
環境Aでは関数CがファイルAに、環境Bでは関数CがファイルBに存在すると、同期が
難しくなります。 なぜなら、ファイルの対応関係が１対１ではなくなるからです。 その場合、
ファイルCを新規に作成するなど、ファイルを分けてください。
（関数Cが環境Aで存在し、環境Bで存在しないときは、ファイルの対応関係が１対１になる
ので難しくありません。）
環境A
環境B
ファイルA
ファイルB
関数A
関数C
関数B
関数B
関数C
関数A
ファイルB
ファイルA
環境Aでは関数CがライブラリーAに存在、環境Bでは関数CがライブラリーBに存在する
場合は、管理が難しくなることが予想されます。 ライブラリーCを新規に作成するか、
統合的なライブラリーに含めるとよいでしょう。
ベースとなる環境から、複数のモジュールを追加する場合、SyncFilesX を使うとよいでしょう。
環境Aをアプリケーション環境（統合）、環境Bを個別環境（ベース以外の単体）とすることが
よくあります。 この構造の場合、片方向の参照関係となり、環境Aをリリースするときだけ
SyncFilesX を使って同期を取ればよくなります。
環境A
環境B
ModuleA
ModuleB
ModuleC
ModuleC
両方向の参照関係がある状態でもリリースするときだけ同期を取ればよくするには、
SyncFilesX のメイン・スクリプトを相互に作成します。 更新する環境だけで更新された
内容は、同期する必要はありません。
ModuleB
ModuleC
ModuleA
ModuleC
環境B
環境A
アプリケーション環境（統合）が、ベースとなる環境から、１つのモジュールだけを追加する
場合は、SyncFilesX を使わなくとも、一般的なパッチをあてるだけで構いません。
ベースを更新する場合は、パッチをあてたときにエラーにならないようにパッチを調整します。
追加モジュールを更新する場合は、更新されたパッチをあてます。
ModuleA
ベース
ModuleB
+
パッチ
統合
<File path="Source.c" base="sub\OldSource.c"/>
ただし、ファイルの場所の移動や改名があるときは、一般的なパッチではベースとなるファイル
の内容が更新されたときにモジュールに反映されなくなるので、SyncFilesX も併用すると
よいでしょう。
つまり、パッチからエラーが出なくなった後で、SyncFilesX を使って確認します。
<< SyncFilesX
← ▼ ▲
Test.vbs
→ Test.vbs
単体テストを実行するスクリプトです。
ダブルクリックすると、
テスト・プロンプト
が開きます。
← ▼ ▲
ThreeWayMerge
3ウェイ マージ（3方向マージ）をします。
番号またはコマンド >ThreeWayMerge
-------------------------------------------------------------------------------
3ウェイ マージ（3方向マージ）をします。
ベースにするファイル >C:\Base.txt
更新したベースにするファイル（左側） >C:\Left.txt
更新したベースにするファイル（右側） >C:\Right.txt
マージした結果の出力先ファイル（★上書きします） >C:\_Merged.txt
Enter のみ：マージの設定ファイルを使わない。
マージの設定ファイル >
ThreeWayMerge
→ ThreeWayMerge 関数
C:\Base.txt
C:\Left.txt
C:\Right.txt
C:\_Merged.txt
マージ設定ファイル
<?xml version="1.0" encoding="Shift_JIS"?>
<ThreeWayMerge>
<ThreeWayMergeSet
left_name ="左"
right_name="右"
base_path ="00_Base"
left_path ="01_Left"
right_path="02_Right"
merged_path="03_Merged">
<Folder base_path="." left_path="." right_path="." merged_path="."/>
</ThreeWayMergeSet>
<BreakStepNum></BreakStepNum>
<IsAutoMergeEx>True</IsAutoMergeEx>
<IsOutEach>True</IsOutEach>
<SingletonKeywords>Single</SingletonKeywords>
<SingletonKeywords>#include</SingletonKeywords>
<UniqueLineKeywords>Unique</UniqueLineKeywords>
<ReplaceTemplate before="#Before" after="#After"/>
<Text id="Before"><![CDATA[
/* Function: ${FunctionName} */
]]></Text>
<Text id="After"><![CDATA[
/* Func: ${FunctionName} */
]]></Text>
</ThreeWayMerge>
サンプル
その他のタグ名は、
関連
ThreeWayMergeOptionClass
(src)
ソース
番号またはコマンド >ThreeWayMerge
-------------------------------------------------------------------------------
3ウェイ マージ（3方向マージ）をします。
Setting オプションで、設定ファイルを入力します。 例：/Setting:C:\Merge.xml
ベースにするファイル >/Setting:Files\Merge\MergeSetting.xml
に ThreeWayMergeSet タグがあれば、比較するフォルダーを毎回入力
マージ設定ファイル
しなくても済むようになります。
ThreeWayMerge
/Setting:Files\Merge\MergeSetting.xml
ThreeWayMergeSet タグには、比較するフォルダーのパスを指定します。
FF-path 属性
が使えます。 属性名は、base_path、left_path、right_path、merged_path で
には、自動的にマージした後で置き換えるテキストを設定します。
ReplaceTemplate タグ
のメンバー変数名と同じです。（一部除く）
下記のように ThreeWayMergeSet タグを設定をすれば、00_Base フォルダーをベース、
01_Left フォルダーをある人の更新、02_Right フォルダーを別の人の更新、という３つの
フォルダーをマージした 03_Merged フォルダーを作成し、そのマージ結果を確認することが
できます。
Variable タグ
を使って、変数を使うこともできます。
→ TwoWayMerge
それぞれ名前が異なるファイルをマージできます。
ThreeWayMergeSet
SingletonKeywords
UniqueLineKeywords
ReplaceTemplate.xml
のタグも使えます。
ThreeWayMerge_sth
ThreeWayMerge
SyncFilesX_Class::Merge
SyncFilesX_Class::OpenCUI
→ SyncFilesX ソース
(src)
(src)
設定ファイルに <ThreeWayMergeSet> があるとき：
それ以外のとき：
AttachPatchAndBackUpDictionary
CopyFilesToLeafPathDictionary
ThreeWayMerge
(src)
ThreeWayMerge_autoMergeExSub
ThreeWayMerge_replaceByMergeTmplateSub
'// AutoMerge for "bracket_A" set
'// AutoMerge for "bracket_B" set
ReplaceTemplateClass::RunReplace
ReplaceStringTemplate
(上記)
// コンフリクトを自動解決する
関連
→ UpdateModule
更新するパッチをターゲットにあてます
古いパッチを新しいターゲットにあてます
base_path,
left_path,
right_path,
merged_path
は、すべて
同じ値でも
それぞれ
指定が必要
です。
→ UpdateModule
左は旧パッチ、右は新ベース
→ SyncFilesX を内部で使うツールとの比較
→ SyncFilesX
手動で 3ウェイ マージをします。
← ▼ ▲
ToRegularXML
XML ファイルを Diff ツールで比較できるように、空白やタブを同じように整形します。
番号またはコマンド >ToRegularXML
-------------------------------------------------------------------------------
整形する XML ファイルのパス >
ToRegularXML
サンプル
<ROOT>
<A/>
</ROOT>
<ROOT>
<A/>
</ROOT>
[ 親: vbslib のショートハンド・プロンプト ]
参考
→ save (IXMLDOMDocument)
ソース
→ vbslib Prompt.vbs
← ▼ ▲
Translate
番号またはコマンド >Translate
英訳します。
翻訳ファイル (*.trans) のパス、または、フォルダーのパス >C:\folder\sample.trans
次のファイルを上書きします。
sample.txt
続行するには Enter キーを押してください . . .
C:\folder\sample.trans
Translate
翻訳ファイルの記述に従って、テキストファイルを、英訳します。
→ Translate 関数
[ 親: vbslib のショートハンド・プロンプト ]
サンプル
→ Samples\Translate フォルダー
→ TranslateTest
関連
すべて英訳されるか調べる
<?xml version="1.0" encoding="UTF-16"?>
<Translate>
<BaseFolder>SubFolder</BaseFolder>
<File>sample1.txt</File>
<File>sample2.c</File>
<T><JP>日本語</JP><EN>Japanese</EN></T>
<T><JP>英語</JP><EN>English</EN></T>
</Translate>
<?xml version="1.0" encoding="UTF-16"?>
<Translate>
<File>sample.txt</File>
<T><JP>日本語</JP><EN>Japanese</EN></T>
<T><JP>英語</JP>
<EN>English</EN></T>
</Translate>
サンプル
sample.trans (翻訳ファイル)
sample.txt の翻訳前
日本語から英語に変換します。
sample.txt の翻訳後
JapaneseからEnglishに変換します。
サンプル ： 複数のファイルを翻訳する
JapaneseToEnglish.trans (翻訳ファイル)
スクリプト
Translate "sample.trans", "JP", "EN"
スクリプト
Translate "JapaneseToEnglish.trans", "EN", "JP"
英語 から 日本語 へ
sample1.txt の翻訳後
English から Japanese へ
sample1.txt の翻訳前
sample2.c の翻訳前
sample2.c の翻訳後
French から 日本語 へ
French から Japanese へ
File タグに指定したファイルを翻訳します。
File タグは、T タグの後に置くこともできます。
<JP> 〜 </JP> の間と、<EN> 〜 </EN> の間は、複数行にしないでください。
補足
翻訳前の単語が長い単語から置き換えが行われます。 これにより、翻訳ファイルに指定する
順番によって結果が変わる可能性が少なくなります。
BaseFolder は、File タグに指定した相対パス
のベース・フォルダーのパスです。
省略時は、.trans ファイルが入っている
フォルダーのパスになります。
BaseFolder は、
TranslateEx
の in_out_Config.BaseFolderPath が指定されると、
無視されます。
→ T_Translate.vbs # [T_Translate1]
テスト
ソース
→ vbslib Prompt.vbs
→ CheckEnglishOnly (exeファイル)
フォルダー全体に英語以外が無いか調べる
あるファイルに１つでも日本語が残っていると、エラーとなり、残りのファイルは翻訳
しません。 フォルダーの中のすべてのファイルに対して、残っている日本語を
CheckEnglishOnly
一覧するときは、
をお使いください。
<T><JP>英語</JP>
<EN>English</EN>
<Line>16</Line>
<File>sample.txt</File>
</T>
TranslateTest
を通すと、翻訳するファイル名と行番号が追記され、行番号の順番でソートされます。
→ T_Translate.vbs # [T_Translate1]
テスト
サンプル ： 複数行のテキストを翻訳する
<?xml version="1.0" encoding="UTF-16"?>
<Translate>
<File>MultiLine.txt</File>
<T><JP cut_indent="yes" indent="1*&#9;"><![CDATA[
// メイン
// 関数
]]></JP><EN cut_indent="yes" indent="1*&#9;"><![CDATA[
// Main
// Function
]]></EN></T>
<T><JP cut_indent="yes" indent="4*&#32;"><![CDATA[
// サブ
// 関数
]]></JP><EN cut_indent="yes" indent="4*&#32;"><![CDATA[
// Sub
// Function
]]></EN></T>
</Translate>
JapaneseToEnglish.trans (翻訳ファイル)
スクリプト
Translate "JapaneseToEnglish.trans", "EN", "JP"
int main()
{
// Main
// Function
}
int sub()
{
// Sub
// Function
}
MultiLine.txt の翻訳後
int main()
{
// メイン
// 関数
}
int sub()
{
// サブ
// 関数
}
MultiLine.txt の翻訳前
複数行の置き換えをするときは、cut_indent="yes" と、
indent="…" を XML タグに付けてください。
cut_indent 属性により、XML タグの直後の改行と
すべての行のインデントが翻訳テキストの指定から
外れます。 indent 属性により、すべての行のインデ
ントが翻訳テキストの指定に追加されます（置き換わります）。
→ Switches
翻訳するファイルの文字コードセットを指定するときは、File タグの charset 属性に指定します。
<File charset="utf-8">sample.txt</File>
<Translate skip_not_english_error="yes">
英語以外が残っていてもエラーにしないようにするには、次のようにします。
→ 複数行のテキストを翻訳する
→ 複数のファイルを翻訳する
翻訳前のテキストを単純な単語にしてから、翻訳後のテキストを編集することで、cut_indent や
indent の効果をいろいろ試すことができます。
置き換える対象のテキストの改行コードは、CR+LF に設定してください。
←
↓