Com2 Blog

翻訳とWeb制作を基礎から分かりやすく学ぶ

Excel形式のデータからTMXを作成する秀丸マクロ

excel-to-tmx-macro

Excel形式の対訳リストからTMXを作成する秀丸マクロをご紹介します。何年も前、マクロを覚えたての頃、Excelの対訳リストからTradosの翻訳メモリにインポートできるテキストファイル(.txt)を作るマクロを組みました。それをTMX用に改良しただけのものなので、素人丸出しです。

多言語翻訳のプロジェクトのために翻訳メモリをさくっと作ろうと作成したマクロです。必要に応じて原文言語を変更したり、対象言語を変更・追加してご使用いただけます。単純ですが、それだけに使いやすいと思います。

1. 使用するデータの条件

  • A列に原文、B列に訳文の記載されているExcelファイルであること
    (あるいはタブ区切りテキストであること)
  • 原文と訳文のどちらにもデータが入っていること
  • セル内に改行のないこと
  • セル内にタブのないこと(基本的にはセル内にタブはないはずですが、まれにタブ情報を持っている場合があります)

2. マクロの仕様

  • 原文はEnglish(必要に応じて書き換えてください)
  • 訳文言語は複数から選択可能
  • 訳文言語はJapanese、French、German(必要に応じて変更・追加してください)
  • 作成日時(creationdate)はマクロを実行した日時が入る
  • 作成者(creationid)は「Your Name Here」としてあるので、ご自分の名前など、任意で書き換えて使用する
  • 書き出すTMXはUTF-16、ボム付き
  • ファイル名は「(訳文言語名).tmx」(例:Japanese.tmx)
  • 開いている秀丸エディタのディレクトリにTMXを生成
    (任意のディレクトリにダミーのテキストファイルを作り、それを開いて実行することをお勧めします)

3. コードと解説

3.1. コード

2015年9月6日更新。40行目に「o-tmf=\”SDL TM8 Format\”」を追記しました。
$CurrentDate[0]=day + month + year;
$CurrentTime[0]=time;

$Lang[0]="Japanese";
$LangCode[0]="ja-JP";
$Lang[1]="French";
$LangCode[1]="fr-FR";
$Lang[2]="German";
$LangCode[2]="de-DE";

message "Select target language";
mousemenu $Lang[0], $Lang[1], $Lang[2];

if( result == 0 ) endmacro;

else if( result == 1 ) {
call SUB_001;
}else if( result == 2 ) {
call SUB_002;
}else if( result == 3 ) {
call SUB_003;
}

	setcompatiblemode 15;
	replaceallfast "&" , "&";
	replaceallfast "<" , "&lt;";
	replaceallfast ">" , "&gt;";
	replaceallfast "'" , "&apos;";
	replaceallfast "\"" , "&quot;";
	replaceallfast "^" , "<0>" , regular;
	replaceallfast "$" , "</seg>\\n</tuv>\\n</tu>" , regular;
	replaceallfast "<0>" , "<tu creationdate=\"" + $CurrentDate[0] + "T" + $CurrentTime[0] + "Z\" creationid=\"Your Name Here\">" + "\\n<tuv xml:lang=\"en-US\">\\n<seg>" , regular;
	replaceallfast "\\t" , "</seg>\\n</tuv>\\n<tuv xml:lang=\"" + $LangCodeSelection[0] + "\">\\n<seg>" , regular;

	gofiletop;
	insert "<\?xml version=\"1\.0\" \?>";
	insertreturn;
	insert "<tmx version=\"1\.4\">";
	insertreturn;
	insert "<header creationtool=\"SDL Language Platform\" o-tmf=\"SDL TM8 Format\" />";
	insertreturn;
	insert "<body>";
	insertreturn;
	gofileend;
	insert "</body>";
	insertreturn;
	insert "</tmx>";

	saveas $Filename[0] + ".tmx" , unicode , bom;

endmacro;

SUB_001:
	$LangCodeSelection[0]=$LangCode[0];
	$Filename[0]=$Lang[0];
return;

SUB_002:
	$LangCodeSelection[0]=$LangCode[1];
	$Filename[0]=$Lang[1];
return;

SUB_003:
	$LangCodeSelection[0]=$LangCode[2];
	$Filename[0]=$Lang[2];
return;

3.2. 解説

1行目はマクロ実行時の年月日、2行目は時間を取得します。

4~9行目で訳文言語の言語名と言語コードを記述しています。2行セットで1言語の記述です。訳文言語を変更する場合はここを書き換えてください。追加したい場合は2行分コピーして、言語と数字を書き換えてください。

11行目と12行目はマクロを実行した時に表示させるダイアログの記述です。言語を追加した場合は、12行目も追加してください。

14行目は、何も選択しなかった場合マクロを終了する記述です。

16~22行目はサブルーチンを呼び出す記述です。

24~33行目は各翻訳ユニットを整形するための記述です。

35~47行目はTMXファイル先頭と末尾の記述です。

49行目はTMXファイル保存についての記述です。ここで拡張子やエンコードを指定しています。

51行目はマクロ終了の記述です。

53~66行目は各言語のサブルーチンの記述です。言語を追加した場合はこの記述も追加してください。

4. マクロの実行

  1. 任意のディレクトリに適当なテキストファイルを用意します。
  2. 用意したテキストファイルを秀丸エディタで開きます。
  3. Excelの対訳リストをペーストします。
  4. [マクロ]-[マクロの実行]で作成したマクロを実行します。
  5. 「Select Target Language」ダイアログが表示されたら[OK]をクリックします。
    tsv-to-tmx-1
  6. 任意の訳文言語をクリックするとTMXが作成されます。
    tsv-to-tmx-2-langs

あとは、生成されたTMXを翻訳メモリに読み込むだけ。簡単なものです。


コメント

コメントを残す