Python で .mxliff ファイルを Excel ファイルに出力するプログラムを作った
翻訳ツールで作業していて
一通り翻訳した後に見直すとき
テキストファイルや Excel ファイルに出力して
それでチェックしている。
Memsource で作業しているときは
ローカルに .mxliff ファイルが作成される。
.mxliff ファイルは
Memsource XML Localization Interchange File Format の略で
XML または XLIFF の一種だ。
テキストエディターで開いたり
プログラムで編集することができる。
Xbench 3.0(有料版)だと .mxliff ファイルを読み込むことができるんだけど
Xbench 2.9(無料版)だと読み込むことができない。
それについては調べて
.mxliff ファイル内のすべての <target> タグに
state='translated' を追加して
<target state='translated'> のようにすれば
読み込まれることはわかったんだけど
Xbench 2.9 だとテキストファイルに出力したときに
マッチ率が出力されない(Xbench 3.0 は出力されたと思う)。
それだと作業しづらいので
Python で .mxliff ファイルの内容を
Excel ファイルに出力するプログラムを作成することにした。
入力が .mxliff ファイルで出力が Excel ファイル
使用するライブラリは openpyxl、win32com、BeautifulSoup など。
最初に 2 つのファイルをオープンして
BeautifulSoup で
各セグメントの内容がある <group> タグを検索してループし
<source> と <target>、<context fuzzyMatch>(マッチ率)を
Excel ファイルに出力する。
<trans-unit m:locked> が True のセグメントは
翻訳対象外のセグメントなのでスキップする。
これで .mxliff ファイルの内容が Excel ファイルに出力される。
これで翻訳作業に使うことができるんだけど
せっかくここまでプログラムを作ったので
普段 Excel で見直し用にデータを編集していた作業を
プログラムでやってしまうことにした。
まず、新規の翻訳とファジーマッチを別々のシートに分ける。
要注意として翻訳中にマーキングしておいたセグメントを
ソートしてシートの一番上に持ってくる。
各行の幅の調整やセルの上揃え、セルの折り返し、ソート、シートの倍率などを設定する。
いつも Excel では自分で定義した Office 2003 の配色を使っているんだけど
([ページ レイアウト] > [配色] > [ユーザー定義])
それだけは Python で設定する方法がわからなかった。
これをしばらく使ってみて
レアケースのバグが何回かでたが
問題なく使用できている。
openpyxl と win32com を前半と後半でそれぞれ使っているからか
Excel ファイルを受け渡すときに File not found のエラーがでるときがある。
それは Windows でサインインしなおすと解消される。
(開いている Excel を全部閉じるとエラーは起こらないようだ)
必要に迫られて Python のプログラムを作ったんだけど
逆に作業を効率化できた。
<target> タグを <target state='translated'></target> に
変更するだけのプログラムも作ったので
Xbench でチェックすることもできる。