2012年10月17日水曜日

OmegaT のスクリプト プラグインで外部プログラムを起動する

OmegaTスクリプト プラグインを入れると、OmegaT 内でいろいろなスクリプト言語を使ったマクロ処理が可能になります。

今回はそれを使って、外部プログラムを起動してみます。

まあ、はじめての Word VBA で壁にぶつかりまくっているので、現実逃避気分転換なんですけれどもね…。

注:以下で紹介しているスクリプトは、OmegaT scripting plugin 0.6-2.5.0_03 から同梱されるようになりました。インストールした時点で、もう使えます。

スクリプト プラグインでは Groovy や JavaScript など多くの軽量スクリプト言語をサポートしていますが、OmegaT は Java 製ですからね。ふつうは Groovy でしょう(プラグイン同梱サンプル スクリプトの大半も Groovy です)。

ということで、Groovy を使います。要は Java で書くのと一緒です。したがって、外部プログラムを起動するために ProcessBuilder を呼びます。

申し遅れましたが、OS は Windows 前提です。悪しからず。

project_save.tmx を開く

project_save.tmx っていうのは、翻訳したセグメントの原文と訳文がペアになって記録されている XML ファイルです。

これをエディタで直接開くケースがあるらしいことを、このツイートで知りました。なので、それを任意のテキストエディタで開くスクリプトを書いてみましたよ。

import javax.swing.JOptionPane;

def textEditor = /C:\Program Files (x86)\mery\Mery.exe/
def prop = project.getProjectProperties()

if (prop == null) {
  def title = "open project_save.tmx"
  def msg = "プロジェクトを開いてください。"
  JOptionPane.showMessageDialog(null, msg, title, JOptionPane.INFORMATION_MESSAGE);
} else {
  def file = prop.getProjectInternal() + "project_save.tmx"
  new ProcessBuilder(textEditor, file).start()
}

テキストエディタのパスは、お好みで設定してください。自分は Mery を使っています。

プロジェクト フォルダーを Windows エクスプローラーで開く

なんか「フォルダ」とか「エクスプローラ」とか語尾を伸ばすと、いまだに違和感ありますが、MS の表記規則が変わったんですよね、たしか。

そんなことはどうでもいいです。

プロジェクト フォルダー配下にはいろいろファイルがあるわけですけれど、たとえば生成した訳文ファイルを見ようと思ったら、いちいち Windows エクスプローラーでディレクトリを掘っていかないといけないわけです。意外と面倒くさいので、OmegaT で表示中のプロジェクトのルート フォルダーをダイレクトに Windows エクスプローラーで開くスクリプトを書いてみました。

import javax.swing.JOptionPane;

def shell = "explorer.exe"
def prop = project.getProjectProperties()

if (prop == null) {
  def title = "open project folder"
  def msg = "プロジェクトを開いてください。"
  JOptionPane.showMessageDialog(null, msg, title, JOptionPane.INFORMATION_MESSAGE);
} else {
  def folder = prop.getProjectRoot()
  new ProcessBuilder(shell, folder).start()
}

いずれもたった数行のスクリプトで、やってることも単純ですけれど、繰り返しの多い作業だったりすると、長い目で見ればけっこうな省力化になるかもしれません。

これらのスクリプトをスクリプト用のスロットに関連付けてやると、OmegaT 本体のメニューから実行できるようになります。日本語ファイル名で保存しておくと、メニューにも日本語のファイル名がそのまま出てきます。キーボード ショートカットも使えるので、頻度が高い作業を割り当てておくと、便利そうですね。

さて、Word VBA に戻るか…。(泣

関連スレッド:OmegaT : Message: Groovy scripts for opening project_save.tmx and project folder

0 件のコメント:

コメントを投稿