スポンサーサイト

Tags :
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

InDesignドキュメントのテキストをGoogleの翻訳APIを使って翻訳・置換してみる

『Google AJAX Language API』
http://code.google.com/apis/ajaxlanguage/documentation/
これと、InDesignのSocketオブジェクト使ってドキュメントのテキストを翻訳してみます。

■参考URL
http://d.hatena.ne.jp/C_L/20081012/indesign_socket_http

例えば、InDesignのドキュメントにこんな感じのテキストを用意して、


下にあるJavaScriptを実行すると、

こんな感じで翻訳されたテキストに置換します。

レスポンスは、ヘッダ部分を除くと
{"responseData": {"translatedText":"Ghost in the Shell"}, "responseDetails": null, "responseStatus": 200}
の様なJSONで返って来るので簡単に翻訳結果を取り出せます。一部の記号類は『'』等の文字参照で返ってくるみたいです。
あと、今回のやり方だとテキストフレームの文字数が220文字前後(InDesignの情報パレットで)を境に400 Bad Requestが返って来るようになりました。

何らかの業務で使えるかどうかは非常に怪しいですが、単語レベルなら意外な使い道があるかも知れません。

で、これやってて思ったんですが、InDesignでSocketが使えるって事は、将来InDesignのドキュメントをインターネット越しに何らかの処理をするサービスなんかもあり得るわけですが、例えば第三者から渡されたドキュメントを処理する時、処理結果が悪意のあるスクリプトになるように仕組まれていた場合(今回試した翻訳の場合だと、翻訳結果がスクリプトとして意味のある文字列になる等。これだと環境設定の「添付スクリプトを有効にする」オプションは関係無いので)、取り出した値をeval()関数で評価するような書き方をしていてチェックが甘いとセキュリティの穴にもなり得る訳で、特にInDesignのスクリプトを書いたりするのは自分の様にWeb屋でない人も多いと思うので、その辺気を付ける必要も出てくるのかなぁと思った次第です。

まあこのあたりはインターネットかローカルかに関わらないですが、Webブラウザで実行されるJavaScriptと違って、ファイルシステムにもアクセス出来る訳だし、『inddスクリプトインジェクション』なんて攻撃法なんかが出て来たり…なんてのは夢が広がり過ぎですかね。

#target InDesign 

const HOST = 'ajax.googleapis.com';
const PATH = '/ajax/services/language/translate';
	
//google翻訳APIでテキストを翻訳
function getTranslation(str) {
	var src = 'ja';
	var dest = 'en';
	var query = '?v=1.0&q=' + encodeURI(str) + '&langpair=' + src + '%7C' + dest;
	var rep = "";
	var conn = new Socket;
	if (conn.open(HOST + ':80', 'UTF-8')) {
		conn.write ('GET ' + PATH + query + " HTTP/1.0\n"
			+ 'Host: ' + HOST + "\n"
			+ 'User-Agent: ' + 'InDesign/6.0 ' +'(Macintosh; U; Intel Mac OS X 10_5_6; ja-jp)' + "\n"
			+ "\n");
		rep = conn.read(99999);
		conn.close();
	} else {
		return false;
	}
	var rep_json = eval('(' + rep.match(/\{"responseData".*\}?/) + ')');
	return rep_json.responseData.translatedText;
}

var T = app.activeDocument.textFrames;
for (var i=0; i<T.length; i++) {
	T[i].contents = getTranslation(T[i].contents);
}
関連記事
スポンサーサイト

コメント

非公開コメント

Profile
choco
Author : choco

印刷・製版の現場を経て、広告制作会社でPhotoshopを使ったビジュアル制作を担当。

→現在は車載機器開発ベンダにて、組み込み3Dデータ作成やUIデザインなどを行っています。

Categories
Favorites


Search
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。