Macアプリから内蔵辞書を引きたい

Pocket

自分用のツールを作ろうとして英和辞典を検索したいニーズがあったのでメモ。
ニーズはたくさんありそうなのに思ったより日本語情報が少なかったです。(なぜかPythonの情報の方が多かった…)

Control + Command + d でいいじゃんという突っ込みはなしの方向で。

 

方法1:辞書.appで表示

辞書.appには「dict://」というカスタムURIスキームが用意されているようなので、

とかやれば、検索できます。
辞書の指定とか細かい制御はできなさそうです。

参考:Mac OS X Lionで内蔵辞書を引く #Mac #dictionary – Qiita

 

方法2:アプリ内で表示

こちらが本命。
Dictionary Services Reference によると DCSCopyTextDefinition を使えばできそうです。

という感じでできました。
__bridgeのせいで見づらいですが、意外と簡単でした。

冒頭の宣言と辞書の指定は、OS Xの辞書アプリをコマンドラインから – PC日記 を参考にさせていただきました。(辞書指定しないと英語の辞書が使われてしまいました)
この部分がUndocumentedなので、Mac App Storeの審査に通るかはグレーです。

HIDictionaryWindowShow を使えばControl + Command + dのようなポップアップ表示もできるようです。
参考:日暮れて道遠し: PDFkit(その5)辞書.appで辞書を引く(その3)

 

サンプル

上記2つの方法を試せる簡単なサンプルを作ってみました。左のTextViewで文字列を選択すると、ポップアップで選択されている方法(OpenURL or DCSCopyTextDefinition)で辞書を検索します。DCSCopyTextDefinitionの場合は右のTextViewに結果が表示されます。

こんな感じです。

ソースはGithubに置いておくのでご自由にどうぞです。
tnantoka/DictionaryServicesExample · GitHub

しかし、Macアプリ作成は全然上達してる気がしないなぁ…。 もっと頑張ろうっと。

それでは;-)


コメントを残す

Your email address will not be published. Please enter your name, email and a comment.